Редактирование движка |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Редактирование движка |
22.01.2016, 17:18
Сообщение
#3101
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Регистрация: 24.09.2010 |
Редактирование собранного движка Проект Cut X-Ray Цель проекта - создание отдельных изменений движка игры с их последующей комбинацией с другими правками. Авторы: SkyLoader, _призрак_ Для платформ: ТЧ 1.0004 и 1.0006, ЧН 1.5.10, ЗП 1.6.02 Адрес проекта на Google Code: Страница на Moddb: Пак 1 1. Исправление вылета "can't find rank" для оружий. 2. Смерть от первого лица. Видео: 3. Collide Возвращена коллизия мертвых тел с неписями и актором, как она сделана в старой физике билдов. Видео: 4. Круглый прицел. Возвращен круглый прицел вместо перекрестья, как билдах. 5. Исправление вида от 3-го лица. Изменено положение камеры от 3-го лица (1). Стрельба идет по перекрестью, а не по направлению актора. Если включить вид от 3-го лица (1) и удерживать Shift, то ГГ будет автоматически целиться в ближайшего непися или монстра. Проблемы: Стрельба по перекрестью идет также при виде от 3-го лица (2). Если при автоматическом нацеливании непись/монстр удалится или перейдет в оффлайн, будет движковый безлоговый вылет. Я думал вырезать это нацеливание, но решил оставить. Пак 2 1. Luminosity progress (только ТЧ) Возвращение шкалы освещения вместо шкалы "заметности" ГГ, как в билдах. 2. Запрет на доставание оружия в машине (только ТЧ и ЧН) и на лестнице (ТЧ, ЧН, ЗП). 3. Руки на руле в машине. (только ТЧ и ЧН) Видео: 4. Отсутствие распознавания неписей перекрестием: При наведении на непися перекрестье имеет дефолтный цвет. Также не показывает информацию о неписе, если смотреть на него. 5. Bind_object: Возможность использовать скрипты в мультиплеере. 6. Из оружия на классе бинокля можно стрелять (только ТЧ) Пак 3 1. Включение некоторых команд без использования ярлыка. Можно патчить по отдельности. Команды: -smap_4096 (максимально улучшенные карты теней), -mblur (включение блюра). 2. Измененная анимация безоружного гг. 3. Увеличение дистанции диалога с неписями (для создания сценок на расстоянии) 4. Исправление вылета при использовании предметов из трупов неписей. В отличии от версии Kolmogor'а, здесь отключено само меню использования. 5. Возможность поднимать болты как обычные инвентарные предметы (комбинировать с модом Charsi "Заканчивающиеся болты") Правки от RayTwitty aka Shadows Geometry LOD fix (CS 1.5.10) – расширение диапазона консольной команды r__geometry_lod Camblu crosshair for build 1865 – замена перекрестия прицела на кружок в билде 1865 Vertex buffer fix for NC Project – исправление вылета по переполнению буфера в NC Project NO 100 sovetov fix (COP 1.6.02) – убирает надписи "100 советов" с экрана загрузки Demo Record fix (SOC 1.0006) – убирает красные надписи в режиме demo_record Weapon Bobbing Beta (SOC 1.0006) – раскачка оружия при ходьбе (бета-версия) Build Loadscreen (SOC 1.0006) – билдовский экран загрузки со статичным изображением Detail Density fix (SOC 1.0006) – расширение диапазона консольной команды r__detail_density Mipbias fix (SOC 1.0006) – расширение диапазона консольных команд r1_tf_mipbias и r2_tf_mipbias No Quick Use fix (SOC 1.0006) – запрет на использование аптечек и бинтов по быстрым клавишам Sun Near fix (SOC 1.0006) – расширение диапазона консольной команды r2_sun_near Target Font (SOC 1.0006) – замена шрифта под перекрестием прицела на шрифт DI Unload Magazine fix (SOC 1.0006) – фикс скриптовой функции unload_magazine - теперь патроны разряжаются в инвентарь PNG Screenshots (SOC 1.0006) – игра теперь делает качественные скриншоты в формате png Правки от K.D. Правки от macron Исправленный экзешник для SoC 1.0006 Доработанный и исправленный экзешник для ТЧ 1.0006 (на основе Steam-версии без защиты) Включает в себя исправления вылетов, а также очистку лога игры от засоряющих сообщений. Более подробное описание внутри архива. Ссылка: X-Ray extensions portable Портативная версия расширений движка "X-Ray extensions" Платформы: ТЧ 1.0006, ЧН 1.5.10, ЗП 1.6.02 Эта версия имеет все нужные библиотеки и патчеры, а также настроенные bat-файлы для успешной компиляции. Более подробное описание внутри архива. Ссылка: Правки от Kolmogor Правленный xrGame для SoC 1.0004 Изменения: 1. Добавлена консольная команда fov [5.0, 180.0] - изменяет глобальный FOV камеры. 2. Добавлена консольная команда k_ammo_on_belt [on\off] - включает\выключает использование патронов с пояса. 3. Артефакты работают из рюкзака, а пояс служит контейнером. Ссылка: Правки от Kontro-zzz Изменение значения hud_fov Правки фиксированных значений параметра hud_fov - 0.37 либо 0.53, Должно работать на GOG версии и no DVD. Редактирование исходников Репозитории [SoC] () () () () () () () () () () () [CS] () () () () () () [CoP] () () () () () () () () () () () () () [2.0] () () NDA GSC Оригинальные версии движков Могут понадобиться для восстановления оригинальных библиотек. Официальный мультиплеерный (невышедший) патч для SoC Уроки Изменение плотности травы и создание патча через IDA Pro Автор: _призрак_ edited by: RayTwitty aka Shadows Для редактирования нам понадобится программа IDA Pro. 1. Запускаем IDA Pro. 2. Загружаем бинарник рендера xrRender_R1.dll или xrRender_R2.dll. 3. Теперь необходимо найти, где регистрируется консольная команда. Жмем Ctrl+T и вводим r__detail_density. 4. Находим функцию и тщательно ее разбираем (я ее полностью разбирать не буду, только укажу, где задаются параметры: Код регистрации консольной команды Код fld ds:flt_10064400 -- нижнее ограничение равное 0.6 or dword_1007CACC, 8 sub esp, 8 fstp [esp+30h+var_2C] mov ecx, offset unk_1007CA9C fld ds:flt_10064380 -- верхнее ограничение равное 0.2 fstp [esp+30h+var_30] push offset aSs; "ЪЩЩ>" push offset aR__detail_dens; "r__detail_density" call ds:??0CCC_Float@@QAE@PBDPAMMM@Z; CCC_Float::CCC_Float(char const *,float *,float,float) push offset sub_1005E080; void (__cdecl *)() call _atexit add esp, 4 5. Нам нужно увеличить плотность травы: следовательно нужно изменить верхнее ограничение. Как это сделать? Есть три варианта: Первый и самый логичный вариант: изменить переменную. Но тут есть небольшой подвох на котором я попался - этой переменной может пользоваться не одна функция, а несколько. И не ясно, что вы можете сломать, поменяв одну циферку на другую. Второй: взять другую, уже существующую переменную с подходящим значением. Хороший вариант которым я и воспользовался. Но и тут есть недостаток - переменных в бинарнике не так уж и много и можно просто не найти нужную. Третий: создать переменную. Отличный вариант. Единственный минус - я не знаю как это сделать Я пошел по второму пути. Два раза щелкнув на ds:flt_10064380, IDA отправила меня в дебри под названием .rdata. Там я нашел переменную, которая называлась - flt_1006452C и которая имела значение 0.0720999. Насколько я понял, flt_1006452C - не является названием переменной, это сборка из двух показателей - (тип числа)_(смещение). В нашем случае это число типа float, которое находится по адресу 1006452C. Ну что же, приступим к редактированию! 6. Отправляемся в самое начало файла. Как? Сверху есть что-то типа статус-бара - строка состоящая из синего, серого, черного цвета. Нажимаем там в любом месте мышкой и ведем влево до конца. 7. Опять ищем r__detail_density. Находим в этой функции строку fld ds:flt_10064338. Дальше самое интересное - жмем на вкладку Hex View и там у нас выделяются какие-то цифры. Это наша переменная 10064338, только написано наоборот. Сравните: Код 38 43 06 10 Похоже, не правда ли? 10 06 43 38 8. Начинаем редактировать. Нам нужно поменять 4338 на 452C (т.е. заменить ссылку с одной переменной на другую). Жмем правой кнопкой мыши на этих цифрах и выбираем пункт Edit. Меняем 38 43 на 2С 45. Дальше жмем где-нибудь в коде (это нужно сделать обязательно!). 9. После этого жмем правой кнопкой мыши и выбираем commit changes. Таким образом, мы поменяли ссылку на переменную и теперь верхнее ограничение будет равно значению из другой переменной. Но IDA не меняет исходный файл. В нашем случае мы можем только создать файл изменений. Делается это так: File -> Produce file -> Create DIF file. Назовем его test. Этот файл можно открыть при помощи блокнота и посмотреть, что получилось. 10. Теперь необходимо внести изменения из этого файла в движок. Это можно сделать при помощи патчера bpatch. Качаем, смотрим и запускаем bpatch.cmd. Я думаю, что батник вы сможете изменить самостоятельно (настроить пути файлов и т.п.) - там все элементарно. 11. Все! Изменения внесены в движок, можно тестировать Огромное спасибо Kolmogor'у и malandrinus'у. Если бы не они, я бы ничего не сделал. Спасибо вам еще раз. Спасибо и Rolan'у, с которым я очень много беседовал и тоже узнал много чего Полезные ссылки Сборка движка X-Ray Сообщение отредактировал RayTwitty - 27.08.2021, 00:15 |
 
