Закрома Родины |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Закрома Родины |
17.09.2014, 16:27
Сообщение
#3541
|
|
И никаких няш-мяш! Репутация: 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 |
 
|
|
|
|
04.08.2015, 10:49
Сообщение
#3542
|
|
Высший Игровой Бог Репутация: 1747 Группа: Супермодератор Сообщений: 12594 Награды: 15 Регистрация: 05.11.2009 |
Release - релизная сборка. Добавлю что там ещё компилятор делает оптимизацию кода, из-за чего иногда Release версия работает не так как Debug версия. -------------------- |
 
|
|
04.08.2015, 11:26
Сообщение
#3543
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
Release - релизная сборка. Добавлю что там ещё компилятор делает оптимизацию кода, из-за чего иногда Release версия работает не так как Debug версия. Оптимизацию кода можно в настройках включить/выключить. Но в целом - да. -------------------- В армии по 01.07.2020. |
 
|
|
04.08.2015, 14:01
Сообщение
#3544
|
|
Продвинутый геймер Репутация: 15 Группа: Участник Сообщений: 322 Награды: 3 Регистрация: 01.05.2014 |
|
 
|
|
04.08.2015, 20:01
Сообщение
#3545
|
|
Геймер Репутация: 11 Группа: Участник Сообщений: 133 Награды: 2 Регистрация: 17.09.2014 |
С Божьей помощью почти закончил пда делать и худ.
Видео |
 
|
|
04.08.2015, 23:53
Сообщение
#3546
|
|
Кандидат Игровых Наук Репутация: 2153 Группа: Участник Сообщений: 3488 Награды: 4 Регистрация: 27.07.2009 |
Вообщем в продолжение прошлого поста.
Как я уже писал в том посте - 12.f это максимальные\минимальные координаты вертекса относительно центра модели. Это число не только влияет на размер модели, но также на её качество. Т.к 4-байтный float пакуется в 2-байтный short, то с помощью этого числа можно было жертвовать размером модели, оставляя больше бит на точность, и наоборот - жертвовать точностью ради размера модели. GSC остановились на среднем значении в 12 метров. Для сравнения: Так модель должна выглядеть в идеале (тут есть косяки, но на скрине их не видно) Так она выглядит в оригинале Так она выглядит, если вместо 12.f взять 1.f На первый взгляд кажется нормальной, однако по сравнению с "идеалом" можно увидеть угловатость и пару проблемных мест. А вот модель игрока - как видно выше 1 метра модель обрезалась: А так она выглядит, если вместо 12.f взять 24.f, разница на лицо Максимальная длина модели увеличивается до 24 метров, однако точность падает в разы. Причём сама модель в ogf-е нормальная. Её ломает игра при рендеринге. Собственно для оптимизации игры координаты вертексов (+ текстурные координаты) и пакуются в 2 байта. Однако если не паковать координаты, а передавать их как float, то мы: 1) Получим качество модели как на 3-ем скрине. (не идеальное, к слову - нужно выделить больше бит на точность, и поменьше на длину) 2) Значительно поднимем максимальные размеры модели, а на практике избавляемся от лимитов. Конечно побочным эффектом этого становится пока неопределённое падение производительности (каждый вертекс кушает на 2 байта видеопамяти больше, как минимум), однако ничего не мешает рендерить в высоком качестве только определённые модели, указывая их в каком нибудь ltx или в самом ogf-е файле флаг добавить. Файлы тестов выложу чуть попозже, хочу ещё кое что доделать. Но если кому то интересно, то в движке менялся лишь файл FSkinned.cpp, а в шейдерах файл r2\skin.h. PS: Причём это же вполне возможно касается и текстур. Ещё не тестировал, но м.б удастся поднять их чёткость. -------------------- Мне просто нравятся синие буквы под сообщением.
|
 
|
|
05.08.2015, 02:03
Сообщение
#3547
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Shoкer, было бы неплохо во всех 3-х играх запилить возможность юзать нормальные качественные модели, которые бы не коцались экспортером\игрой.
Еще, надо бы добавить поддержку 16-битных анимаций в двиг и в СДК... Сообщение отредактировал Shadows - 05.08.2015, 02:04 -------------------- |
 
