Что должен делать игровой движок? [закрыто]

20

Я хотел бы улучшить свои навыки / попробовать что-то новое, и я хотел бы начать с 3D. Я прочитал « Начало программирования в 3D с C ++», но у меня есть вопрос о движках:

  • Что должен делать двигатель? Я знаю, что это уровень абстракции над 3D API (то есть OpenGL или DirectX), но что именно он должен делать?
Мацей Печотка
источник
Для рекомендаций книги, этот вопрос должен помочь вам: gamedev.stackexchange.com/questions/455/...
Тетраду

Ответы:

27

Вы правы, говоря, что игровой движок абстрагируется от низкоуровневых графических API, но полноценный игровой движок делает гораздо больше.

Игровые движки призваны упростить разработку игр. У каждого из них есть свои уникальные особенности, но, как правило, они предоставляют простые уровни абстракции для графики, аудио, ввода, управления сценой, обнаружения столкновений, математики и общих полезных утилит. Некоторые предоставляют обертки и плагины для физических API-интерфейсов, а некоторые даже имеют некоторую поддержку AI (в основном ограничены FSM, поиском путей и - деревьями текущего тренда - поведения). Многие из них поддерживают и гордятся кроссплатформенной функциональностью.

Цель игрового движка состоит в том, чтобы облегчить пользователю создание игры, не сталкиваясь с небольшими неудобствами при создании игры с нуля или установкой целой связки библиотек и написанием собственных оболочек для них в соответствии с вашими потребностями. игра.

Есть много движков, но остерегайтесь разницы между графическим движком и игровым движком (например, Unity будет игровым движком, тогда как Ogre будет графическим движком).

У меня есть две книги на эту тему, но они дают хороший обзор по этой теме:

  • Архитектура 3D игрового движка от David H Eberly

  • Кодирование игры завершено Майком МакШаффри

Они не слишком глубоки, так как вам понадобится несколько книг по каждому компоненту, чтобы получить глубину знаний, необходимую для создания полноценного профессионального игрового движка, но я думаю, что они очень хорошо объясняют концепции.

Если вы начинаете разработку, не создавайте движок. Я отсылаю вас на следующую страницу: http://geometrian.com/programming/tutorials/write-games-not-engines/

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

Надеюсь, это поможет.

луч

Рэй Дей
источник
1
+1 за статью в блоге. Это говорит именно то, что я бы сказал по этому вопросу.
Тетрад
5
Да, никто не должен создавать игровой движок, прежде чем они сделают игру. Как вы можете знать, что ваш код можно использовать повторно, если вы еще не знаете, что его можно использовать?
Kylotan
@Kylotan Я понимаю, что уже очень поздно, но я просто хотел бы поблагодарить вас за этот комментарий, поскольку я постоянно цитировал его другим :)
Рэй Дей,
@RayDey ссылка "писать игры, а не движки" мертва, к вашему сведению. Я с нетерпением ждал, чтобы прочитать это :(
DrewJordan
5

Добавление к ответу Рэя: движки (игра, графика, аудио и т. Д.) Не только облегчают взаимодействие с базовыми API, но и реализуют функциональные возможности, характерные для игры, например: модель затенения, трехмерный звук.

Специально для игровых движков: они управляют игровыми объектами, ресурсами (памятью, потоками, всеми другими движками) и межмодульным взаимодействием. Они придают игре структуру, масштабируемость и гибкость, что важно для любого нетривиального проекта.

Рамон Заразуа Б.
источник
+1 за структуру, масштабируемость и гибкость, и я забыл добавить управление памятью
Рэй Дей,
1

Я написал подробное руководство о том, что такое игровой движок, особенно в контексте платформ iPhone и Android. Я включил подробные описания с примерами различных частей игрового движка: пользовательский интерфейс, графика, звук, физика, эффекты частиц. Учебное пособие доступно здесь: Что такое игровой движок? , Надеюсь, это полезно.

Бен Смайли
источник
0

Каждый игровой движок имеет немного другое представление о том, что должен делать игровой движок.

Но поскольку игровых движков уже слишком много, я настоятельно рекомендую вам сделать ИГРУ, а не ДВИГАТЕЛЬ.

MarkR
источник