Vous pouvez écrire un moteur de jeu dans pratiquement n'importe quelle langue en utilisant pratiquement toutes les méthodes de rendu. Vous pouvez écrire un moteur de jeu en bash en utilisant la sortie console par exemple.
Donc, je pense qu'il serait préférable de définir exactement ce que vous voulez apprendre en écrivant votre propre moteur. Il y a beaucoup de "domaines" dans le développement de jeux.
etc. De là, vous pouvez même avoir des sous-thèmes. Dans le rendu / graphiques
2D ou 3D?
La modélisation
Ombres
Éclairage
Texturation
GUI / Huds / Interfaces.
etc
Un seul de ces sous-sous-sujets pourrait consommer de nombreuses heures (ou années!) D'étude!
Donc, définissez d'abord ce que vous voulez apprendre. Commencez simplement.
Utilisez la langue avec laquelle vous êtes à l'aise, bien que certaines soient mieux adaptées à certaines tâches. Par exemple, le moteur principal et le rendu sont probablement mieux faits avec un langage de niveau "inférieur" comme C / C ++ (si vous avez besoin de performances); mais quelque chose comme l'IA ou les règles du jeu pourrait être mieux fait dans un langage de niveau supérieur. Rien ne dit que vous ne pouvez pas mélanger et assortir. Vous pouvez écrire votre moteur en C ++, votre rendu en C (car cela fonctionne bien avec OpenGL), puis utiliser LUA pour écrire vos règles de jeu, etc.
En ce qui concerne l'exemple, il existe un moteur de jeu appelé Slick2D. Il est écrit en Java et est open source. C'est un exemple d'un simple moteur 2D écrit et très bien conçu. Vous pouvez en apprendre des concepts de base, comme les boucles de jeu, la gestion des états de jeu, etc.
Si vous êtes à l'aise avec C / C ++; Je suggère de jeter un œil à SDL / OpenGL. Il gère une partie de l'entretien ménager comme l'entrée, le son, la création de fenêtres, etc. et peut se concentrer sur d'autres choses.