Как сделать локацию для сталкер
Создание сингл-уровня для ТЧ
Материал из S.T.A.L.K.E.R. Inside Wiki
Всем привет! Сейчас я расскажу, как мне удалось создать уровень для одиночной игры без подключения к существующим локациям.
Содержание
Инструментарий.
Первые шаги.
Давайте всё настроим по порядочку:
1. В game_graphs.ltx прописываем наш уровень: почти в самом конце дописываем:
2. В game_levels.ltx следующие работы: вписываем
В ЗП можно добавлять уровни с числом от 183 и выше.
3. В game_levels_music.ltx : добавляем
Если поняли указываются звуковые файлы из папки sounds
теперь пишем секцию ниже:
5. Теперь нужно подредактировать конфиг в СДК, чтобы в граф-поинт можно было указать наш уровень.
Открываем level_editor\gamedata\config\game_levels.ltx. Вписываем тоже что и в game_levels.ltx от ЗП (см. п. 1) (именно наш уровень со своим уникальным идентификатором) С конфигами всё. Теперь приступим к самому моделированию.
Моделирование геометрии уровня.
Работа в SDK
Сборка АИ-сетки.
Настройка сцены.
Сборка Локации
После проверки что всё настроено, ничего не забыли, и не влепили лишнего переходим к сборке.
Компиляция карты
Если вы добавляли детали (траву к примеру), то после компиляции xrLC следует выполнить компиляцию xrDO_light:
После нажатия ОК, через некоторое время появится окно компилятора. Компиляция на Draft’е не занимает много времени и ресурсов вашего компьютера. Но для компиляции уровней на высоком кач-ве лучше закрыть все ресурсопрожорливые приложения. Не даром у многих во время компиляции на таком качестве, компилятор вылетает с логом «Out Of Memory». По окончанию компиляции уровня будет написано: Congratulations!. Сейчас заходим в папку level_editor\gamedata\levels, берём папку pihan (это результат нашей компиляции)и кидаем её в ЗП\gamedata\levels. Едем дальше.
ВНИМАНИЕ!
Данная стать в значительной степени устарела.
КАТЕГОРИЧЕСКИ предупреждаем
Используйте только официальный софт от разработчиков игры, а именно: Официальный xrAI для SDK 0.4
За более подробной информацией обратитесь на AMK форум
Работа с aiwrapper’ом и грандиозное завершение.
т.е. к примеру написали в батник
сохранили батник, запустили, всё прошло, пишем далее:
опять сохранили, запустили, прошло и так все 6 шагов.
Сейчас весь результат работы с аивраппером помещается в level_editor\2215\gamedata. После последней команды будет создан уже и all.spawn и game.graph, но это всё не то.
После всего пишем в батник заветную команду:
Эта команда перешьёт и all.spawn, и части уровня.
Всё, отныне файл game.graph зашит в all.spawn, а то что нам надо лежит в папке level_editor\3502\gamedata
Из этой папки (из 3502) берём:
1. Из gamedata\levels\pihan берём всё содержимое и кидаем в папку ЗП\gamedata\levels\pihan с заменой существующих файлов.
2. Из gamedata\spawns берём all.spawn (он по идее как то по другому сейчас называется, переименуйте в all.spawn) кидаем в ЗП\gamedata\spawns.
3. Также скидываем в геймдату ЗП текстуры, звуки, модели (если надо).
4. Совет как запустить быстро карту: в корневой папке с ЗП создаём батник, в него вгоняем:
Собственно всё. Мучайтесь. Данный урок позволяет создать локацию, но не объединяет локации (как объединить аллспавны формата ЗП, я пока не знаю).
Создание текстуры локации для отображения на мини-карте и в PDA
Материал из S.T.A.L.K.E.R. Inside Wiki
Содержание
Этап 1: Настройка игры
Запустите игру, в её опциях выберите, тип рендера: Статическое освещение. Примените, а после перезапустите игру.
Теперь в опциях игры, перейдите в «Расширенные» настройки: там поставьте все ползунки на максимум. Снова примените, и выйдите из игры.
Этап 2: Установка специальной погоды
Выберите, как вам удобнее это сделать:
Для этого в файле game_maps_single.ltx, папки gamedata/config (в ЧН и ЗП, папка gamedata/configs), найдите нужную вам локацию, и укажите ей погоду: weathers = map
P.S. После создания текстуры, вы можете указать прежнюю погоду.
Этап 3: Процесс создания текстуры
Запустите игру. Перейдите на нужную вам локацию. Выполните пункт 2.2, если пожелали не выполнять пункт 2.1.
Введите в консоли команду: demo_record 1
Появятся мигающие красные надписи, нажмите на клавиатуре F11.
ВНИМАНИЕ: чтобы на текстуре не было посторонних надписей, не наводите на какого-либо npc перекрестие, перед нажатием F11.
Этап 4: Местонахождение текстуры и её конвертация
Готово! Вы сделали текстуру вашей локации.
Найти её вы можете, по умолчанию, в папке:
Путь для ТЧ: Мои документы/stalker-shoc/screenshots
Путь для ЧН: Мои документы/stalker-stcs/screenshots
Путь для ЗП: Мои документы/stalker-cop/screenshots
ВНИМАНИЕ: цифры в квадратных скобках, это координаты bound_rect. Они понадобятся для правильного отображения игрока на локации.
Чтобы текстура работала в игре, её нужно конвертировать из .tga в .dds. Для этого используйте любой графический редактор, поддерживающий формат .dds.
Например, Adobe Photoshop с NVIDIA Texture Tools for Adobe Photoshop. Если выбрали этот графический редактор, то прочтите эту статью: Изменение текстур
Этап 5: Интеграция текстуры в игру
После того, как вы сконвертировали текстуру вашей локации в .dds, переименуйте её в map_название_вашей_локации, и поместите в папку gamedata/textures/map
Теперь нужно указать вашей локации текстуру. Для этого откройте файл game_maps_single.ltx, найдите в нём свою локацию, и укажите: texture = map\map_название_вашей_локации
Также в данном файле нужно указать вашей локации её координаты bound_rect и global_rect.
Советы начинающим
Создание анимации через файл *.seq
Создание новой группировки
Назовем нашу группировку (айди) grom
Добавляем группировку в таблицу, прописываем отношение к другим группировкам, НЕ ЗАБЫВАЕМ добавлять по еще одному значению по вертикали!
;(порядок должен совпадать с communities_relations)
[communities_sympathy]
actor = 0.0
bandit = 0.0
dolg = 0.0
ecolog = 0.0
freedom = 0.0
killer = 0.0
army = 0.0
monolith = 0.0
monster = 0.0
stalker = 0.0;0.01
zombied = 0.0
grom = 0.0
Сюда тоже добавляем в таком же порядке.
P.S. В пункте 6 Все штуки «[» и «]» заменить на » «
Добавление физического объекта на локацию
В этой статье я подробно напишу как добавить на локацию физический объект через all.spawn. Создадим на затоне на Земснаряде газовую плиту (В комнатке или как там она называется =))))
Нам потребуются файлы: all.spawn и распаковщик all.spawn’а.
Положим сам all.spawn в распаковщик и нажимаем Декомпиляция или по другому там написано Decompile. Нажимаем начинается распаковка. Все готово.
Теперь открываем файл alife_zaton и найдем например под номером [215]
[215]
В section_name не писать что попало а писать само секционное имя.
В name можно написать любое имя например напишем zaton_gaz_plita
Если будете спавнить несколько таких плит то имя должно БЫТЬ ИНДИВИДУАЛЬНЫМ т.е если вы ещё захотите заспавнить плиту с таким именем то в name напишем zaton_gaz_plita_2 и т.д понятно? =)))
game_vertex_id Гейм вертекс
level_vertex_id Левел вертекс
visual_name тут уже идет на саму модель плиты то вот что мы напишем dynamicskitchen_roomgaz_plita_small
Ну а остальные строчки не важны =)))
Ну что же приступим? =))
А alife_zaton важно посмотреть последний номер если он например [1920] то при создании нового вы должны написать [1921] ну т.е должно быть индивидуальным
за поворот объекта отвечает значение direction. Нужно указать x, y, z значения поворота объекта на уровне.
Если кто-то не понял обращайтесь ко мне в асю : 555905622
Или на мыло: kirill_95-08@mail.ru
Изменение старта главного героя
1) ACDC для ЗП
(narod.ru/disk/17377026000/ACDC%20Cop.rar.html)
2) Блокнот (надеюсь он у тя есть XD )
3) Снималка координат (в поисковике так и введи СКАЧАТЬ
СНИМАЛКУ КООРДИНАТ ДЛЯ СТАЛКЕРА)
4) ActivePerl-5.10.0.1004 (в поисковике так и введи СКАЧАТЬ
ActivePerl-5.10.0.1004)
5) Распакованная игра
Чуть не забыл руки! Но если руки растут не оттуда, наверное, это ноги! 😉
Начнем:
1) Скачиваем ActivePerl-5.10.0.1004
2) Скачиваем ACDC
3) Устанавливаем ActivePerl-5.10.0.1004
4) Открываем папку gamedata/spawn/ копируем от туда файл
all.spawn
5) Открываем папку в которой находится ACDC
6) Вставляем туда all.spawn
7) Распаковываем all.spawn соответствующим bat файлом
(decompile.bat) если нет такого, проделываем такие
операции:
8) После этого открываем игру, бежим в то место где хотим
начинать игру, снимаем координаты. Координаты должны
выглядеть так:
x=
y=
z=
game_vertex=
level_vertex=
[982]
; cse_abstract properties
section_name = actor
name = zaton_actor
position = x,y,z
direction =0,0,0
s_flags = 0x29
game_vertex_id = game_vertex
level_vertex_id = level_vertex
; cse_visual properties
visual_name = actorsstalker_neutralstalker_neutral_1
; cse_alife_creature_abstract properties
g_team = 0
g_squad = 0
g_group = 0
health = 1
dynamic_out_restrictions =
dynamic_in_restrictions =
upd:health = 1
upd:timestamp = 0xc2ba3333
upd:creature_flags = 0x99
upd:position = x,y,z
upd:o_model = 0
upd:o_torso = 2.81339907646179,-0.0120869996026158,0
upd:g_team = 0
upd:g_squad = 0
upd:g_group = 0
; cse_alife_trader_abstract properties
money = 15000
trader_flags = 0
character_profile = actor
cse_alife_trader_abstract__unk1_u8 = 1
upd:actor_state = 0
upd:actor_accel_header = 0
upd:actor_accel_data = 0
upd:actor_velocity_header = 0
upd:actor_velocity_data = 0
upd:actor_radiation = 0
upd:actor_weapon = 215
upd:num_items = 0
11) x,y,z – меняем на цифры свои «смотри пункт 8»,
level_vertex и game_vertex то же меняем на свои
Вывод сообщения на экран
Изменение HUD’a
Файлы
Советы:
Спавн предметов
Спавн аномалии
attack_animation = idle —?(скорее всего партикл)
Создаем собственную еду
Для начала отрываем файл: items из директории: gamedataconfigsmisc
Идём в самый конец файла и добавляем туда это:
(Показываю на примере водки)
[my_napitok]:booster
$spawn = «food and drugsmy_napitok »
cform = skeleton
visual = dynamicsdevicesdev_vodkadev_vodka.ogf
description = st_my_napitok_descr
inv_name = st_my_napitok
inv_name_short = st_my_napitok
inv_weight = 0.6 ;0.2
inv_grid_width = 1
inv_grid_height = 1
inv_grid_x = 5
inv_grid_y = 2
cost = 150
bone_name = bip01_r_hand
position_offset = 0.0,0.0,0.0
angle_offset = 1.570790,1.570790,3.92699
break_particles = destroy_fxdestroy_bottle
break_sound = materialbottlecollidebottle_break_1
Теперь поясню:
inv_name = st_my_napitok — ссылка на имя
inv_name_short = st_my_napitok — ссылка на имя
inv_weight = 0.6 ;0.2 – вес предмета(изменяйте первое число)
inv_grid_width = 1 – высота иконки по клеткам
inv_grid_height = 1 – ширина иконки по клеткам
inv_grid_x = 5 – координата иконки по оси х
inv_grid_y = 2 – координата иконки по оси y
cost = 150 — стоимость
attach_bone_name = bip01_r_hand — не трогайте
bone_name = bip01_r_hand
position_offset = 0.0,0.0,0.0
angle_offset = 1.570790,1.570790,3.92699
break_particles = destroy_fxdestroy_bottle
break_sound = materialbottlecollidebottle_break_1
use_sound = interfaceinv_vodka — не трогать
После того как всё сделали, сохраняем.
Идём в файл: st_items_equipment. В папке: gamedataconfigstextrus
Сразу после строчки: пишем это:
Название которое будет высвечиваться в игре
Любое описание какое захотите.
Сделали? Если да то сохраняем и идём дальше…
Нам осталось только добавить наш супер-напиток торговцу, Бороде например
Итак, идём в файл: trade_zat_a2_barmen в папке: gamedataconfigsmisctrade
И везде где есть слово еда: прописываем по аналогии с другой едой, например с хлебом.
Не следует забывать о том, что надо писать название которое понимает игра. В нашем случае это : my_napitok
Спавн НПС через скрипт
Tris. Скажу ему спасибо.
Как создать тайник
Надеюсь, распаковывать all.spawn умеем?
После распаковки открываем файлы alife_zaton
Например находим строчки под номером [52]
; cse_alife_object properties
game_vertex_id = 0
distance = 0
level_vertex_id = 293223
object_flags = 0xffffff3f
custom_data =
Внимание. надо сменить [52] на [1866] нельзя чтобы были номера одинаковыми.
; cse_alife_object properties
game_vertex_id = 0 гейм вертекс
distance = 0
level_vertex_id = 293223 левел вертекс
object_flags = 0xffffff3f
custom_data =
Если хотите рюкзак пропишите это:
; cse_alife_inventory_box properties
tip = inventory_box_use
Координаты можно отснять прогой Position Extraktor
И вот что выйдет
; cse_alife_object properties
game_vertex_id = 14
distance = 0
level_vertex_id = 133074
object_flags = 0xffffff3f
custom_data =
Всё запаковываем all.spawn и появится файлик new. Копируем его в сталкера в папку spawn и переименовываем в all.spawn
Параметры погоды
sky_rotation = 0 ; определяет положение (азимут) скайбокса на описываемый час. Если выставить в соседних секциях разные значения азимута, то в переходах между секциями скайбокс будет плавно совершать вращение от одного значения к другому.
sky_color = 1.0, 1.0, 1.0 ; это цвет неба, или, точнее, цвет рассеянного света,
формат из 3 цифр, как и в параметрах ниже, подразумевает цветовую модель RGB, учитывая то, что здесь максимальная интенсивность цвета (255), здесь равна 1.0.
Аналогично эффекту смешивания в фотошопе (screen). НО! Опытным путем установлено, что движок может работать со значениями больше единицы.
far_plane = 350 ; это, судя по всему, дальность видимости (расстояние, на котором «обрезается» карта).
fog_distance = 350 ; в DX9 это расстояние, на котором туман фактически «прекращает» действовать. непосредственно дымка, интенсивность которой задаётся fog_density, «висит» в радиусе fog_distance. за пределами этого радиуса часть геометрии «съедается»
и вместо неё отображается небо (скайбокс). правильно подобранная текстура неба имитирует вдали клубы тумана. а уже дальше снова проявляется геометрия уровня (холмы и т.д.). в DX8-режиме туман рудиментарен и обсуждать его нет особого смысла.
fog_color = 0.043, 0.043, 0.055 ; непосредственно сам цвет тумана. При слишком высоких значениях параметра объекты вдали будут светлее неба, поэтому если вдали видим «белые сосны», то проблема именно в этом параметре.
fog_density = 0.9 ; это плотность тумана, выставив значение в 0, можно увидеть четкие края карты, а если поставить значение больше единицы, то туман будет виден прямо перед носом.
rain_density = 0.2 ; это плотность дождя, действует, видимо, как и туман. Примечательно, что зависимость от параметра нелинейна, и значение 0.2 практически не отличается от единицы. Чтобы сделать действительно слабый дождь, надо экспериментировать с очень маленькими значениями.
rain_color = 0.21, 0.21, 0.27 ; цвет (непосредственно капель) падающего дождя.
thunderbolt = thunderbolt_collection_default ; это имя заготовки грозы, если грозы не предусмотрено, значение можно оставить пустым.
bolt_duration = 0.35f ; это собственно продолжительность фазы вспышки молнии. выставив высокое значение, можно вовсе получить не молнию, а некое плавно нарастающее свечение.
lmap_color = 1.0, 1.0, 1.0 ; видимо, цвет лайтмапа.
sun_color = 0.0, 0.0, 0.0 ; свет солнца, его интенсивность также влияет на тени, если солнце не светит, теней от него не будет. Зависимость глубины тени от значений света не линейна.
env_ambient = ambient_env_rain ; это набор звуков окружения.
Создание оружия
Все эти файлы мы должны подготовить перед тем как начать. Если вы готовы то продолжим.
За характеристики отвечают эти строки:
И нужно будет исправить эту строку: hud и поставить = wpn_ak47_hud Должно получиться так: hud = wpn_ak47_hud
Отрываем файл: weapons
И видим такую структуру:
#include «w_ak74.ltx»
#include «w_ak74u.ltx»
#include «w_fn2000.ltx»
#include «w_rpg7.ltx»
#include «w_knife.ltx»
#include «w_bolt.ltx»
#include «w_f1.ltx»
#include «w_rgd5.ltx»
#include «w_gd5.ltx»
#include «w_rg6.ltx»
Прописываем по анологии, должно получиться так:
Всё сохраняем, и идём дальше.
Открываем файл: st_items_weapons
Советский автомат Ак-47.
Проверяем, если всё правельно сохраняем, и идём вперед.
Открываем файл: mp_ranks
После того как везде прописали сахраняем.
Отрываем файл trade_zat_b30_stalker_trader.
Открываем Файл inventory_upgrades
отрываем файл stalkers_upgrade_info
Пример:
wpn_pm
wpn_pb
wpn_fort
wpn_ak47 —Наше оружие
Потом ищем Азота и делаем тоже самое.
Добавление места для сна
И меняем на:
И также меняем на:
function sleep(actor, npc)
local sleep_zones = <
«произвольное название вашего места»,
«zat_a2_sr_sleep»,
«jup_a6_sr_sleep»,
«pri_a16_sr_sleep»,
«actor_surge_hide_2»
>
Собираем all.spawn. Готово! Теперь после запуска игры с новым all.spawn у нас будет спальное место в барже Ноя (координаты брались оттуда).
Вывод информации о своём моде в главном меню
Я увидел в sgm версию мода, хотел попытатся сделать тоже самое но ничего не вышло. Методом проб и ошибок я научился выводить версию и название мода изменив всего 3 файла, а в sgm наверно таких файлов штук так 10 и тем более своих.
Сегодня я напишу в этом уроке как выводить инфу о своем моде в главном меню.
Сложность: очень очень очень легко
В самом начале видим вот это: