Закрома Родины |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Закрома Родины |
17.09.2014, 16:27
Сообщение
#1201
|
|
И никаких няш-мяш! Репутация: 5029 Группа: Участник Сообщений: 28157 Регистрация: 04.02.2003 |
Сборка движка X-Ray 1.0007 RC1 Сборка движка ЗП от Shoker 0) Устанавливаем Visual Studio 2008 SP1 (Proffesional или Team, я собирал в первой), сервис пак из архива engine.vc2008.fixed.rar подходит только к английской версии студии, для русской нужно будет скачать отдельно. ______________________________________________ 1) Создаём на диске папку, в ней ещё одну папку. 2) В эту папку помещаем только папку engine.vc2008 из архива "engine.vc2008.fixed - фикшенный мною проект vs2008", папку SDK от туда не трогаем. 3) Папку SDK берём из архива "stasvn\sources\engine.vc2005-2008(~1.6.02 бенчмарк) - март 2010", из под-папки sources. Помещаем её в одну папку к engine.vc2008 4) Вот теперь поверх неё докладываем папку SDK из архива engine.vc2008.fixed.rar, соглашаемся на замену всех файлов 5) Качаем с сайта майкрософт два DirectX SDK - 2009 March и 2010 June. (Вес каждой около 500 мб), можно использовать только версию 2009, но тогда не сможете собрать xrRender_R4. (LINK : fatal error LNK1181: cannot open input file 'd3d11.lib'), а если будете использовать только 2010 - игра с R4 не запустится. После установки двух DX SDK убедитесь что они прописали свои пути в студию, файлы 2010-го СДК должны быть после 2009-го, как показано на рисунке: Аналогично для разделов Executable files и Include files. Если возникнут вопросы, ищите информацию в гугле по словам "подключение directx sdk visual studio 2008" При неправильных версиях СДК (или его не-подключении) в логе будет ругань на отсутствие файлов типа d3dXX.lib\.h) Перемещать папки из уже установленного DirectX SDK никуда не нужно. Достаточно прописать к ним пути глобально для студии (или для каждого проекта вручную) Комментарий от loxotron: достаточно скопировать и переименовать d3d11_beta.lib в d3d11.lib в папке с директовским сдк, а еще лучше скачать и поставить DX SDK August 2009 и не париться с неподходящими версиями. 6) На всякий случаи можно установить ещё SDK\OpenALwEAX.exe, но не уверен что он критически необходим. 7) Запускаем проект через ..\CoP\Project\engine.vc2008\engine.sln. Когда он загрузится, вверху студии режим сборки с Debug_Dedicated (или любой другой) меняем на Release. Далее слева\справа будет список папок с файлами движка, нам нужна, в первую очередь, папка 3rd_party - жмём на неё правой кнопкой мыши и выбираем Build\Построить. Если всё будет правильно, то в конце лог внизу напишет об 11 успешных проектах (или число будет меньше, если некоторые проекты уже были собраны до этого, лог об этом тоже сообщит "пропущены\up to date") Главное чтобы Ошибок\Fatal везде было 0 У меня собрались полностью все проекты без ошибок. (warning за полноценные ошибки не считаются) 8) По аналогии, сверху вниз, можно собрать другие Dll-ки, папки editor\dedicated\utils\plugins собирать не обязательно - к движку они не относятся. Дольше всего будет собираться xrGame.dll. Остальные достаточно быстро. Собирать все Dll-ки к слову не обязательно. Можно лишь нужные. Когда они будут готовы - создать чистую папку bin в папке с игрой. Закинуть туда все созданные dll файлы (можно вместе с .pdb). При необходимости, можно докинуть отсутствующие файлы из оригинальной bin ЗП (2-ой патч), если игра будет их требовать. (Навроде wrap_oal.dll) Игру я запускал с оригинального Stalker-COP.exe Если всё верно, то в логе\консоли игры в первых строчках будет указан билд игры и дата построения. Сообщение отредактировал RayTwitty - 22.01.2016, 17:03 |
 
