ゲームを作りたいと思ったら

騙したくないのではじめにお伝えしますと、ゲームを作れるようになりたい場合、けっこうしっかりがんばる必要があります。普通に勉強だし楽ではないです。

わたしが初めてゲームを作りたいと思ってから、実際にゲームを作るようになるまではけっこう時間がかかったのですが、それは、なにをすればいいかわからなくて途方に暮れていたからです。これは途方に暮れている人向けの記事です。地図ではなくコンパス。

流れ

・最低限のプログラムを勉強する
・使うゲームエンジンを決める
・チュートリアルを探してやっていく
・調べながら自分で作ってみる

最低限のプログラムを勉強する

プログラムをするしないは置いておいて、最低限のプログラムと、その考え方は理解できた方がいいです。プログラムの才能っていうのは存在するとは思うのですが、苦手意識ある人でもある程度まではいけます(でもこれもできた側の発言ですよね)。

プログラムでいちばん難しいのが、プログラムがまったくわからない状態からどうやってプログラムの勉強を始めていけばいいのか、というところだと思う。まずはどのプログラミング言語に触れたらいいのかわかんない。有名だからとC#やPythonを始めようとすると、環境構築?????が意味わからなくてプログラムを書く段階まで到達できずに終わります。

おいし水ははじめに、環境構築が必要ないProcessingとJavaScriptを勉強したことで徐々にプログラムができるようになってきました(できない人にとってのできるレベルだけど、そこまでいけばゲーム作れるよ)。そのどちらか、あるいは両方から勉強を始めてみることをおすすめします。

勉強は『Processing 授業』とか『基礎』とか『JavaScript チュートリアル』とかで検索して初心者向けのチュートリアルを探してやるのがいいです。一般的にはノイズが多いプログラム教室などの企業のやつは避けて、親切な個人が書いているものとか、大学の授業用のやつがいいです。どのチュートリアルがいいのかも最初はわからないと思うので、ちゃんとしてそうなのをいくつか載せました。本を買うのもありです。

Processing

Processingはプログラマーじゃない人にも向けて作られた、ビジュアル表現のためのプログラミング言語です。比較的簡単に図形を表示したり動かしたりできます。おいし水はけっこうプログラミングがわかるようになってから、Processingでマインスイーパーを作ったことで、わたしってゲーム作れるかも、みたいな感じになりました。

Download Processing / Processing.org
ここからダウンロードしてアプリを起動したらすぐに、コードを入力して実行する段階までいけます。ビジュアル表現はほどほどに、コンソールを使ってプログラムの基礎を勉強しましょう。

processing演習用予備資料
大学のプログラミング入門の授業のドキュメントがいちばんわかりやすいと思います。

Media Programing 1 - Processing
後半難しめだけどこれとかも。

Processing基礎最速入門
グラフィック表現中心。

コンピュータ基礎II プログラムでヴィジュアルを作ろう
サンプルも多くて丁寧。

Proessing 学習ノート
ボリュームたくさん。コードも多くていいです。

いろいろ触れてみるといいですね。

JavaScript

JavaScriptはwebサイトとかブラウザで使われるプログラミング言語です。すごく雑に話すと、webサイトを作るときにはHTMLで内容を、CSSで見た目を、JavaScriptで仕組みを設定します。JavaScriptを使えば、HTMLとかCSSをリアルタイムに読み取ったり生成したり操作したりして、動きのあるwebサイトを作ったりできます(いい加減な説明ですが、プログラムわかる人は怒らないでください)。例えばスマフォ版の月刊湿地帯の、ボタンでメニューを出し入れする仕組みはJavaScriptで作っています。あと、ゲームの『湖』はJavaScript(とHTMLとCSS)で作ったよ。

JavaScriptはいまPCでサイトを開いているなら右クリックして検証ってとこ押して、右上のConsoleってとこ押して、そしたら文字入力できるとこあるからそこに『alert(“うお~”);』って入力してエンターキー押したらなんか表示されてJavaScript書いたことになります。

こんな感じになる。実際にはVisual Studio Codeってアプリでコードを書くことになるとは思うんですけど、要は敷居がすごい低いってことです。

ちょっと大変なのが、HTMLとCSSもちょっとやらなきゃいけないということです。いつかwebサイト作る気があるなら得です。わたしがそうだっただけなのですが、web系をしっかりやったあとにゲーム制作へ行くという流れは全然ありだと思います。やることはけっこう違いますが、色々とゲーム制作にもけっこう活きているなと感じます。

文系大学生のためのJavaScript入門
わかりやすそう。これいいかも。

文系大学生のためのp5.js入門
これもよさそう。p5jsっていうのはJavaScriptで動くProcessingみたいな感じです。

