Журнал о программированнии на языках Blitz3D, BlitzPlus, BlitzMax

Некоторые соображения по созданию игр

Материал из Blitz Et Cetera

Перейти к: навигация, поиск

(рекомендую новичкам)

Lectori benevolo salutem (лат. Привет благосклонному читателю). Я решил поделиться с вами некоторыми соображениями и рекомендациями по созданию 3D игр. Вот, что у меня получилось.

  • Соображение 1: Зачем изобретать велосипед, когда можно его улучшить.

Означает это примерно следующее: многое из того, что вы собираетесь создать, уже создано. Поэтому проще посмотреть, как это сделали другие, и потратить сэкономленное время на доработку и модернизацию существующего. Не стесняйтесь смотреть общедоступные исходники программ и использовать бесплатные модели. Так можно многому научиться. Однако не стоит тупо копировать плоды работы чужих умов, вам следует разбираться в механизме их создания.

  • Соображение 2: Не все то золото, что блестит!

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

  • Соображение 3: Кто не знает, что такое мир, не знает, где он сам... (Марк Аврелий)

Нестандартный и непонятный интерфейс отпугнет будущих пользователей вашего творения. Способ управления и правила игры должны быть просты и понятны, а количество этих правил не должно быть слишком велико. Погружаясь, в игровой мир, пользователь должен чувствовать себя как дома.

  • Соображение 4: Соперничество - пища для гения (Ф. Вольтер)

В игре должен быть стимул к ее продолжению. Если игра одиночная, то должен быть враг, который всегда слегка впереди вас, если же сетевая, то список рекордов, в котором указаны лучшие достижения других игроков, и т. д. Например, в Quake III arena внизу экрана цифрами показывалось максимальное количество фрагов, набранных другими игроками (ботами) и количество фрагов, набранных вами. Вспомните, как приятно рассказать знакомым о своих достижениях в какой-либо игре.

  • Соображение 5: Доблесть милее вдвойне, если доблестный телом прекрасен (Вергилий)

Внешний вид главного персонажа многое определяет. Гораздо приятнее играть за соблазнительную красотку или могучего воина, чем за какого-нибудь отвратительного паука-мутанта.

  • Соображение 6: Все хорошо в меру (мой жизненный девиз!).

Часто на новичков действует синдром «первой большой игры». Т. е. когда в игру пытаются напихать все, что только можно. Этого делать не стоит. К тому же не стоит забывать об ограниченном объеме памяти, если не хотите получить слайд-шоу вместо игры. Необходим компромисс между красотой и FPS. Так же нет смысла использовать переменную гравитацию в РПГ или что-либо подобное. Соответствуйте жанру игры и не перебарщивайте с игровыми возможностями.

  • Соображение 7: Оптимизируйте, оптимизируйте, и еще раз оптимизируйте!

Не забывайте, чем быстрее (без тормозов) будет работать ваша программа, тем лучше Например, заменяйте операции деления на умножение, оно работает быстрее. Это связано с особенностями работы процессора. Так же уменьшайте кол-во параметров в функциях, но при этом все возможное описывайте именно в них. Обращайте внимание на типы переменных, каждый тип занимает разный объем памяти. В моделях не стоит перебарщивать с числом полигонов, лучше подобрать качественную текстуру (смотрится лучше, а ресурсов жрет меньше). Впрочем, с текстурами тоже надо быть осторожнее. Надо подбирать размер текстуры так, чтобы она не состояла из кубиков, но и была при этом наименьшего размера. Если высоко полигональные модели дают нагрузку на процессор, то большие и качественные текстуры грузят оперативную память. Что для вас важнее решайте сами. Еще совет по поводу текстур: выбирайте правильные форматы. Например, мне нравится формат png , он достаточно точен и не прожорлив. На текстурах с разверткой следует компактно размещать детали. Ну и т. д.

  • Соображение 8: Все дело в деталях.

Уделяйте внимание мелким деталям. Именно это и отличает профессионала от новичка. Например, анимация растительности, прозрачность воды и стекла, правильная траектория полета снаряда, корректные пересечения с камерой различных объектов, гравитация трупов (чтобы они не зависали в воздухе) и др. Не надейтесь, что пользователь не заметит вашей недоработки.

  • Соображение 9: У всего есть свое начало и свой конец.

Не забудьте ограничивать свой мир, однако делайте это так, чтобы создавалась иллюзия, что ваш мир безграничен

  • Соображение 10: Время - деньги!

Помните, что никто не любит тратить время попусту. Если в вашей игре, что-то долго грузиться, то займите игрока на это время чем-нибудь, например, можно давать советы по игре в виде текста. Так же стоит избегать повторяющихся действий для игрока (т. е. когда игрок от уровня к уровню делает однообразные действия) это всегда утомляет и интерес к игре пропадает.

Помните эти «десять заповедей» геймдевелопера и ваши игры будут интересными и увлекательными. Теперь хочу дать пару дельных советов:

  • Избегайте большого числа камер – это создает лишние тормоза, проще менять координаты одной камеры.
  • Если хотите, чтобы спрайты не были полупрозрачными, то используйте формат png с прозрачным фоном или схожий с ним формат. То же относится и к рисункам, если хотите, чтобы он отображался точно, особенно его темные части.
  • Используйте максимум команд блица для оптимизации своего кода, все равно к программе прикомпилируются все функции.
  • Помните: если игра работает у вас, то это не значит, что она будет работать на другом компьютере. Тестируйте свои программы на разных системах с разной конфигурацией, программным обеспечением и оборудованием.
  • Если хотите использовать реальное расположение звезд, то удобно воспользоваться картой звездного неба, слегка поработав над ней в фотошопе. У меня получилось вот, что:

не удивляйтесь, что она задом наперед. Так надо! Накладываете ее на сферу в 3dsmax, применяете сферическую текстурную карту, если сразу не получилось наложить правильно, меняете направление нормалей и небо готово. Выглядит вот так (это, кстати, из моей игры, которую я сейчас разрабатываю):

Узнаете медведицу?

  • При текстурировании террайна удобно использовать равномерно освещенную не цветную текстуру, скажем такую:

А сверху накладывать текстуру-маску, растянутую на весь террайн. Например, зеленый – трава, коричневый – земля и т. д.

  • При моделировании используйте минимум составных частей. Впоследствии, когда вы будете объединять эти части, у вас могут быть проблемы. Например, при экспорте из 3dsmax могут быть неправильно экспортированы нормали.

Хорошим помощником при моделировании может стать модификатор «выдавливание».

  • Используйте комментарии в тексте программ.

Ну, пожалуй, хватит. Все главное я, вроде, сказал.


Автор: Агнислав Липкан (e-mail: avelnet_sobaka_yandex.ru)

Другие

Друзья