Руководство по картостроению

Слушай, я не дизайнер! Все чем могу помочь - это добавить пару дыр от пуль.

Сообщение Sage » 19 май 2015, 17:02

Оригинал руководства был написан в 2006 году и подвержден редакции в 2011 году, поэтому вполне возможно, что на сегодня есть более удобные инструменты, чем стандартные, предлагаемые разработчиками GTA2.

Содержание:
Вступление
Редактор карт
Скрипты (примеры разбора)
Запуск карты
Текстовые сообщения
Сетевая игра
Изменение графики

Справочник объектов, цветов, скинов и прочего: http://en.wikigta.org/wiki/Code_lists_(GTA2)
Отличное wiki на английском языке: http://en.wikigta.org/wiki/Modding_(GTA2)

Основные рекомендации по дизайну карты:
  • Стройте оригинальные здания, уделяйте внимание к деталям.
  • Избегайте бессмысленно больших, однообразных, пустых пространств и расстояний.
  • Сюжет. Маленькая карта с сюжетом в сто раз лучше большой без сюжета.
  • Можно без сюжета, но тогда нужен сочный мультиплеер.
  • Ночное освещение. Это очень красиво.
Аватара пользователя
Sage
Администратор
 
Сообщения: 189
Зарегистрирован: 17 авг 2011, 15:46

Сообщение Sage » 19 май 2015, 17:15

Вступление

Итак, имея толковую голову, горящие глаза, естественные руки и копию игры, на выходе можно получить неплохой продукт. В этом руководстве вы попробуете научиться с нуля создать свою первую рабочую карту GTA2. Будет очень кстати, если вы знакомы с программированием хотя бы на поверхностном уровне. Начнем с общего устройства файловой системы игры. Все, что нас интересует, находится в папке GTA2\Data:

nyc.gci - характеристики автомобилей в текстовом формате.
wil.sty - тайлы и текстуры первого района Downtown.
ste.sty - тайлы и текстуры второго района Resinditial.
bil.sty - тайлы и текстуры третьего района Industrial.
test1.seq - указания для игры, какую карту, файл sty и скрипт использовать при запуске районов из стартового меню.
*.gmp - карты, 256 x 256 и 6 блоков в высоту.
*.src - скрипты, в которых описываются стартовая позиция игрока, объекты, миссии, параметры районов, банды и т.д.
*.mmp - файлы похожие на test1.seq, но с информацией для многопользовательской игры. Один файл добавляет одну строчку в список карт многопользовательской игры.
*.gxt - все тексты игры для определенного языка (r.gxt – русский для версии от Буки, e.gxt - оригинальный английский)

Что нужно сделать, чтобы создать новую карту:

  • Создать (нарисовать, спроектировать) саму карту в редакторе, получив файл mapname.gmp;
  • Написать и скомпилировать файл скриптов mapname.src;
  • При необходимости внести правки в текст (для миссий, сюжета), добавив необходимые фразы в *.gxt;
  • Для одиночной игры – прописать в файл test1.seq информацию о нашей новой карте;
  • Для многопользовательской игры – создать файл mapname.mmp с информацией о нашей карте.
Аватара пользователя
Sage
Администратор
 
Сообщения: 189
Зарегистрирован: 17 авг 2011, 15:46

Сообщение Sage » 19 май 2015, 18:30

Редактор карт

Прежде чем начать, давайте скачаем сам MapEditor от DMA Design. При первом запуске редактор предложит выбрать файл стиля. Как было упомянуто выше, есть три стандартных файла стиля: wil.sty, ste.sty, bil.sty. Давайте выберем wil.sty, краски первого района. В левой части редактора появится панель с тайлами. Все тайлы белого цвета? Не расстраивайтесь, нажмите на любой из белых тайлов и он сразу проявится. Вероятно, этой проблемы нет лишь в версиях Windows ниже XP. Если никакой панели слева вообще нет – ее можно открыть в меню View\Tile Selector. Давайте так-же включим другие необходимые панели - View\Block и View\Mode Tools.

