Cryengine 3 sdk
Содержание:
- Animation Compression Details
- Техническая демонстрация CryEngine 5.6 дразнит отсылками к Crysis
- Состав и лицензионная политика[править | править код]
- Learning CryEngine
- Плюсы и минусы
- ◆ PhysicsEntityFlags
- ◆ DynamicLightFlags
- My First Level
- Known Issues
- Key Binds
- Contact
- История разработки и поддержки[править | править код]
- Installing CRYENGINE
- Указатели
- ◆ EntitySlotFlags
Animation Compression Details
An animation source file is processed by the RC to output a compressed CAF file used by CRYENGINE. The compression involves the following steps:
Remove data in channels with no moves (same to the bind pose within the whole duration)
Remove some key-frames based on error thresholds
- Key-frames which can be interpolated with the given error threshold are removed.
- Each joint can have a custom error threshold.
Quantize quaternions
- A quaternion consists of 4 floats (128bit) normally. But for the normalized one, we can keep just 3 floats (96bit).
- There are three kinds of schemes for the quantization:
- 128bit (no compression),
- 48bit (15bit+15bit+15bit, and rest bits for indexing the omitted element),
- 64bit (20bit+21bit+21bit, and rest bits for indexing the omitted element).
- In the default setting, the 48-bit scheme is used for most cases.
- RC determines the most effective scheme under the given error threshold (the same one given in step 2).
- You can find more details in the ‘QuatQuantization.h’.
Create animation databases (optional)
During this multiple CAF files are combined into a single DBA file, all duplicate controllers get eliminated.
Техническая демонстрация CryEngine 5.6 дразнит отсылками к Crysis
Прошло много времени с тех пор, как Crysis «плавил» компьютеры, впечатляя красотой и реалистичностью происходящего на экране. На подходе консоли следующего поколения, и не пришло ли время сделать это снова? Выпущенная Crytek техническая демонстрация новой версии CryEngine 5.6 не только вызывает интерес, но и делает очевидные отсылки к славным временам Crysis.
Видео начинается, как и следует ожидать, с графических достоинств недавно выпущенного сетевого боевика Hunt: Showdown от Crytek. Во всей красе демонстрируются объёмный туман в реальном времени, полностью динамическое и глобальное освещение в реальном времени, физика верёвок, цепей, тканей и изгибающейся от прикосновений растительности, региональное размытие в движении с учётом перемещения отдельных объектов, а не всего кадра, глубина резкости, аккуратное совмещение объектов и объёмные лучи.
The Land of Pain
Затем камера проходит через серию порталов, которые уже отдают дань прежним играм Crytek. Динамическое региональное освещение внутри помещений демонстрирует и объёмный свет, и его отражения от поверхностей, реалистичные мягкие тени — в общем, те аспекты, которые сегодня, как правило, улучшает трассировка лучей, хотя данная технология здесь не задействована. Впрочем, Crytek уже демонстрировала свои достижения в этой области, причём на видеокарте Radeon Vega 56.
Следующий портал ведёт в зону в духе античного мира Ryse: Son of Rome. Наконец, на отметке 2:15 зрителя отправляют в великолепные джунгли — и окружение, и музыкальное сопровождение очень напоминают Crysis и его саундтрек.
В видео есть и другие моменты, делающие отсылки к знаменитому шутеру: в начале, когда демонстрируется пользовательский интерфейс, путь файла включает пользователя prophet — это имя одного из центральных персонажей серии Crysis, Пророка. К тому же дважды звучащее в ролике название CryEngine тоже озвучено голосом, похожим на Пророка, а во втором случае сопровождается знакомым звуком трансформации защитных свойств костюма.
Конечно, всё это не могло остаться без внимания поклонников Crysis, которые пытаются найти ответы, что же эти довольно очевидные отсылки значат? Может быть, Crytek готовит обновлённое издание старых игр на новом движке или делает намёки на разработку новой игры в серии?
Aporia: Beyond the Valley
Но всё это кажется маловероятным сегодня, учитывая обстоятельства, в которые поставлена студия. Последняя игра в серии, Crysis 3, вышедшая в далёком 2013 году, не оправдала ожиданий издателя и владельца интеллектуальных прав Electronic Arts, да и у разработчика в лице Crytek последние годы были непростыми.
Prey
На уточняющий вопрос глава пресс-службы Crytek Йенс Шефер (Jens Schäfer) ответил сухо: «Это чистая технологическая демонстрация CryEngine». Что ж… когда-нибудь?
Everybody’s Gone to the Rapture
CryEngine 5.6 уже доступен разработчикам на официальном сайте и через панель управления движком. Поддерживаются платформы ПК, Xbox One, PlayStation 4 и Oculus Rift. Последняя версия вносит более тысячи улучшений и включает проверенные на практике функции, использованные в Hunt: Showdown.
Sniper Ghost Warrior 3
Лицензионная политика предусматривает 5 % отчисления от продаж продуктов, созданных на базе этого движка, и не требует никаких единоразовых платежей. При этом Crytek предоставляет полный исходный код своей мощной платформы для разработки игр.
Состав и лицензионная политика[править | править код]
Системные требования CryEngine 3 SDK | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
CryEngine 3 SDK базируется на игровом движке CryEngine 3 и содержит все компоненты последнего наряду со средствами разработки, включая редактор уровней Sandbox третьей версии.
CryEngine 3 SDK содержит множество дополнительных инструментов, включая исходный код игровых ассетов на C++, экспортеры контента, примеры скриптов, механизм Flowgraph и проч. Вместе с тем, графическая компонента CryEngine 3, вошедшая в первую версию CryEngine 3 SDK, поддерживает лишь DirectX 9; добавление поддержки DirectX 11 заявлено разработчиками в последующих выпусках. В составе CryEngine 3 SDK присутствуют 32-битная и 64-битная версии инструментов.
В первом выпуске CryEngine 3 SDK доступ к редактированию уровней имеет лишь их создатель; он не может открыть доступ на редактирование другим пользователям. В последующих версиях заявлено внедрение новой системы управления доступом к уровням, которая позволит создавать коллективные проекты, регулировать уровень доступа участников этих проектов к уровням и т. д.
Лицензия CryEngine 3 SDK позволяет бесплатно использовать его для создания и распространения некоммерческих игр. В случае, если разработчик желает использовать CryEngine 3 SDK в коммерческих целях, он должен отчислять компании Crytek 20 % от продаж своих игр, разработанных с использованием данного SDK.
Learning CryEngine
When you are starting out new in CryEngine it can be hard to get your head around. When I started I knew nothing so I had to find all the resources for myself, but not any more. I have gathered the best tutorials from all over the web.
Eat 3D
If you have a little cash in your pocket that you’re willing to spend on tutorials, these are the best. Hélder Pinto, Industry Professional and Level Architect for Crysis 3, runs you through CryEngine, starting with the basics and going all the way up to advanced level creation.
Eat 3D’s CE3 tutorials are extremely in depth and cover everything you need to make a world within the engine. These tutorials do not cover coding or full game creation, but are some of the best in level design.
CyberGameArts
For those who can’t afford to (or simply don’t want to) pay for tutorials, CyberGameArts runs through all the basics to learn and create with CryEngine.
He covers many topics that aren’t widely known and answers questions on his YouTube page for any users who need help.
The Manual
Prefer reading? Or can’t find what you need? The amazing guys over at CryTek and the CryDev website have put together a CryEngine 3 «Manual» that covers absolutely everything. From basic tools, to fire propagation, to changing source code and editing preferences.
Along with the manual, lots of the articles in there will give you videos and assets pre-created as examples
Tip: In case you are running an older version of CryEngine, there is also a tab for old/obsolete tutorials.
Плюсы и минусы
CryENGINE 3 пользуется среди разработчиков игр огромной популярностью, что обусловлено рядом его преимуществ:
- Для создания качественных игр не требуется никакого стороннего программного обеспечения. Все необходимые инструменты предусмотрены в CryENGINE 3.
- Использование передовых графических технологий.
- Движок поддерживает не только персональные компьютеры, но и платформы Playstation, Xbox.
- В случае пропажи интернет-соединения, сохранить результат работы можно в редакторе.
- Удобный интерфейс.
- Функция сжатия анимации позволяет сократить использование оперативной памяти до 90 процентов.
- Реалистичная физика.
- Возможность зарабатывать на платном распространении своих проектов.
- Нет необходимости в проведении инсталляции. Чтобы начать работу с платформой, достаточно распаковать архив и запустить редактор уровней.
- Широкий функционал.
- Наличие эффективного 3D стереоскопического решения.
- Исключительное качество графики, приближенное к реальным съемкам.
- Платформа идет в ногу со временем, пользователи могут оптимизировать свои проекты под GPU-рендеринг, а также внедрять поддержку DirectX
- Приложение поддерживает инверсную кинематику.
- Движок оснащен передовым искусственным интеллектом.
- Совместимость с популярными графическими редакторами. Из них можно импортировать в приложение модели и текстуры.
- Множество положительных отзывов со стороны профессиональных разработчиков.
Недостатки:
- В программе предусмотрен лишь англоязычный интерфейс.
- Отсутствие нормальной технической поддержки, из-за чего пользователям придется справляться со всеми трудностями самостоятельно.
- Сложный процесс сборки билда и отсутствие кнопки “build”.
- Множество багов как на сервере, так и в самом редакторе.
◆ 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 |
◆ DynamicLightFlags
|
strong |
Flags that can be used to set the parameters of dynamic lights.
Enumerator | |
---|---|
AreaSpecTex |
Flag for AreaSpecTex. |
Directional |
Flag that indicates this is a directional light. |
BoxProjectedCm |
Flag for box projected cubemaps. |
Post3DRenderer |
Flag for post 3d renderer light. |
CastShadowMaps |
Flag that indicates if this light should cast shadows. |
Point |
Flag that indicates this light is a point light. |
Project |
Flag that indicates this light is a projector. |
IgnoresVisAreas |
Flag for ignoring Vis Areas. |
DeferredCubemaps |
Flag that indicates that the cubemaps are deferred. |
HasClipVolume |
Flag that indicates this light has a clip volume. |
Disabled |
Flag that indicate that this light is disabled. |
AreaLight |
Flag that indicates that this light is an area light. |
UseForSVOGI |
Flag that indicates that this light is used for SVOGI. |
Fake |
No lighting, used for Flares, beams and such. |
Sun |
Flag that indicates that this light is the sun. |
LM | |
ThisAreaOnly |
Affects only current area/sector. |
Ambient |
Ambient light (as name indicates, used for replacing ambient). |
IndoorOnly |
Does not affect height map. |
VolumetricFog |
Affects volumetric fog. |
AttachToSun |
Add only to Light Propagation Volume if it’s possible. |
TrackviewTimescrubbing |
Add only to Light Propagation Volume if it’s possible. |
VolumetricFogOnly |
Affects only volumetric fog. |
LightTypeMask |
Mask with the various types of light that are available. |
My First Level
Chrysalis has some code features which are specific to a long-term goal I have, though most of these will not affect you. One that does affect everyone is the way you play test a level.
Most CRYENGINE games are designed with a player who is also the actor, and that player is spawned into the game as an actor when you connect to the game.
I have worked hard to refactor the code so that the concept of player and actor / character are now completely separate. Code relating to the player is kept to a minimum, in particular:
- camera management
- input management
All the other code is split off into an actor class. Actors can have lifespans totally indepedant of the player. A player is able to ‘attach’ themselves to an actor, the camera and input are then directed to that actor — who acts accordingly.
While I expect to add some code in the near future to handle spawning a new actor when the player enters game mode, for now, it does not.
When you first create a level, be sure to add a new ‘Character’ entity to that level. Name that entity ‘Hero’, and run a console command to attach the player camera and input to that character:
This will set up the player to attach to the ‘Hero’ character — something that is done automatically when the level is loaded.
You will not be able to enter game mode to test a level without at least one character in the level, and attaching the player to that character.
I will sort out something more convenient in time, as I get close to making a release of this code.
Known Issues
- Loading the test_all map in game mode may not work until after you have loaded it in the Sandbox and exported the level.
- Animations may not work correctly until after they have been loaded once in the Sandbox. They need to be compressed by the engine.
- You may need to generate all the metadata again, particularly if you find that some assets are not loading, like the character definitions or the animations. If so, right click on Chrysalis.cryproject in the Windows Explorer and choose ‘Generate / Repair metadata’.
- Some warnings / errors on loading a level — safe to ignore
- Switching models between first and third person modes doesn’t presently work.
- Interaction with entities is not working yet.
- Keybinds are hard-coded and will remain so until a replacement for the keybind XML file is available.
- Actor animations do not have any transitions as yet, and so rotations will look bad for a while.
- Crouch animations are from the Motus Mobililty Basic / Pro pack, and as such I cannot distribute them. I have built a blendspace for movement while crouching, but it won’t be functional unless you buy the appropriate pack of animations and import them into the project. Place them in the assets/objects/characters/human/male/animations/crouch/ folder, making sure to follow the general naming conventions.
- The CryCamera asserts the first time you switch from first person view to third person view. It can be safely ignored for now.
- Motus character does not have a physics proxy body yet. That will need to be added at some time to allow detection of hits to body parts.
Key Binds
- WASD
- mouse wheel to zoom in and out on the ActionRPG camera
- left click to interact — code is in flux so it may do weird random things — beware, it’s buggy so it can get locked up as well
- F — interact — same as left mostly
- C — crouch
- H — crawl — no animations yet
- V — kneel — no animations yet
- B — sit — no animations yet
- F M X — use, drop and toss items
- 0 — 9 — action bar keys — these will activate actions for interactive items. There is no UI yet to show which things will happen if you press these keys…just try hitting 1-4 and see if anything happens.
- J K L — inspection start, inspect, and inspection end. May not currently work.
- PageUp, PageDn, Left, Right, Up, Down — to help debug the camera, these offset the camera by a small amount with each press.
Contact
If you want to contact me, you can often find me on the CRYENGINE community Slack channel under the name ‘Ivan Hawkes’.
If you have any questions about the code, please take the time to try and find the answer within the code before contacting me for help. General questions about C++ or CRYENGINE should be directed to Google, Slack, the CRYENGINE Forums or online discussions groups for that topic.
История разработки и поддержки[править | править код]
Первые сведения о бесплатной версии CryEngine 3 SDK появились в марте 2010 года, когда Карл Джонс (англ. Carl Jones), директор по бизнес-развитию в Crytek, выступая на India Game Developer Summit 2010, сообщил о версии CryEngine 3 для независимых разработчиков с пониженной ценой, а также о полностью бесплатной версии движка. Подробности не уточнялись.
15 марта 2011 года британский ресурс Develop опубликовал большое интервью с Авни Ерли (англ. Anvi Yerli), одним из сооснователей и руководителей Crytek. В этом интервью Ерли заявил, что CryEngine 3 SDK станет конкурентом Unreal Development Kit, который предлагает приблизительно аналогичную функциональность для движка Unreal Engine 3 и продвигается компанией Epic Games.
Во второй половине апреля 2011 года Джеват Ерли в письме сообществу сайта CryMod.com официально сообщил, что CryEngine 3 SDK будет выпущен в августе 2011 года.
17 августа 2011 года состоялся официальный выпуск CryEngine 3 SDK. Карл Джонс так прокомментировал выпуск SDK: «С выходом нашего SDK мы призываем создателей игр попробовать CryEngine 3, и я надеюсь, что это приведёт к созданию новых компаний, использующих наш движок
Что ещё более важно, мы рассчитываем увеличить количество талантливых разработчиков на CryEngine 3 и повысить уровень нашего интернет-сообщества пользователей. Этот SDK содержит больше инструментов, чем мы когда-либо выпускали ранее — он даёт людям возможность создавать совершенно новые игры с нуля, а не заниматься моддингом существующих игр от Crytek, и потому мы призываем всех заинтересованных и инди-разработчиков попробовать его»
Одновременно с выпуском данного продукта сайт CryMod.com, запущенный в 2003 году и предназначенный для развития и поддержки моддинга всех игр от Crytek, был переименован на CryDev.net, что отражает изменение его направленности: с выходом CryEngine 3 SDK он стал также главным интернет-порталом по поддержке пользователей данного SDK, а не только модостроителей к существующим играм. На следующий день, 18 августа, количество скачиваний данного средства разработки превысило 20 000 раз. Выпуск CryEngine 3 SDK был замечен и освещён IT- и игровой прессой, многие журналисты сравнивали SDK от Crytek со своим ближайшим и сильнейшим конкурентом — Unreal Development Kit.
22 августа, через 5 дней после выпуска CryEngine 3 SDK, Crytek сообщила, что его количество зарегистрированных загрузок превысило 100 000 раз. Таким образом, CryEngine 3 SDK стал лидером по скорости скачивания среди всех бесплатных редакций SDK игровых движков, обогнав Unreal Development Kit (50 000 загрузок в первую неделю) и Unity (20 000 загрузок в первые две недели).
2 сентября 2011 года количество скачиваний CryEngine 3 SDK превысило 300 000 раз. Авни Ерли сообщил сайту Develop, что источники загрузок SDK равномерно распределены по США, Европе и Азии.
28 сентября 2011 года количество скачиваний достигло отметки в 450 000 раз. Авни Йерли, комментируя эту новость, сообщил, что компания получила множество запросов на лицензирование CryEngine 3 SDK, причем не только от игровых разработчиков, но и от компаний, не связанных с игровой индустрией. Кроме этого, он также выразил надежду, что CryEngine 3 SDK поможет реализовать свои задумки независимым разработчикам.
17 октября 2011 года вышло первое обновление для CryEngine 3 SDK, которое содержало обновленный до версии 3.3.6 движок CryEngine 3 и билд самого SDK под номером 2572. Основным нововведением стало появление ранее обещанной поддержки коллективного создания модификаций — была создана онлайновая база данных модов, репозиторий, который позволяет разработчикам организовывать и координировать коллективные проекты. Также в новой версии SDK был улучшен процесс загрузки уровней, внесены изменения в систему частиц и игровой ИИ. Помимо этого, обновление исправляло множество ошибок, содержало подстройки многих параметров и незначительные улучшения функционала. Примерно в одно время с выходом данного обновления количество скачиваний CryEngine 3 SDK достигло пол-миллиона.
21 октября 2011 года вышла новая версия CryEngine 3 SDK, в которой движок CryEngine 3 был обновлен до версии 3.3.7.
13 апреля 2012 года вышла новая версия (3.4.0) CryEngine 3 SDK поддерживающая DirectX 11
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.
Указатели
Программисты очень любят проверять указатель на равенство нулю. Вот если бы они ещё знали, как часто они делают это неправильно. Проверяют, когда уже поздно.
Приведу один пример, остальное перечислю списком.
V595 The ‘p’ pointer was utilized before it was verified against nullptr. Check lines: 325, 326. scripthelpers.h 325
Обещанный список из 35 сообщений: CryEngineSDK-595.txt
Неопределённое поведение
V567 Undefined behavior. The ‘m_index’ variable is modified while being used twice between sequence points. inetwork.h 2303
Циклы «на один раз»
V612 An unconditional ‘break’ within a loop. weapon.cpp 2854
Тело цикла будет выполнять только один раз. Причина — безусловный оператор ‘break’. При этом, в цикле нет операторов ‘continue’.
Есть ещё несколько таких подозрительных циклов:
- gunturret.cpp 1647
- vehiclemovementbase.cpp 2362
- vehiclemovementbase.cpp 2382
Странные присваивания
Фрагмент N1.
V570 The ‘modifiedSlopeNormal.z’ variable is assigned to itself. playerstateground.cpp 227
Фрагмент N2.
V519 The ‘objtypes’ variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 2807, 2808. physinterface.h 2808
Члену класса ‘objtypes’ два раза присваивается значение.
Фрагмент N3.
V519 The ‘maxChargedThrowSpeed’ variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 1284, 1285. weaponsharedparams.cpp 1285
И ещё несколько таких аномальных присваиваний:
- The ‘bExecuteCommandLine’ variable. Check lines: 628, 630. isystem.h 630
- The ‘flags’ variable. Check lines: 2807, 2808. physinterface.h 2808
- The ‘entTypes’ Variable. Check lines: 2854, 2856. physinterface.h 2856
- The ‘geomFlagsAny’ variable. Check lines: 2854, 2857. physinterface.h 2857
- The ‘m_pLayerEffectParams’ variable. Check lines: 762, 771. ishader.h 771
Нужно быть аккуратным с именами сущностей
V618 It’s dangerous to call the ‘sprintf_s’ function in such a manner, as the line being passed could contain format specification. The example of the safe code: printf(«%s», str); gamephysicssettings.cpp 174
Пожалуй, это не ошибка, но опасный код. Если вдруг в имени сущности встретится символ ‘%’, то результаты могут быть весьма неожиданными.
Одинокий странник
V607 Ownerless expression ‘insertResult.first->second.m_entityId’. persistantstats.cpp 4814
Одинокое выражение, которое ничего не делает. Ошибка? Недописанный код?
Ещё одно место в коде: recordingsystem.cpp 2671
Оператор new
V668 There is no sense in testing the ‘m_pWriteBuffer’ pointer against null, as the memory was allocated using the ‘new’ operator. The exception will be generated in the case of memory allocation error. crylobbypacket.h 88
Код устарел. Теперь при ошибки выделения памяти оператор ‘new’ генерирует исключение.
Другие места, ждущие рефакторинга:
- cry_math.h 73
- datapatchdownloader.cpp 106
- datapatchdownloader.cpp 338
- game.cpp 1671
- game.cpp 4478
- persistantstats.cpp 1235
- sceneblurgameeffect.cpp 366
- killcamgameeffect.cpp 369
- downloadmgr.cpp 1090
- downloadmgr.cpp 1467
- matchmakingtelemetry.cpp 69
- matchmakingtelemetry.cpp 132
- matchmakingtelemetry.cpp 109
- telemetrycollector.cpp 1407
- telemetrycollector.cpp 1470
- telemetrycollector.cpp 1467
- telemetrycollector.cpp 1479
- statsrecordingmgr.cpp 1134
- statsrecordingmgr.cpp 1144
- statsrecordingmgr.cpp 1267
- statsrecordingmgr.cpp 1261
- featuretester.cpp 876
- menurender3dmodelmgr.cpp 1373
◆ 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. |