チュートリアル | MDN
すごいちゃんとしてるサイトのやつ。長いですが丁寧で詳しいです。HTMLやCSSもある程度やることになるので、いろいろやってからじっくりこれやるのいいかも。

現代の JavaScript チュートリアル
網羅的で高度なものも扱ってるから、後半難しいかも。でも結局こういうのをひと通りやったり何週かするのがよかったりする。『JavaScript の基礎』のとこよさそう

これ目標にやってみて

Hello Wolrdってコンソールに表示してみる
変数の宣言とかできるようになる
変数を使って四則演算できるようになる
if文を理解する
論理演算子を理解する
for文を理解する
乱数を理解する
fizzbuzzテストのコード自分で書ける

↑のあたりができれば、それからのことはなんとかやっていけると思います。配列とか関数もやがて必要にはなるけど、ひとまずはなくてもいける(余力あればここの段階で触れたほうがいい)。まずはとにかく初学者向けのチュートリアルを複数やってみるのがおすすめです。がんばって!

チュートリアルの見本のコードはコピペしないで自分で入力してね。でも、ただ写して動かしてみるだけでも意味がありません。コードを手打ちで入力する意味は、コードを入力しながら非常に遅いスピードで読めることにあります。自分がいまなにを書いているのか、なにをしているのか、というのを一行ずつ読んで調べて考えることが大事です。それができないと結局、自分でなにかをやりたいときになにもわからなくなります。それと英語なので大変ですが、エラーの文章(コード間違ってるときに出る赤いやつ)は読む癖をつけてください。エラーの原因が書いています。エラー文をコピーして検索してみるのもいいです。

ある程度チュートリアルをやったら、なにかを写したりせずに自分でちょっとしたものを作ってみてください。例えば……

ランダムに生成した数が偶数ならその数を、奇数ならそれを3で割った余りをコンソールに表示するのを100回繰り返すプログラムを書く。

1から300までfizzbuzzテストを行った後に、fizzが何回、buzzが何回、fizzbuzzが何回あったか結果を表示するプログラムを書く。

1~3までの数をランダムに表示するのを繰り返し、どこかで『123』の並びが完成したか、『123』の並びが完成せずに300回表示が行われた地点で停止するプログラムを書く

とか……。なんでもいいです。わからないことがあったら調べたり、チュートリアル見返してみたり、新しいチュートリアルやったり、資料読んだりするといいです。泥臭くて汚いコードでもそんなに気にしないで(わたしのコードを見たプログラマーは悲鳴をあげます。だからプログラマーと組んだというのはあるのですが、少なくとも無料版のファミレスもいるかも自分でコードを書いています)。ゲームは動けばなんとかなるし、現代のPCの性能ならプログラムが冗長でも動きます。

しっかり勉強したいと思った場合(というかわたしがそうしただけですが)、『独習JavaScript』などの網羅的に書かれた本を買って演習とかやりながら全部読む、とかもありです。このタイミングじゃなくてもいいのですが、どこかの段階では、ある程度しっかりとプログラムへの理解を深める必要があります。例えばif文とか&&演算子が実際にはなにを行っているの、とか……。プログラミングに限らず、自分がいまなにを行っているのかを理解することが大事です。

あと数学もある程度できたほうがいいです。中学レベルまでできたらいい感じです。昔わからなかったことも大人になってから勉強したらわかったりします。高校レベル、三角関数とかは必要になったら勉強しよう。

使うゲームエンジンを決める

ある程度プログラムができるようになったら、ゲームエンジンに触れていってもよさそうです。最初からゲームエンジンでプログラムも学ぶって手もあるんですけど、これだと下手に動かせる分、どこかで理解が足りずにつまづく気がします。

ゲームエンジンはゲームを作るソフトです。Unity、Unreal Engine、Game Makerとか……。アニメーションとか物理エンジンとかボタンとか、ゲームを作るのに便利な機能は色々入ってるけど、結局ゲームの仕組み自体は自分でがんばって作らなきゃいけないです。プログラム書かなくていいこともあるけど、基本は書きます。ゲームエンジンを使わずにゲームを作る、ということはおすすめしません。大変だし情報が少ないです。

それで、どのゲームエンジンを使うか決めます。インターネット上にはどのゲームエンジンを使うべきか???って記事が大量にあるのですが、結局はどれでもいいです。というのも、ひとつのゲームエンジンの使い方がなんとなくわかれば、ほかのゲームエンジンを学ぶのもけっこう楽になるからです。

それに、このゲームエンジンでしか作れないゲーム、というものは基本的にはありません(3Dがだめなエンジンとかはあるよ)。『ファミレスを享受せよ』もそうなのですが、ゲームエンジンを変えて作り直しても遊ぶ側は違いがわかりません(これって移植した方がすごいだけなのかも)。なのでそんなに気負わずに決めていいと思います。わたしはUnityとGodotしか触ったことがないので、そのふたつ以外についてはなんとなくで読んでください。