|
|
|
|
26.03.2018, 19:40
Сообщение
#3102
|
|
Почти Игроман Репутация: 187 Группа: Участник Сообщений: 647 Награды: 4 Регистрация: 05.05.2007 |
RayTwitty, сделай через lua_register, без луабинда. Правда придётся вручную данные из луа доставать.
|
 
|
|
06.04.2018, 17:08
Сообщение
#3103
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
Обновил ссылки на репозитории.
-------------------- В армии по 01.07.2020. |
 
|
|
26.04.2018, 15:02
Сообщение
#3104
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
В luabind 0.9 частично изменился экспорт и вызовы в скриптах. Вот к примеру:
Код void dynamic_engine_object(lua_State *L) { using namespace luabind::detail; CGameObject *obj = lua_togameobject(L, 1); if (obj) lua_pushgameobject(L, obj); else lua_pushnil (L); } def("engine_object", &dynamic_engine_object), При вызове в скриптах как Код local obj = engine_object(id) стала падать:Код FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : script_storage.cpp [error]Line : 681 No matching overload found, candidates: void engine_object(lua_State*) Там нужно правила при экспорте изменить или вызов в скриптах? В чем загвоздка в новой версии луабинда? Сообщение отредактировал Zagolski - 26.04.2018, 15:06 |
 