|
|
05.08.2015, 02:29
Сообщение
#3548
|
|
Опытный Геймер Репутация: 17 Группа: Участник Сообщений: 161 Награды: 3 Регистрация: 08.03.2015 |
CODE Ошибка 2 error C2039: UITitleText: не является членом "CUIFrameLineWnd" x:\engine\xrGame\UIEncyclopediaWnd.cpp 125 Ошибка 3 error C2228: выражение слева от ".SetText" должно представлять класс, структуру или объединение x:\engine\xrGame\UIEncyclopediaWnd.cpp 125 Ошибка 4 error C2027: использование неопределенного типа "CUIEncyclopediaWnd" x:\engine\xrGame\ui\UIPdaWnd.cpp 101 Ошибка 5 error C2227: выражение слева от "->Init" должно указывать на тип класса, структуры или объединения либо на универсальный тип x:\engine\xrGame\ui\UIPdaWnd.cpp 101 Ошибка 6 error C2440: =: невозможно преобразовать 'CUIEncyclopediaWnd *' в 'CUIWindow *' x:\engine\xrGame\ui\UIPdaWnd.cpp 205 Ошибка 7 error C2446: ==: нет преобразования 'CUIEncyclopediaWnd *' в 'CUIWindow *' x:\engine\xrGame\ui\UIPdaWnd.cpp 282 Ошибка 8 error C2440: ==: невозможно преобразовать 'CUIEncyclopediaWnd *' в 'CUIWindow *' x:\engine\xrGame\ui\UIPdaWnd.cpp 282 Вечер провозился с этой энциклопедией которую я хочу впилят в ПДА ЧН но пока не получается, пока на этом остановился. Может у кого есть уже готовый? Сообщение отредактировал Stalker_Monolit - 05.08.2015, 02:31 -------------------- |
 
|
|
05.08.2015, 14:06
Сообщение
#3549
|
|
Геймер Репутация: 11 Группа: Участник Сообщений: 133 Награды: 2 Регистрация: 17.09.2014 |
CODE Ошибка 2 error C2039: UITitleText: не является членом "CUIFrameLineWnd" x:\engine\xrGame\UIEncyclopediaWnd.cpp 125 Ошибка 3 error C2228: выражение слева от ".SetText" должно представлять класс, структуру или объединение x:\engine\xrGame\UIEncyclopediaWnd.cpp 125 Ошибка 4 error C2027: использование неопределенного типа "CUIEncyclopediaWnd" x:\engine\xrGame\ui\UIPdaWnd.cpp 101 Ошибка 5 error C2227: выражение слева от "->Init" должно указывать на тип класса, структуры или объединения либо на универсальный тип x:\engine\xrGame\ui\UIPdaWnd.cpp 101 Ошибка 6 error C2440: =: невозможно преобразовать 'CUIEncyclopediaWnd *' в 'CUIWindow *' x:\engine\xrGame\ui\UIPdaWnd.cpp 205 Ошибка 7 error C2446: ==: нет преобразования 'CUIEncyclopediaWnd *' в 'CUIWindow *' x:\engine\xrGame\ui\UIPdaWnd.cpp 282 Ошибка 8 error C2440: ==: невозможно преобразовать 'CUIEncyclopediaWnd *' в 'CUIWindow *' x:\engine\xrGame\ui\UIPdaWnd.cpp 282 Вечер провозился с этой энциклопедией которую я хочу впилят в ПДА ЧН но пока не получается, пока на этом остановился. Может у кого есть уже готовый? А зачем?Я ведь тоже самое пилю, скоро солью бету. Вечер провозился с этой энциклопедией которую я хочу впилят в ПДА ЧН но пока не получается, пока на этом остановился. Может у кого есть уже готовый? Иль ты хочешь впереди планеты всей? |
 
|
|
05.08.2015, 19:43
Сообщение
#3550
|
|
Почти Игроман Репутация: 153 Группа: Участник Сообщений: 614 Награды: 4 Регистрация: 03.05.2012 |
Раз тов.Shoкer решил полезной инфы скинуть, внесу свои две лепты
Копался в полосе загрузки, нашел ошибку, по которой полоса загрузки рисуется не совсем корректно в синглплеере в ЗП. В x_ray.cpp есть такой код: Код void CApplication::LoadStage() { load_stage++; VERIFY(ll_dwReference); Msg("* phase time: %d ms", phase_timer.GetElapsed_ms()); phase_timer.Start(); Msg("* phase cmem: %d K", Memory.mem_usage() / 1024); if (g_pGamePersistent->GameType()==1 && strstr(Core.Params,"alife")) max_load_stage = 17; else max_load_stage = 14; LoadDraw(); } Как можно заметить по названию, max_load_stage, это переменная, которая показывает количество стадий загрузки, т.е. загрузка моделей, шейдеров, звуков, синхронизация объектов и тд. В сингле их целых 17, в мультиплеере 14. Вот эту переменную потом получает рендер и рисует шкалу загрузки в соответствии с текущей стадией загрузки. Но тут есть ошибка, а именно сравнение strstr(Core.Params,"alife"). Но у нас никогда не происходит такого, так как никто не пишет батник запуска игры с добавлением alife Именно это и проверяется. Из-за этого для игры переменная max_load_stage всегда равна 14. Поэтому в ЗП полоса загрузки очень быстро достигает конца и долго висит. Скорее всего разраб хотел проверить существование "alife", который мы видим в скрипте ui_main_menu.script в функции старта новой игры: Код console:execute("start server(all/single/alife/new) client(localhost)") В общем, надо сделать нормальную проверку на наличие "alife" в параметрах игры. Выглядит примерно так: Код void CApplication::LoadStage() { load_stage++; VERIFY(ll_dwReference); Msg("* phase time: %d ms", phase_timer.GetElapsed_ms()); phase_timer.Start(); Msg("* phase cmem: %d K", Memory.mem_usage() / 1024); typedef IGame_Persistent::params params; params &p = g_pGamePersistent->m_game_params; if (g_pGamePersistent->GameType() == eGameIDSingle && !xr_strcmp(p.m_alife, "alife")) max_load_stage = 17; else max_load_stage = 14; LoadDraw(); } Теперь полоса загрузки будет более плавно идти. Как я понял, такая ошибка есть и в ТЧ и в ЧН. |
 
