У S. T. A. L. K. E. R. 2 сменился движок. Что это значит, насколько все плохо и плохо ли вообще. На каком движке сталкер

Предупреждение PVS-Studio: V547 Expression ‘m_tActionCondition.m_tLifeTime >= 0’ is always true. Unsigned type value is always >= 0. script_entity_action_inline.h 115

Стало известно, на каком движке разрабатывается S.T.A.L.K.E.R. 2

Когда игра S.T.A.L.K.E.R. 2 еще только была анонсирована, Сергей Галенкин, представляющий компанию Epic Games, дал всем понять, что новинка разрабатывается на популярном движке производства EG.

Теперь же для сомнений места не осталось совсем: на официальном сайте в разделе с перечнем игр, разрабатываемых на этом движке, появился и S.T.A.L.K.E.R. 2, правда, ненадолго — довольно скоро игру оттуда удалили. Что отнюдь не помешало внимательным геймерам не только успеть заметить появление там ожидаемого всеми продолжения культовой серии, но и сделать скриншоты.

Прошло еще несколько часов и студия GSC Game World посредством своих официальных пабликов в соцсетях выступила со следующим заявлением:

» S.T.A.L.K.E.R. 2 работает на Unreal Engine.

Признаться, мы хотели сказать об этом позже, но коллеги из Epic сделали сюрприз для всех (включая нас) прямо в новогоднюю ночь.

Команда GSC Game World выбирает самые подходящие и современные технологии, и UE оказался лучшим выбором среди всех доступных.

Он дал возможность делать тот проект, который вы ждёте. На нём удаётся создать опасную и влекущую атмосферу S.T.A.L.K.E.R. — плоть и кровь нашей игровой вселенной. Наконец, Unreal Engine (вместе с умелыми руками) хорошо гармонирует с нашей целью сделать моддинг удобным и доступным. Благодаря моддерам мир Зоны продолжает жить и развиваться, пока мы заняты разработкой сиквела.

Да-да, мы знаем, о чём вы подумали, но эта новость никак не связана ни с платформами, ни с цифровыми магазинами. Об этом позже.

Смотрите также:

Категории

GSC Game World 50
Stalker Shadow of Chernobyl 6
Stalker Clear Sky 95
Stalker Call of Pripyat 70
Stalker 2 101
Билды 8
Выставки, мероприятия 40
Жизнь сайта 164
Интервью 80
Кинопроекты, сериалы, видео 63
Литература, книги, журналы 142
Модификации 131
Мультиплеер (сетевая игра) 37
Одежда Сталкер 15
Разное 192
Страйкбол, ролевые игры 16
Чернобыль 53

Свежее

Люди говорят

00:20 — Кто такой Захар Бочаров?

01:47 — Для чего вообще это интервью?
02:58 — О коллективе в GSC Game World.
03:37 — Сергей Григорович.
04:56 — Неловкий вопрос.
07:22 — Это правда, что в компании сейчас лютая текучка кадров?
08:10 — Об увольнениях.
09:03 — Об уходе ведущих разработчиков в 4A Games.
10:30 — У вас точно все нормально?
11:13 — Дмитрий Глуховский и S.T.A.L.K.E.R. 2.
13:13 — А чем ты вообще занимаешься в GSC Game World?
14:40 — Странные вопросы фанатов и странныу ответы КМ-ов.
16:03 — DKUD.
18:07 — В GSC Game World работают модмейкеры?
19:20 — В компании действительно много новичков, и их приняли в команду, чтобы побыстрее укомплектовать состав?
20:29 — Алишер Моргенштерн и S.T.A.L.K.E.R. 2.
21:39 — Реакция фанатов на слова Алишера.
22:41 — Токсичная русскоязычная аудитория и токсичная фан-база сталкера.
26:50 — Человек, который слил все билды Сталкера, неудобен компании?
28:30 — Используют ли разработчики дизайн-документы, 3D-модели и прочие наработки отмененного S.T.A.L.K.E.R. 2 (включая слитые), при разработке текущей игры?
31:25 — Финальный отсчет возвращается?
32:45 — Какой в команде настрой на S.T.A.L.K.E.R. 2?
33:15 — Вы опубликовали ролик, в котором сказали, что создаете игры 26 лет. Но ведь это не так.
34:15 — Настольные игры?
35:18 — Новые патчи для оригинальной игры?
36:15 — Ремейк? Ремастер?
36:30 — Сторонние коммерческие проекты на тематику Сталкера будут закрыты?