|
|
26.04.2018, 15:11
Сообщение
#3105
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
Zagolski, по-моему ещё в OpenXRay говорили, что новый байнд более требователен к типизации. Я использую Дексовский и вам советую.
-------------------- В армии по 01.07.2020. |
 
|
|
26.04.2018, 15:21
Сообщение
#3106
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
что новый байнд более требователен к типизации. Да, пришлось повозиться в скриптах, да и вообще. Очень все строго стало, а где-то и кардинально вызовы изменены. Но хотелось бы разобраться с проблемой, с той, что выше я описал. Я использую Дексовский и вам советую. Там у него вроде старый 0.7. Сообщение отредактировал Zagolski - 26.04.2018, 15:23 |
 
|
|
26.04.2018, 15:37
Сообщение
#3107
|
|
Игровое Воплощение Репутация: 394 Группа: Участник Сообщений: 4791 Награды: 4 Регистрация: 27.04.2011 |
|
 
|
|
26.04.2018, 15:42
Сообщение
#3108
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
Там у него вроде старый 0.7. Да. Его вполне за глаза. Хорошо вычищен и реструктурирован. Сообщение отредактировал ForserX - 26.04.2018, 15:44 -------------------- В армии по 01.07.2020. |
 
|
|
26.04.2018, 15:56
Сообщение
#3109
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
|
 