Старайтесь обращаться с редактором очень бережно, как с доисторическим экспонатом в музее, и только тогда он будет вежлив с вами. Например, не включайте галку «Mark Unused Tiles», под списком тайлов, без открытого файла – за каждое необоснованное движение редактор летит к чертям. Под этой загадочной галочкой расположено увеличенное изображение текущего тайла, так сказать "кисть" и возможные с ней действия: поворот на 90 градусов, отражение слева направо или сверху вниз. Давайте создадим новую карту – File\New, после чего зайдем в настройки редактора - Tools\Settings.

Startup
Map – что делать при запуске редактора: открывать последнюю карту, открывать новую или бездействовать.
Autosave – настройка таймера автоматического сохранения.
Buckups – максимальное количество файлов автоматического сохранения.
Background – цвет фона.
Style File – текущий файл стиля (в нашем случае GTA2\data\wil.sty).
Maps Directory – директория с картами по-умолчанию (в нашем случае GTA2\data).

Default Tiles
Тайлы, применяемые к поверхностям блоков по-умолчанию. Например, при использовании шаблона Road, блоки, поверхностью которых является дорога, будут автоматически покрываться тайлом Road. Не смотря на то, что все блоки обычно перекрашивают вручную, давайте поставим что-нибудь приличное.
Wall – 412
Roof – 7
Road – 282
Pavement – 64
Field – 841
Water – 608
Light – 624

Default Collisions
Настройки проходимости тайлов по-умолчанию. По-умолчанию все тайлы имеют значение «Wall+Bullet», что значит «Не пройти и не прострелить». У заборов и ограждений лучше ставить «Wall», это добавит возможность пулям проходить сквозь них. У фонарных столбов – «None», чтобы не было проблемы сбора столбов на автомобиле.

Итак, разберем управление камерой и выделение. Управлять камерой можно зажатием правой кнопкой мыши. В сочетании с Shift - можно отдалять и приближать камеру, в сочетании с Ctrl - перемещать камеру горизонтально. Более простой способ перемещать камеру по карте - стрелками на клавиатуре.

Выделять блоки можно левой кнопкой мыши, а так же комбинациями:
Ctrl+Arrow/Q/A – перемещение выделения.
Shift+Arrow/Q/A – плюс один строй блоков.
Ctrl+Shift+Arrow/Q/A – минус один строй.
Alt+Arrow/Q/A – вырезать и двигать.

Разобравшись с управлением, давайте попробуем создать островок с один зданием и окружной дорогой. При открытии новой карты, вся поверхность состоит из двух слоев. Самый нижний – это вода , выше на один уровень - слой Pavement. Pavement - зона, где ходят пешеходы. помимо воды и пешеходной зоны, есть еще три типа поверхности: Air – воздух, Road – дорога, Field – поверхность без пешеходов. На языке редактора, это виды блоков, но на практике, в игре, это виды поверхности лишь верхней части блока. Выделите блок 3x2x2, как показано на рисунке:

Изображение

Это будет наше первое здание. Нажмите на кнопку с домиком, что расположена на панели сверху Эта кнопка покрасит выделенные блоки по используя шаблоны, которые мы установили в Default Tiles. Сверху будут тайлы Roof, по бокам – тайлы Wall. Если вы еще не включили правую панель Block Info – пора это сделать – View\Block Info или Ctrl+B. Сверху вниз на ней расположены:

Мини-карта
Форма разреза блока, если таковая имеется
Разложение на тайлы
Тип блока
Направления движения авто по поверхности блока
Свойства выбранной грани блока


