Каковы хорошие ресурсы по дизайну 2D игрового движка? - PullRequest
11 голосов
/ 07 октября 2008

Я занимаюсь разработкой 2D игр с использованием C ++ и DirectX в свое свободное время. Я обнаружил, что подход моделирования корпоративной проблемной области не так полезен, как хотелось бы;)

Я более или менее ищу "лучшие практики", эквивалентные основному дизайну игрового движка. Как сущности должны взаимодействовать друг с другом, как анимация и звуки должны быть представлены в идеальном мире, и так далее.

У кого-нибудь есть хорошие ресурсы, которые они могут порекомендовать?

Ответы [ 5 ]

15 голосов
/ 08 октября 2008

Gamedev.net - обычно я обращаюсь, чтобы получить представление о том, что делают другие люди в сообществе разработчиков игр.

Тем не менее, я боюсь, что вы обнаружите, что идея «лучших практик» в разработке игр более изменчива, чем большинство. Игры, как правило, являются такими специализированными приложениями, что практически невозможно дать ответы «один размер для всех». То, что прекрасно работает для Тетриса, будет бесполезно с Астероидами, и модель, которая отлично работает для Halo, скорее всего потерпит неудачу для Марио.

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

Если вы новичок в разработке игр, мой совет будет таким: не убивайте себя над структурой кода с первого раза. Попробуйте простую игру, такую ​​как астероиды, и просто взломайте, пока она не заработает, независимо от того, насколько «уродлив» код. Используйте простые форматы, с которыми вы знакомы, не беспокоясь о том, насколько хорошо они выдержат большие проекты. Не беспокойтесь о плагинах, скинах, редакторах или любых других пухах. Просто заставь это работать! Затем, когда вы закончите с этой первой, самой важной игрой, выберите другую, и на этот раз очистите один или два аспекта вашего кода (но не переусердствуйте!) Оттуда итерируйте!

Я обещаю вам, что это продвинет вас дальше, чем любое количество онлайн-поисков «правильного пути», когда-либо существовавшего (это исходит от того, кто совершил МНОГО выкалываний).

И последняя мысль для вас: если вам удобнее работать в более четко определенном пространстве, взгляните на XNA или похожую библиотеку. Они заранее определят некоторые из «лучших» форматов для использования и дадут вам инструменты для работы с ними, что исключит некоторые начальные догадки.

Удачи, и, прежде всего, помните: игры (и их развитие) должны быть забавными! Не слишком увлекайтесь мелочами!

6 голосов
/ 07 октября 2008

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

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

3 голосов
/ 07 октября 2008

Практически любая книга, в которой Андре Ламот является одним из авторов.

GameDev также содержит множество статей.

1 голос
/ 04 января 2009

Не могу с вами согласиться: корпоративные приложения не подготавливают вас к программированию игр.

Я создал несколько небольших игр на python, java, html / php и perl. Как вы, наверное, знаете, основная структура игры:

Основной цикл:
handleInput ()
updateGameLogic ()
renderImages ()

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

Однако, прежде чем я слишком сильно разбью эту метафору, обратите внимание, что это ОТЛИЧНОЕ место для начала. Я бы даже посоветовал изучить Python / Pygame и начать создавать игры с помощью этого инструмента, а не C ++, что усложняет процесс проектирования и реализации. Когда вы создадите прототип на python, вы увидите, что игра обретает форму намного быстрее и сталкивается с не зависящими от языка проблемами.

Для меня самыми сложными, самыми трудоемкими аспектами игрового программирования являются графические и звуковые ресурсы. Хотя я немного любитель звука и музыкант-любитель, я создаю правдоподобную и подходящую музыку, а SFX - это проект сам по себе. У меня нет графического таланта, поэтому я должен полагаться на изменение существующих изображений или использование свободно доступных. К счастью, есть широко доступные бесплатные шрифты, которые можно использовать для игр (и мало что еще, поскольку они почти повсеместно плохие).

Наконец, нет ничего лучше открытого кода, чтобы увидеть, как другие проекты справляются с этим. Battle of Westnoth - зрелая игра среднего размера. Возможно, вы захотите посмотреть, что там происходит. Опять же, игры на python часто делают свой исходный код доступным, так что вы можете просмотреть сотни проектов там. Вы также можете декомпилировать ПЗУ atari 2600, но это мало что скажет вам о программировании сегодня. Старая VCS была специализированным устройством, которое обрабатывало свои приложения очень системно-зависимым способом. : -D

Наконец, мне также нравится Андре Ламот. У меня есть его старая книга 1993 года толщиной в миллион страниц. Хотя это все еще хороший справочник по некоторым общим игровым идеям, многие из них устранены благодаря наличию бесплатных доступных библиотек и фреймворков, которых тогда не было.

Удачи в вашем проекте.

0 голосов
/ 08 октября 2008

Поскольку это еще не было упомянуто, почему бы не начать с просмотра существующего движка, который был выпущен для сообщества? Поскольку вы говорите 2D, я бы хотел вернуться и порекомендовать что-то вроде Abuse . Да, он древний, и большинство интересных битов есть в Лиспе - но игра стала очень популярной на некоторое время, что означает, что они что-то делали правильно.

Как оказалось, тот факт, что большая часть оригинальной игры была в Лиспе, является очень полезным уроком. Выберите наиболее надежный язык / инструмент и не беспокойтесь о производительности. Вы всегда можете оптимизировать медленные части в C позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...