Які конкретні математику, фізику, AI та загальні поняття, який повинен знати програміст, щоб розробити ігровий движок? [зачинено]


9

Будучи програмістом програм, орієнтованих на Інтернет та БД, я знаю такі структури даних, як списки, дерева, графіки тощо. Я чесно використовую дуже мало цих алгоритмів структури даних у своєму кодуванні, за винятком сортування речей у звичайних масивах, як я майже повністю працювали з орієнтованими на клієнта рамками, де вбудована вся основна функціональність. Я знаю C, PHP, Java, HTML, PL / SQL і MySQL. Зараз я навчаюсь Python.

Я хочу почати з розробки ігор. Я бачив інші питання щодо пропозицій, порад та підходів до розробки ігор для початківців. Я розумію ці моменти і чітко розумію відповіді. Через кілька днів після публікації я прочитав статтю Write Games, Not Engines і зрозумів, що повинен реалізувати гру, перш ніж створити ігровий движок. Все-таки у мене є питання.

Моя мета - це

  • Удосконалити свої навички програмування на базовому рівні, включаючи використання алгоритмів структури даних, концепцій математики та фізики.
  • Реалізуйте хороший ігровий механізм, щоб побажати себе кодування основних рівнів.
  • Щоб прокласти собі шлях у галузі досліджень ШІ.

Які конкретні математику, фізику, AI та загальні поняття, який повинен знати програміст, щоб розробити ігровий движок?

Відповіді:


11

Структури даних: Це, безумовно, правильне питання. Однак, хоча деякі структури даних корисні для будь-яких ігор (як, наприклад, ті, про які ви вже згадували, списки, дерева ...), є й інші, які є дуже специфічними. Наприклад, Octrees може бути дуже корисним у 3D-програмуванні, але в чистому двовимірному середовищі ви, мабуть, не потребуєте.

Алгоритми : застосовується те саме правило. Наприклад, у чистому двовимірному середовищі виявлення зіткнення працює дуже інакше, ніж у 3D.

Важливі Математичні області: найважливіша область для двигуна Dev бути знайомі з є лінійної алгеброю і більш просунуті теми Алгебри (кватерніони). Насправді дуже просто, якщо вам подобається лінійна алгебра (і я маю на увазі поза простим множенням матриць), ви почнете добре.

Next ist Geometry, яка добре підключається до лінійної алгебри в Engine Dev так чи інакше, ймовірно, не потребує згадки.

Крім того, ніколи не зашкодить глибоко розуміти базовий підрахунок. Це зручно в роботі з фізичним двигуном або більш досконалими темами затінення.

Інші цікаві теми повинні бути: комбінаторика, статистика

Фізика: Це не обов'язково, ЯКЩО ви збираєтеся робити прості ігри. Це не зашкодить, але в цьому випадку ви добре поправитесь із фізикою середньої школи.

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

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

Який тип гри ви хочете розвивати? Можливо, я можу детальніше розглянути ці пункти з цією інформацією.


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

шкода пропустив посилання на мій попередній коментар: gamedev.stackexchange.com/questions/8502 / ...
droidsites

Раніше я рекомендував би спершу почати з 2D-ігор, якщо ви хочете розробити 3D-ігри. Однак з повстанням таких архітектур, як XNA, я вважаю, що веселіше зануритися безпосередньо в 3D. Ви вже подивилися на C # / XNA? Не повинно бути проблем з огляду на програмування
Майкл Кіснер

Ні, я не перевіряв цього. Так ... це не проблема для C #. Але мене дуже цікавить така річ python :-)
дроїди

Якщо ви зацікавлені в Python і вас більше цікавить побудова гри, а не побудова технології для побудови гри, ви можете перевірити Panda3D або Blender Game Engine.
Шон Міддлічч

1

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

З точки зору математики, ви повинні мати дуже сильне розуміння лінійної алгебри (вектори, матриці, рішення лінійних систем тощо), дуже сильне розуміння тригонометрії та принаймні базове розуміння числення (прості похідні та інтеграція) . Будь-який вступний курс лінійної алгебри рівня коледжу повинен поставити вас на правильний шлях, якщо не навчить вас про все, що вам потрібно знати, щоб почати працювати з загальними принципами 3D графіки. Я також посилаю книгу, нижче якої ви можете виявитись дуже корисною.

Щодо фізики, ти хочеш покататися. Фізику можна розділити на дві різні категорії: виявлення зіткнення та реакція на зіткнення. Ви абсолютно повинні знати математику для виявлення зіткнень, оскільки ця математика більш-менш ідентична тому, що потрібно робити для графіки (особливо для побудови дерев і карт, необхідних для оклюзії), і ви збираєтеся використовувати цей матеріал для багато вашої логіки гри.

Відповідь на зіткнення може варіюватися від "простого" до смішного рівня складності, і навіть прості речі спочатку можуть бути неінтуїтивними. Я б дуже настійно рекомендую залишити ці речі в існуючій бібліотеці, наприклад, Bullet, Havok, PhysX тощо (або Box2D, якщо ви працюєте над двовимірним геймплеєм) до тих пір, поки ви не будете задоволені наявними математикою та алгоритмом. знання та вирішити, що ви хочете дізнатися, як працюють двигуни фізики. Тоді я б рекомендував вам створити дуже простий 2D-фізичний двигун як першу спробу. Двигуни з фізики 3D - це шалено складні звірі і, безумовно, є найбільш складною і складною частиною ігрового програмування, саме тому фізичні двигуни - це найчастіше ліцензований сторонній технік, який використовується в іграх. Ви просто не бачите дуже багато ігор, які не є • Не використовуйте Havok або PhysX у професійному світі, незважаючи на те, скільки ігор має з самого початку домашні графічні двигуни та основний код двигуна. Навіть компанії, які не роблять нічого, крім створення ігрових двигунів, як правило, ліцензують фізичний двигун, наприклад, Unreal просто використовує PhysX, а не включає власний двигун фізики.

Я б рекомендував наступні книги, щоб розпочати роботу. Перша - це вступна книга рівня базової математики, яку ви повинні знати як програміст 3D-ігор:

http://www.amazon.com/Mathematics-Programming-Computer-Graphics-Third/dp/1435458869

Друга - це книга, виявлена ​​для алгоритмів виявлення зіткнення (не відповіді на зіткнення!), Які допоможуть як з графічним кодуванням, так і з фізичним кодуванням:

http://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323

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