Ви можете написати ігровий движок практично будь-якою мовою, використовуючи практично будь-які способи візуалізації. Ви можете написати ігровий движок в bash, використовуючи, наприклад, консольний вихід.
Отже, я думаю, що було б найкраще визначити, що саме ви хочете навчитися писати власний двигун. У розробці ігор багато "полів".
тощо. Звідти ви навіть можете мати підтеми. У візуалізації / графіці
2d чи 3d?
Моделювання
Затінення
Освітлення
Текстурування
GUI / Huds / інтерфейси.
тощо, тощо
Просто одна з цих підтемати могла з'їсти багато годин (або років!) Навчання!
Отже, спочатку визначте, що ви хочете навчитися. Почати просто.
Використовуйте будь-яку мову, якою вам подобається - хоча деякі краще підходять для певних завдань. Наприклад, основний двигун і візуалізація, мабуть, найкраще проводити з мовою "нижчого" рівня, як C / C ++ (якщо вам потрібна така продуктивність); але щось на зразок AI або Правил гри може бути краще виконано мовою вищого рівня. Ніщо не говорить про те, що ви не можете змішувати та поєднувати. Ви можете написати свій движок на C ++, рендерінг на C (оскільки він добре працює з OpenGL), а потім використовувати LUA для розробки правил гри, тощо.
Що стосується прикладу, є ігровий движок під назвою Slick2D. Він написаний на Java і є відкритим кодом. Це приклад простого 2d двигуна, написаного та розробленого дуже добре. Ви можете вивчити основні поняття з цього, наприклад, петлі гри, керування станами ігор тощо.
Якщо вам комфортно з C / C ++; Я б запропонував переглянути SDL / OpenGL. Він обробляє деяке господарство, наприклад введення, звук, створення вікон тощо, і може зосередитись на інших речах.