Чтобы можно было ходить по крыше и не проваливаться – смените тип верхних блоков на Field. Текстура останется та же, т.к. дефолтными тайлами красятся только пустые грани. Кстати, при выборе типа Air, в выделении удаляются все тайлы, можно сказать что это стирательная резинка. Нажмите клавишу "2" и увидите карту в цветах, соответствующих типу поверхности. Серый – Pavement, Зеленый – Field, Синий – нижний слой воды, Черный – Road, Желтый – Flat-поверхность (частично прозрачный тайл, вроде фонаря, забора, вывески), Коричневый – либо стена, либо покрашенная Air-поверхность, сквозь которую игрок просто провалится. Удостоверьтесь в том, что вся крыша зеленого цвета, чтобы в ней не было провалов. Переключиться обратно в обычный режим можно нажав "1". Существуют еще режимы, привязанные к клавишам "3" и "4", но их польза пока не раскрыта.

Итак, пора наш домик покрасить! Карандаш сверху или клавиша "D" - инструмент нанесения тайлов. Выбираем тайлы слева и наносим на поверхность нашего будущего дома. Вот что может получиться:

Изображение

Далее у нас по плану дорога вокруг дома. Выделяем блоки земли и меняем поверхность на тип Road. Примерно так должен выглядеть результат:

Изображение

Не забываем покрасить в привычный вид:

Изображение

Теперь можно задать движение транспорту. Перейдем во второй режим ("2"). Зеленые и красные стрелки обозначают направление движения транспорта от блока к блоку. По-умолчанию выставляются не самые удачные направления движения. Например, на поворотах, машины будут съезжать с дороги на пешеходов:

Изображение

Изменить направления можно в правой панельке – Arrows. Green означает как ездить можно, а Red – как ни в коем случае нельзя. Исправьте недочеты с направлениями дороги, чтобы получить следующий результат:

Изображение

Теперь превратим нашу карту в остров. Изменим территорию вокруг в Air, чтобы осталась одна вода. Покрасим пустые бока набережной.

Изображение

Займемся ограждениями: покрасим боковые поверхности тайлом ограждающего забора, как показано на рисунке:

Изображение

Выберем у блоков забора покрашенный боковой тайл, в свойствах ставим галочку Flat. О чудо – наши черные квадраты стали заборчиками. Далее в списке тайлов кликаем правой кнопкой по забору и ставим Wall, для сквозь забор можно было стрелять.

Изображение

Дополнительно следует рассказать о Slope. Slope – это изменение формы блока, для создания спусков, труб и других отличных от куба форм. Зайдите в Slope на правой панельке. Цифра в центре – это количество блоков для спуска/подъема. Вы можете создать трубы для нашего здания, изменить форму крышы. А может, сделать спуск в воду и провести туда дорогу?

Изображение

Укажем зону рестарта после смерти, открыв редактор зон в меню Edit\Zones\Edit.

Изображение

Размер зоны выставляем 1×1. Локация рестарта необходима для запуска карты. Аналогичным способом вы можете добавить зону рестарта после ареста. Некоторые зоны, под Windows XP и старше, вешают редактор. Для них можно использовать сторонние инструменты, например ZoneEditor.

Сохраним нашу карту в сжатом формате, понятном для игры (File\Save Compressed). Название будет myfirstmap.gmp.
Аватара пользователя
Sage
Администратор
 
Сообщения: 189
Зарегистрирован: 17 авг 2011, 15:46

Сообщение Sage » 19 май 2015, 19:48

Скрипты

В этом разделе руководства вы узнаете как заставить нашу маленькую карту работать. Для написания скриптов подойдет любой текстовый редактор, но для компиляции понадобится Script Compiler от DMA Design - официальный компилятор от разработчиков.

Попробуем разобрать минимум, необходимый для старта. Создайте рядом с файлом карты одноименный файл с расширением *.mis (в нашем примере это myfirstmap.mis), откройте его в блокноте и добавьте следующие строки:

PLAYER_PED player = ( 250.5 , 4.5 , 2.0 ) 25 0
LEVELSTART
SET_DEATHARREST_STATE ( player , ON )
LEVELEND


В первой строке происходит обьявление стартовой позиции игрока:
PLAYER_PED playername = ( float X , float Y , float Z ) remap rotation
playername – имя нашего персонажа для дальнейшего использования в скрипте.
X, Y, Z – координаты старта (координаты можно получить в строке состояния редактора, выбрав нужный для старта блок).
remap – скин персонажа, все номера скинов есть в справочнике.
rotation – поворот персонажа, измеряется в градусах (0 – юг, 180 – север).