|
|
|
|
12.06.2014, 22:36
Сообщение
#1202
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
в новых версиях(кажется с 14) поддержка динамической загрузки была удалена. урлы, факты в студию. в новых версиях все hello world-ы теперь системные либы статически линкуют и весят они десятки мегабайт, я прям сижу и плачу от такой новости (хоть у меня и нет андроида). На gcc,есть ключевое слово export,которое укажет,какой символ экспортировать и меня еще тыкают в RTFM-ы... export лишь дает возможность указать на возможность юзанья шаблона только определив его в других файлах, без повторной декларации. шаблона! внутри других файлов! оно с экспортом функций/классов вообще никак не связано. а в C++11 его и вовсе зарезервировали и отменили. на gcc,все символы экспортируются по умолчанию смешно. Трюк с .def файлами был опробован,но так же,успеха не принес. это потому что работа с .def-файлами является документированной возможностью описанной стандартом и мануалом к компилятору. а когда начинают делать какие-то трюки, то ничем хорошим это не заканчивается. Я для кого семпл предоставил?И с каких пор у нас экспортируются символы CRT?! не знаю для кого. наверное для тех, кто зачем-то поставил 2013-ю студию. символы куда экспортируется, вы о чем? при статической линковке юзается как минимум libcmt.lib (мы же про винду говорим), там "символов" (независимо от того что вы под ними понимаете) нет. там только куча объектников. лост альфы,который собирался в 2005 студии,и люди попросту не могли её запустить,из-за экзотической версии рантайма если ума нет, то можно и с торрентов качать. чисто для интереса, какая такая экзотическая версия оказалась и где ее взяли программеры LA? Нечего сказать,дое№ись до орфографии? Мне так удобнее,и я так буду называть я говорю, говорю, мне много чего еще сказать. я просто отдыхаю душой с этого потрясающего диалога. с каждым постом столько нового и интересного открывается, что просто жуть. правда, если человек с третьего раза не понимает как пишется слово "андроид" и упирается рогом, то объяснять что-то более высокое становится несколько затруднительно. |
 
|
|
12.06.2014, 22:42
Сообщение
#1203
|
|
Почти Игроман Репутация: 96 Группа: Участник Сообщений: 594 Награды: 3 Регистрация: 26.10.2012 |
Цитата(abramcumner) Мне казалось, что там вполне реальные новые директы на ХП. Я-то спокойно сижу на семерке и такой ерундой не заморачиваюсь. в ядре ХР нет какой-то хрени, связанной с видеопамятью, и потом в работе драйверов видеокарт для ХР прописан старый режим работы, то бишь максимум для 9-го директа, т.е. универсальное средство уже отпадает. Вряд ли кто-то возьмется переписывать все драйвера для существующих видео карт, да и проблема с ядром ОС вообще кажется неразрешима. Вроде где-то мелькала информация, что очень ограничено можно запустить 10-й директ на 9-м, видимо подобный трюк использовался в самопальных сборках директов для ХР. Я тоже этим давно уже не заморачиваюсь и не слежу за этой темой, т.к. снес к чертям ХР. -------------------- Будиш маму-папу слушать
Будиш ты канфеты кушать! © Операция «Ы» |
 
|
|
13.06.2014, 00:03
Сообщение
#1204
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
вот что сделаем — пойдем по пунктам, медленно и последовательно, чтобы ничего не отвлекало.
утверждение: поддержка динамической загрузки в андроиде была удалена. цитирую, ибо ссылок не нашел: Android NDK Overview из текущего android-ndk-r9d Цитата I. Android NDK Goals: The Android VM allows your application's source code to call methods implemented in native code through the JNI. In a nutshell, this means that:
The Android NDK is a complement to the Android SDK that helps you to:
иначе говоря, программа на Java кроме как динамически и явно не может иначе вызвать стороннюю либу. пример android-ndk-r9d\samples\two-libs вам в помощь. добавить третью динамическую либу вызываемую из второй и проверить на эмуляторе даже я, далекий от андроидов человек, cмог. когда с этим вопросом закончим — перейдем к следующему. желательно чтобы он хоть как-то касался сталкера. например, портирование исходников под андроид, на OpenGL, с использованием GCC. |
 
|
|
13.06.2014, 06:09
Сообщение
#1205
|
|
Продвинутый геймер Репутация: 15 Группа: Участник Сообщений: 322 Награды: 3 Регистрация: 01.05.2014 |
в ядре ХР нет какой-то хрени ... Эта "хрень" называется WDDM, и вообще между архитектурой видеодрайверов хрюши и более старших версий окон большая разница, да и сама архитектура DirectX несколько иная. Перенести DirectX 10/10.1/11 и т.д. просто не возможно без модификации ядра и кучи других компонентов. А то что есть какие-то порты, это чушь, они эмулируют только простейшие функции Directx 10/10.1/11 и позволяют воспроизвести простейшие примеры из DirectX SDK, а не играть в полноценные игры. |
 
|
|
13.06.2014, 10:50
Сообщение
#1206
|
|
Опытный Игрок Репутация: 12 Группа: Участник Сообщений: 66 Награды: 2 Регистрация: 14.08.2011 |
Может мне напомнить,момент слива билда лост альфы,который собирался в 2005 студии,и люди попросту не могли её запустить,из-за экзотической версии рантайма?-установочника которого нигде не было,притом гуглилась именно требуемая версия,и люди выкачивали,с торрентов всякую кучу рантаймов? в рамках одной студии рантаймы взаимозаменяемы. например, все версии msvcr71.dll, как минимум, обратно совместимы (в обратную сторону не откатывал ни разу, но сомневаюсь что могут быть проблемы). я за выходом ЛА не следил, но в какой-то особенный рантайм что-то не верится ^_^. вообще, насколько я помню топик, изначально-то идея была не в статической линковке рантайма, а в линковке с 6 версией. только, опять же, смысл всех этих движений стремится к нулю. ну и по теме, для тех у кого права на запись в свн: Цитата Код // KD: commented code cause error C2440 - can't find proper overload // luabind::class_< xr_vector<SZoneMapEntityData> >("ZoneMapEntities") // .def("push_back", (void (xr_vector<SZoneMapEntityData>::*)(SZoneMapEntityData&))(&xr_vector<SZoneMapEntityData>::push_back)) почему бы не сделать так? Код .def("push_back", (void (xr_vector<SZoneMapEntityData>::*)(SZoneMapEntityData const &))(&xr_vector<SZoneMapEntityData>::push_back))
Сообщение отредактировал Lego - 13.06.2014, 10:52 |
 
|
|
13.06.2014, 11:58
Сообщение
#1207
|
|
Продвинутый геймер Репутация: 15 Группа: Участник Сообщений: 322 Награды: 3 Регистрация: 01.05.2014 |
Не собирается LE, осталось только его собрать, оставил его на потом и на тебе, компоновщик валится с таким логом:
Log [Linker Error] Unresolved external '__stdcall Mgc::ConvexHull2D::~ConvexHull2D()' referenced from X:\INTERMEDIATE\ED\LE\PORTAL.OBJ [Linker Error] Unresolved external '__stdcall Mgc::OrthogonalPlaneFit(int, Mgc::Vector3 *, Mgc::Vector3&, Mgc::Vector3&)' referenced from X:\INTERMEDIATE\ED\LE\PORTAL.OBJ [Linker Error] Unresolved external '__stdcall Mgc::ConvexHull2D::ConvexHull2D(int, const Mgc::Vector2 *)' referenced from X:\INTERMEDIATE\ED\LE\PORTAL.OBJ [Linker Error] Unresolved external '__stdcall Mgc::ConvexHull2D::ByIncremental()' referenced from X:\INTERMEDIATE\ED\LE\PORTAL.OBJ [Linker Error] Unresolved external '__stdcall Mgc::ConvexHull2D::RemoveCollinear()' referenced from X:\INTERMEDIATE\ED\LE\PORTAL.OBJ Ясно что он не может найти тела данных функций и что ему нужна MagicFMDLLB.lib , да вот только её не сделать, генеришь *.def, а (*.lib) не хочет делать: Log Error MagicFMDLL.def(4): Invalid character in .DEF file DEF file, line 4: Код ??0?$TImage2D@VEint@Mgc@@@Mgc@@QAE@ABV01@@Z @1 ; ??0?$TImage2D@VEint@Mgc@@@Mgc@@QAE@ABV01@@Z Проблема с декорациями функций чтоли? Как решить сие проблему, помогите, пожалуйста. Сообщение отредактировал MegaNub - 13.06.2014, 11:58 |
 
