Содержание
- Commonly used default compression policies
- Scheduling
- Remote Method Invocations
- Network Serialization and Aspects
- ◆ PhysicsEntityFlags
- ◆ PhysicsParticleFlags
- Что представляет собой CryEngine?
- ◆ SystemEvents
- Разработка
- Audio
- CryEngine 3
- ◆ EntitySlotFlags
- 3D Engine
- Action
- ◆ InputModifierFlags
- Miscellaneous
- Installing CRYENGINE
- Список программ, использующих CryEngine
- ◆ PhysicsRopeFlags
- Network
Commonly used default compression policies
Seen below is a table of the most commonly used compression policies included with the engine by default, as well as their bandwidth usage and limits. Keep in mind that the use of history delta (see Aspects below) may decrease bandwidth usage further.
Identifier | Description | Maximum Bandwidth Usage | Limits |
---|---|---|---|
‘eid’ | Used to automatically convert a local entity identifier to the remote equivalent. | Adaptive | N/A |
‘wrld’ | Represents a world coordinate. | 72 bits | 0 to 4096 for X and Y axes, 0 to 1023 for the Z axis |
‘lwld’ | Represents a world or local coordinate. | 72 bits | -20 to 4096 for X and Y axis, -20 to 1023 for the Z axis |
‘wrl2’ | Represents a world coordinate, adaptive by assuming a probable height of 1024. | 72 bits | 0 to 4096 for the X and Y axes, 0 to 2047 for the Z axis |
‘wrl3’ | Represents a world coordinate that can be outside of terrain bounds, adaptive by assuming a probable height of 1024. | 88 bits | -2045 to 6145 for the X and Y axes, -2095 to 6145 for the Z axis |
‘frad’ | Commonly used to represent radians as float. | 12 bits | -4 to 4 |
‘rpos’ | Represents a relative position. | 30 bits | -10 to 10 |
‘smal’ | Represents a small float. | 8 bits | 0 to 16 |
‘sone’ | Represents a normalized float. | 10 bits | -1 to 1 |
‘tod’ | Represents a time of day. | 11 bits | 0 to 24 |
‘i8’ | Signed 8-bit number. | 8 bits | -128 to 127 |
‘i16’ | Signed 16-bit number. | 16 bits | -32768 to 32767 |
‘i32’ | Signed 32-bit number. | 32 bits | -2147483647 to 2147483647 |
‘ui2’ | Unsigned 2-bit number. | 2 bits | 0 to 3 |
‘ui3’ | Unsigned 3-bit number. | 3 bits | 0 to 7 |
‘ui4’ | Unsigned 4-bit number. | 4 bits | 0 to 15 |
‘ui5’ | Unsigned 5-bit number. | 5 bits | 0 to 31 |
‘ui6’ | Unsigned 6-bit number. | 6 bits | 0 to 63 |
‘ui8’ | Unsigned 8-bit number. | 8 bits | 0 to 255 |
‘ui9’ | Unsigned 9-bit number. | 9 bits | 0 to 511 |
‘ui10’ | Unsigned 11-bit number. | 10 bits | 0 to 1023 |
‘ui16’ | Unsigned 16-bit number. | 16 bits | 0 to 65535 |
‘ui32’ | Unsigned 32-bit number. | 32 bits | 0 to 4294967294 |
‘bool’ | Boolean (true / false). | 1 bit | 0 to 1 |
‘ori1’ | Normalized orientation / Quaternion. | 8 bits | -1 to 1 |
‘ori3’ | Normalized orientation / Quaternion (higher precision than ‘ori1’). | 12 bits | -1 to 1 |
‘dir0’ | Normalized vector / direction. | 10 bits | -1 to 1 |
‘dir1’ | Normalized vector / direction (higher precision than ‘dir0’). | 12 bits | -1 to 1 |
‘dir2’ | Normalized vector / direction (higher precision than ‘dir1’). | 16 bits | -1 to 1 |
‘dir3’ | Normalized vector / direction (higher precision than ‘dir2’). | 24 bits | -1 to 1 |
‘mat’ | Surface type identifier. | 9 bits | -1 to 255 |
Scheduling
In addition to compression policies, it is also possible to customize the scheduling priority of packets on a per-entity basis. For example, this allows us to prioritize players over other entities. An example of the default scheduler setup can be seen in Engine/Config/DefaultScripts/Scheduler.xml.
Remote Method Invocations
Remote Method Invocations (RMIs) allow for executing functions remotely between a client and a server. Note that RMIs can not be used to communicate between multiple clients. They are represented in code by the SRmi structure. Each remote method can contain a set of parameters that need to be serialized with the same ISerialize interface and structure that is used for aspect serialization.
Example
Network Serialization and Aspects
Each networked entity is able to serialize data over the network whenever a specific aspect (see EEntityAspects) is changed. For example, assuming we had a boolean named m_bWalking, we could serialize this over the network to make sure that all clients and the server know the current synchronized state. Each entity can have up to 32 aspects which are independently serialized whenever it is marked «dirty» by game code.
When handling serialized data we first have to pick a unique aspect that we want to transmit data with. For example, assuming that we want to serialize data from clients to the server and other clients, we could choose eEA_GameClientD. Any time the data we last sent over the network is changed, we’ll need to call IGameObject::ChangedNetworkState, effectively marking the aspect as dirty resulting in being called to read the data.
◆ PhysicsEntityFlags
|
strong |
General flags for PhysicsEntity-parameters
Enumerator | |
---|---|
None |
No flags |
TraceableParts |
Each entity part will be registered separately in the entity grid |
Disabled |
Entity will not be simulated |
NeverBreak |
Entity will not break or deform other objects |
Deforming |
Entity undergoes dynamic breaking/deforming |
PushableByPlayers |
Entity can be pushed by players |
Traceable |
Entity is registered in the entity grid |
ParticleTraceable |
Entity is registered in the entity grid |
RopeTraceable |
Entity is registered in the entity grid |
Update |
Only entities with this flag are updated if ent_flagged_only is used in TimeStep() |
MonitorStateChanges |
Generate immediate events for simulation class changed (typically rigid bodies falling asleep) |
MonitorCollisions |
Generate immediate events for collisions |
MonitorEnvChanges |
Generate immediate events when something breaks nearby |
NeverAffectTriggers |
Don’t generate events when moving through triggers |
Invisible |
Will apply certain optimizations for invisible entities |
IgnoreOcean |
Entity will ignore global water area |
FixedDamping |
Entity will force its damping onto the entire group |
MonitorPoststep |
Entity will generate immediate post step events |
AlwaysNotifyOnDeletion |
When deleted, entity will awake objects around it even if it’s not referenced (has refcount = 0) |
OverrideImpulseScale |
Entity will ignore breakImpulseScale in PhysVars |
PlayersCanBreak |
Players can break the Entiy by bumping into it |
CannotSquashPlayers |
Entity will never trigger ‘squashed’ state when colliding with players |
IgnoreAreas |
Entity will ignore phys areas (gravity and water) |
LogStateChanges |
Entity will log simulation class change events |
LogCollisions |
Entity will log collision events |
LogEnvChanges |
Entity will log EventPhysEnvChange when something breaks nearby |
LogPoststep |
Entity will log EventPhysPostStep events |
◆ PhysicsParticleFlags
|
strong |
Physicalization flags specifically for Particle-entities.
In here all the enums from physinterface.h are wrapped and commented so they can be used in C#. For easier usage the enums are split up in multiple enums so the wrong enum can’t be used for the wrong parameter.
Enumerator | |
---|---|
None |
No flags |
SingleContact |
Full stop after first contact. |
ConstantOrientation |
Forces constant orientation. |
NoRoll |
‘sliding’ mode; entity’s ‘normal’ vector axis will be alinged with the ground normal. |
NoPathAlignment |
Unless set, entity’s y axis will be aligned along the movement trajectory. |
ParticleNoSpin |
Disables spinning while flying. |
NoSelfCollisions |
Disables collisions with other particles. |
NoImpulse |
Particle will not add hit impulse (expecting that some other system will). |
Что представляет собой CryEngine?
Движок CryEngine был разработан немецкой студией Crytek для шутера Far Cry, который вышел в 2004 году и оказал огромное влияние на развитие игр с открытым миром. Проект позволял перемещаться по огромной территории без подзагрузок, поощрял свободный подход к выполнению миссий, а также демонстрировал потрясающую графику.
Вскоре после выхода Far Cry все права на CryEngine были выкуплены компанией Ubisoft, которая использовала движок для нескольких аддонов к шутеру. Также он лег в основу движка Dunia Engine, на котором были разработаны все последующие части серии Far Cry, и был лицензирован компанией NCSoft для MMORPG Aion: The Tower of Eternity.
Crytek тем временем занялась созданием движка CryEngine 2, на котором и был разработан знаменитый Crysis (а также аддоны Crysis Warhead и Crysis Wars). Дальнейшие итерации – CryEngine 3 (сейчас принадлежит Amazon), CryEngine (4), CryEngine V – являются закономерным развитием CryEngine 2. Впрочем, начиная с 2013 года, присвоение версиям движка порядковых номеров считается условным, так как сама Crytek предпочитает именовать его CryEngine, без каких-либо цифр.
Игры на движке CryEngine разрабатываются не только студией, создавшей его. Изначально его могли лицензировать сторонние компании за фиксированную плату, а образовательные учреждения могли использовать его бесплатно, но на некоммерческой основе – только для обучения студентов. Но начиная с 2016 года движок и SDK (набор средств разработки) распространяются бесплатно для всех желающих, но с условием выплаты Crytek 5% прибыли при доходах, превышающих 5000 долларов/евро (начиная с версии 5.5, на более ранних версиях роялти не выплачивается).
◆ SystemEvents
|
strong |
Flags to define which events to receive on a RequestListener.
Enumerator | |
---|---|
None |
The default value of SystemEvents. This means no events will be received. |
ImplSet |
Receive events when the audio implementation is set. |
TriggerExecuted |
Receive events when a trigger is executed. |
TriggerFinished |
Receive events when a trigger has finished. |
FilePlay |
Receive events when a file is played. |
FileStarted |
Receive events when a file has started playing. |
FileStopped |
Receive events when a file has stopped playing. |
All |
If the event flags for are set to All, all events generated by the given object will be received. |
Разработка
Комплект разработчика программного обеспечения (SDK) CryEngine , первоначально называвшийся Sandbox Editor, представляет собой текущую версию редактора уровней, используемого Crytek для создания уровней для CryEngine . В программном обеспечении также предусмотрены инструменты для облегчения написания сценариев , анимации и создания объектов. Он был включен в различные игры Crytek (включая, помимо прочего, Crysis и Far Cry ) и широко используется для моддинга . Стиль редактирования аналогичен концепции песочницы с упором на большие территории и свободный стиль программирования миссий. Редактор также может создавать внутренние настройки.
В отличие от таких редакторов, как UnrealEd , которые используют «субтрактивный» стиль редактирования, который удаляет области из заполненного мирового пространства, Sandbox имеет «аддитивный» стиль (например, Quake II ). Объекты добавляются к общему пустому пространству. Концентрация песочницы на потенциально огромной (теоретически, сотни квадратных километров) местности означает, что она использует алгоритмическую форму рисования текстур и объектов на ландшафте. При этом используются различные параметры для определения распределения текстур или типов растительности. Это предназначено для экономии времени и обеспечения возможности редактирования таких больших территорий при сохранении общего стиля свободного роуминга «песочницы» в «реальном мире». Это отличается от некоторых стилей редактирования, которые часто используют «поддельные фоны», чтобы создать иллюзию больших ландшафтов.
В моде, несколько сравнимой с 3D Renderer Blender , который можно использовать для игрового дизайна, редактор Sandbox имеет возможность одним нажатием клавиши перейти прямо к текущему дизайну (WYSIWYP, «What You See Is Во что вы играете »). Это упрощается без загрузки игры, поскольку игровой движок уже запущен в редакторе. Вид «игрока» отображается в трехмерной части редактора. Редактор также поддерживает все функции CryEngine, такие как автомобили и физика, сценарии, расширенное освещение (в том числе в реальном времени, движущиеся тени), технологию Polybump , шейдеры, 3D-звук, обратную кинематику персонажей и наложение анимации, динамическую музыку, систему мягких частиц в реальном времени. и интегрированный редактор эффектов, отложенное освещение, карты нормалей и параллакс-окклюзии, а также усовершенствованная модульная система искусственного интеллекта.
Audio
Audio General
- New: Functionality to calculate the duration of a standalone audio file.
- New: Remove inheritance in Audio Object.
- Optimized: Small tweaks/fixes to the SDL impl.
- Optimized: Optimized setting of FMOD Studio buses to be more efficient.
- Fixed: Where FMOD Studio reverbs stopped decay procedure when the source event was stopped.
- Fixed: Where sometimes environments were not properly set to FMOD Studio.
- Fixed: Crash with overly busy audio debug drawing.
- Fixed: CVar was unregistered with an outdated name.
- Fixed: Parent ambiences not assuming reverbs of inner areas.
- Fixed: Audio trigger names were not being serialized and shown in the UI of Mannequin.
- Tweaked: Updated SDL_mixer to version 2.0.1 and enabled SDL_mixer implementation to play back Vorbis encoded mp3 files.
- Tweaked: Updated FMOD Studio API to version 1.08.02.
ACE (Audio Controls Editor)
- Fixed: Middleware icons missing when using the web launcher.
- Fixed: Some placeholder wwise controls were being shown even though they were a placeholder.
- Fixed: Crash when switching audio middlewares.
- Fixed: Crash when connecting implementation controls that live inside folders directly to the ATL controls panel.
- Fixed: Filtering buttons.
DRS (Dynamic Response System)
- New: Added an Execution-limit condition (to enable execute-only-once again).
- New: Added an «execute response» action to allow re-using of responses.
- New: Added a «done» port for the send-signal Flowgraph node — which is triggered when the response linked to the signal has finished.
- New: Added a listener interface for drs-signal-processing.
- New: Added a TimeSinceResponse Condition.
- Refactored: Removed the option to queue drs signals delayed (can be achieved with ‘wait’ actions).
- Fixed: A bug when playing dialog lines without audio and without animation.
- Fixed: Subtitle was not displayed for lines without audio trigger, but with talk-animation.
- Tweaked: Only increment the execution-counter on responses when at least the base-condition was met.
CryEngine 3
27 марта 2009 года на GDC 2009 Crytek представила CryEngine 3 . CryEngine 3 работает вместе с ПК на консолях Xbox 360 и PlayStation 3 . Он также работает на Wii U , Xbox One и PlayStation 4 . Согласно Crytek, песочница движка позволяет работать на всех трех платформах одновременно. При достаточной вычислительной мощности возможен даже вывод 3D (по принципу смещения от центра) в формате цифрового кино 4K . Бесплатная версия CryEngine 3 доступна с 18 августа 2011 года. Для коммерческих проектов требуется дополнительная лицензия.
CryEngine 3 изначально поддерживал только DirectX 9.0c. Благодаря патчу, который был выпущен впоследствии, в настоящее время также поддерживается DirectX 11, что заметно влияет на качество вывода графики. На GDC 2014 Crytek объявила в сотрудничестве с AMD, что будет поддерживать их альтернативу Direct3D AMD Mantle . Помимо прочего, это должно значительно повысить качество рендеринга. Техническая демонстрация фигуры Ruby, созданная AMD, также будет опираться на CryEngine.
На Gamescom 18 августа 2011 года был выпущен бесплатный SDK , который должен быть разработан с использованием некоммерческих игр.
◆ EntitySlotFlags
|
strong |
Flags the can be set on each of the entity object slots.
Enumerator | |
---|---|
Render |
Draw this slot. |
RenderNearest |
Draw this slot as nearest. . |
RenderWithCustomCamera |
Draw this slot using custom camera passed as a Public ShaderParameter to the entity. |
IgnorePhysics |
This slot will ignore physics events sent to it. |
BreakAsEntity |
Indicates this slot is part of an entity that has broken up. |
RenderAfterPostProcessing |
Draw this slot after post processing. |
BreakAsEntityMP |
In MP this is an entity that shouldn’t fade or participate in network breakage. |
CastShadow |
Draw shadows for this slot. |
IgnoreVisAreas |
This slot ignores vis areas. |
GIModeBit0 |
Bit one of the GI Mode. |
GIModeBit1 |
Bit two of the GI Mode. |
GIModeBit2 |
Bit three of the GI Mode. |
3D Engine
- Refactored: Terrain layer painting is modified to work with new 3D Engine side texture atlas and without using of any Custom Editor side textures. During painting textures look very close to how they will look after generation.
- Optimized: Enabled bindless texturing for terrain base pass and for vegetation «use terrain color» feature,
- Fixed: (VR, Config) Re-enabled default stereo output.
- Fixed: Static instancing crash.
- Fixed: (VR) Re-enable Oculus support.
- Fixed: Sky-dome initialization on level-reload.
- Fixed: (VR, Sandbox) Culling when using Sandbox with attached and enabled HMD.
- Fixed: Missing brushes on Editor start.
- Fixed: Crash on materials editing.
- Fixed: Sandbox might crash on start.
- Fixed: Static Instancing crash.
Action
Action General
- Refactored: Remove direct #include reference to CryAction files from other modules and include CryAction for every module as include path instead.
- Fixed: Camera not resetting when exiting game mode after calling SetViewCamera scriptbind.
- Fixed: A memory management issue with a debug string instance being passed across a dll boundary. Removed the previous ad-hoc workaround for this issue to reduce complexity on the CryAction’s client side.
- Fixed: Client crash when connecting to servers that did not have sv_pacifist CVar available.
Flowgraph
- New: Adds blend feature to the Entity:EntityFaceAt flownode.
- Fixed: Changing the param of a material on an entity would prevent from changing the entity’s material.
◆ InputModifierFlags
|
strong |
Flags to indicate if certain modifier keys are being pressed.
Enumerator | |
---|---|
None |
No key is pressed at the moment. |
LCtrl |
The left control key is pressed. |
LShift |
The left shift key is pressed. |
LAlt |
The left alt key is pressed. |
LWin |
The left Windows key is pressed. |
RCtrl |
The right control key is pressed. |
RShift |
The right shift key is pressed. |
RAlt |
The right alt key is pressed. |
RWin |
The right Windows key is pressed. |
NumLock |
The Num Lock key is active. |
CapsLock |
The Caps Lock key is active. |
ScrollLock |
The Scroll Lock key is active. |
Ctrl |
A control key is being pressed. |
Shift |
A shift key is being pressed. |
Alt |
An alt key is being pressed. |
Win |
A Windows key is being pressed. |
Modifiers |
A modifier key is pressed (control, shift, alt or Windows keys). |
LockKeys |
A lock key is active (Caps Lock, Num Lock or Scroll Lock). |
Miscellaneous
- CryCreateClassInstance(const char*, std::shared_ptr<T>&) — Has been removed, please use CryCreateClassInstance(const CryClassID& cid, std::shared_ptr<T>& p) or CryCreateClassInstanceForInterface(const CryInterfaceID& iid, std::shared_ptr<T>& p).
- Loading of Engine assets in code now requires the «%ENGINE%» prefix, for example «%ENGINE%/EngineAssets/Textures/White.dds».
- Flow node registration no longer requires extensive extra logic to be implemented for each game. Instead, call CryRegisterFlowNodes during initialization and CryUnregisterFlowNodes during shutdown.
- CryMath/Random.h — Is no longer included by default in certain header files. This may result in projects having to include the files manually (#include <CryMath/Random.h>).
- IConsole functions that were used to register console commands and CVars are no longer publicly accessible. You might have to update your code to use the already existing macros or the new ConsoleRegistrationHelper class (all of which are located in <CrySystem/ISystem.h>.
Installing CRYENGINE
- Double click on the CRYENGINE Launcher icon, then enter your log in credentials. NOTE: If a new CRYENGINE Launcher version is available a pop-up will appear. We recommend that the most up to date version of the CRYENGINE Launcher is always used. Below is the main Launcher dashboard. There are different ways in which an Engine version can be downloaded via the Launcher dashboard, however the fastest way is to click on the button.
- Doing so opens the dashboard shown below. All the Engine versions that are available for download, and the Engines that you have previously installed (if any have been installed) are displayed. In the example below we will install CRYENGINE version 5.6.1. Under CRYENGINE 5.6.1 click on the button. The Engine will then start to download — this process may take some time to complete (depending on your network connection speed).
- Once the Engine has download, you will be presented with a pop-up like the one shown below. Depending on what you intend to do with the Engine now determines what you need to do next. For example, if you do not intend to work with Game Code, a third party Audio middleware product, develop C++ plugins, use plugins and tools for supporting the export and content creation processes used with various DCC packages then you will not need to install any additional components and can therefore just click on the Skip button. The Engine installation process is then complete and you can proceed to Managing CRYENGINE Projects — Creating, Importing & Upgrading Projects.
- However, for those CRYENGINE users that do intend to to work with any of the elements mentioned above, then some further installation steps are required.Click on the Go button (from the pop-up), the Launcher dashboard shown below will open. There are 3 main sections; 1: IDE and Compiler, 2: SDKs and Dependencies, 3: Tools and Plugins. Sections 1: and 2: relate to third party applications while section 3: relates to CRYENGINE itself. It is worth you exploring what additional components are available (there is a scrolling function in sections 1: and 2:.For more details about installing the components available in section 3:, then see CRYENGINE Plugins and Tools. Completing the installation of the various dependencies is then a case of working through sections 1:, 2: and 3: and installing the components that you need for your intended use of the Engine. Finally, once you have installed the additional components that you require, then you can proceed to Managing CRYENGINE Projects — Creating, Importing & Upgrading Projects.
Список программ, использующих CryEngine
CryEngine
заглавие | публикация | разработчик | Издатель | Платформа |
---|---|---|---|---|
Aion | 25 ноя.2008 | NCSOFT | Gameforge 4D | Окна |
Большая разница | 23 марта 2004 г. | Crytek | Ubisoft | Окна |
CryEngine 2
заглавие | публикация | разработчик | Издатель | Платформа |
---|---|---|---|---|
Голубой Марс | 2 сен 2009 г. | Аватар Реальность | Аватар Реальность | Windows , iOS |
Crysis | 13 нояб.2007 г. | Crytek | Electronic Arts | Окна |
Crysis Warhead | 16 сен 2008 г. | Crytek Budapest | Electronic Arts | Окна |
Войны с наркотиками | 17 марта 2009 г. | Палео развлечения | Палео развлечения | Окна |
Энтропия Вселенная | 17 августа 2009 г. | MindArk | MindArk | Окна |
CryEngine 3
заглавие | публикация | разработчик | Издатель | Платформа |
---|---|---|---|---|
ArcheAge | 15 янв.2013 г. | XL Игры | Трион Миры | Окна |
ASTA | 2 марта 2016 г. | Игры с полигонами | Перемещение Игры | Окна |
Кабал 2 | 14 ноя.2012 | ESTsoft | ESTsoft | Окна |
Crysis | 4 октября 2011 г. | Crytek | Electronic Arts | PlayStation 3 , Xbox 360 |
Crysis 2 | 22 марта 2011 г. | Crytek , Crytek UK | Electronic Arts | Windows , PlayStation 3 , Xbox 360 |
кризис 3 | 19 февраля 2013 г. | Crytek , Crytek UK | Electronic Arts | Windows , PlayStation 3 , Xbox 360 |
Система обучения спешенного солдата | 2012 г. | Разумные решения | ||
Фронт врага | 10 июня 2014 г. | CI игры | CI игры | Windows , PlayStation 3 , Xbox 360 |
Lichdom: Battlemage | 26 августа 2014 г. | Xaviant | Xaviant (Windows) , Максимум игр (PlayStation 4, Xbox One) | Windows , PlayStation 4 , Xbox One |
MechWarrior Online | 17 сен 2013 | Игры Пиранья | Игры Пиранья | Окна |
Nexuiz (2012) | 3 мая 2012 г. | IllFonic | THQ | Windows , Xbox 360 |
Панзар | 12 апреля 2013 г. | Панзар Студия | Панзар Студия | Окна |
Демо Ruby tech | 2013 | AMD | ||
Снайпер: Призрачный воин 2 | 12 марта 2013 г. | Город Интерактивный | Город Интерактивный | Windows , PlayStation 3 , Xbox 360 |
Состояние распада | 5 июня 2013 г. | Лаборатория нежити | Microsoft Studios | Windows , Xbox 360 , Xbox One |
Система городской жизни | 2010 г. | Enodo | ||
Warface | 21 октября 2013 г. | Crytek Kiev , Crytek UK (Xbox 360) | Crytek , Microsoft Studios (Xbox 360) | Windows , Xbox 360 , PlayStation 4 , Xbox One |
CryEngine (4-е поколение)
заглавие | публикация | разработчик | Издатель | Платформа |
---|---|---|---|---|
Арена судьбы | Задавать | Crytek Черное море | Crytek | Windows , PlayStation 4 , Xbox One |
Бронированная война | 8 октября 2015 г. | Обсидиан Развлечения | Обсидиан Развлечения | Окна |
Боевой клич | Задавать | Battlecry Studios | Bethesda Softworks | Окна |
Все ушли в восторг | 11 августа 2015 г. | Китайская комната SCE Santa Monica Studio | Sony Computer Entertainment | Windows , PlayStation 4 |
Эволюционировать | 10 февраля 2015 г. | Turtle Rock Studios | 2K Игры | Windows , PlayStation 4 , Xbox One |
Homefront: революция | 17 мая 2016 | Студии Deep Silver Dambuster | Глубокое серебро | Windows , PlayStation 4 , Xbox One , Linux |
Kingdom Come: Deliverance | 13 февраля 2018 г. | Warhorse Studios | Warhorse Studios | Windows , PlayStation 4 , Xbox One |
Восхождение сына Рима | 22 нояб.2013 г. | Crytek Франкфурт | Microsoft Studios | Windows , Xbox One |
Добыча | 5 мая 2017 | Arcane Studios | Bethesda Softworks | Windows , PlayStation 4 , Xbox One |
Снайпер Призрачный Воин 3 | 25 апреля 2017 | CI игры | CI игры | Windows , PlayStation 4 , Xbox One |
Коллекционные предметы | 19 марта 2014 г. | Crytek Франкфурт | DeNA | iOS , Android |
Подъем | 28 апреля 2016 г. | Crytek | Crytek | Windows, Oculus Home |
CryEngine V
заглавие | публикация | разработчик | Издатель | Платформа |
---|---|---|---|---|
Охота: вскрытие | 22 февраля 2018 г. | Crytek | Crytek | Windows , PlayStation 4 , Xbox One |
Crysis Remastered | 18 сентября 2020 г. | Crytek | Crytek | Windows , PlayStation 4 , Xbox One |
◆ PhysicsRopeFlags
|
strong |
Physicalization flags specifically for Rope-entities
Enumerator | |
---|---|
None |
No flags |
FindiffAttachedVel |
Approximate velocity of the parent object as v = (pos1-pos0)/time_interval. |
NoSolver |
No velocity solver; will rely on stiffness (if set) and positional length enforcement. |
IgnoreAttachments |
No collisions with objects the rope is attached to. |
TargetVtxRel0 |
Whether target vertices are set in the parent entity’s frame. |
TargetVtxRel1 |
Whether target vertices are set in the parent entity’s frame. |
SubdivideSegs |
Turns on ‘dynamic subdivision’ mode (only in this mode contacts in a strained state are handled correctly). |
NoTears |
Rope will not tear when it reaches its force limit, but stretch. |
Collides |
Rope will collide with objects other than the terrain. |
CollidesWithTerrain |
Rope will collide with the terrain. |
CollidesWithAttachment |
Rope will collide with the objects it’s attached to even if the other collision flags are not set. |
NoStiffnessWhenColliding |
Rope will use stiffness 0 if it has contacts. |
Network
Refactoring of our network is in progress and will start with the public API. The goal is to remove network dependencies (in the legacy CryAction module) in order to simplify how games can utilize networking in code. This is also preparation for a future refactoring of our network internals.
Receiving Client Connection Callbacks
INetworkedClientListener and INetwork::AddNetworkedClientListener was added as an alternative for the legacy game rules system. This interface can be used to receive callbacks when clients connect over the network, making it possible to skip usage of game rules in projects. The templates have been updated to utilize this.
Remote Method Invocation (RMI) Support for New Entity Components
In the initial 5.3.0 Engine release, the new Entity Component system did not support RMI’s, this has now been corrected and allows new entity code to be networked. See example below.
#include <CryNetwork/Rmi.h> class CNetworkedComponent final : public IEntityComponent { virtual void Initialize() final { SRmi<RMI_WRAP(&CNetworkedComponent::RemoteEntityMethod)>::Register(this, eRAT_NoAttach, false, eNRT_ReliableOrdered); m_pEntity->GetNetEntity()->BindToNetwork(); } // Parameters to serialize an entity id across the network struct SEntityParams { EntityId entityId; void SerializeWith(TSerialize ser) { // Called to serialize and deserialize the entity id, note the 'eid' policy // This policy is used to convert entity identifiers between machines as id's are not unique over the network. ser.Value("entityId", entityId, 'eid'); }; }; bool RemoteEntityMethod(SEntityParams&& params, INetChannel* pNetChannel) { if (IEntity* pEntity = gEnv->pEntitySystem->GetEntity(params.entityId)) { // Success! } // Return true to indicate that RMI was valid, a value of false indicates that something went wrong - for example validation of input indicates cheating. return true; } void InvokeRemoteEntityMethod(EntityId id) { SRmi<RMI_WRAP(&CNetworkedComponent::RemoteEntityMethod)>::InvokeOnRemoteClients(this, SEntityParams{ id }, id); } };
Network Aspect Serialization for New Entity Components
In addition to RMI’s, 5.4 also introduces support for serializing chunks of data as aspects over the network. This can be useful, for example to synchronize player input of a player. We’ve attached an example below:
class CNetworkedAspectComponent final : public IEntityComponent { virtual void Initialize() final { m_pEntity->GetNetEntity()->BindToNetwork(); } virtual NetworkAspectType GetNetSerializeAspectMask() const final { return 1 << GetNetSerializationAspect(); } // Called when serializing and deserializing virtual bool NetSerialize(TSerialize ser, EEntityAspects aspect, uint8 profile, int flags) final { if (aspect == GetNetSerializationAspect()) { // Serialize or deserialize our flags, note that the optional third parameter specifies the selected compression policy ser.Value("m_flags", m_flags); } } const EEntityAspects GetNetSerializationAspect() const { return eEA_GameClientD; } // Call when m_flags changes and we want to serialize the data to the other machines. void RequestNetSyncToOthers() { m_pEntity->GetNetEntity()->MarkAspectsDirty(GetNetSerializationAspect()); } uint32 m_flags; };