Игры — это просто. (2 стр)
Автор: Дмитрий Васильев
С введением мы покончили, теперь непосредственно по теме. Основная идея моей этой всей писаны – убедить резвых молодых разработчиков игр не воплощать в свои молодые творения сложные технологии, дать им понять, что каждому решению можно найти более простое и по сути похожее. В чем плюсы простых технологий:
- 1. простота исполнения и использования
2. малые временные затраты
3. более вероятно доведение проекта до конца.
Есть очень много молодых программистов, которые начав писать игру, так эту игру не написали, зато написали движок. Движок – это круто. В целях обучения. Но обычно программист так и застывает со своим движком в своем развитии гейм девелопера. Чтобы расти в эту сторону, необходимо писать игры. Сначала маленькие и простые. Затем более интересные и серьезные игры, по необходимости увеличивая возможности своего движка. Как я предполагаю, большинство читателей уже имеют свой первый опыт. Поэтому предлагаю продолжить его, написав игру типа FPS.
Итак, игра типа шутер. Первым делом для игры надо сделать основу. Что уже будет напоминать эту саму игру. Это – карта. В игре надо сделать первым делом загрузчик карты. А карту можно для начала и самому написать цифрами в блокноте. Сразу же вас попробую предостеречь – не надо кидаться выполнять ошибку номер два. Я настоятельно рекомендую вам сделать структуру карты очень простой. Ведь тогда почти за один день можно написать начало игры.
Вот, примерно, какие я выделил структуры карт:
- 1. плоские
a. клеточная (старый Wolfenshein)
b. векторная (немного на Doom походит второй и первый. Но в нем больше 3д, потому что есть карта высот)
2. псевдо трехмерные (как раз тот вариант плоской векторной, но с картой высот)
3. трехмерные (карты в стандарте Quake I и все, что круче).
Все начинается с малого. А поэтому тип карты выберите клеточный. Она наиболее простая, при этом с легкостью может обладать почти всеми преимуществами 3д карт (в основном для закрытых пространств). Примеры тому есть, где-то на Gamedev.ru была ссылка на такой проект, который выглядел при этом очень красиво и удобно. А что еще надо для хорошей игры? Заметьте, пожалуйста, акцент указан такой: сделайте красиво. А каким способом это сделано, это игроку не важно. Используйте во всем как можно более простые технологии! Я думаю, этот возглас поддержат хором многие, уставшие отвечать на вопросы начинающих.
Итак. С типом карты мы разобрались. Теперь о том, как её хранить. Для начала проще всего в формате txt, где просто перечислены тройки вершин, где каждая тройка соответствует одному треугольнику. Отображение карты проще всего (для начала) сделать одной функцией типа D3DDrawPrimitives. А затем еще немного: сделать камеру, которая будет по карте перемещаться по карте, сделать управление мышкой и кнопками WSAD и сверху карты нарисовать спрайт с изображением прицела, можно изображение оружия сделать. И чудо – получилась штука, ужасно похожая на игру.
До первой демоверсии осталось только сделать стрельбу самым простым способом, добавить стоячих спрайтовых монстров, которые исчезают при попадании в них. И до самого смака демоверсии надо добавить чуть-чуть технологии: необходимо добавить небольшое покачивание при ходьбе. А также – нужно сделать так, чтобы ваш персонаж не проходил сквозь стены и монстров, то есть сделать что-то вроде простейшего алгоритма обработки столкновения объектов. Но для вида игры не хватает кое-чего важного. Меню сделать не так сложно, а эффект от его существования колоссальный. «Игру» теперь можно показывать друзьям (непрограммистам) и смело бить себя пяткой в грудь.
Конечно, план этот я описал ужасно простым языком. Здесь присутствуют подводные камни. Но ведь вы же на то и программисты, чтоб решать такие задачки. И напоследок, скажу, какие ваши цели должны быть при написании вами этой первой 3D игры:
- 1. Вы должны написать полноценный прототип игры Wolfenshtein.
2. За кратчайшие сроки.
3. Должны научиться разбивать проект на отдельные составные части для удобства работы с листингами.
4. научиться делать непосредственно всю игру одному, вместе со звуком, меню, пары заставок.
5. Научиться делать загрузку игры, сохранение в любой момент игры.
В довершении статьи хочу сказать, что я еще считаю нужным написать несколько статей для некоторого продолжения этой статьи. Одна из них будет называться – «Типы карт, их минусы, плюсы и разновидности». Где я подробно разберу по косточкам выше перечисленные типы карт. В другой статье предоставлю небольшой материал по удобному разбитию проекта на отдельные части, что поможет без труда добавлять в игру различные меню, заставки или даже какие-то встроенные небольшие игры.
Статья написана мною на конкурс на сайте GameDev.ru. Оставляйте свои мнения, пожалуйста.
Всегда Ваш, Kelegorm.
26 января 2006