Вы можете написать игровой движок практически на любом языке, используя практически любые методы рендеринга. Например, вы можете написать движок игры на bash, используя вывод консоли.
Итак, я думаю, что было бы лучше определить, что именно вы хотите узнать при написании собственного движка. В разработке игр много «полей».
и т.д. Оттуда вы можете даже иметь подтемы. В рендеринге / графика
2D или 3D?
моделирование
затенение
Осветительные приборы
Текстурирование
ГПИ / Huds / интерфейсы.
и т. д.
Только одна из этих подтем может съесть много часов (или лет!) Обучения!
Итак, сначала определите, что вы хотите узнать. Начните просто.
Используйте любой язык, который вам удобен - хотя некоторые лучше подходят для определенных задач. Например, ядро и рендеринг, вероятно, лучше всего выполнять с языком «более низкого» уровня, таким как C / C ++ (если вам нужна производительность); но что-то вроде ИИ или правил игры может быть лучше сделано на языке более высокого уровня. Ничто не говорит, что вы не можете смешивать и сочетать. Вы можете написать свой движок на C ++, ваш рендеринг на C (поскольку он хорошо работает с OpenGL), а затем использовать LUA для написания сценариев ваших правил игры и т. Д.
В качестве примера, есть игровой движок под названием Slick2D. Он написан на Java и имеет открытый исходный код. Это пример простого 2d движка, написанного и спроектированного очень хорошо. Из этого вы можете изучить основные понятия, такие как игровые циклы, управление игровыми состояниями и т. Д.
Если вам удобно с C / C ++; Я бы посоветовал взглянуть на SDL / OpenGL. Он обрабатывает некоторые домашние операции, такие как ввод, звук, создание окон и т. Д., И может сосредоточиться на других вещах.