Если вам не повезло, и ни одно из решений проблемы не помогло, то вы сможете найти это решение в изменении файла подкачки. С багом боролись большое количество времени, но именно это решение проблемы нашли не так уж и давно.

Unreal Engine 5 — новая, необкатанная технология?

Не очень новая и не совсем необкатанная. Формально движок анонсировали в мае 2020 года, но разработка началась гораздо раньше, в 2016 или 2017 году.

Видимо, избранные партнеры Epic Games получили доступ к движку задолго до анонса. Например, на базе Unreal Engine 5 разрабатывается Hellblade 2, причем на новом движке был сделан трейлер, показанный еще в декабре 2019 года, за полгода до презентации Unreal Engine 5.

А вдруг S.T.A.L.K.E.R. 2 тоже сразу делали на Unreal Engine 5?

Нет, не делали. Когда в начале 2020 года разработчики рассказали о партнерстве с Epic Games, версию движка не упоминали, но вскоре выяснилось, что речь идет именно про Unreal Engine 4.

Не так плохо, как может показаться. Дело в том, что перенос с одного движка на другой (например, с Unreal Engine на CryEngine) и с одной версии движка на другую версию того же движка (как в нашем случае) это очень разные вещи.

У Epic Games есть обширное руководство по миграции на Unreal Engine 5 с предыдущей версии движка. Судя по руководству, особых проблем не должно быть ни с ассетами, ни с кодом.

На легкость миграции указывают и планы других разработчиков. К примеру, триллер The Invincible сейчас делают на Unreal Engine 4, но ближе к релизу разработчики перенесут его на пятую версию движка — видимо, это довольно простой процесс.

Кроме того, ходят слухи, что Epic Games собирается перенести на Unreal Engine 5 свой главный проект, Fortnite. Перенос якобы совместят со сменой сезона, то есть верифицировать слух удастся уже в сентябре.

Слух звучит логично: Epic Games регулярно внедряет в Fortnite новейшие технологии Unreal Engine, тестируя их на реальной игре.


Если вы были свидетелем появления «Чистого неба», то прекрасно помните все те «лестные» эпитеты, которыми игроки награждали разработчиков. И было за что! Играть и в самом деле было совершенно невозможно, причем ошибка XRay Engine была еще «цветочками»!

Copy-paste

Для начала рассмотрим ошибки, связанные с копированием кода. Сценарий их возникновения в разных случаях обычно похож: скопировали код, поменяли часть переменных, а несколько — забыли. Такие ошибки могут быстро распространяться по кодовой базе, и без статического анализатора их очень легко пропустить.

Предупреждение PVS-Studio: V533 It is likely that a wrong variable is being incremented inside the ‘for’ operator. Consider reviewing ‘i’. mxqmetric.cpp 76

Анализатор обнаружил, что во вложенном цикле for инкрементируется переменная i, а проверяется переменная j, что приводит к бесконечному циклу. Скорее всего, при копировании её просто забыли поменять.

    The conditional expressions of the ‘if’ operators situated alongside each other are identical. Check lines: 445, 447. base_monster_startup.cpp 447 The conditional expressions of the ‘if’ operators situated alongside each other are identical. Check lines: 447, 449. base_monster_startup.cpp 449

Предупреждение PVS-Studio: V517 The use of ‘if (A) <. >else if (A) <. >‘ pattern was detected. There is a probability of logical error presence. Check lines: 1502, 1505. gstats.c 1502

Как и в предыдущем примере, здесь используются два одинаковых условия (strncmp(buff,»\\getpidr\\»,9) == 0). Сложно сказать наверняка, является ли это ошибкой или просто недостижимым кодом, но на это точно стоит обратить внимание. Возможно, что здесь должны быть блоки с getpidr/setpidr по аналогии с getpdr/setpdr.

Предупреждение PVS-Studio: V524 It is odd that the body of ‘width’ function is fully equivalent to the body of ‘height’ function. tpixel.h 1090

Методы height() и width() имеют одинаковое тело. Учитывая, что вычисляются размеры граней куба, возможно, ошибки здесь нет. Но лучше переписать метод width() следующим образом:

Неправильное использование C++

C++ — замечательный язык, который предоставляет программисту много возможностей… отстрелить себе ногу особо жестоким образом. Неопределённое поведение, утечки памяти и, конечно же, опечатки — об ошибках такого рода пойдёт речь в текущем разделе.

