<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://stalkerin.gameru.net/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://stalkerin.gameru.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=74.120.13.132&amp;*</id>
		<title>S.T.A.L.K.E.R. Inside Wiki - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://stalkerin.gameru.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=74.120.13.132&amp;*"/>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/74.120.13.132"/>
		<updated>2026-04-29T16:34:42Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%B4%D0%B2%D0%B8%D0%B6%D0%BA%D0%B0_X-Ray</id>
		<title>Сборка движка X-Ray</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%B4%D0%B2%D0%B8%D0%B6%D0%BA%D0%B0_X-Ray"/>
				<updated>2014-07-26T09:33:03Z</updated>
		
		<summary type="html">&lt;p&gt;74.120.13.132: /* Автор */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:Руководства]]&lt;br /&gt;
== Предисловие ==&lt;br /&gt;
Сразу хочется сказать то, что я не программист (обучающийся СОУ) и до программиста мне еще очень-очень далеко, всё что будет изложено ниже не является правильным решением проблемы сборки движка X-Ray и некоторые решения могут быть идиотскими, использование которых не рекомендуется. И я бы попросил любителей критики сильно не пинать, это моя первая статья и опыта написания таковых у меня нет. Ну что ж, хватит лирики, приступим-с...&lt;br /&gt;
== На кого рассчитана данная статья? ==&lt;br /&gt;
Прежде всего она рассчитана на нубов, подобных мне, которые не могут собрать движок, но хотят вносить в него какие-то правки, ну или хотя бы хотят пытаться вносить правки. Ну это вовсе не означает что Вы являетесь &amp;quot;полным нулём&amp;quot;, предпологается что читатель хотя бы минимальски знаком с ЯП C++ и имеет хоть какой-то опыт работы в Visual Studio. Программистам с опытом этот туториал покажется очень смешным и глупым, и я бы советовал им пройти мимо, дабы они здесь ничего нового не найдут.&lt;br /&gt;
== Что необходимо для сборки? ==&lt;br /&gt;
* Первое, и самое главное. Наличие хоть капли мозга и более-менее прямых рук.&lt;br /&gt;
* Microsoft Visual Studio 2005 или 2008 или 2010 (&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''НЕ'''&amp;lt;/span&amp;gt; Express Edition)&lt;br /&gt;
{{Message_box|&lt;br /&gt;
id=kir_msg_0|&lt;br /&gt;
align=left|&lt;br /&gt;
backgroundcolor=#f9f9f9|&lt;br /&gt;
image=Lamp.gif|&lt;br /&gt;
heading=&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;ACHTUNG&amp;lt;/span&amp;gt;|&lt;br /&gt;
message='''Данный туториал расчитан на VS 2010! При сборке на других, указанных выше студиях могут отсутствовать некоторые проблемы, разобраные в данной статье, и могут появиться другие, которые, возможно, не будут рассмотрены в данной статье!'''&lt;br /&gt;
}} &lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
* S.T.A.L.K.E.R. Shadow of Cherbobyl 1.0006&lt;br /&gt;
== Сборка ==&lt;br /&gt;
=== Заранее хочется оговориться о структуре каталогов ===&lt;br /&gt;
* ''XRay'' -- корневой каталог движка&lt;br /&gt;
** ''xr_build'' -- Выходной каталог, здесь находятся распакованные ресурсы игры&lt;br /&gt;
** ''xr_src'' -- Каталог с исходными кодами движка&lt;br /&gt;
** ''dev-scripts'' -- Различные вспомогательные скрипты&lt;br /&gt;
=== Загрузка исходного кода движка и подготовительные работы ===&lt;br /&gt;
Скачиваем основной архив с исходниками: [https://bitbucket.org/stalker/x-ray/downloads/XRay.rar]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Пароль:''' ljlLHhklknlked&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Скачиваем архив с необходимыми для сборки SDKs и компонентами: [https://bitbucket.org/stalker/x-ray/downloads/src_components_for_xray.rar]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Распаковываем содержимое архивов ''XRay.rar'' и ''src_components_for_xray.rar'' в директорию ''XRay\xr_src'' &amp;lt;br/&amp;gt;&lt;br /&gt;
В папке ''dev-scripts'' создаем два (*.cmd) файла - ''mountDisks.cmd'' и ''unmountDisks.cmd'' такого содержания:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
''mountDisks.cmd'':&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
@ECHO OFF&lt;br /&gt;
@subst X: [Ваш путь до папки XRay]:\XRay\xr_build&lt;br /&gt;
@subst S: [Ваш путь до папки XRay]:\XRay\xr_src&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
''unmountDisks.cmd'':&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
@ECHO OFF&lt;br /&gt;
@subst X: /D&lt;br /&gt;
@subst S: /D&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Запускаем ''mountDisks.cmd'', должны появиться два виртуальных диска: ''X'' и ''S''. ''X'' -выходной каталог, ''S'' - каталог исходников.&lt;br /&gt;
[[Файл:Ss_0.jpg|Виртуальные диски|frame|left|Виртуальные диски]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
Подготовительный этап закончен. Приступаем к настройке проектов.&lt;br /&gt;
=== Настройка проектов ===&lt;br /&gt;
Запускаем Visual Studio, на стартовой странице выбираем ''Открыть проект...'' или ''Файл -&amp;gt; Открыть -&amp;gt; Решение или проект...'' В появившемся окне выбираем ''S:\xr_3da\xr_3da.sln''.&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:Ss_1.jpg|512px]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
Появится окно мастера преобразования Visual Studio, жмём кнопку 'Готово' и ждём пока все проекты конвертируются в формат VS10 и пройдёт синтаксический анализ проектов.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:Ss_2.jpg|512px]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
После того как всё сконвертировалось, перым делом открываем  Диспетчер конфигураций (''ПКМ по решению -&amp;gt; Свойства -&amp;gt; Свойства конфигурации'') и выставляем решению активную конфигурацию ''Mixed'' (на чистом ''Debug'' ужасно падает производительность), а для сторонних библиотек (''BugTrap'', ''OpenAL'', ''minizip'', ''zlib'') ставим ''Release''.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:Ss_3.jpg|512px]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
Ну а теперь самое муторное, это настройка собственно проектов. Каждый проект придется настраивать отдельно, собирать так же советую отдельно (''ПКМ по проекту -&amp;gt; Только проект -&amp;gt; Построить только [имя проекта]''). Порядок построения можно узнать так: ''ПКМ по любому проекту -&amp;gt; Зависимости проектов... -&amp;gt; Порядок построения''. Настраиваем выходные каталоги, промежуточные каталоги и выходные каталог для библиотек импорта по своему вкусу, у меня так (на примере ''BugTrap'', используется структура каталогов, упомянутая в начале статьи):&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:Ss_4.jpg|512px]]  [[Image:Ss_5.jpg|512px]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
Далее необходимо настроить пути к заголовочным файлам и библиотекам импорта внешних библиотек. Ниже пойдёт таблица проектов (в порядке построения) с необходимыми для них библиотеками из директории ''xr_src\SDK'', пути настраиваются здесь: &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:Ss_6.jpg|512px]]  [[Файл:Ss_7.jpg|512px]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
{|class=&amp;quot;standard&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Проект||Необходимые библиотеки&lt;br /&gt;
|-&lt;br /&gt;
|'''xrCore'''||''DX''&lt;br /&gt;
|-&lt;br /&gt;
|'''xrCDB'''||''xrCore''&lt;br /&gt;
|-&lt;br /&gt;
|'''xrLua'''||''xrCore, LuaBind, Boost''&lt;br /&gt;
|-&lt;br /&gt;
|'''xrSound'''||''xrCore, Xiph libs, EAX, DX, OpenAL''&lt;br /&gt;
|-&lt;br /&gt;
|'''xrParticles'''||''n/a''&lt;br /&gt;
|-&lt;br /&gt;
|'''xrNetServer'''||''xrCore, DX, Boost''&lt;br /&gt;
|-&lt;br /&gt;
|'''xrXMLParser'''||''n/a''&lt;br /&gt;
|-&lt;br /&gt;
|'''XR_3DA'''||''xrCore, DX, xrLua\src, LuaBind, Boost, Xiph libs, OpenAL (*.lib only)''&lt;br /&gt;
|-&lt;br /&gt;
|'''ODE'''||''n/a''&lt;br /&gt;
|-&lt;br /&gt;
|'''xrCPU_Pipe'''||''xrCore, DX''&lt;br /&gt;
|-&lt;br /&gt;
|'''xrGameSpy'''||''n/a''&lt;br /&gt;
|-&lt;br /&gt;
|'''xrRender_R2'''||''xrCore, DX''&lt;br /&gt;
|-&lt;br /&gt;
|'''xrRender_R1'''||''xrCore, DX''&lt;br /&gt;
|-&lt;br /&gt;
|'''xrGame'''||''xrCore, DX, xrLua\src, LuaBind, Boost, Loki''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
{{Message_box|&lt;br /&gt;
id=kir_msg_1|&lt;br /&gt;
align=left|&lt;br /&gt;
backgroundcolor=#f9f9f9|&lt;br /&gt;
image=Lamp.gif|&lt;br /&gt;
heading=На заметку|&lt;br /&gt;
message=xrGame самая &amp;quot;массивная&amp;quot; библиотека X-Ray, на некоторых машинах её сборка может занять прилично времени.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
=== Сборка ===&lt;br /&gt;
Собираем каждый проект, как я ранее написал, отдельно, по списку порядка построения. Ниже разбираются наиболее встречающиеся проблемы. &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''xrCore'''&lt;br /&gt;
&amp;lt;code&amp;gt;error C2061: синтаксическая ошибка: идентификатор &amp;quot;__RPC__out_xcount_part&amp;lt;/code&amp;gt;&lt;br /&gt;
Необходимо удалить файл ''rpcsal.h'' из директории ''S:\SDK\dx9sdk\dx9sdk\include''&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''xrLua'''&lt;br /&gt;
&amp;lt;code&amp;gt;error C2883: std::terminate: объявление функции вступает в конфликт с &amp;quot;terminate&amp;quot;, присутствующем в &amp;quot;using&amp;quot;-объявлении&amp;lt;/code&amp;gt;&lt;br /&gt;
Идём в ''S:\SDK\luabind\luabind\config.hpp'', строка 31 и добавляем в имя функции ''terminate'' прочерк ,было '''terminate''', стало '''_terminate'''. &lt;br /&gt;
{{Message_box|&lt;br /&gt;
id=kir_msg_2|&lt;br /&gt;
align=left|&lt;br /&gt;
backgroundcolor=#f9f9f9|&lt;br /&gt;
image=Lamp.gif|&lt;br /&gt;
heading=&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;ACHTUNG&amp;lt;/span&amp;gt;|&lt;br /&gt;
message=Функция '''_terminate''' существует в '''xrDebugNew!''' Не известно как это себя поведёт, лучше всё же закомментировать конструкцию '''namespace std { void terminate() }'''&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;error C2244: throw_exception: не удается сопоставить определение функции существующему объявлению&amp;lt;/code&amp;gt;&lt;br /&gt;
В ''xrCore.h'', в строке ''14'' объявляем макрос ''BOOST_NO_EXCEPTIONS'' ('''#define BOOST_NO_EXCEPTIONS''')&lt;br /&gt;
&amp;lt;code&amp;gt;error C2668: boost::addressof: неоднозначный вызов перегруженной функции&amp;lt;/code&amp;gt;&lt;br /&gt;
Лезем в ''S:\SDK\boost_1_30_0\function\function_template.hpp'', в строке ''472'' перед '''addressof''' дописываем '''boost::'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''xrGame'''&lt;br /&gt;
&amp;lt;code&amp;gt;error C2770: недопустимые явные аргументы шаблон для &amp;quot;_operator::_edge_value_type CProblemSolver&amp;lt;_operator_condition,_condition_state,_operator,_condition_evaluator,_operator_id_type,_reverse_search,_operator_ptr,_condition_evaluator_ptr&amp;gt;::estimate_edge_weight_impl(const _condition_state &amp;amp;) const&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
В ''S:\xr_3da\xrGame\problem_solver.h'', строка ''90''. Заменить этот кусок кода:&lt;br /&gt;
[[Файл:Ss_8.jpg|Кусок кода xrGame|frame|left|Кусок кода xrGame]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
На этот: &lt;br /&gt;
[[Файл:Ss_9.jpg|Кусок кода xrGame|frame|left|Кусок кода xrGame]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
И где-нибудь вне класса объявите структуру ''Bool2Type'': &lt;br /&gt;
[[Файл:Ss_10.jpg|Структура Bool2Type|frame|left|Структура Bool2Type]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;error C2275: Pars: недопустимое использование этого типа в качестве выражения&amp;lt;/code&amp;gt;&lt;br /&gt;
Здесь придётся вносить правки в несколько файлов, для начала лезем в ''S:\xr_3da\xrGame\PHMovementDynamicActivate.cpp'' и везде после '''Pars''' вместо точки ставим двойное двоеточие '''::''', также делаем и в ''xrGame\physics_game.cpp''&lt;br /&gt;
&amp;lt;code&amp;gt;error C2770: недопустимые явные аргументы шаблон для &amp;quot;luabind::detail::class_rep *luabind::detail::get_class_rep(lua_State *,void (__cdecl *)(T))&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
В ''S:\SDK\luabind\luabind\detail\class_cache.hpp'', строка ''78'', добавляем символ '''*''' после буквы '''T''':&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
[[Файл:Ss_11.jpg|Правка LuaBind|frame|left|Правка LuaBind]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;error C2780: luabind::class_&amp;lt;T&amp;gt; &amp;amp;luabind::class_&amp;lt;T&amp;gt;::def(luabind::detail::operator_&amp;lt;Derived&amp;gt;): требует аргументов: 1, имеется: 2&amp;lt;/code&amp;gt;&lt;br /&gt;
В ''S:\xr_3da\xrGame\game_cl_base_script.cpp'', строка ''17'', дописываем перед '''SZoneMapEntityData''' ключевое слово '''const''': &lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
[[Файл:Ss_12.jpg|Правка xrGame|frame|left|Правка xrGame]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
== Congratulations! ==&lt;br /&gt;
Ну вот и всё, осталось только скопировать, если его там нет, ''fsgame.ltx'' в директорию с вашими бинам и создать (*.cmd) файл для запуска, ну или для продвинутых написать свой лаунчер (например написать свою ''xrLauncher.dll''). Приятных экспериментов!&lt;br /&gt;
== Послесловие ==&lt;br /&gt;
В скором времени появятся другие статьи по движку ST или по программированию, так или иначе связанным с ST, возможно появится статья по сборке X-Ray SDK, если Вам конечна понравилась эта статья.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Если Вами в статье была найдена какая-то ошибка или неточность, прошу сообщить мне. &lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Публикация на сторонних ресурсах разрешается &amp;lt;u&amp;gt;'''ТОЛЬКО С УКАЗАНИЕМ НИКА АВТОРА'''&amp;lt;/u&amp;gt;. При публикации на стороннем ресурсе &amp;lt;u&amp;gt;'''ЗАПРЕЩЕНО УДАЛЯТЬ РАЗДЕЛ БЛАГОДАРНОСТИ'''&amp;lt;/u&amp;gt;!&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Просьба при внесении правок оставлять свою подпись.'''&lt;br /&gt;
== Благодарности ==&lt;br /&gt;
Я выражаю искрении благодарности следующим людям: '''K.D.''', '''HikeR''', '''Tron''' и всем остальным кто помогал в сборке движка. &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Ну и огромное спасибо '''GSC Game World''' за замечательный проект ST и за отсутствие гонений из-за использования исходных кодов движка :-).&lt;br /&gt;
== Автор ==&lt;br /&gt;
'''Author: KIRAY''' [http://vk.com/yar_kiraev]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Дата публикации: &amp;lt;u&amp;gt;11.07.2014&amp;lt;/u&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
[[Участник:KIRAY|KIRAY]] ([[Обсуждение участника:KIRAY|обсуждение]]) 11:07, 11 июля 2014 (MSK)&lt;/div&gt;</summary>
		<author><name>74.120.13.132</name></author>	</entry>

	</feed>