LEVELSTART
Запускаем уровень. Все что будет написано до этой команды – обьявление стартовых переменных.

SET_DEATHARREST_STATE ( player , ON )
Команда, которая выполняется сразу после старта, включает возможность ареста или убийства главного героя.

LEVELEND
Заключающая строка скрипта.
---------------------------------------

Этих четырех строк достаточно, чтобы запустить карту. Но давайте посмотрим, какие еще скрипты могут быть использованы для нашей карты. Начнем с оружия. Оружие на карте можно разместить тремя способами. Генератором оружия, который обновляет подобранный предмет, оружие подбираемое один раз или элементарно дать оружие игроку в руки командой:
GIVE_WEAPON ( charname , weapon_type , amount of ammo )
charname – кому дать оружие? в нашем случае - главному герою, имя которого мы указали в строке с PLAYER_PED
weapon_type – вид оружия
amount of ammo – количество патронов
Пример: GIVE_WEAPON ( player , rocket_launcher , 99 )

Генератор объектов объявляется как переменная, которая может быть инициализирована как во время игры, так и до LEVELSTART:
GENERATOR name = ( float X , float Y , float Z ) rotation object-type mindelay maxdelay ammo
name – имя нашего генератора
X Y Z – координаты
rotation – поворот
mindelay-maxdelay - минимальное и максимальное время регенерации (в тысячных секунды)
ammo – количество выдаваемого объекта.
Пример: GENERATOR generator_shutgun = ( 217.0 , 48.0 , 2.0 ) 0 collect_06 1300 1300 30

НО! Генератор необходимо включить, т.к. по умолчанию он выключен.
SWITCH_GENERATOR ( generator_shutgun , ON )

Разместить на карте однократное оружие, можно обьявив до старта переменную
OBJ_DATA name
И инициализировать объект во время игры, когда нам необходимо
name = CREATE_OBJ ( float X , float Y , float Z ) rotation model value END

Можно так же инициализировать объект и до старта:
OBJ_DATA name = ( float X , float Y , float Z ) rotation model value
Вся разница вариантов «До старта», «После старта» используется при написании сюжетной линии и миссий, т.к. зачастую необходимо чтобы оружие появилось только в определенных условиях (например, во время миссии), а не при старте игры.

Таким же классом OBJ_DATA обьявляются авто-мастерские. В параметр model ставится значение car_shop, а в value - тип мастерской, например oilslick_shop.

Автомобиль можно так же разместить как при старте, так и инициализировать его во время игры:
PARKED_CAR_DATA name = ( float X , float Y , float Z ) remap rotation model
Пример: PARKED_CAR_DATA car_1 = ( 247.5 , 2.5 , 2.0 ) 34 90 spider //до старта
или
CAR_DATA car1
LEVELSTART
car1 = CREATE_CAR (87.9, 118.3, 2.0) 7 180 spider END


Так же припаркованному автомобилю можно дать сигнализацию. Перед этим авто должно обязательно уже создано!
GIVE_CAR_ALARM ( carname )

Радио. Максимум можно расположить на карте 4 радиостанции. Описывать до старта.
RADIO_STATION name = radio_type ( x , y )
x, y – координаты радиостанции, в сторону которых будет направлена антена на крыше фургона.

Количество необходимых для прохождения уровня очков можно установить следующим образом:
DECLARE_FINISH_SCORE ( кол-во очков )
Указывать после старта.

Были описаны лишь самые примитивные скрипты, которых для написания миссий, конечно, не достаточно. Для более глубокого изучения следует обратиться к официальному руководству (находится в одном архиве с компилятором), где есть полные описания всех команд и функций. Так же можно почитать исходники первого района GTA2 или примеры разбора скриптов на форуме.
Справочник всех объектов, цветов, скинов, авто и прочего доступен как в интернете, так и в руководстве, что идет с компилятором.

Изображение