Предупреждение PVS-Studio: V591 Non-void function should return a value. _matrix33.h 435

В конце метода пропущен return *this. По стандарту подобный код приведёт к неопределённому поведению. Так как возвращаемое значение является ссылкой, это, скорее всего, приведёт к падению программы при попытке обратиться к возвращаемому значению.

Предупреждение PVS-Studio: V575 The null pointer is passed into ‘fclose’ function. Inspect the first argument. ogg_enc.cpp 47

Довольно интересный пример. Анализатор обнаружил, что аргумент в вызове fclose равен nullptr, что делает вызов функции бессмысленным. Можно предположить, что должны были закрыть поток in.

    A part of conditional expression is always true: 0x000000FF. nvi_image.cpp 170 A part of conditional expression is always true: 0x000000FF. nvi_image.cpp 171 A part of conditional expression is always true: 0x000000FF. nvi_image.cpp 172 A part of conditional expression is always true: 0x000000FF. nvi_image.cpp 173

Ещё один пример странного кода:

Предупреждение PVS-Studio: V603 The object was created but it is not being used. If you wish to call constructor, ‘this->VertexCache::VertexCache(. )’ should be used. vertexcache.cpp 6

Вместо вызова одного конструктора из другого для инициализации экземпляра будет создан и тут же уничтожен новый объект типа VertexCache. В результате члены создаваемого объекта останутся непроинициализированными.

Предупреждение PVS-Studio: V530 The return value of function ’empty’ is required to be utilized. actor_network.cpp 657

Анализатор предупреждает, что возвращаемое функцией значение не используется. Похоже, что программист перепутал методы empty() и clear(): empty() не очищает массив, а проверяет, является ли он пустым.

Такие ошибки нередко встречаются в различных проектах. Проблема в том, что имя empty() не очевидно: некоторые воспринимают его как действие — удаление. Для того, чтобы подобной неоднозначности не возникало лучше добавлять глаголы has, is к началу метода: действительно, isEmpty() с clear() сложно перепутать.

V530 The return value of function ‘unique’ is required to be utilized. uidragdroplistex.cpp 780

Предупреждение PVS-Studio: V575 The ‘memset’ function processes ‘0’ elements. Inspect the third argument. xrdebug.cpp 104

При вызове memset аргументы перепутали местами и в итоге буфер не обнуляется, как изначально задумывалось. Подобная ошибка может жить в проекте очень долго, так как её очень трудно обнаружить. В таких местах на выручку программисту приходит статический анализатор.

Корректное использование memset:

Следующая ошибка связана с неправильно составленным логическим выражением.

Предупреждение PVS-Studio: V547 Expression is always true. Probably the ‘&&’ operator should be used here. configs_dumper.cpp 262

Выражения вида ‘x != a || x != b’ всегда являются истинным. Вероятнее всего вместо оператора || подразумевался оператор &&.

В этом фрагменте ветвь else относится ко второму if из-за своей право-ассоциативности, что не совпадает с форматированием кода. К счастью, данный случай не отражается на работе программы, тем не менее, он может усложнить процесс отладки и тестирования.

Что необходимо для сборки?

они по функционалу схожи с Professional Edition прошлых версий и абсолютно бесплатны. Правда один минус, могут возникнуть новые проблемы, которые не будут затронуты в этой статье.

Скачать Visual Studio 2015 Community Edition с сайта Microsoft: 1

ACHTUNG
Данный туториал рассчитан на VS 2010! При сборке на более современных студиях могут появиться другие проблемы, описания которых не окажется в данной статье!

Сборка

