この記事では、ゲームプログラム初心者が作ると勉強になるゲーム20選を紹介します。
目次
1. タイミングゲーム
難易度: (1)

まず1番目はタイミングゲーム。
ボタンやタップなどをタイミングよく行うゲームです。
特にキャラクターなどは存在せずに、抽象化されたゲージなどがよく使われます。
例えば UNDERTALEで敵にダメージを与えるためのゲージなどですね。
左右に動くだけのオブジェクトが中央になったタイミングを狙ってボタンを押すものです。
このシステムは昔から使われていて、ゴルフゲームやビリヤードなどでよく使われるシステムですね。
ちなみにこのタイミングゲームがより高度・豪華になったのが「音ゲー」や「QTE」となります。
2. クリックゲーム
難易度: (1)

これは動き回るオブジェクトをクリックして破壊するゲームです。
タイミングゲームと違って複数のオブジェクトを管理する必要があったり、対象のオブジェクトの移動がXY軸などの2軸以上の移動になっていて、少し複雑になりますね。

3. ブロック崩し
難易度: (2)
ゲームエンジンがない時代は、衝突判定と衝突応答を作る必要があって少し難しかったですが、最近は物理エンジンで衝突処理を何も考えなくても作れるので、難易度は「2」としました。
クリックゲームよりも難しい点は、プレイヤーが操作する対象となる「パドル」やブロックを壊す「ボール」の存在などオブジェクトの種類が増えることです。
そのあたりのオブジェクト管理が理解できてれば簡単に作れます。
あえて物理エンジンを使わずに、「当たり判定を自作」するとゲームプログラムの勉強になって良いかもしれませんね。
4. 2Dシューティング
難易度: (2)

本質はブロック崩しと変わらないので、難易度「2」としました。
ブロック崩しと同様に、オブジェクト管理の基本が学べるよい題材だと思います。
ブロック崩しと少し違うのが、敵が動いたり弾を発射することですね。
その点、ブロック崩しと比べてオブジェクト管理がやや複雑です。
Shoot ‘em up (2Dシューティングゲーム) が好きかどうか、にもよりますが、個人的に Bullet hell (弾幕シューティング) は好きなジャンルなので、ゲームエンジンを変えたときなど練習用によく作る題材です。
なにより、弾幕のパターンを作るのが楽しい!
3Way弾、回転弾、Whip弾、ホーミング弾、レーザーなど、様々なバリエーションを試してみても良いかもしれません。
5. フロッガー
難易度: (2)

(出典:株式会社コナミデジタルエンタテインメント)
フロッガーとは、カエルを操作して道路を走る車を避けたり、川を流れる丸太を飛び乗る、上視点の横断アクションゲームです。
障害物となる車オブジェクト、移動床とも言える丸太オブジェクトなど、登場するオブジェクトにそれなりのバリエーションがあるので、勉強用としてはなかなか良いと思います。
最近のゲームであれば、「クロッシーロード」が現代版フロッガーと言えるのではないかと思います。

(出典:Hipster Whale)
6. フラッピーバード
難易度: (1.5)

Flappy bird (フラッピーバード) は土管の出現アルゴリズムが少し難しいかもしれませんが、こちらも簡単に作れるのでおすすめです。
自弾や敵弾がないぶん、シューティングよりもシンプルに作ることができます。
また地面への着地処理が不要なので、通常の横視点のアクションゲームよりは簡単に作れると思います。
7. キャッチゲーム
難易度: (1.5)

上から落ちてくるアイテムをキャッチするゲームです。
2Dシューティングにおける、自分から弾に当たりにいくバージョンと言えるかもしれません。
8. ラン&ジャンプゲーム
難易度: (2)

Jump ’n’ run game (ラン&ジャンプゲーム) はフラッピーバードの床に着地できるバージョンみたいなもので、
こちらもひたすら横に進み続けるジャンプアクションゲームです。
床の出現アルゴリズムと着地判定がやや難しいかもしれませんので、まずはフラッピーバードを作ってみてから試してみても良いかもしれません。
ランダムに自動生成されるマップを想定した難易度としましたが、まずは固定のマップで作っても良いかもしれません。