Unity

迷ったらとりあえずこれでいいです。使用している人が多くてコミュニティが活発、日本語の情報もたくさんある、というのがなによりの強みです。こういうことしたいって調べたら、だれかの書いた記事がたいてい見つかる。

おいし水のゲームだと『いるかにうろこがないわけ』とか『METRO PENGUIN EUTOPIA』とか。『ファミレスを享受せよ』の移植版もそうです。多分、今後のゲームでも月刊湿地帯はUnityなんじゃないかと思います。

そこまでではないのですが、起動とかが長くてちょっと動作が重たいです。ゲーム作るぞって起動した後の待ち時間でちょっとやる気なくなる。あと個人的にはUIが好みじゃない。

Godot

使用者が増えつつある、新進気鋭のエンジンです。まずなにより軽いです。ゲームエンジン自体も50MBとかだった気がする。起動も一瞬。ノートパソコンでも全然いけると思います。プログラムが得意な人には使いにくいそうですが、Godot用に作られたGDScriptというプログラミング言語が使いやすいです。あとUIもシンプルでいいです。

おいし水のゲームだと『LongOne』と『ファミレスを享受せよ』のブラウザ版。いとしのゲームエンジン。2dが得意ですが、最近は3dもけっこういけるらしい。

まだ情報が少ないです。最近バージョンが3から4にアップデートしたこともあり、日本語のチュートリアルで最新バージョンのものはあまりないかも。ちゃんと公式のドキュメントを読んだり、英語で調べたりできるならありです。あと日本のコミュニティもあるよ。

Game Maker

2dが得意。3dはできないかも(違ったらごめん)。そこまでプログラムができなくても作りやすいらしい(でも絶対プログラミングできるほうがいいです)。わたしの大好きなNuclear ThroneはGame Maker制です。優れたシンプルなインディーゲームはGame Makerがちです。

Unreal Engine

3dが得意。重たいらしい……。

PICO-8

グラフィック、音楽とか、すべてがこれひとつで完結する(多分)総合開発ツールです。レトロゲーム風で解像度も128x128で固定など、制約も多いですが作りやすそうです(勘で言ってる!)。

RPGツクール

プログラム書かなくても形にできます。プログラム書いたりして拡張したりもできるけど、徹底的に突き詰めない限りはどうしてもRPGツクール特有のシステムや雰囲気、みたいなのはけっこう出てしまいます。作りたいものがRPGツクール的なものならいいと思います。

WOLF RPGエディター

プログラムは書かないですが、RPGツクールより複雑です。プログラムの考え方はしっかり求められる感じ。その分拡張性がかなり高いです。RPG以外も全然作れる。ほとんど知らずにこれ書いてます。

ティラノビルダー/ティラノスクリプト

ノベルゲーム作りやすいらしいです。

正確にはゲームエンジンじゃないのもあるかも。個人的にはUnity、Godot、Game Makerあたりがいいんじゃないかと思います。でもこれはわたしの趣味でしかないから、あんまり気にしないでください。

チュートリアルを探してやっていく

感覚的な話になるのですが、そのゲームエンジンでゲームを作っていく感じを把握していく必要があります。一連の流れというか……。こういうことをしたいときにどうすればいいのか。あともちろんそのエンジンのプログラム言語も。ひとまずは、チュートリアルで一連の制作を何度か体験してみることが重要です。チュートリアルでなんか作った後に、ちょっと数字とかプログラムを変えてみてアレンジしてみるのもいいです。

そのゲームエンジンの公式が提供しているチュートリアルはとりあえず触れてみるのがいいかも。でもなんかUnityはわかりにくそうだった。そのほか、個人が作ってるやつとか、とにかく色々やってみましょう。まずは数をこなすのが大事です。インターネットって情報多すぎるからチュートリアル本を買ってやってみるのはけっこうありだと思います。個人的には本以外のもの、オンラインの講座みたいのにはお金使わない方がいいとは思います。善意で成り立っていたものを商業の領域で再現しようとすることで本質が損なわれています。

Unity

Unityは特にプログラミング教室等へ誘導したい企業が参入しすぎて検索が機能しなくなっているので、本などを買ったほうがいいかもしれません。インターネット上なら個人が勝手に無償でやってるチュートリアルがおすすめ。

Unity 2D Puzzle Game Tutorial
個人がやってるやつ。配列とか出てくるね

Unity入門【初心者為の使い方講座】【実際にゲームを作って解説】
個人がやってるやつ。C#の説明もありそう。

