Возможный дубликат:
где я могу найти хорошие (хорошо организованные) примеры игрового кода?
Я написал несколько игр на C ++, и сейчас я создаю свой собственный игровой движок и редактор.
У меня есть некоторые сомнения по поводу дизайна, и я хочу найти отличные примеры для подражания.
Какой дизайн на ваш взгляд лучше?
Должен быть объектно-ориентированным. Язык программирования не имеет значения, но я предпочитаю в таком порядке: C ++, C #, Java или другое подобное.
РЕДАКТИРОВАНИЕ: Чтобы уточнить больше, меня не интересует код для конкретной игры. Я хочу игровые движки общего назначения.
РЕДАКТИРОВАНИЕ: В этой статье объясняется, что такое игровой движок: игровой движок в Википедии, и вот список известных игровых движков: список игровых движков в Википедии
Ответы:
Я думаю, что лучший способ создать игровой движок - это начать с того, что вы уже хорошо знаете, и добавить те утомительные или повторяющиеся функции.
Например, я много работаю с Python / pygame (который является оберткой SDL). Мне очень нравится система, но меня беспокоило три вещи:
мог бы легко добавить в свои игры.
Было относительно легко создать объектно-ориентированную оболочку вокруг этих функций. Взгляните на главу 10 и документацию по Game Engine, доступную здесь: http://aharrisbooks.net/pythonGame/
(Это было написано как часть книги, но вы можете пользоваться игровым движком, даже если вам не нужна книга.)
Глава 10 объясняет мотивацию и методы создания базового движка 2D игры. Вы можете наслаждаться этим, когда создаете свой собственный. Фактический язык не так важен (за исключением того, что вам нужен язык ООП для поддержки ООП.) Если вы уже используете SDL с C ++, вы можете начать с адаптации моего движка к C ++ / SDL.
источник
Почтенный дизайн движка Quake (ID tech) выдержал испытание временем и, возможно, является самым успешным дизайном игрового движка всех времен. Все, кроме рендера, практически не изменилось с конца середины 90-х годов и до сих пор используется в современных играх, таких как ETQW.
Полный исходный код для четырех итераций этого движка (Quake 1–3, плюс Wolf ET) доступен по лицензии GPL. Вероятно, существует более сотни активно разработанных поддерживаемых сообществом игровых движков Quake, которые поддерживают их актуальность в современную эпоху. Особенно стоит обратить внимание на XreaL для его фантастического рендерера и ioQuake3 для его точного обслуживания Quake 3, оптимизированного для современного оборудования. Кроме того, для более свежих «официальных» версий ID движка также доступна логика игры (не весь движок).
Даже если вы в конечном итоге не используете этот игровой движок, он заслуживает изучения благодаря продуманной архитектуре разделения клиент-сервер и отделению игровой логики от низкоуровневых деталей.
источник
Библиотека рендеринга Ogre3D довольно близка к коду движка, и, как я слышал, она очень хорошо спроектирована и очень хорошо выглядит.
http://www.ogre3d.org/
источник
Говоря об игровом движке, я полагаю, что вы думаете о чем-либо, кроме движка рендеринга, звукового движка, физического движка, движка ввода и т. Д.
Таким образом, вы можете подумать об игровой архитектуре, искусственном интеллекте или шаблонах / системах проектирования и т. Д., Которые используются для структурирования программного обеспечения в управление данными и другими компонентами для создания некой сцены / поклонника / иллюзии, создавая таким образом управляемые наборы правил для твик для создания актуальной "видеоигры".
Это настоящий верхний слой видеоигры, и я даже попытался немного узнать о нем, он обширный, сложный и требует много знаний по всем остальным предметам. Представьте, что вы хотите воссоздать альтернативную реальность из ничего, отследить и вычислить каждое событие и восстановить точные данные из них в любой момент: для каждого типа игры есть какой-то подмножество игрового движка, и я не Я думаю, что на самом деле можно сделать общий движок, который достаточно математически быстр. Даже для игры, в которой вы управляете одним персонажем, есть еще много вещей, которые могут варьироваться и могут требовать от игры изменения всей архитектуры.
Игровая индустрия не так хорошо обслуживается открытым исходным кодом, как другие области компьютерных наук, просто потому, что у развлечений есть разные виды лицензий, которые включают художественные лицензии: игровой продукт оплачивается только клиентом, а AFAIK - только Несколько движков, которые кажутся достаточно хорошими, чтобы работать для вас: Hord3d, NeoAxis, blendelf, Panda3D. Но я не могу заверить вас, что их будет так же легко использовать, как и такие инструменты, как Unity, Torque, C4 и другие; Имейте в виду, что игровой движок с графическим рендером, я думаю, самый сложный тип программного обеспечения, которое вы найдете в процессе создания игр.
источник
Для меня использование Python с Pygame является хорошим решением. Возможно, Python немного медленный, но для современных компьютеров, и если вы просто попытаетесь оптимизировать свою игру, это не имеет значения. Pygame имеет очень хорошую документацию на оригинальном сайте Pygame. Но сначала возьмите начало урока, чтобы выучить некоторые основы. Для оптимизации скорости (преобразования изображений, ...) вам понадобятся другие примеры, которые легко найти.
источник