|
|
09.05.2018, 14:16
Сообщение
#3110
|
|
Геймер Репутация: 9 Группа: Участник Сообщений: 110 Награды: 2 Регистрация: 21.09.2014 |
Недавно закончил с клиент-сервером, эгейн. Со всеми своими предыдущими вопросами разобрался. В итоге вырезал целиком весь код из xrNetServer, вырезал как класс xrServer со всеми вытекающими, существенно упростил клиент-серверную систему выбросив оттуда всё не требующее синхронизации, перефигачил ивенты (как движковые (это отдельная история), так и серверные (тут частично)) требующие синхронизации. Также выхолостил IGame_Level оставив только один указатель (его требует один объект в CLevel). Полностью снес все, что относилось к типам игры, в том числе из серверных объектов (поставил заглушки, чтобы не нарушать архитектуру спавна). Отсюда очевидно, что повысилось быстродействие. Протестировал все на ТЧ и на ЗП, привел код к идентичному виду, о чем я и говорил здесь ранее неоднократно.
Так что если кто-то интересуется этим делом, и если нужна будет помощь, думаю, я смогу в чем-то помочь, или просто обменяемся опытом. В открытом доступе гуляет много всяких дурацких микрофиксов клиент-серверной системы по отношению к синглу, имейте это в виду . -------------------- Cocoa not Cocaine.
|
 
|
|
09.05.2018, 16:32
Сообщение
#3111
|
|
Почти Игроман Репутация: 153 Группа: Участник Сообщений: 614 Награды: 4 Регистрация: 03.05.2012 |
|
 
|
|
09.05.2018, 17:22
Сообщение
#3112
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
Карлан, поделись немного опытом, а ьо я устал понемногу его вычищать.
-------------------- В армии по 01.07.2020. |
 
|
|
10.05.2018, 00:43
Сообщение
#3113
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
Лучше там ничего не трогать в сервер-клиенте, если не спец. Я у себя "вычистил", на первый взгляд вроде все хорошо, но теперь спонтанные ошибки время от времени выскакивают, которые никак отловить не могу. Что примечательно, субъективно скорости совсем не прибавилось. И даже время компиляции всего на 5% снизилось, несмотря на удаление всего мультиплеерного кода.
Сообщение отредактировал Zagolski - 10.05.2018, 00:44 |
 
|
|
10.05.2018, 08:32
Сообщение
#3114
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
Zagolski, у меня тоже нет мультиплеера, работать вполне стабильно.
-------------------- В армии по 01.07.2020. |
 
|
|
10.05.2018, 17:35
Сообщение
#3115
|
|
Геймер Репутация: 9 Группа: Участник Сообщений: 110 Награды: 2 Регистрация: 21.09.2014 |
SkyLoader, не настолько, чтобы заниматься этим ради быстродействия . Цифры не помню, ивенты смотрел стандартным профилированием, если хочешь скажи сколько сервер жрет у тебя, у меня он уже ничего не жрет, так как его нету, и это не самая большая часть всей эпопеи.
ForserX, конкретнее спрашивай, у меня информации очень много по всем трем (я так выделил по своей версии) направлениям, хоть цикл статей пиши, но этим я точно заниматься никогда не буду. Zagolski, что ты вычищал и какого плана ошибки? -------------------- Cocoa not Cocaine.
|
 
|
|
10.05.2018, 21:29
Сообщение
#3116
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
Карлан, самая медленная часть и её альтернатива. Если можно, с примером на xray.
-------------------- В армии по 01.07.2020. |
 
