Сборка движка X-Ray — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
KIRAY (обсуждение | вклад) (→На кого рассчитана данная статья?) |
KIRAY (обсуждение | вклад) (→Что необходимо для сборки?) |
||
(не показаны 8 промежуточные версии 1 участника) | |||
Строка 8: | Строка 8: | ||
== Что необходимо для сборки? == | == Что необходимо для сборки? == | ||
* Visual Studio 2005 и выше (<span style="color: red">'''НЕ'''</span> Express Edition) | * Visual Studio 2005 и выше (<span style="color: red">'''НЕ'''</span> Express Edition) | ||
+ | {{Message_box| | ||
+ | id=kir_msg| | ||
+ | align=left| | ||
+ | backgroundcolor=#f9f9f9| | ||
+ | image=Lamp.gif| | ||
+ | heading=INFO| | ||
+ | message=''Можно попробовать Express Edition, только придётся решить проблему сборки приложений, которые используют MFC (Stalker_net и т.п.). А лучше использовать Community Edition современных версий Visual Studio,'' | ||
+ | ''они по функционалу схожи с Professional Edition прошлых версий и абсолютно бесплатны. Правда один минус, могут возникнуть новые проблемы, которые не будут затронуты в этой статье.'' | ||
+ | <br/><br/>Скачать Visual Studio 2015 Community Edition с сайта Microsoft: [https://go.microsoft.com/fwlink/?LinkId=532606&clcid=0x419] | ||
+ | }} | ||
+ | <br clear="both"/> | ||
{{Message_box| | {{Message_box| | ||
id=kir_msg_0| | id=kir_msg_0| | ||
Строка 14: | Строка 25: | ||
image=Lamp.gif| | image=Lamp.gif| | ||
heading=<span style="color: red">ACHTUNG</span>| | heading=<span style="color: red">ACHTUNG</span>| | ||
− | message='''Данный туториал рассчитан на VS 2010! При сборке на | + | message='''Данный туториал рассчитан на VS 2010! При сборке на более современных студиях могут появиться другие проблемы, описания которых не окажется в данной статье!''' |
}} | }} | ||
<br clear="both" /> | <br clear="both" /> | ||
Строка 114: | Строка 125: | ||
'''xrCore''' | '''xrCore''' | ||
<code>error C2061: синтаксическая ошибка: идентификатор "__RPC__out_xcount_part</code> | <code>error C2061: синтаксическая ошибка: идентификатор "__RPC__out_xcount_part</code> | ||
− | Необходимо удалить файл ''rpcsal.h'' из директории ''S:\SDK\dx9sdk\dx9sdk\include'' | + | Необходимо удалить файл ''rpcsal.h'' из директории ''S:\SDK\dx9sdk\dx9sdk\include''. Возникает на старых версиях DXSDK, используйте версию за июнь 2010: [https://www.microsoft.com/en-us/download/details.aspx?id=6812] |
<br/><br/> | <br/><br/> | ||
'''xrLua''' | '''xrLua''' | ||
Строка 156: | Строка 167: | ||
[[Файл:Ss_12.jpg|Правка xrGame|frame|left|Правка xrGame]] | [[Файл:Ss_12.jpg|Правка xrGame|frame|left|Правка xrGame]] | ||
<br clear="both"/> | <br clear="both"/> | ||
+ | |||
== Congratulations! == | == Congratulations! == | ||
Ну вот и всё, осталось только скопировать, если его там нет, ''fsgame.ltx'' в директорию с вашими бинам и создать (*.cmd) файл для запуска, ну или для продвинутых написать свой лаунчер (например написать свою ''xrLauncher.dll''). Приятных экспериментов! | Ну вот и всё, осталось только скопировать, если его там нет, ''fsgame.ltx'' в директорию с вашими бинам и создать (*.cmd) файл для запуска, ну или для продвинутых написать свой лаунчер (например написать свою ''xrLauncher.dll''). Приятных экспериментов! | ||
Строка 161: | Строка 173: | ||
В скором времени появятся другие статьи по движку ST или по программированию, так или иначе связанным с ST, возможно появится статья по сборке X-Ray SDK, если Вам конечна понравилась эта статья. | В скором времени появятся другие статьи по движку ST или по программированию, так или иначе связанным с ST, возможно появится статья по сборке X-Ray SDK, если Вам конечна понравилась эта статья. | ||
<br/> | <br/> | ||
− | Если Вами в статье была найдена какая-то ошибка или неточность, прошу сообщить мне. | + | Если Вами в статье была найдена какая-то ошибка или неточность, прошу сообщить мне. |
− | + | ||
− | + | ||
== Благодарности == | == Благодарности == | ||
Я выражаю искрении благодарности следующим людям: '''K.D.''', '''HikeR''', '''Tron''' и всем остальным кто помогал в сборке движка. <br/><br/> | Я выражаю искрении благодарности следующим людям: '''K.D.''', '''HikeR''', '''Tron''' и всем остальным кто помогал в сборке движка. <br/><br/> | ||
Строка 170: | Строка 181: | ||
'''Author: KIRAY''' [http://vk.com/slava_kiraev]<br/><br/> | '''Author: KIRAY''' [http://vk.com/slava_kiraev]<br/><br/> | ||
Дата публикации: <u>11.07.2014</u>. <br/> | Дата публикации: <u>11.07.2014</u>. <br/> | ||
+ | Последние изменения (автор): <u>26.08.2015</u>. <br/> | ||
[[Участник:KIRAY|KIRAY]] ([[Обсуждение участника:KIRAY|обсуждение]]) 11:07, 11 июля 2014 (MSK) | [[Участник:KIRAY|KIRAY]] ([[Обсуждение участника:KIRAY|обсуждение]]) 11:07, 11 июля 2014 (MSK) |
Текущая версия на 05:16, 27 августа 2015
Содержание
Предисловие
Сразу хочется упомянуть о том, что я не программист, мною могут быть допущены какие-то неточности, ошибки. Всё что будет изложено ниже не может считаться верным решением встречающихся при сборке X-Ray проблем. Ну что ж, хватит лирики, приступим-с...
На кого рассчитана данная статья?
Прежде всего она рассчитана на начинающих программистов, подобных мне, которые не могут собрать движок, но хотят вносить в него какие-то правки, ну или хотя бы хотят пытаться вносить правки. Ну это вовсе не означает что Вы являетесь "полным нулём", предполагается что читатель хотя бы минимальски знаком с ЯП C++ и имеет хоть какой-то опыт работы в Visual Studio.
Что необходимо для сборки?
- Visual Studio 2005 и выше (НЕ Express Edition)
INFO Можно попробовать Express Edition, только придётся решить проблему сборки приложений, которые используют MFC (Stalker_net и т.п.). А лучше использовать Community Edition современных версий Visual Studio, они по функционалу схожи с Professional Edition прошлых версий и абсолютно бесплатны. Правда один минус, могут возникнуть новые проблемы, которые не будут затронуты в этой статье.
|
ACHTUNG Данный туториал рассчитан на VS 2010! При сборке на более современных студиях могут появиться другие проблемы, описания которых не окажется в данной статье! |
- S.T.A.L.K.E.R. Shadow of Cherbobyl 1.0006
Сборка
Заранее хочется оговориться о структуре каталогов
- 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:
@ECHO OFF
@subst X: [Ваш путь до папки XRay]:\XRay\xr_build
@subst S: [Ваш путь до папки XRay]:\XRay\xr_src
exit
unmountDisks.cmd:
@ECHO OFF
@subst X: /D
@subst S: /D
exit
Запускаем mountDisks.cmd, должны появиться два виртуальных диска: X и S. X -выходной каталог, S - каталог исходников.
Подготовительный этап закончен. Приступаем к настройке проектов.
Настройка проектов
Запускаем Visual Studio, на стартовой странице выбираем Открыть проект... или Файл -> Открыть -> Решение или проект... В появившемся окне выбираем S:\xr_3da\xr_3da.sln.
Появится окно мастера преобразования Visual Studio, жмём кнопку 'Готово' и ждём пока все проекты конвертируются в формат VS10 и пройдёт синтаксический анализ проектов.
После того как всё сконвертировалось, первым делом открываем Диспетчер конфигураций (ПКМ по решению -> Свойства -> Свойства конфигурации) и выставляем решению активную конфигурацию Mixed (на чистом Debug ужасно падает производительность), а для сторонних библиотек (BugTrap, OpenAL, minizip, zlib) ставим Release.
Ну а теперь самое муторное, это настройка собственно проектов. Каждый проект придется настраивать отдельно, собирать так же советую отдельно (ПКМ по проекту -> Только проект -> Построить только [имя проекта]). Порядок построения можно узнать так: ПКМ по любому проекту -> Зависимости проектов... -> Порядок построения. Настраиваем выходные каталоги, промежуточные каталоги и выходные каталог для библиотек импорта по своему вкусу, у меня так (на примере BugTrap, используется структура каталогов, упомянутая в начале статьи):
Далее необходимо настроить пути к заголовочным файлам и библиотекам импорта внешних библиотек. Ниже пойдёт таблица проектов (в порядке построения) с необходимыми для них библиотеками из директории xr_src\SDK, пути настраиваются здесь:
Проект | Необходимые библиотеки |
---|---|
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 |
На заметку xrGame самая "массивная" библиотека X-Ray, на некоторых машинах её сборка может занять прилично времени. |
Сборка
Собираем каждый проект, как я ранее написал, отдельно, по списку порядка построения. Ниже разбираются наиболее встречающиеся проблемы.
xrCore
error C2061: синтаксическая ошибка: идентификатор "__RPC__out_xcount_part
Необходимо удалить файл rpcsal.h из директории S:\SDK\dx9sdk\dx9sdk\include. Возникает на старых версиях DXSDK, используйте версию за июнь 2010: [4]
xrLua
error C2883: std::terminate: объявление функции вступает в конфликт с "terminate", присутствующем в "using"-объявлении
Идём в S:\SDK\luabind\luabind\config.hpp, строка 31 и добавляем в имя функции terminate прочерк ,было terminate, стало _terminate.
ACHTUNG Функция _terminate существует в xrDebugNew! Не известно как это себя поведёт, лучше всё же закомментировать конструкцию namespace std { void terminate() } |
error C2244: throw_exception: не удается сопоставить определение функции существующему объявлению
В xrCore.h, в строке 14 объявляем макрос BOOST_NO_EXCEPTIONS (#define BOOST_NO_EXCEPTIONS)
error C2668: boost::addressof: неоднозначный вызов перегруженной функции
Лезем в S:\SDK\boost_1_30_0\function\function_template.hpp, в строке 472 перед addressof дописываем boost::
xrGame
error C2770: недопустимые явные аргументы шаблон для "_operator::_edge_value_type CProblemSolver<_operator_condition,_condition_state,_operator,_condition_evaluator,_operator_id_type,_reverse_search,_operator_ptr,_condition_evaluator_ptr>::estimate_edge_weight_impl(const _condition_state &) const"
В S:\xr_3da\xrGame\problem_solver.h, строка 90. Заменить этот кусок кода:
На этот:
И где-нибудь вне класса объявите структуру Bool2Type:
error C2275: Pars: недопустимое использование этого типа в качестве выражения
Здесь придётся вносить правки в несколько файлов, для начала лезем в S:\xr_3da\xrGame\PHMovementDynamicActivate.cpp и везде после Pars вместо точки ставим двойное двоеточие ::, также делаем и в xrGame\physics_game.cpp
error C2770: недопустимые явные аргументы шаблон для "luabind::detail::class_rep *luabind::detail::get_class_rep(lua_State *,void (__cdecl *)(T))"
В S:\SDK\luabind\luabind\detail\class_cache.hpp, строка 78, добавляем символ * после буквы T:
error C2780: luabind::class_<T> &luabind::class_<T>::def(luabind::detail::operator_<Derived>): требует аргументов: 1, имеется: 2
В S:\xr_3da\xrGame\game_cl_base_script.cpp, строка 17, дописываем перед SZoneMapEntityData ключевое слово const:
Congratulations!
Ну вот и всё, осталось только скопировать, если его там нет, fsgame.ltx в директорию с вашими бинам и создать (*.cmd) файл для запуска, ну или для продвинутых написать свой лаунчер (например написать свою xrLauncher.dll). Приятных экспериментов!
Послесловие
В скором времени появятся другие статьи по движку ST или по программированию, так или иначе связанным с ST, возможно появится статья по сборке X-Ray SDK, если Вам конечна понравилась эта статья.
Если Вами в статье была найдена какая-то ошибка или неточность, прошу сообщить мне.
Благодарности
Я выражаю искрении благодарности следующим людям: K.D., HikeR, Tron и всем остальным кто помогал в сборке движка.
Ну и огромное спасибо GSC Game World за замечательный проект ST и за отсутствие гонений из-за использования исходных кодов движка :-).
Автор
Author: KIRAY [5]
Дата публикации: 11.07.2014.
Последние изменения (автор): 26.08.2015.
KIRAY (обсуждение) 11:07, 11 июля 2014 (MSK)