Итак, сохраним написаный мини-скрипт и откроем его компилятором. Запустим компиляцию – Run\Run Parser. Полученный файл myfirstmap.scr вместе с файлом карты поместим в папку GTA2\data.
Аватара пользователя
Sage
Администратор
 
Сообщения: 189
Зарегистрирован: 17 авг 2011, 15:46

Сообщение Sage » 19 май 2015, 20:05

Запуск карты

Если у вас на руках имеются карта *.gmp и скомпилированный к ней скрипт *.scr, значит пришло время рассказать про файл test1.seq, что находится в папке GTA2\Data.

GTA2\Data\test1.seq - файл, содержащий информацию, какие карты запускать при выборе того или иного района в главном меню игры. Максимум что можно выжать - 3 района и 9 бонусных карт. Если открыть файл в блокноте, вы увидите список трех стандартных районов и 9 бонусных заданий со ссылками на файлы карт, скриптов, стиля и краткого названия. Давайте попробуем настроить игру так, чтобы первым районом запускалась карта Dullswill, вторым – Mini, а третьим – стандартный район. Это будет выглядеть примерно так (без бонус карт):

MainOrBonus = MAIN //Выбираем будет это район или его бонус
GMPFile = Dullswill.gmp //Имя карты
STYFile = wil.sty //Имя файла с тайлами
SCRFile = Dullswill.scr //Имя файла скриптов
Description = Dullswill City //Текстовое представление (в одиночной игре не используется)

MainOrBonus = MAIN
GMPFile = Mini_M.gmp
STYFile = wil.sty
SCRFile = Mini.scr
Description = Mini with bot


MainOrBonus = MAIN
GMPFile = bil.gmp
STYFile = bil.sty
SCRFile = bil.scr
Description = City 3 Map


С таким файлом test1.seq, первым районом будет запускаться Dullswill, вторым – карта Mini с ботом, а третьим - стандартный Industrial. Для нашей первой карты с островом (myfirstmap.*), которую мы создали в предыдущих разделах руководства, достаточно оставить в test1.seq один единственный блок:

MainOrBonus = MAIN
GMPFile = myfirstmap.gmp
STYFile = wil.sty
SCRFile = myfirstmap.scr
Description = My Super Map


После чего можно запускать игру – эта карта будет единственным районом.

Время кричать Ура!
Теперь Клод может ездить на тачке по острову вокруг единственного здания.
Аватара пользователя
Sage
Администратор
 
Сообщения: 189
Зарегистрирован: 17 авг 2011, 15:46

Сообщение Sage » 19 май 2015, 20:46

Текстовые сообщения

Для добавления собственных текстовых сообщений нам потребуется программа GXTEditor от Gain Software (Внимание! В Windows 7 x64 эта программа не работает, используйте GXTEditor Rus от D@N’а). Эта программа позволяет редактировать тексты в файлах формата *.gxt. В русской версии от Буки этим файлом является r.gxt, в англоязычной - e.gxt. Латиницу можно добавить в любой из этих файлов, но если вы хотите использовать русский текст – то его получится добавить только в r.gxt, который подхватывается только русской версией от Буки. Игра обращается к сообщениям по номеру строки, соответственно, если игра будет запущена на другой языке - будет использован другой *.gxt, и на экране отобразится либо текст из других миссий, либо сообщение об ошибке.

В процессе игры, сообщения вызываются следующими скриптами:
DISPLAY_MESSAGE ( номер ) // Сообщение по средине экрана, оранжевым шрифтом.
DISPLAY_BRIEF ( номер ) // Сообщение по телефону снизу экрана.

С англоязычной версией игры в GXTEditor’е достаточно просто редактировать тексты (желательно пустые - с сообщениями об ошибках) и использовать их в скриптах. С официальной русской локализацией есть небольшая трудность. Давайте запустим GXTEditor и откроем наш r.gxt.

Изображение

Выглядит ужасно, правда? Итак, это все тексты игры, написанные на русском языке, но в специфичной кодировке. В данном случае можно воспользоваться программой Штирлиц, создав для него собственную транлит-схему.