|
|
10.05.2018, 23:45
Сообщение
#3117
|
|
Геймер Репутация: 9 Группа: Участник Сообщений: 110 Награды: 2 Регистрация: 21.09.2014 |
ForserX, я довольно мало занимался замерами, мерил сервер (ну потому-что там тупо дефолтный таймер), и выборочно некоторые ивенты, поэтому не могу в полной мере ответить на вопрос. У меня цель была разобраться поглубже в одной из фундаментальных систем движка, а не повысить быстродействие. О нем я упомянул просто потому-что видно общую картину оздоровления, я принял кучу всяких мер, даже все не вспомню, это и рефакторинг менеджмента пакетов, и вырезание ивентов (=> увеличение стабильности), и вырезание кучи ненужных крутящихся событий, уменьшение порций передаваемой информации, больше чем на 50% вычистил загрузку, просто писал различный оптимизирующий код. Что из этого в большей мере помогло, что в меньшей сказать не могу, не замерял, просто не интересно, извини. Сейчас у меня в голове более менее все структурировано выстроено именно на основе опыта, если бы была х64 платформа можно было бы задействовать ресурсы, кардинально переделать пару моментов и просто оторваться от земли по некоторым вопросам давно набившим оскомину (например там всякая муть с памятью за которой я пристально слежу на х32 движке чтобы не было переполнений через каждые два часа игры). Есть еще много идей по реформированию серверной части объектов, там тоже чудовищное количество всякой ерунды (в идеале вообще довести это все до состояния полной замены этой системы, тут тоже у меня есть концепция). По симулятору тоже есть мысли. По скриптам тоже в чем проблемы я писал выше. В сетевухе нашел тоже косяки, но ей вроде никто не занимается, я думаю всем пофиг на это. В конце концов все равно я уже упираюсь в форматы (подпираю всякими заглушками), и нужны люди, которые будут писать сдк и компиляторы подо все, что я делаю, иначе от этого всего толку мало в итоге выйдет. Поэтому я и написал, мало-ли кто копается также как я, можно было бы обменяться опытом, может есть более крутые решения/идеи, чем я там напридумывал. Без этого всего эти взоры на горизонты так ими и останутся. Слов можно много понаписать, была-бы от них польза .
-------------------- Cocoa not Cocaine.
|
 
|
|
11.05.2018, 00:14
Сообщение
#3118
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
если бы была х64 платформа Возьми порт от окси. У нас х64. Всё рабочее. -------------------- В армии по 01.07.2020. |
 
|
|
11.05.2018, 02:34
Сообщение
#3119
|
|
Почти Игроман Репутация: 59 Группа: Участник Сообщений: 629 Награды: 1 Регистрация: 13.12.2016 |
что ты вычищал и какого плана ошибки? С объектами в ClientSend. Бьются пакеты судя по всему, обычно при сейве/загрузке, хотя может и само по себе упасть на "холостом ходу". Как уже говорил, ошибки редкие и спонтанные, непонятно из-за чего. Но стабильность явно пострадала. Вычищено много чего, xrServer, скажем так, "похудел" на 75%. |
 
|
|
11.05.2018, 12:01
Сообщение
#3120
|
|
Геймер Репутация: 9 Группа: Участник Сообщений: 110 Награды: 2 Регистрация: 21.09.2014 |
ForserX, зачем?
Zagolski, можешь свой xrMessages показать, мне было бы интересно посмотреть что ты там убрал, я где-то в районе 5 событий так и не доковырял окончательно нужны они там или нет (и в каком виде нужны). По твоей проблеме, как ты догадываешься, не смогу подсказать, но я переделывал сохранения и у меня все без проблем работает, в остальном это использует только апдейтер который выбирает экшн на серверной части, скажи хотя-бы ивент на котором у тебя игра сыпется, возможно ты где-то вычистил часть инфы из пакета на клиенте и не вычистил на сервере, или наоборот (не всегда явно), или не соблюдаешь очереди обработки (это весьма важно!), перепроверь. Специально у себя посмотрел в этих местах, стоят какие-то выводы в лог, но вообще уже не помню что там и зачем, давно очень делал видимо. Я когда загрузку переделывал там довольно много всего неявного было, но было довольно интересно установить все взаимосвязи . -------------------- Cocoa not Cocaine.
|
 
|
|
11.05.2018, 15:30
Сообщение
#3121
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
всякая муть с памятью за которой я пристально слежу на х32 движке чтобы не было переполнений через каждые два часа игры если бы была х64 платформа можно было бы задействовать ресурсы, кардинально переделать пару моментов и просто оторваться от земли по некоторым вопросам давно набившим оскомину -------------------- В армии по 01.07.2020. |
 
|
|
Текстовая версия | Сейчас: 25.04.2024, 10:53 |