|
|
05.08.2015, 19:46
Сообщение
#3551
|
|
Продвинутый геймер Репутация: 22 Группа: Участник Сообщений: 234 Награды: 3 Регистрация: 27.10.2010 |
SkyLoader,
Разве этого мало? Код g_pGamePersistent->GameType() == eGameIDSingle
|
 
|
|
05.08.2015, 19:52
Сообщение
#3552
|
|
Почти Игроман Репутация: 153 Группа: Участник Сообщений: 614 Награды: 4 Регистрация: 03.05.2012 |
SkyLoader, Разве этого мало? Код g_pGamePersistent->GameType() == eGameIDSingle Может большинству людей этого достаточно, только я привык просто исправлять баг, а не удалять чье-то, чтобы потом это не всплыло где-нибудь. Ну тут может и не опасно оставить только одну проверку |
 
|
|
05.08.2015, 19:55
Сообщение
#3553
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Разве этого мало? Сингл можно без алайфа запустить. З.Ы. CODE if (g_pGamePersistent->GameType() == eGameIDSingle && (!xr_strcmp(p.m_alife, "alife") || strstr(Core.Params,"alife"))) лучше наверно так. Ключ alife используется же где-то. Сообщение отредактировал Shadows - 05.08.2015, 20:06 -------------------- |
 
|
|
05.08.2015, 20:17
Сообщение
#3554
|
|
Почти Игроман Репутация: 153 Группа: Участник Сообщений: 614 Награды: 4 Регистрация: 03.05.2012 |
Разве этого мало? Сингл можно без алайфа запустить. З.Ы. Код if (g_pGamePersistent->GameType() == eGameIDSingle && (!xr_strcmp(p.m_alife, "alife") || strstr(Core.Params,"alife"))) лучше наверно так. Ключ alife используется же где-то. Ключи обычно пишутся с черточкой "-alife" ;) Во всяком случае нигде больше использования этого ключа в движке я не нашел. |
 
|
|
05.08.2015, 21:44
Сообщение
#3555
|
|
Опытный Геймер Репутация: 17 Группа: Участник Сообщений: 161 Награды: 3 Регистрация: 08.03.2015 |
А зачем?Я ведь тоже самое пилю, скоро солью бету. Это прекрасно Иль ты хочешь впереди планеты всей? я некуда не спешу если бы я знал что этим ты занимаешься я бы не тратил время а просто попросил у тебя уже готовый экземпляр. Сообщение отредактировал Stalker_Monolit - 05.08.2015, 21:45 -------------------- |
 
|
|
05.08.2015, 21:44
Сообщение
#3556
|
|
Игровой Бог Репутация: 1690 Группа: Участник Сообщений: 7021 Награды: 11 Регистрация: 22.02.2006 |
|
 
|
|
06.08.2015, 06:27
Сообщение
#3557
|
|
Геймер Репутация: 11 Группа: Участник Сообщений: 133 Награды: 2 Регистрация: 17.09.2014 |
Всем доброго утра, вопрос:а если взять модель камыша и добавить в неё пару костей и закрепить что бы не перемещалась по террейну, будет ли она сгибаться или надо анимацию сделать?
Так же можно по типу зеркала только назначить другой шейдер например не window, а model, при стрельбе будет ломаться. Сообщение отредактировал nikita_nz1986 - 06.08.2015, 06:29 |
 