9. Doodle Jump
難易度: (1.5)

(出典:Lima Sky LLC)
Doodle Jumpとは、ジャンプし続けるプレイヤーを左右に操作してひたすら上に進むゲームです。
ラン&ジャンプゲームの縦スクロール版とも言えますので、ラン&ジャンプゲームの応用で簡単に作れます。
10. 2Dプラットフォーマー
難易度: (4)

2D横視点の Platformer (プラットフォーマー) はジャンプアクションゲームです。ラン&ジャンプゲーム、Doodle Jumpはプラットフォーマーの簡易版とも言えるかもしれません。
2Dゲームでは人気のあるジャンルのため、ゲームエンジンのチュートリアルとしてよく採用されますが、ゲーム制作初心者にはやや難しい題材と思います。
理由として、衝突したオブジェクトに対して押し返し(衝突応答)の実装が必要なこと、重力による地面への着地判定がややこしいこと、ゲームの面白さを成立させるためには、「アイテム」「移動床」「敵のAI」などそれなりに要素のバリエーションを増やす必要があるため、と考えています。

11. パックマン
難易度: (5)

パックマンはキャラクターを操作して、迷路内に落ちているドットをすべて食べることを目的としたゲームです。
このゲームを作るには、迷路データの作成や迷路との衝突判定、パワーエサというパワーアップアイテム、プレイヤーを巧妙に追いかける4種類のモンスターなど、ゲームプログラムに必要な要素が数多く含まれています。
このゲームの完コピに近いものが作れるようになれば、ゲームプログラムの基礎はほぼ完成しているのではないかと考えています。
今回紹介したゲームの中ではダントツに難しいので難易度は「5」としています。
12. 一筆書きゲーム
難易度: (2)

プレイヤーを操作し、すべてのタイルの上を1度だけ通過するとゲームクリアとなるものです。
ゲーム……かというと少しあやしいですが、ゲームプログラムとしては良い題材です。
というのも、このゲームを作るのに必要な塗りつぶしを行うタイルの実装方法が、パズルゲームの基本となるためです。
13. リバーシ
難易度: (3)
交互に盤面に石を打ちながら、相手の石を自分の石で挟むことで自分の石へ換えていくゲームです。
グリッドを使ったゲームの基本となるので、パズルゲームを作りたいのであれば一度作ってみることをおすすめします。
石を挟んでひっくり返す判定などは、この手のゲームでの基本となる処理です。
また敵のAIを賢くしようとすると、評価値計算を行い、ミニマックス法などのアルゴリズムを理解する必要があります。
これはAIの基本となるアルゴリズムなので、とても勉強になるのではないかと思います。
リバーシのAIの作り方を学びたいときは以下の本がおすすめです。
14. 倉庫番
難易度: (2.5)

プレイヤーを操作し、荷物を特定の場所まで運ぶゲームです。
リバーシと同じくグリッドでオブジェクトを管理するので、リバーシが作れればその応用で実装できます。
敵のAIがないぶん、リバーシよりも簡単かもしれません。

15. テトリス
難易度: (4)

落ちものパズルを作ってみたい人におすすめのゲームです。
まず、面白さが保証されているのでうまく作れるとテストプレイが楽しいです。
リバーシや倉庫番と同じようにグリッドでオブジェクトを管理します。
おそらくブロックの接地判定や消去判定はそれほど難しくないかもしれません。
ただブロックの回転の実装はめり込みチェックや壁キックなど、例外処理が多いのでそのあたりうまく書けるかがプログラムの腕の見せどころとなります。

同じ落ち物パズルでも、マッチ3ゲームの場合は少し簡単なので難易度は 3 くらいかなと思います。

16. 脱出ゲーム
難易度: (2.5)

Escape the room game (脱出ゲーム) はパズルというより、アドベンチャーの方がジャンルとして近いかもしれません。
画面クリックに対して、フラグを立てたりアイテムを入手する、また暗号を解いたりすることで先に進むことのできるゲームです。
Point-and-click adventure games (ポイントアンドクリックゲーム) タイプはクリック判定ができればひとまず作れるゲームですが、アイテムの管理や暗号の正解判定などが少しややこしいので、難易度を「2.5」としました。
なお、脱出ゲームにノベルゲームっぽい会話イベントを入れようとすると、プログラム言語を自作する手間が発生して難易度が上がるので、プログラムに慣れたら挑戦してみるのもいいかもしれません。

