::: QuakerS :::
Каталог статей

Меню сайта

Категории каталога

Doom [0]
DooMed
Quake [0]
Всё о Квэйке Первом
Quake II [2]
about Quake II
Half-Life [0]
HL1
Red Alert 2 [2]
Ra2 & YR
Half-Life 2 [0]
HL2

Наш опрос

Оцените мой сайт
Всего ответов: 204
Главная » Статьи » Game Development » Quake II

Quake II - Создаём Мод

Эта статья поможет начинающим модмэйкерам и людям, которые просто хотят разобратся с устройством игры. По ходу статьи я буду рассказывать о некоторых возможностях игры и разъясню про общие представления о её ресурсах.

К счастью чтобы создавать модификации для такой игры как Quake 2 нужно всего лишь изучить некоторые концепции игростроения, т.к. Квак - игра открытая и довольно простая в изучении и обработке(к примеру та же Half-life полностью не модифиццируема, т.к. основная часть кода остается закрытой).

В Quake 2 в отличии от его предшественника игра не разделена на разные порты(как WinQuake и GlQuake) а имеет встроенную систему "рефрэшей" т.е. при запуске Quake2.exe автоматом подключается библиотека(по умолчанию это ref_gl.dll), но также имеются и другие библиотеки, такие как ref_soft,powerupgl,3dfxgl.
   Про gl сказать нечего, просто gl и ничего больше. А вот Soft'овая графика предоставляемая ref_soft'ом в Ку2 выполнена на хорошем уровне, и приходит на помощь тем кто не желает использовать стандартный gl(либо не может по каким либо причинам её использовать). В настоящее время софтавая графика почти не используется а потому вы вряд ли где ещё сможете её увидеть.
Во времена когда OpenGl графика только начала своё развитие, уже существовал устоявшийся на тот момент 3dfx. Но сейчас он не так распространён...
   Примечание: Далее по ходу статей\туториалов будут описаны действия и команды для gl рендеринга, т.к. самые полезные для разработчиков фишки представлены именно в этой библиотеке.
 
Теперь о игровой части.
Сама игра разделена на 2х части. Первая в виде Quake2.exe является как исполняюшим(executable) игры, так и механизмом собирающим в одно целое множество подсистем.
Вторая часть представляет из себя файл, который распологается как в основной папке \baseq2\ так и в папках различных модификаций и несёт в себе всю информацию о геймплее или правилах игры а также встроенной физике в игры. Как вы наверное уже догадались это тот самый gamex86.dll. Да да, именно обычная динамическая библиотека Windows(в отличаи от Quake 1 где применялись специальные .DAT файлы) написанная на C++ и свободно редктируема.. Так что можно добавить парочку пушечек на досуге ;)...
 
Примечание:
Модификации запускаются параметром game <имя_папки_мода_без_пробелов> и в отличаи от Quake 1 в котором они запускаются через параметр коммандной строкии или batch-файлом при запуске Quake2 они в дальнейшем могут быть благополучно сменены в консоли.
 
Сразу возникает вопрос: а почему бы просто не взять и не "вписать" сразу весь код игры в главный исполняющий файл(exe), а причины тут две: первая, это то, что так удобнее всего переключатся между различными модификациями т.е. при исполнении команды game mymod квака переключается на папку 'mymod' и использует gamex86.dll который лежит в папке 'mymod' вместо того что в стандартной \baseq2\, а втом случаи если dll не найден, игра использует тот что в \baseq2\. Ктати это правило действует и для файлов, которые находятся в папке с модом т.е. если случится так что будут обнаружены файлы с одинаковыми именами в папках "базы" и "мода", то игра будет использовать те что в папке с модом, так сказать замещая базовые файлы. Примером того может служить gamex86.dll
 
Примечание:По аналогии происходит и с паками(.Pak это специальные архивы но о них позже), если в папке находится пак с именем pak4.pak и pak5.pak то при совпадении имён файлов в паках - используются те файлы, которые находятся в pak5.pak и т.д.
Ещё одной серьёзной причиной разделения игры и внесения её части в gamex86, является политика ID Software относительно модификаций их игр самими же игроками :). С появлением на свет одних из первых игр от id были попытки их модификаций. Позже Джон Кармак(John Carmack) решился на выпуск части кода игр для свободного доступа под лицензией GNU, хоть идея понравилась не всем сотрудникам компании, однако он это сделал. К примеру для создания модификаций в Quake, Кармаком был разработан специальный C-подобный код, компилируемый в файл понимаемый игрой..
 
С кодом вроде всё, а теперь о структкре основной директории и предназначении папок которые она содержит.
 