Заранее хочется оговориться о структуре каталогов

  • XRay — корневой каталог движка
    • xr_build — Выходной каталог, здесь находятся распакованные ресурсы игры
    • xr_src — Каталог с исходными кодами движка
    • dev-scripts — Различные вспомогательные скрипты

    Загрузка исходного кода движка и подготовительные работы

    Скачиваем основной архив с исходниками: 2
    Пароль: ljlLHhklknlked

    Скачиваем архив с необходимыми для сборки SDKs и компонентами: 3

    Распаковываем содержимое архивов XRay.rar и src_components_for_xray.rar в директорию XRay\xr_src
    В папке dev-scripts создаем два (*.cmd) файла — mountDisks.cmd и unmountDisks.cmd такого содержания:
    mountDisks.cmd:

    Запускаем mountDisks.cmd, должны появиться два виртуальных диска: X и S. X -выходной каталог, S — каталог исходников.

    Подготовительный этап закончен. Приступаем к настройке проектов.

    Настройка проектов

    Запускаем Visual Studio, на стартовой странице выбираем Открыть проект. или Файл -> Открыть -> Решение или проект. В появившемся окне выбираем S:\xr_3da\xr_3da.sln.

    Ss 1.jpg

    Появится окно мастера преобразования Visual Studio, жмём кнопку ‘Готово’ и ждём пока все проекты конвертируются в формат VS10 и пройдёт синтаксический анализ проектов.

    Ss 2.jpg

    После того как всё сконвертировалось, первым делом открываем Диспетчер конфигураций (ПКМ по решению -> Свойства -> Свойства конфигурации) и выставляем решению активную конфигурацию Mixed (на чистом Debug ужасно падает производительность), а для сторонних библиотек (BugTrap, OpenAL, minizip, zlib) ставим Release.

    Ss 3.jpg

    Ну а теперь самое муторное, это настройка собственно проектов. Каждый проект придется настраивать отдельно, собирать так же советую отдельно (ПКМ по проекту -> Только проект -> Построить только имя проекта). Порядок построения можно узнать так: ПКМ по любому проекту -> Зависимости проектов. -> Порядок построения. Настраиваем выходные каталоги, промежуточные каталоги и выходные каталог для библиотек импорта по своему вкусу, у меня так (на примере BugTrap, используется структура каталогов, упомянутая в начале статьи):

    Далее необходимо настроить пути к заголовочным файлам и библиотекам импорта внешних библиотек. Ниже пойдёт таблица проектов (в порядке построения) с необходимыми для них библиотеками из директории xr_src\SDK, пути настраиваются здесь:

    Ss 6.jpg Ss 7.jpg

    Проект Необходимые библиотеки
    xrCore DX
    xrCDB xrCore
    xrLua xrCore, LuaBind, Boost
    xrSound xrCore, Xiph libs, EAX, DX, OpenAL
    xrParticles n/a
    xrNetServer xrCore, DX, Boost
    xrXMLParser n/a
    XR_3DA xrCore, DX, xrLua\src, LuaBind, Boost, Xiph libs, OpenAL (*.lib only)
    ODE n/a
    xrCPU_Pipe xrCore, DX
    xrGameSpy n/a
    xrRender_R2 xrCore, DX
    xrRender_R1 xrCore, DX
    xrGame xrCore, DX, xrLua\src, LuaBind, Boost, Loki

    Предупреждение PVS-Studio: V576 Incorrect format. A different number of actual arguments is expected while calling ‘printf’ function. Expected: 2. Present: 1. entry_point.cpp 41

    «Только для некоммерческого использования. © Григ»

    В 2014 году на форуме GAMEINATOR появился исходный код игры S.T.A.L.K.E.R. Зов Припяти. Этого следовало ожидать, поскольку исходники предыдущих частей уже какое-то время были в открытом доступе. Тогда я подумал: «О, круто! Наконец-то кто-то сделает полноценный сетевой режим в сталкере». Но никто его не сделал. Да, на тот момент уже был анонсирован небезызвестный Ray of Hope, который до сих пор находится в разработке, но, исключая его, горизонт сталкерских сетевых модов был чист вплоть до 2018.
    В 2017 году без особых надежд на успех, вооружившись исходниками soProject, я стал модифицировать исходынй код «Чистого неба», параллельно изучая движок и C++. Тогда результаты были не особо впечатляющими. Я часто не понимал ассемблерного кода, большие куски приходилось писать с нуля, знаний явно не хватало. Первый билд, который можно охарактеризовать как «значимый результат» умел загружать симулятор жизни и синхронизировать целого одного NPC. Не без багов — я не понял как подключить передачу анимаций, а в работу синхронизации то и дело вступал неотключенный до конца AI со стороны подключившегося клиента.

    Тогда мы работали вдвоем. Я и Александр «v2v3v4» Егоров. Чуть позже в том же году к нам присоединились ещё два человека — Владислав «MadMurloc» Игнатушко и Максим «Jukan» Жук. Мы переехали на Зов Припяти, и в скором времени был готов билд, функционально повторяющий soProject, но на исходниках. Теперь мы могли исправить все недостатки ассемблерного проекта, а самое главное — теперь у нас есть возможность играться с механиками и добавлять свои.

    Сразу после смерти этого бандита сервер вылетел 🙂

    Мы задумались о том, какие недостатки имел оригинальный мультиплеер и сопроджект, и пришли к выводу, что недостаточно просто добавить сталкеров и мутантов на карту. Нам нужны механики взаимодействия игроков. Так появились, например, система сквадов, поднятие раненых игроков, жесты, голосовой чат, совместный поиск артефактов.

    Сквад

    Ревайв долгое время не работал как надо — игрок почти никогда не успевал поднять товарища

    Жесты
    После публикации нескольких видеороликов (можете посмотреть их на нашем ютуб-канале, ога) с нами связался Назар «Nazzertop» Приступа — character animator, работающий в игровой индустрии. Он сделал уникальную вещь для сталкерского модостроя — переделал практически все мировые анимации для игроков. В оригинале они были… они там были.

    Оригинал

    Анимации Назара

    Вместе с Назаром к нам пришел и Родион «CorryZeron» Ловчев, профессиональный дизайнер, с которым мы разработали совершенно новый User Interface, адаптированный под нужды сетевого шутера. Он же сделал все наши логотипы.

    Концепт интерфейса, который уже частично имплементирован в игру

    Не могу не упомянуть еще двух членов нашей команды, которые присоединились к нам недавно:
    First Person Animator: Матвей «matvig» Власов
    Level Designer: Роман «Mastrex» Шумов

    Далее необходимо настроить пути к заголовочным файлам и библиотекам импорта внешних библиотек. Ниже пойдёт таблица проектов (в порядке построения) с необходимыми для них библиотеками из директории xr_src\SDK, пути настраиваются здесь:

    Распространенные сообщения об ошибках в xrengine.exe

    Наиболее распространенные ошибки xrengine.exe, которые могут возникнуть:

    • «Ошибка приложения xrengine.exe.»
    • «Ошибка xrengine.exe.»
    • «Возникла ошибка в приложении xrengine.exe. Приложение будет закрыто. Приносим извинения за неудобства.»
    • «xrengine.exe не является приложением Win32.»
    • «xrengine.exe не запущен».
    • «xrengine.exe не найден.»
    • «Не удается найти xrengine.exe.»
    • «Ошибка запуска программы: xrengine.exe.»
    • «Неверный путь к приложению: xrengine.exe».

    Эти сообщения об ошибках .exe могут появляться во время установки программы, во время выполнения соответствующей программы, STALKER — Clear Sky, при запуске или завершении работы Windows, или даже во время установки операционной системы Windows. Отслеживание момента появления ошибки xrengine.exe является важной информацией при устранении неполадок.

    3 простых шага по исправлению ошибок XRENGINE.EXE

    1- Очистите мусорные файлы, чтобы исправить xrengine.exe, которое перестало работать из-за ошибки.

    1. Запустите приложение Asmwsoft Pc Optimizer.
    2. Потом из главного окна выберите пункт «Clean Junk Files».
    3. Когда появится новое окно, нажмите на кнопку «start» и дождитесь окончания поиска.
    4. потом нажмите на кнопку «Select All».
    5. нажмите на кнопку «start cleaning».

    2- Очистите реестр, чтобы исправить xrengine.exe, которое перестало работать из-за ошибки.

    1. Запустите приложение Asmwsoft Pc Optimizer.
    2. Потом из главного окна выберите пункт «Fix Registry problems».
    3. Нажмите на кнопку «select all» для проверки всех разделов реестра на наличие ошибок.
    4. 4. Нажмите на кнопку «Start» и подождите несколько минут в зависимости от размера файла реестра.
    5. После завершения поиска нажмите на кнопку «select all».
    6. Нажмите на кнопку «Fix selected».
      P.S. Вам может потребоваться повторно выполнить эти шаги.

    3- Настройка Windows для исправления критических ошибок xrengine.exe:

    Clean Registry to fix xrengine.exe has stopped working error

    1. Нажмите правой кнопкой мыши на «Мой компьютер» на рабочем столе и выберите пункт «Свойства».
    2. В меню слева выберите » Advanced system settings».
    3. В разделе «Быстродействие» нажмите на кнопку «Параметры».
    4. Нажмите на вкладку «data Execution prevention».
    5. Выберите опцию » Turn on DEP for all programs and services ….» .
    6. Нажмите на кнопку «add» и выберите файл xrengine.exe, а затем нажмите на кнопку «open».
    7. Нажмите на кнопку «ok» и перезагрузите свой компьютер.
Оцените статью
club-cs.ru