実質的にあらゆるレンダリング方法を使用して、実質的にあらゆる言語でゲームエンジンを作成できます。たとえばコンソール出力を使用して、bashでゲームエンジンを作成できます。
したがって、独自のエンジンを記述する際に何を学びたいかを正確に定義することが最善だと思います。ゲーム開発には多くの「フィールド」があります。
コアゲームエンジン
レンダリング/グラフィックス
AI
ネットワーキング
ゲームプレイ/ルール
音
入力(キーボード/マウス/コントローラーなど)
など。そこからサブトピックを作成することもできます。レンダリング/グラフィックスで
2dまたは3d?
モデリング
シェーディング
点灯
テクスチャリング
GUI / Huds /インターフェース。
などなど
それらのサブサブトピックの1つだけで、何時間も(または何年も!)勉強することができます。
そのため、まず何を学びたいかを定義します。シンプルに始めましょう。
特定のタスクに適している言語もありますが、使いやすい言語を使用してください。たとえば、コアエンジンとレンダリングはおそらく、C / C ++などの「下位」レベルの言語で行うのが最適です(パフォーマンスが必要な場合)。しかし、AIやゲームルールのようなものは、より高いレベルの言語で行う方が適切かもしれません。何も混ぜ合わせてはいけないということはありません。エンジンをC ++で記述し、レンダリングをCで記述して(OpenGLで適切に動作するため)、LUAを使用してゲームルールなどをスクリプト化できます。
例に関しては、Slick2Dと呼ばれるゲームエンジンがあります。Javaで書かれており、オープンソースです。これは、非常にうまく書かれて設計されたシンプルな2Dエンジンの例です。ゲームループ、ゲームの状態管理など、基本的な概念を学ぶことができます。
C / C ++に慣れている場合; SDL / OpenGLをご覧になることをお勧めします。入力、サウンド、ウィンドウの作成などのハウスキーピングの一部を処理し、他のものに集中できます。