Начну с описания папок:
В директории с Quake2 обязательно должны присутствовать следующие ресурсы:
Quake2.exe
ref_gl.dll
ref_soft.dll
\baseq2 - основная директория.
 
в \baseq2\ вложены:
Далее по иерархии:
\demos - содержит демо-записи игры в формате .dm2
\env - содержит Sky - изображения для Skybox'ов.
\maps - игровые уровни.
\models - содержит 3-х мерные модели в формате .md2
\pics - содержит gfx'овые изображения.
\players - в этой директории содержятся PPM модели игрока.
\save - папка содержит сохранённые в игре моменты.
\scrnshot - сюда квака пишет скриншоты.
\sound - а тут лежат звуки.
\sprites - здесь можно найти пару спрайтов.
\textures - директория для .wal текстур.
\video - видео ролики в .cin формате.
 
Теперь я постараюсь растолковать всё вышенаписанное, для этого я буду объяснять какие именно файлы содержит каждая папка, и для чего эти файлы предназначены.
 
Про демки(записи игр или как их ещё называют - риплэи) в общем можно сказать только то, что они быстро скапливаются и не смотря на свой весьма небольшой размер стремительно превращаются в угрозу для вашего HDD.. Ну ладно это была шутка, но я иногда удивляюсь количеству насобиравшихся у меня дэмок.. Сами дэмки из представляют себя последовательность действий которые записывается и воспроизводится игрой..
 
