Перенос локации из cs в cop
|
|
|
Janel
Понедельник, 06.01.2020, 16:01 | Сообщение # 1
Статус: |
|
Гость: |
|
Сообщений: |
40 |
Награды: |
0 |
Регистрация: |
09.10.2019 |
|
Перенос локации из сталкер CS в сталкер CoP
Введение:
Решил написать статью о том как правильно перенести локацию из сталкер Clear sky (Чистое Небо) в сталкер Call of pripyat (Зов Припяти). Долго времени не займёт, на первый взгляд покажется тяжёлым но это довольно просто. И так перейдём ближе к делу.
Подготовка:
Для начала скачаем программы, которые нам понадобятся при подключении локации.
1. Универсальный распаковщик ресурсов игр Сталкер 2. ActivePerl 3. ggtool 4. ACDC_Cs 5. ACDC_Cop 6. ggEditor_01
При помощи распаковщика распакуем ресурсы ЧН и ЗП (прога имеет интуитивно понятный интерфейс, думаю проблем тут не возникнет) Устанавливаем active perl.
Создаём папку с программой ggEditor_01. Создаем там папки Cs и Cop.В папке CS создаем папку gamedata. В папке gamedata создаем папку levels и кидаем туда папку с уровнем, который мы хотим портировать. Далее возвращаемся в папку CS и туда кидаем папку с ACDC для CS, туда же кладём all.spawn. Запускаем соответствующий батник для распаковки all.spawn'а.
Далее в папку ggEditor_01\ Cop, распаковываем соответствующий ACDC, опять-же кладем туда all.spawn, распаковываем.
В итоге у нас должно получиться 2 распакованных all.spawn'а и папка с переносимым уровнем.
С приготовлениями всё.
Основная работа:
Запускаем программу ggEditor. Видим там два окошка. В левом открываем graph.bin от ЧН, а в правом — section4.bin от ЗП (они появятся после распаковки all.spawn'а) Нужно выбрать тип файлов для ЧН — graph.bin, а для ЗП — все файлы и открыть в папке с ACDC файл. В окошках мы видим список уровней. В левом окошке находим нужный нам уровень и нажимаем на соответствующую стрелку для переноса уровня в нужный нам граф. Нажимаем в правом окошке «сохранить».После того, как граф сохранился, можно закрыть программу, она нам больше не понадобится. Потом этого шагаем в папку с ACDC для ЗП и удаляем старые файлы section4.bin. Затем переименовываем файл section4.bin.new в section4.bin.
Далее идем в папку с ACDC от ЧН, находим там файл alife_наша_локация и копируем его. Затем шуруем в папку с ACDC от ЗП, вставляем скопированный нами файл. Открываем этот файл, сносим все, оставляем только одну секцию спавна (Лучше всего если это будет какой-нибудь объект, я например всегда оставляю Campfire, (костёр) присваиваем секции номер не меньше 20000, сворачиваем на время этот файл. Далее нужно подогнать вертексы. Для этого запускаем батник ggtool, ждем некоторое время, после чего появляются имена локаций, а рядом с ними числа. Смотрим это число рядом с нашей локацией (в ЗП это скорее всего будет 934).Далее разворачиваем alife_ файл с нашей локацией, ищем там строку «game_vertex_id» и пишем там число которое появилось рядом с нашей локацией при запуске батника ggtool. Далее, в добавляемых потом секциях спавна нужно писать эти числа. Мы подогнали вертексы.
Затем открываем файл all.ltx. Вписываем туда свой alife_ файл локации, way_ файлы не трогаем. Меняем на соответствующее число локации строку level_count.
После этого открываем файл alife_zaton (для ЗП) и ищем там гг по строке «section_name = actor».Нашли? Отлично. Теперь присваиваем этой секции спавна позицию (новую позицию прописываем также в строке "upd:position = ") и вертексы как у единственного предмета в файле alife_новая_локация. При следующей распаковке, если вы все сделали правильно, наш актор окажется в файле alife_новая_лока.
Мы почти закончили с пробной сборкой новой локации (пока без перехода).
Осталось только прописать наш новый уровень в файл ACDC Cop\acdccop.pl (для ЗП)
В этом файле ищем такие строки(для ЗП):
Код use constant levels_info => ( { gvid0 => 934, }, { gvid0 => 883, name => 'jupiter_underground' }, { gvid0 => 857, name => 'labx8' }, { gvid0 => 666, name => 'pripyat' }, { gvid0 => 317, name => 'jupiter' }, { gvid0 => 0, name => 'zaton' },
И если у вас число когда мы запускали батник ggtool тоже 934 то прописываем так:
Код use constant levels_info => ( { gvid0 => 934, name => 'ваша_локация' }, { gvid0 => 883, name => 'jupiter_underground' }, { gvid0 => 857, name => 'labx8' }, { gvid0 => 666, name => 'pripyat' }, { gvid0 => 317, name => 'jupiter' }, { gvid0 => 0, name => 'zaton' },
Всё. Собираем all.spawn.
Сборка геймдаты:
Осталось собрать gamedat'у для игры и смотреть что получилось. Итак, приступим:
В папке с игрой создаем папку gamedata, а в ней папки configs, levels, spawns. В папку spawns ложим получившийся при сборке all.spawn.new (или new.spawn), не забывая переименовать его в all.spawn. В папку levels ложим уровень из ggEditor_01\Soc\gamedata\levels\ваша_локация.
Теперь осталось только прописать уровень в конфигах. Из распакованной геймдаты игры берем файлы configs\game_graphs.ltx, game_levels.ltx, game_maps_single.ltx.
game_graphs.ltx для ЗП должен выглядеть так:
Код [location_0] 000 = "..." 001 = "ваша_локация" 002 = "sim_smart_2" 003 = "sim_smart_3" 004 = "sim_smart_4" 005 = "sim_smart_5" 006 = "sim_smart_6" 007 = "sim_smart_7" 008 = "sim_smart_8" 009 = "sim_smart_base"
[location_1] 000 = "..." 001 = "ограниченный доступ" 002 = "запрещенный доступ"
[location_2] 000 = "..." 001 = "не для игрока"
[location_3] 000 = "..." ... . ....................... 112 = "pri_a22_smart_terrain" 113 = "pri_a25_smart_terrain" 114 = "pri_a28_arch" 115 = "pri_a28_base" 116 = "pri_b28_evac" 117 = "pri_a28_heli" 118 = "pri_a28_school" 119 = "pri_a28_shop" 120 = "pri_b301" 121 = "pri_b302" 122 = "pri_b303" 123 = "pri_b304_monsters_smart_terrain" 124 = "pri_b305_dogs" 125 = "pri_b306" 126 = "pri_b307" 127 = "pri_b35_mercs" 128 = "pri_b35_military" 129 = "pri_b36_smart_terrain" 130 = "pri_sim_1" 131 = "pri_sim_2" 132 = "pri_sim_3" 133 = "pri_sim_4" 134 = "pri_sim_5" 135 = "pri_sim_6" 136 = "pri_sim_7" 137 = "pri_sim_8" 138 = "pri_sim_9" 139 = "pri_sim_10" 140 = "pri_sim_11" 141 = "pri_sim_12" 142 = "ваша_локация"
[graph_points_draw_color_palette] default = 0x6000ffff 000_000_000_000 = 0x60ff00ff
Далее лезем в game_levels.ltx. Там в самом начале, где список уровней, вписываем "level183" (число не менее 183) Листаем файл до самого конца и в конце пишем следующее:
Код [level183] name = ваша_локация caption = "ваша_локация" offset = 700.0, 1000.0, -840.0 weathers = [default] id = 183
Затем открываем файл game_maps_single.ltx и прописываем свой уровень в секции "[level_maps_single]", а затем создаем примерно такую секцию для нашего уровня:
Код [ваша_локация] global_rect = 307.0, 90.0, 717.0, 500.000000 weathers = dynamic_default
Возможные вылеты:
Код FATAL ERROR [error]Expression : cross_table().header().level_guid() == level_graph().header().guid() [error]Function : CAI_Space::load [error]File : D:\prog_repository\sources\trunk\xrGame\ai_space.cpp [error]Line : 113 [error]Description : cross_table doesn't correspond to the AI-map
Данный вылет свидетельствует о том,что вы использовали распаковщик ресурсов игры не из этой темы. У вас при распаковке вашего уровня "съехала АИ-сетка"
Лечение: Использовать распаковщик предложенный выше. Или пересобрать АИ-сетку в SDK Level Editor.
Код [error]Expression : fs [error]Function : CResourceManager::_CreateVS [error]File : D:\prog_repository\sources\trunk\Layers\xrRender\ResourceManager_Resources.cpp [error]Line : 166 [error]Description : shader file doesnt exist [error]Arguments : c:\program files (x86)\gsc world publishing\s.t.a.l.k.e.r. - Зов Припяти\gamedata\shaders\r2\deffer_impl_flat.vs
Лечение: В папке gamedata создаёте папки shaders\r2 переносите из ЧН файл deffer_impl_flat_d.vs переименовываете его в deffer_impl_flat.vs
Примечание: На компьютере должен быть обязательно установлен NetFramework версией не ниже 2.0 Это для тех, кто использует старые сборки ХР. Скачать новейшею версию можно Тут
Готово! Запускайте игру и пробуйте, что получилось. Если есть вопросы отписываемся!
Сообщение отредактировал Janel - Понедельник, 06.01.2020, 16:15
|
|
Понедельник, 06.01.2020, 16:01
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
09.10.2019 |
|
|
|
|
|
Аruron
Понедельник, 06.01.2020, 16:24 | Сообщение # 2
|
Понедельник, 06.01.2020, 16:24
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
08.02.2018 |
|
|
|
|
|
Janel
Понедельник, 06.01.2020, 17:11 | Сообщение # 3
Статус: |
|
Гость: |
|
Сообщений: |
40 |
Награды: |
0 |
Регистрация: |
09.10.2019 |
|
Цитата Аruron ( ) А не проще засунуть локацию в sdk, переделать спавн актора, отредачить источники света,[если потребуется] а после просто скомпилировать спавн не мучая этот ACDC? При этом нам нужна всего одна программа. Зачем костылить всё это? smile Кроме того, даже ai-сетка пойдёт от ЧН версии. wink Да и она все равно будет редачиться уже при редизайне.
Это конечно можно сделать но будут постоянные вылеты из-за спейс рестрикторов или различных граф поинтов прописанных на сталкер чистое небо. Есле хочется перенести через сдк то придется удолять лишнии рестрикторы, графы, спавн элементы а это поверь мне займёт больше времени чем просто перенести чистую локацию без всяких выкрутасов. А там уже и редактировать под себя как хочешь.
Сообщение отредактировал Janel - Понедельник, 06.01.2020, 17:19
|
|
Понедельник, 06.01.2020, 17:11
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
09.10.2019 |
|
|
|
|
|
Аruron
Понедельник, 06.01.2020, 19:22 | Сообщение # 4
Статус: |
|
Гость: |
|
Сообщений: |
61 |
Награды: |
4 |
Регистрация: |
08.02.2018 |
|
Цитата Janel ( ) но будут постоянные вылеты из-за спейс рестрикторов или различных граф поинтов прописанных на сталкер чистое небо
В смысле? Я же не говорю оставлять ЧН-овский спавн на месте, тоже можно легко удалить комбинацией клавиш. Я так себе уже пару локаций перенёс и всё в шоколаде
|
|
Понедельник, 06.01.2020, 19:22
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
08.02.2018 |
|
|
|
|
|
Lektorrr
Понедельник, 06.01.2020, 20:00 | Сообщение # 5
Статус: |
|
Новичок: |
|
Сообщений: |
266 |
Награды: |
5 |
Регистрация: |
09.01.2013 |
|
Вы серьезно? ActivePerl? ggTool? В 2020 году то? Эти утилиты использовались, когда GSC ещё не выложили свой официальный инструментарий. Портировать с их помощью локации сейчас новичку - это самая настоящая пытка и трата времени, ведь можно просто перенести локацию с помощью SDK, причем даже не компилируя её при надобности.
|
|
Понедельник, 06.01.2020, 20:00
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
09.01.2013 |
|
|
|
|
|
Janel
Вторник, 07.01.2020, 12:13 | Сообщение # 6
Статус: |
|
Гость: |
|
Сообщений: |
40 |
Награды: |
0 |
Регистрация: |
09.10.2019 |
|
Цитата Lektorrr ( ) Вы серьезно? ActivePerl? ggTool? В 2020 году то? Эти утилиты использовались, когда GSC ещё не выложили свой официальный инструментарий. Портировать с их помощью локации сейчас новичку - это самая настоящая пытка и трата времени, ведь можно просто перенести локацию с помощью SDK, причем даже не компилируя её при надобности.
Цитата Аruron ( ) В смысле? Я же не говорю оставлять ЧН-овский спавн на месте, тоже можно легко удалить комбинацией клавиш. Я так себе уже пару локаций перенёс и всё в шоколаде
Есть люди которые еще не освоили SDK так хорошо что-бы переводить локации в нём, поэтому таким людям в начале подойдёт и перевод кустарным методом. Чем работать в SDK методом тыка.
|
|
Вторник, 07.01.2020, 12:13
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
09.10.2019 |
|
|
|
|
|
STRAZH
Пятница, 10.01.2020, 09:00 | Сообщение # 7
Статус: |
|
Зевака: |
|
Сообщений: |
21 |
Награды: |
7 |
Регистрация: |
18.07.2014 |
|
А это не тот метод, который на Stalker Inside еще в 2010-м публиковали? Если так, то лучше им в наши дни не пользоваться.
Цитата Janel ( ) Есть люди которые еще не освоили SDK так хорошо что-бы переводить локации в нём, поэтому таким людям в начале подойдёт и перевод кустарным методом. Чем работать в SDK методом тыка.
Ну да, ведь намного лучше потом методом тыка писать затычки для саунд рендера, сетки bound rect и ловить stack trace на поломанных сейвах.
Если и учиться модострою, то учиться нужно сразу нормально, по актуальной информации, а не использовать архаичные методы, которые сами по себе являлись костылями своих лет. Давай тогда ещё perl-скрипты вспомним, ACDC, правки Колгомора и утилит паки.
Сообщение отредактировал STRAZH - Пятница, 10.01.2020, 09:01
|
|
Пятница, 10.01.2020, 09:00
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
18.07.2014 |
|
|
|
|
|
Janel
Пятница, 10.01.2020, 17:58 | Сообщение # 8
Статус: |
|
Гость: |
|
Сообщений: |
40 |
Награды: |
0 |
Регистрация: |
09.10.2019 |
|
Цитата STRAZH ( ) Если и учиться модострою, то учиться нужно сразу нормально, по актуальной информации, а не использовать архаичные методы, которые сами по себе являлись костылями своих лет. Давай тогда ещё perl-скрипты вспомним, ACDC, правки Колгомора и утилит паки. Каждый выбирает метод который лучше подходит для тебя, хочешь работать в SDK? Работай, хочешь работать с файлами? Работай. Каждый ищет удобный и подходящий для себя способ!
Сообщение отредактировал Janel - Пятница, 10.01.2020, 18:02
|
|
Пятница, 10.01.2020, 17:58
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
09.10.2019 |
|
|
|
|
|
Статус: |
|
Зевака: |
|
Сообщений: |
18 |
Награды: |
0 |
Регистрация: |
18.08.2019 |
|
Цитата Janel ( ) 1. Универсальный распаковщик ресурсов игр Сталкер 2. ActivePerl 3. ggtool 4. ACDC_Cs 5. ACDC_Cop 6. ggEditor_01
здравствуй 2009 год)))
брат, уже 2020 на дворе. пора уже наконец освоить сдк. уж спустя 10 лет то)))
|
|
Вторник, 03.03.2020, 17:04
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
18.08.2019 |
|
|
|
|
|
Статус: |
|
Отмычка: |
|
Сообщений: |
153 |
Награды: |
2 |
Регистрация: |
23.10.2015 |
|
Цитата Саня_Бандит_TiMidi ( ) брат, уже 2020 на дворе. пора уже наконец освоить сдк. уж спустя 10 лет то))) ИМХО, всегда интересно узнать как оно всё делается(делалось) без использования этих ваших SDK ¯\_(ツ)_/¯
|
|
Вторник, 03.03.2020, 18:38
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
23.10.2015 |
|
|
|
|
|
Статус: |
|
Опытный: |
|
Сообщений: |
1313 |
Награды: |
4 |
Регистрация: |
30.08.2018 |
|
Опять, очередной перенос локации из ЧН в ЗП? Таких уроков уже выше крыши, куда больше? Никогда не понимал таких "изощрённых" методов, по-типу разборки all.spawn для редактирования или переноса Локации. В этих махинациях почти нету смысла, тем более, если для этого есть СДК с необходимым функционалом. Достаточно декомпилировать локацию в СДК для изменения спавна (удалить ненужное и добавление спавна ГГ), кинуть исходники локации из ЧН в ЗП с новым спавном, подключить локацию, еще пару мелочей и все! Готова ваша локация. Зачем скачивать столько программ и вообще тратить столько времени на такие элементарные вещи? Тем более, вы будете на пустой локации бегать? А как же подключение к скриптам?Цитата Janel ( ) Есть люди которые еще не освоили SDK так хорошо что-бы переводить локации в нём, поэтому таким людям в начале подойдёт и перевод кустарным методом. Чем работать в SDK методом тыка.
А рестрикторы, спавн предметов и прочее тоже через all.spawn будете делать, бегая по локации и замеряя точные координаты и прочие параметры? СДК не такая и сложная программа, и уроков по нем тоже предостаточно, так что методом тыка работать никто не будет.
Сообщение отредактировал AziatkaVictor - Вторник, 03.03.2020, 19:25
|
|
Вторник, 03.03.2020, 19:25
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
30.08.2018 |
|
|
|
|