ゲーム作り方ガイド
個人がやってるやつ。いわゆるランゲームを作る感じっぽい。

【Unity入門】60分で作るシューティングゲーム
個人がやってるやつ。シンプルなシューティングは基礎的な内容が詰まっていて最初のほうにやってみるのにおすすめです。

Unityでブロック崩しを作成する
ブロック崩しのチュートリアルもおすすめです。基本的なものがいろいろ入ってる。

Godot

逆に、まだ善意の人しかいないのでチュートリアルがいい感じかも。

最初の2Dゲーム
公式のチュートリアル。まずやってみるといいです。

Peanuts Code
Godotだとこのサイトがすごく助かったのですが、最新バージョンではないからけっこう違うかもしれない。まずはブロック崩しおすすめ。

【Godot4.x】クリックゲームチュートリアル
Godot4に対応してます。

UnityとGodotだけでごめん。チュートリアルで詰まったりすることもあるかもしれませんが、調べたりコードを読み直したりしながらがんばってください。根気もってやろう。チュートリアルとのバージョン違いでできないこともありがちなので、そのあたりも注意してください。たまにマジで意味不明のエラーとかで詰むこともあり、調べても全然ってときは別のチュートリアル行ってもいいかも。でもなるべく粘ったほうがいいかも。

調べながら自分で作ってみる

チュートリアルをある程度やったとして、超ざっくりなんとなくの機能はわかったけど、これでわたしの作りたいゲームが作れる未来が見えない、みたいな気持ちになるのではないかと思います。そうです。

チュートリアル自体に意味がないわけではないのですが限界はあります。ゲーム制作に習熟するためには、自分でいちいち調べながら苦労してオリジナルのものを作ってみる、というのがいちばん効果があります。だから、ある程度チュートリアルをやったら自分で色々作ってみましょう。

わからなくなったらその都度調べてください。例えば、インターネットには「ロックマン風のアクションゲームの作り方」みたいな情報はあまりありませんが、「キャラクターをジャンプさせる方法」、「キャラクターに弾を撃たせる方法」、「弾に当たったときにダメージを受ける仕組み」、「HPバーの作り方」みたいな個々の要素についての情報はけっこうあります。

最初に作るものは、短期間で完成させられるものがいいです。ミニゲーム作ろう。一日以内とか一週間以内で完成、くらいを目途にしたらいいと思います。たいていその3倍はかかります。ゲームジャムなどを利用して、時間制限を設けるのはかなりありです。わたしは月刊湿地体を月に一度は更新することを課していたので、最初は一ヵ月でひとつゲームを作っていました。そういう仕組みを利用するといいです。

最初のうちに作ってみるおすすめ

・ブロック崩し
・フラッピーバード的なやつ
・2dのジャンプアクション
・インベーダーくらいのシンプルなシューティング
・タイトル画面(開始ボタン押したらゲーム本編に進んだりする)

慣れてきたらおすすめ

・マインスイーパー
・シンプルなノベルゲーム
・シンプルなポイントアンドクリックの仕組み
・じゃんけん的な三すくみでターン制で戦う、超シンプルなRPG的な戦闘とか
・見下ろし型の全方位シューティング

わたしは、志の高いものを作ろうとして完成しないよりは、たくさん妥協して完成させるほうが断然いいと思っています。最初から自分のすべてを賭けないでください。例えば壮大なアドベンチャーを作りたいのなら、まずは5~10分程度で遊べるごく小規模な番外編を作ってみたり、まずは完成させることを第一に動いてください。実際、完成させるまでやらないと経験値が入ってこないんです。作ることと完成させることは別だから。

そして最初のうちは、理想のゲームのためにめちゃくちゃ勉強する、というよりは直近で学習した仕組みを活用してどのようなゲームが作れるか、みたいな方向で考えたほうがいいかもしれません。できることだけで作ろうとしても、どこかでは新しいことが必要になるのでそこで調べたりしましょう。挫折したらもったいないですし、制約の中から生まれるものもあります。わたしが最初に公開した『湖』は、ゲームエンジンとかよくわからないからwebサイトを作るみたいな感じでゲームを作ってみようと思って制作したものです。結果的にいい感じにまとまったと思っています。不具合もあるけど無料だし気にしません。

そうこうやってるうちに自分の作りたいものを作る力(正確には、目的に必要な情報を適切に調べたり資料を読み解く力。あと根気)が身に付いてくるはずです。がんばってください。それと、最終的にチームで作ることになってプログラムをしない感じになっても、ゲーム制作の一連の流れを把握することの意味はめちゃくちゃあるので、意味、あります。

過去の自分が知りたかったことはだいたいこんな感じです。寄り道もしつつ色々試してみるのがいいと思います。さらに書くべきことを思い出したら追記します。