Env - Окружающая среда(от англ. Environment) это то, что мы видим за пределами уровня. То, что мы видим, но к чему не можем "прикоснутся", обычно это красивое оранжевое небо плавно переходящее в горы или строения а иногда и космическое пространство неосязаемых размеров. И это всё просто обман! На самом деле то, что якобы есть средой окружающей нас со всех сторон является просто куб огромных размеров в который и помещается игровой уровень. Сам куб соответственно именуется: Skybox и состоит он из картинок, которые наложены на него со всех сторон а так как сторон у куба 6, то и картинок 6 и они обязательно должны иметь специальные приставки в имени: nameft,namebk,namelf,namert,nameup,namedn где абривиатуры это front,back,left,right,up и down - которые и обозначают где должно быть соответствующее изображение. В Quake2 эти изображения должны быть в .pcx формате для отображения на софтовом рендеринге и в .tga для gl.
maps - или просто игровые уровни(карты) по которым можно побегать пострелять и т.д.
models - 3д модели представляющие из себя 3х мерный объект состоящий из точек соединенных линиями. Модель в формате md2 содержит в себе информацию о полигонах(а точнее о их вертексах),фреймовую анимацию и координаты текстур, причём для модели текстур(скинов) может быть не более чем 32 и они не могут использоватся одновременно(т.е. для разных частей модели разные текстуры не применимы и ни о каких материалах не может идти и речи), зато могут сменятся что и используется в Quake2. К примеру когда монстр в игре получает серьёзные повреждения, его скин заменяется на другой на котором уже нарисованны дырки от пуль и кровь, также это активно применяется для возможности разнообразить модели игроков.
pics - является разнообразным контентом для HUD и оформления меню. В папку players складывают PPM'ы игрока. PPM - Plugin Player Models это модели + набор скинов и звуков к ним. И тут надо быть особо внимательным, ведь скин не будет отображатся в игре, если к нему не будет иконки. Т.е у каждого скина есть своя иконка. Вот возьмём к примеру стандартный скин. В папке male находим grunt.pcx и соответствующая ему иконка grunt_i.pcx. Также происходит и с остальными скинами.. В Quake2 есть и ещё одна интересная вещь, которую можно увидеть в режиме Multiplayer, и этой вещью является visible weapons - модели оружия отображающиеся в руках игрока, если посмотреть на него со стороны.
В папке \sound\ как я уже говорил размещены различные звуки. В принципе их можно заменить любыми своими, но следует обратить внимание на то, что это должен быть файл в формате .wav не более чем 22 050 khz и ни коим образом не стерео, только в моно.
Папка \sprites\ содержит спрайты. Спрайты это обычные, "плоские" изображения. Обычно спрайты обладают покадровой анимацией(т.е. как в кино каждый кадр это новое изображение и во время "прокрутки" кадров создаётся ощущение движения этого изображения). В Quake2 спрайт выглядит в виде файла в формате .Sp2 и нескольких изображений в формете .pcx. Самим спрайтом, можно назвать sp2 файл, который содержит информацию требуемую движком игры и в котором идёт перечисление всех сопутствующих pcx файлов. Спрайты в игре занимают важную позицию, но всё же уступают численным и значительно более современным полигональным моделям.
Теперь пару слов о текстурах. Текстуры как и в Quake не высшего качества, но уже на одну ступень выше, а скормив их движку можем наблюдать их некоторое смягчение самим рендером(но софтовый рендеринг это не затрагивает). Особенностью формата .wal является встроенная в нем информация о свойствах текстуры. В наши дни в основном для манипуляции свойствами поверхности двумерных изображений используются различные шейдеры, но в далёком '97 во времена когда ещё далеко не каждый мог себе позволить даже такую на тот момент роскошь как видеоадаптер с акселератором и когда софтовый рендеринг был привычным делом, шейдеры не применялись, взамен мы получаем растровые изображения со "вписанными" в них опциями компиляции карт и указателями для построения последовательности анимации текстур(некоторые объекты на уровнях анимируются за счёт текстур).
Осталось сказать только про видео ролики в игре. В общих чертах это видео подобное тому в котором хранят фильмы(не стоит путать с демо-записями, которое сохраняют некую последовательность действий игры. Само видео выполнено в специальном формате - .cin (от англ. Cinematics) и сначала проэктируется в 3d Studio и потом действия сохранённые как последовательность двумерных изображений конвертируется специальной утилитой в формат читаемый игрой. К сожалению, этот формат очень быстро себя изжил за большое количество серьёзных недостатков, но нужно отдать должное тому, что он показал себя с лучшей стороны в отношении достаточно малой ресурсоёмкости. К недостаткам этого формата можно занести низкое качество изображения, плохую компрессию а также проблемы с постоянными потерями фреймов во время проигрывания. Позже на смену .CIN формату пришёл .ROQ, который используется и по сей день.
 
Ознакомление теперь закончено и можно начинать модмейкинг. Для начала неплохо определится что именно будет поддаватся изменению, а что нужно добавить. Ярким примером использование данного движка являются как официальные модификации(Q2 Mission Pack 1 & 2), так и множество модов сделанных игроками.
Также есть ряд других игр изпользующих ID Tech 2 технологию(тут я имею ввиду такие игры как: Heretic 2,King Pin,Sin,Daikatana и исследовательский проэкт Grid). Но на этом список не заканчивается, ведь за счёт простоты и доступности движек используется и во многих других проэктах(особенно это Open Source проэкты).
 
И наконец список нужного для грамотного модмейкинга тулза:
 
Micrsosoft Visual Studio C++
Нужен для компиляции, а также удобен для обработки проэктов инструмент(а вернее целая среда разроботки). Скачиваем,устанавливаем,пользуемся. Но обязательно убедитесь, что вы используете именно Microsoft VS, т.к. существует аналогичный продукт и от фирмы Borland, но это другая история...
 
Сам исходный код игры как и многое другое берём на
 
Далее нам понадобится какой нибудь хороший редактор моделей. В принципе можно воспользоваться 3d Studio Max или GMax но для него понадобится специальный плагин импорта/экспорта, или пойти по пути разработчиков оригинала игры, и при помощи такого тулза как QData преобразовывать модели в .md2 прямо из .3ds формата. Но есть пути и проще, например воспользоватся Quake2 Modeller'ом или обзавестись Milk Shape 3d. А также очень пригодится такой инструмент как NST (Nferno Skin Tool для обработки шкур).
NST и ModelEd берём с нашего сайта:
И соответственно ModelEd:
Milk Skape качаем отсюда:
(если возникнут проблемы с регистрацией вы знаете что делать, а если нет, то ко мне в личку..).
 
Для создания и изменения уже существующих карт можно воспользоватся следующим софтом:
GTK Radiant - пришёл на замену QeRadiant и является самым функциональным.
 
WorldCraft - довольно прост в изучении, удобен в пользовании. Доступен для скачивания у нас на сайте. WinbspC прилагается.
 
Программа для рисования скайбоксов в играх Квэйк-поколения:
 
Небольшой, но очень хорохий редактор спрайтов:
 
Отличная программа для работы над различными текстурами:
 
Один из лучших редакторов/просмотрщиков .Pak файлов
 
 
 
И на этом наверное стоит закончит, Q2kerS 0:23 27.07.2008
 
Категория: Quake II | Добавил: quakers (27.07.2008)
Просмотров: 8853 | Комментарии: 1 | Рейтинг: 5.0/3 |
Всего комментариев: 1
1 cveartool  
1
А в первом комменте, это список статей, необходимых для дальнейшего моделлинга? xD

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Форма входа

Приветствую Вас Гость!

Поиск