Що повинен робити ігровий движок? [зачинено]


20

Я хотів би вдосконалити свої навички / спробувати щось нове, і я хотів би почати з 3D. Я прочитав Початок програмування в 3D з C ++, але у мене є питання щодо двигунів:

  • Що повинен робити двигун? Я знаю, що це шар абстракції над API API (тобто OpenGL або DirectX), але що саме він повинен робити?

Щодо рекомендацій щодо книги, це питання вам повинно допомогти: gamedev.stackexchange.com/questions/455/…
Тетрад

Відповіді:


27

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

Ігрові двигуни покликані полегшити все щодо розвитку ігор. У кожного вони є свої унікальні особливості, але, як правило, вони забезпечують легкі шари абстракції для графіки, аудіо, вводу, управління сценами, виявлення зіткнень, математики та загальних корисних утиліт. Деякі надають обгортки та плагіни для API фізики, а деякі навіть мають деяку підтримку AI (здебільшого обмежені FSM, pathfinding та - поточна тенденція - дерева поведінки). Багато з них підтримують та пишаються своєю функціональністю між платформами.

Призначення ігрового двигуна - полегшити користувачеві створення гри, не маючи справи з невеликими роздратуваннями в створенні гри з нуля або необхідності встановлення цілого ряду бібліотек і написання власної обгортки для них відповідно до ваших гра.

Тут дуже багато двигунів, але остерігайтеся різниці між графічним і ігровим двигуном (наприклад, Unity був би ігровим двигуном, тоді як Ogre - графічним двигуном).

У мене дві книги на цю тему, але вони дають хороший огляд на цю тему:

  • 3D-архітектура ігрових двигунів Девід Н Еберлі

  • Кодування ігор завершено Майком МакШафрі

Вони не надто поглиблені, тому що вам знадобиться кілька книг про кожен компонент, щоб отримати глибину знань, які вам знадобляться, щоб створити повний, професійний ігровий механізм, але вони дуже добре пояснюють ці поняття.

Якщо ви починаєте розробку гри, не робіть двигун. Я пересилаю вас на наступну сторінку: http://geometrian.com/programming/tutorials/write-games-not-engines/

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

Сподіваюся, що це допомагає.

Промінь


1
+1 для статті блогу. У ньому сказано саме те, що я сказав би з цього питання.
Тетрад

5
Так, ніхто не повинен робити ігровий движок до того, як вони зробили гру. Як ви можете знати, що ваш код можна використовувати повторно, якщо ви ще не знаєте, що його можна використовувати?
Кілотан

@Kylotan Я розумію, що це дуже пізно, але я просто хотів би подякувати вам за цей коментар, оскільки я постійно цитую його іншим :)
Ray Dey

@RayDey посилання на "писати ігри, а не двигуни" мертва, FYI. Я з нетерпінням чекав його читання :(
DrewJordan

5

Додаючи до відповіді Рея: Двигуни (гра, графіка, аудіо тощо) не тільки полегшують взаємодію з основними API, але реалізують функціональні можливості, характерні для гри, наприклад: Затінення моделі, 3D-звук.

Спеціально для ігрових двигунів: вони управляють ігровими об'єктами, ресурсами (Пам'ять, потоки, усі інші двигуни) та міжмодульною комунікацією. Вони надають грі структуру, масштабованість та гнучкість, що важливо для будь-якого нетривіального проекту.


+1 за структуру, масштабованість та гнучкість, і я забув додати управління пам’яттю
Ray Dey

1

Я написав докладний підручник про те, що таке ігровий движок - конкретно в контексті платформ iPhone та Android. Я включив докладні описи із прикладами різних частин ігрового двигуна: інтерфейсу користувача, графіки, звуку, фізики, ефектів частинок. Підручник доступний тут: Що таке ігровий движок? . Сподіваюся, що це корисно.


0

Кожен ігровий движок має дещо інше уявлення про те, що повинен робити ігровий движок.

Але оскільки вже є занадто багато ігрових двигунів, я дуже рекомендую вам створити гру, а не ДВИГАТЕЛЯ.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.