Какие есть хорошие ресурсы по разработке движка 2D-игр?

StackOverflow https://stackoverflow.com/questions/179735

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

Я обещаю вам, что это продвинет вас дальше, чем любое количество поиска в Интернете по "правильному пути" когда-либо мог (это идет от кого-то, кто сделал много тыкать).

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top