|
|
06.08.2015, 08:42
Сообщение
#3558
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
nikita_nz1986, Если мне память не изменяет в движке такая система уже есть и костей ей не нужно. Как пример все деревья на картах имею свойство покачивания, интенсивность прописана в конфигах и есть консольные команды для усиления эффекта(не помню к сожалению какие именно). Реализуется это с помощью шейдера от деревьев, компилятор уровня на этапе компиляции находит этот шейдер и маслает эти модели(деревья).
Т.е. в идеале чтобы получить задуманное тебе нужно найти в движке функции отвечающие за качание деревьев или травы, скопипасть его и применять на новый тип (кусты\камыши) со своими настройками и консольными командами(камыш например легче чем дерево и соответсвенно ему надо будет прибавить силу и интенсивность покачивания в отличии от деревьев). Дальше взять шейдер дерева и подправить под твои нужды(партиклы от попадания пули и т.д.) а так же можно скомбинировать его с шейдером стекла чтобы он разрушался(в сталке этот шейдер кривой до ужаса и если его применять к объектам получаются волшебные вещи, кажется макрон эксперементировал с этим и даже видео выкладывал как ломаются объекты под действием шейдера этого, в кратце система разрушения работает по принципу того что компилятор бьет модель с этим шейдером на мелкие модели размером с полигон в начальном состоянии они не подвержены физики тел т.е. если ты у дерево полностью разбил основание то верхняя часть остается в воздухе). |
 
|
|
06.08.2015, 18:35
Сообщение
#3559
|
|
Геймер Репутация: 11 Группа: Участник Сообщений: 133 Награды: 2 Регистрация: 17.09.2014 |
nikita_nz1986, Если мне память не изменяет в движке такая система уже есть и костей ей не нужно. Как пример все деревья на картах имею свойство покачивания, интенсивность прописана в конфигах и есть консольные команды для усиления эффекта(не помню к сожалению какие именно). Реализуется это с помощью шейдера от деревьев, компилятор уровня на этапе компиляции находит этот шейдер и маслает эти модели(деревья). Т.е. в идеале чтобы получить задуманное тебе нужно найти в движке функции отвечающие за качание деревьев или травы, скопипасть его и применять на новый тип (кусты\камыши) со своими настройками и консольными командами(камыш например легче чем дерево и соответсвенно ему надо будет прибавить силу и интенсивность покачивания в отличии от деревьев). Дальше взять шейдер дерева и подправить под твои нужды(партиклы от попадания пули и т.д.) а так же можно скомбинировать его с шейдером стекла чтобы он разрушался(в сталке этот шейдер кривой до ужаса и если его применять к объектам получаются волшебные вещи, кажется макрон эксперементировал с этим и даже видео выкладывал как ломаются объекты под действием шейдера этого, в кратце система разрушения работает по принципу того что компилятор бьет модель с этим шейдером на мелкие модели размером с полигон в начальном состоянии они не подвержены физики тел т.е. если ты у дерево полностью разбил основание то верхняя часть остается в воздухе). Всё верно, но стекло бьётся не зависимо от шейдера, там не много иная система. |
 
|
|
06.08.2015, 20:38
Сообщение
#3560
|
|
Почти Игроман Репутация: 96 Группа: Участник Сообщений: 594 Награды: 3 Регистрация: 26.10.2012 |
Цитата или надо анимацию сделать? таким способом тоже можно, но это уже будет динамический объект. И кстати при коллизиях возможны баги, хотя может быть разрешимые. Сообщение отредактировал Kontro-zzz - 06.08.2015, 20:43 -------------------- Будиш маму-папу слушать
Будиш ты канфеты кушать! © Операция «Ы» |
 
|
|
06.08.2015, 22:10
Сообщение
#3561
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
А ни у кого не было проблем при компиляции xrParticles.dll? Точнее, не при компиляции, а при загрузке игры со скомпиленным бинарником - с ним игра валится на стадии "Загрузка ИИ-объектов" без вменяемого лога.
Знаю точно, что такая проблема еще была у _призрак_, но он вроде её вылечил и\или забил... З.Ы. вообще, проблема "фиксится" подсовыванием оной либы из 6 патча, но все-таки хочется разобраться в чем проблема, чтобы постоянно пути проекта не менять, хочется же дебажить нормально З.Ы2. VS2010, win7 64, сырцы - самые первые слитые, 1.0007rc1, те что в репо на xp-dev. З.Ы3. либа не изменялась. Сообщение отредактировал Shadows - 06.08.2015, 22:29 -------------------- |
 
|
|
Текстовая версия | Сейчас: 20.04.2024, 12:25 |