17. 1人用ポーカー
難易度: (1.5)
メダルゲームでよく見かけるビデオポーカーのようなゲームを想定した難易度となります。
トランプはカードが「数値」と「スーツ」の2軸存在するので、そのデータ構造をどのようにするのか、ストレートやフラッシュなどの役判定をどのように行うのか、といったアルゴリズムを考えることはプログラムの勉強にとても良いと思っています。
18. 神経衰弱
難易度: (1.5)
同じ数字や絵をめくるとカードを取ることができるゲームです。
1人用ポーカーと違って、場札が存在するためその管理を考える必要があります。
19. ピラミッド(ソリティア)
難易度: (2)
ピラミッドとは、カードの数値の合計が「13」となるものを取ることができるゲームです。
カードの配置場所が「山札」「手札」「場札」の3種類あるため、やや複雑です。
また場札を表にできる条件の判定など、少しややこしい部分があります。
ソリティアには数多くのゲームルールがありますが、これは比較的簡単なので難易度は「2」となります。
20. クロンダイク(ソリティア)
難易度: (4)
クロンダイクとは、「組札」と呼ばれる場にカードをAから順にKまで並べるゲームです。
カードの配置場所が「山札」「手札」「場札」「組札」とありピラミッドよりも複雑です。また「場札」に連番のカードがある場合にまとめて移動できるなど、特殊な処理が多くやや難易度が高いです。そのためプログラムの勉強にはとても良い題材ではないかと思います。
まとめ
今回紹介したゲームをまとめてみました。この中でもさらにおすすめしたいゲームは水色にしています。
おまけ
ゲームデザインやプログラムの勉強に作ってみても良いかもしれないゲームジャンルを追加しておきます。
バランスゲーム
難易度: (2.5)

(出典:つみネコ.com)
バランスゲームとは、「つみネコ」や「パンケーキタワー」のようにオブジェクトを積み木のように重ねてバランスを取るゲームジャンルです。
最近のゲームエンジンでは物理エンジンが組み込まれているので比較的と簡単に実装できますが、あえて自作すると勉強になりそうです。
放置系ゲーム
難易度: (2)
放置系ゲームとは、時間経過をトリガーとして何らかのイベントや報酬が発生するゲームです。また報酬は画面をクリック(スワイプ)することで得られることから、クリッカー系ゲームと呼ばれることもあります。
ローグライク
難易度: (4)
ローグライクはターン制RPGを作る基礎知識を得たり、地形の自動生成などのプログラム知識を得ることができます。ローグライクを構成する基本的な要素は以下の記事に書いています。

またインディーゲームでは「ローグライク」は人気のジャンルなので、これを主力のゲームジャンルとして様々なバリエーションを作ることもできて、個人的におすすめのゲームジャンルです。
もしローグライクの派生ジャンルを作る場合は Spelunky がローグライクを別ジャンルと組み合わせて初めて成功したゲームで、後続のローグライク派生ジャンルに多大な影響を与えています。

なので、ローグライクの派生ジャンルを作ってみたい方はこのゲームを研究してみることをおすすめします。以下の記事では Spelunky がなぜ成功したのかについて書いています。

ノンフィールドRPG
難易度: (3)
ノンフィールドRPGとは、JRPGからフィールド(マップ移動)を排除したRPGです。バトルを中心としたゲームデザインとなるので、キャラの育成やバトルを中心としたゲームを作ってみたい方におすすめです。

タワーディフェンス
難易度: (3)
タワーディフェンスとは、次々と出現する敵から拠点を防衛するために「タワー」を配置して迎撃するゲームジャンルです。
RTSをカジュアルにしたゲームで、ストラテジーゲームを作ってみたい方が最初に作るゲームとしておすすめです。
YouTube
今回記事にした内容を動画にしたものです。