|
|
13.06.2014, 12:24
Сообщение
#1208
|
|
Игровой Эксперт Репутация: 407 Группа: Участник Сообщений: 2394 Награды: 5 Регистрация: 19.01.2009 |
Цитата смешно. Что смешно?-это по факту так. Берем любую кросс платформенную либу и смотрим макросы _EXPORTS: Видим,что под студией будет,что-то типа: CODE #ifndef _EXPORTS #define DllImport __declspec( dllimport ) #else #define DllExport __declspec( dllexport ) #endif а под gcc там будет пустой дефайн CODE #define DllExport Цитата не знаю для кого. наверное для тех, кто зачем-то поставил 2013-ю студию. конвертация в 10ку происходит редактированием двух строк,Да и по-моему,10ка в состоянии открывать сразу.символы куда экспортируется, вы о чем? Цитата при статической линковке юзается как минимум libcmt.lib (мы же про винду говорим), там "символов" (независимо от того что вы под ними понимаете) нет. там только куча объектников. Ты не понял,что я имел ввиду-зачем делать везде Цитата /NODEFAULTLIB:(список_пересекающихся_crt_либ) ,если конфликта нет.Цитата правда, если человек с третьего раза не понимает как пишется слово "андроид" и упирается рогом, то объяснять что-то более высокое становится несколько затруднительно. Я привык так писать,и я буду так писать,просто из-за принципа.Это как "Шо"канье и "Гы"каньеЦитата какая такая экзотическая версия оказалась и где ее взяли программеры LA? Ты думаешь,я сейчас вспомню?-наивный.ТОчно 2005.и по факту она не гуглилась Цитата в рамках одной студии рантаймы взаимозаменяемы. например, все версии msvcr71.dll, как минимум, обратно совместимы (в обратную сторону не откатывал ни разу, но сомневаюсь что могут быть проблемы). я за выходом ЛА не следил, но в какой-то особенный рантайм что-то не верится . И получишь ты ругань в лог системы..Конечно можно положить либы в каталог приложения,но это успеха не даст,ибо все равно будет ругаться,что версия такая-то такая не найдена |
 
|
|
13.06.2014, 12:40
Сообщение
#1209
|
|
Игровой Эксперт Репутация: 407 Группа: Участник Сообщений: 2394 Награды: 5 Регистрация: 19.01.2009 |
Цитата You must provide a native shared library that contains the implementation of these methods, which will be packaged into your application's .apk. This library must be named according to standard Unix conventions as lib.so, and shall contain a standard JNI entry point (more on this later). For example: Как я понимаю,тут аналог LoadLibrary. Т.Е она должна содержать точку входа.Где будет описываться поведение....но а ты внимательно читал,что я выше писал? Т.Е я подразумевал,работу попросту,где код разнесен в разные модули и жестко связан между собой.. Основные подсистемы,да обернуты в интерфейсы,но как пример-как ты реализацию актера планируешь дергать используя только,способ загрузки LoadLibrary? И на винде,ты в случае отсутствия библиотеки,будешь получать ошибку,что dll не найдена. |
 
|
|
13.06.2014, 13:49
Сообщение
#1210
|
|
Почти Игроман Репутация: 67 Группа: Участник Сообщений: 741 Награды: 4 Регистрация: 01.06.2007 |
Отчет по запуску Battlefield 4 WinXP
1)заменены биты хексом в bf4_x86.exe 2)докинуты dll 3)dwmapi.dll выдает ошибку "точка входа процедуры _except_handler4_common не найдена в msvcvrt.dll нашел совет заменить dwmapi.dll на user32.dll (Gus Guzzlers) 4)dxgi.dll вызвал __cxxframehandler3 нашел пофиксеную 5)dx10.dll dx10core.dll брал от Directx 10 KM-Software В итоге вылет Ошибка при инициализации приложения(0xc0000033) |
 