Схема траслитерации:
АБВГДЕЖЗИЙКЛМНОПРСТУХФЧЦШЩЬЫЪЭЮЯ
БРАёЖ¶З»НІµЕМ·ДВГЛОґјѕКі№єПїПИ±Й

абвгдежзийклмнопрстухфчцшщьыъэюя
всбЩзЧиЬоУЦжнШегдмпХЭЯлФЪЫрарйтк

По-умолчанию в сообщениях показывается лысая голова, что используется для приветствия в начале игры. Аватар можно сменить, добавив к началу сообщения конструкцию *!, где * – это первая буква представителя банды. Т.е. для головы, например, Якудзы, необходимо приписать к тексту в начало y!. В сообщениях так же можно подсветить отрезок текста в синий цвет, с помощью открытия и закрытия тега - #.

Пример: n!Hey there, stranger! Welcome to the #Downtown District#. Stick around if you wanna learn what’s going down…

Список банд и соответствующих букв:
n! – Лысая голова
y! – Якудза
z! – Зайбацу
l! – Луни
r! – Деревенщина
s! – Ученые
m! – Русская мафия
k! – Кришнаиты
Аватара пользователя
Sage
Администратор
 
Сообщения: 189
Зарегистрирован: 17 авг 2011, 15:46

Сообщение Sage » 19 май 2015, 21:13

Сетевая игра

За что мы любим GTA2 – так это многопользовательский режим, полный драйва и фана. Для мультиплеера используется та же самая карта *.gmp, но со отдельныи *.scr файлом. Вместо редактирования test1.seq необходимо самостоятельно создать новый файл – *.mmp. Причем для разного количества игроков – отдельный файл. MMP является обычным текстовым файлом, несущим информацию для многопользовательского режима. Каждый файл MMP – это одна строка в выборе карты сетевой игры. Разберем пример Industrial-4P.mmp, файл идет с оригинальной игрой.

[MapFiles]
GMPFile = bil-multi.gmp // Файл карты;
STYFile = bil.sty // Файл с тайлами;
SCRFile = Industrial-4P.scr // Скрипт-файл;
Description = Industrial 4Player // Название, отображаемое в списке карт;
PlayerCount = 4 // Необходимое кол-во игроков для старта.

Изображение

Чем отличается файл скриптов *.scr? Помимо очистки скриптов от миссий, сообщений и других особенностей одиночной игры – добавьте несколько строк стартовых позиций PLAYER_PED, для каждого из игроков. Максимальное количество – шесть. Разработчики игры рассчитывали что многопользовательский режим будет использоваться только как deathmatch, но по сути ничто вас не ограничивает обыграть скрипты и придумать кооперативный сюжет.
Аватара пользователя
Sage
Администратор
 
Сообщения: 189
Зарегистрирован: 17 авг 2011, 15:46

Сообщение Sage » 19 май 2015, 21:27

Изменение графики

Для желающих изменить графическую часть игры, существует программа STYEditor от Gain Software, редактор *sty файлов с возможностью экспорта и импорта графических файлов. Программа прекрасно подойдет для тех, кто захочет стать автором глобального зимнего мода, покрыв все текстуры снегом, заменить все автомобили на отечественные, или просто заменить пару тайлов под свои нужны.

Изображение

При открытии *.sty файла в среднем столбце отобразятся тайлы, в правом – прочая графика (автомобили, шрифты и другие спрайты). Импортировать или экспортировать картинку можно в меню File\ ~Import ~Export. Приблизить или отдалить картинку можно с помощью клавиш F5 и F6. Дополнительно в редакторе можно изменить некоторые параметры изображения, палитру или свойства спрайта автомобиля - Edit\Image Propeties.
Аватара пользователя
Sage
Администратор
 
Сообщения: 189
Зарегистрирован: 17 авг 2011, 15:46


Вернуться в Картостроение

Кто сейчас на конференции

Зарегистрированные пользователи: Google [Bot]