|
|
13.06.2014, 14:14
Сообщение
#1211
|
|
Опытный Игрок Репутация: 12 Группа: Участник Сообщений: 66 Награды: 2 Регистрация: 14.08.2011 |
И получишь ты ругань в лог системы.. ну так оно и верно, т.к. в манифесте прописана одна либа, а на деле в системе именно этой версии нет. Конечно можно положить либы в каталог приложения,но это успеха не даст,ибо все равно будет ругаться,что версия такая-то такая не найдена в этом есть смысл только если у тебя не установлен vcredist вообще. потому что из-за манифеста грузиться будут дллки из папочки WinSxS, если они там есть. хотя, манифест можно и отредактировать. AFAIK, в самой структуре PE-файла в таблице импорта нет указания на конкретную либу, там будет просто "msvcr71.dll", точнее "MSVCR71". следовательно, в большинстве случаев несовпадением точных версий либ можно пренебречь. и это логично, вообще говоря. Сообщение отредактировал Lego - 13.06.2014, 14:17 |
 
|
|
13.06.2014, 16:58
Сообщение
#1212
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
Берем любую кросс платформенную либу и смотрим макросы _EXPORTS: Видим,что под студией будет,что-то типа:... а под gcc там будет пустой дефайн... ок. берем любую кросс-платформеную либу, Ogg Vorbis, чтобы быть ближе к теме. ни одного дефайна типа _EXPORTS для студии. берем плюсовый FreeImage, для __GNUC__ >= 4 там явно указано: Код #define DLL_API __attribute__ ((visibility("default"))) ибо с появлением 4-й версии (то есть довольно давно) опция -fvisibility=hidden обычно установлена. но если вы до сих пор сидите под GCC 3, то там экспорт всего и вся по-умолчанию действительно имеется. я про такое поведение забыл, признаю, давно не пользовал такие древности. зачем делать везде /NODEFAULTLIB:(список_пересекающихся_crt_либ),если конфликта нет. потому что в приложениях чуть сложнее вызова MessageBox-а libcmt обязательно прилинкуется. сделал new в обоих файлах — привет, NODEFAULTLIB. тОчно 2005.и по факту она не гуглилась даже 2003 redist сейчас достать нет никаких проблем. можно .NET 1.1 runtime поставить, где он был замурован, можно VC 7.1 DST Update (KB932298) выкачать. поэтому даже не представляю, какие сложности могли были с VC8. можно положить либы в каталог приложения SxS сборки класть в каталог нельзя. в VC10 избавились от этого недоразумения, а все остальное извольте делать официальным способом. Как я понимаю,тут аналог LoadLibrary. теперь я не понимаю. вы делаете движки под андроид, ведете речь о линуксовых разделяемых библиотеках, но dlopen/dlclose для вас пустой звук??? блин, даже в винде DDL переводится как "динамически загружаемая библиотека". она может динамически загружаться. она может динамически выгружаться. это может происходить через явное связывание с использованием виндовой LoadLibrary. также можно использовать неявное связывание, через секции импорта/экспорта (про которое почему-то думают что оно являвется единственных способом). в линуксах парадигма совершенно иная, даже расширение .SO означает Shared Object, ибо в линуксах все общее и всем доступное. статическая линковка суть вражеского проприертарного лагеря. и точно также как в винде (вернее, в винде точно также как в линуксах) разделяемые либы могут динамически подгружаться/выгружаться. опять возвращаемся к man dlopen (3). |
 
|
|
13.06.2014, 18:09
Сообщение
#1213
|
|
Игровой Эксперт Репутация: 407 Группа: Участник Сообщений: 2394 Награды: 5 Регистрация: 19.01.2009 |
Цитата теперь я не понимаю. вы делаете движки под андроид, ведете речь о линуксовых разделяемых библиотеках, но dlopen/dlclose для вас пустой звук??? вот здесь я признаю-забыл,про Цитата dlopen/dlclose И я не помню,какой gcc идет,в комплекте с новым NDK.,возможно надо попробовать с Цитата #define DLL_API __attribute__ ((visibility("default"))) Цитата потому что в приложениях чуть сложнее вызова MessageBox-а libcmt обязательно прилинкуется. сделал new в обоих файлах — привет, NODEFAULTLIB. Ну ок..возможно,что для Код сложнее вызова MessageBox- это понадобится...но вот семпл..говорит об обратном Кажется нашел версию(по крайней мере её советовали ставить) 8.0.50727.6195 |
 
|
|
13.06.2014, 19:27
Сообщение
#1214
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
ему нужна MagicFMDLLB.lib , да вот только её не сделать, генеришь *.def, а (*.lib) не хочет делать: MagicFM экспортирует миллион классов. чтобы не париться с приведением к одному знаменателю соглашений о вызовах проще собрать ее в самом BCB, к тому же там нужен всего десяток файлов из всего комплекта. во вложении проект для этого дела, рядом должны быть каталоги include и src, плюс где-нибудь пропишите дефайн MAGICFM (например, рядом с DllMain). плюс в некоторых заголовках нужно убрать пару включений и добавить сишные инклюды, которые BCB не сможет найти. как-то так: Код //#include "MagicFMLibType.h"
//#include "MgcRTLib.h" #include "MagicFM.h" // в нем должен быть #define MAGICFM = ля-ля-ля #include <math> #include <stdlib> #include <float> #include <assert> #include <mem>
Прикрепленные файлы
|
 
|
|
13.06.2014, 21:47
Сообщение
#1215
|
|
Продвинутый геймер Репутация: 15 Группа: Участник Сообщений: 322 Награды: 3 Регистрация: 01.05.2014 |
HikeR, возникала подобная мысль, но перспектива сборки многотонной библеотеки несколько смущала А тут оказывается можно и в "кастрированном" варианте, спасибо за помощь!
Сообщение отредактировал MegaNub - 13.06.2014, 21:52 |
 
|
|
16.06.2014, 16:35
Сообщение
#1216
|
|
Почти Игроман Репутация: 127 Группа: Участник Сообщений: 643 Награды: 3 Регистрация: 29.09.2012 |
|
 
|
|
16.06.2014, 19:36
Сообщение
#1217
|
|
Продвинутый геймер Репутация: 15 Группа: Участник Сообщений: 322 Награды: 3 Регистрация: 01.05.2014 |
Вот в fsgame.ltx есть параметры: $server_root$ и $server_data_root$. Еще существуют ключи запуска -build и -ebuild, как они должны работать, кто-нибудь знает? Это ключ для получения сборки тестерами? В исходники лезть не предлагать, смотрел уже, но всё равно как-то туго...
|
 
|
|
16.06.2014, 19:56
Сообщение
#1218
|
|
Почти Игроман Репутация: 127 Группа: Участник Сообщений: 643 Награды: 3 Регистрация: 29.09.2012 |
MegaNub, $server_root$ кажется билдовское обозначение $sdk_root$
Сдк 0.4 с ключами не запускается, зато сдк от 1850 билда работает |
 
|
|
16.06.2014, 20:32
Сообщение
#1219
|
|
Продвинутый геймер Репутация: 15 Группа: Участник Сообщений: 322 Награды: 3 Регистрация: 01.05.2014 |
krovosnork, в игре они вроде бы работают, в SDK не знаю. Осталось только понять как... И еще фигурирует параметр $build_copy$
Сообщение отредактировал MegaNub - 16.06.2014, 21:20 |
 
|
|
16.06.2014, 22:05
Сообщение
#1220
|
|
Продвинутый геймер Репутация: 15 Группа: Участник Сообщений: 322 Награды: 3 Регистрация: 01.05.2014 |
|
 
|
|
16.06.2014, 22:54
Сообщение
#1221
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
Тыкнув пальцем в небо, можно предположить, что build для копирования игровых ресурсов, ebuild для копирования ресурсов СДК, build_copy указывает на выходную папку.
-------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
Текстовая версия | Сейчас: 06.05.2024, 20:11 |