ゼロから2年間独学でゲーム作った振り返り
独学で Unity を使ってゲーム作ってます。2018 年の 4 月で 2 年目になります。
それ以前は Unity やプログラミングを知らない学生でした。
記事を書いた理由
独学でやってて気になったのが
専門学校とかで学ぶのと、どれくらい違うんだろう
ということでした。例えば専門学生なら知っていて当然の知識を知らないんだろうなー
とかそんな心配をしてしまいます。
そんなことを考えていたら、ふと
逆に、独学で学んだらどんな感じなんだろうと気になる方もいるかも
と思ったので記事を書いてみました。というかよく考えたら私も
ゲーム制作始める前は出来るか不安だったので、そんな方にも一例として見て頂けたら嬉しいです。
そして、
・学校ではこんなだったよー、こんなことも習ったよー
・自分もそうだったよー
・独学でゲーム制作始めましたー
みたいなことを教えて頂けると嬉しいなー、とチラチラ皆さんを見つめております。
(ちなみに記事の内容はあくまで一例です!ご注意を!)
振り返る内容
この 2 年の間、メインでやってきた以下のものを軸に振り返ります。
・プログラミング( C# や Shader )
・ゲーム制作の勉強
Unity の使い方は恐らく多くの方がご自身で学ぶ(多分…)気がするのであまり触れません。
Unity 以外のエンジンもありますしね。
また、作成したアプリゲームは DL 数なんかも載せておきます。
振り返り
〇始まり
たまたま長期の休暇ができたので、昔からやりたかったゲーム制作をやってみようと思いました。
タイトルの通り始めは何も知らない状態です。
具体的には Unity や Unity で使われる C# というプログラミング言語も知らない状態です。
ちなみに始めに作りたかったゲームはアクションゲームです。
〇ゲームの作り方を調べる
まずは検索です。とにかく出てくるゲーム制作ツールの多さに驚きました。
なのでツール選びから始まります。あくまで目標はアクションゲームですが、
将来的にはもっと様々な種類のゲームを作りたいと思っていました。
また、きっとプログラムっていつか通る道だろうと思っていたので Unity と C# を勉強することに決めました。
〇勉強を始めたものの…
ということでまずはUnityのチュートリアルをやりました。
float や Int 、string などの使い方を調べながら、なんとか球ころがしができました。
(float の意味は分かってなかったです。浮いてる?)
もう一つ、シューティングのチュートリアルがあったのでこちらにも挑戦しました。
しかし、プログラミングで何をしているのか分からない。
(引数のあるメソッドとかが使われていました。メソッド自体を知らないので…。)
じゃあ C# の基礎を勉強しようと思って検索しました。
でも全く分からない。というより段々何が分からないのか分からなくなっていきました。
正直に言うと、Unity や C# の勉強がしたいのではなくゲームが作りたい、という思いが強かったのでモチベーションが保てなかったのも原因だと思います。
〇 分からないけどとりあえず使う
まあとりあえず使ってればそのうち法則が分かるかもなー
という感じで分からないものは「こう書けばこうなる」ってことを覚え始めました。
Unity のチュートリアルは終わりました。アクションが作りたいので次はこちらのチュートリアルに挑戦します。
http://hiyotama.hatenablog.com/entry/2015/06/12/153523
コメントを見ながらとにかく調べながらやっていると、やはり法則みたいなのが見えてきました。
以下に一例をあげます。
・上にある using とか良く分からないけどいじらない方が良い
・文字の後に () を付けないとダメなものがある(例、vector3() など)
・GetComponentの後には <> と () が必要
なんとなくいじれる部分も分かってきました。ここまでで 1 か月くらいかかってます。
〇とにかくゲームが作りたいので!
ほぼコピペですがコードの書き方が分かりました。使える C# の知識は
if、bool、int、float、string
くらいです。後は Unity の機能を使うためのコード少し。これらを引っ提げてゲーム制作開始です。
私はこれだけの知識でもゲームが作れました。
分からないものは適宜調べれば見つかりますし、 Unity の機能も凄く便利です。
例えばランダムやパーティクルを知らなくても、Animator で拡散する球を作れます。
こんな感じで試行錯誤を繰り返し、作り終わったのは3か月後でした。
現在は配信していませんが、Android のゲームです。
作り終わってからずっと、
「ああ、神ゲーができてしまった…ランキングを賑やかしてしまうなあ…」
なんてウキウキしながら Google Play Store に出しました。
DL 数は 5 でした。
…まあとりあえず Unity の使い方やコードのそれっぽい書き方は理解できました!
〇変化( Unity の勉強がしたい)
ゲームを作ってみると、 Unity って凄い、もっと Unity を知りたいという思いになりました。
https://www.amazon.co.jp/dp/4274069222/ref=cm_sw_r_tw_dp_U_x_gIYCAbNTKV5A1
今までの経験があったのでサクサク読めました。
中でも
・マテリアル使って出来る鉄の表現が凄く綺麗
・パーティクル凄い
・Reflection Probe がなんかとりあえず凄い
ということに感動したので、この 3 つを題材にしたゲームを作りました。
制作期間は 1 か月です。こちらも現在は配信していませんが Android のゲームです。
前回の反省を生かし、予約トップ 10 様に登録してからリリースしました。
無料でゲームを登録できるのでオススメです。DL 数は 100 になりました。
〇遺伝的アルゴリズムを作る
2 つ目のゲームを作る過程で配列の存在を知りました。
もしかしたら出来るかも、ということで遺伝的アルゴリズムっぽいのを作りました。
以下の動画を参考にしました。
https://www.youtube.com/watch?v=gWExx-NpimQ
ちなみにこんな感じです。Generation が進むと球が右に進むようになってます。
方法とか色々ガバガバなんですが、とりあえずそれっぽいのが出来て大満足です。
〇変化( C# の勉強がしたい)
段々とプログラミングの楽しさに目覚めてきました。もっときれいに書きたい、
いろんなことしたい、ということで C# の基礎を検索して再び勉強してみました。
始めにやった時より明らかに楽しくてスラスラと進みました。
浮動小数点とか色々感覚で使っていたものを整理できました。
そしてここで Switch 構文を知りました。物凄く便利です。
〇ちょっとした目標
ゲームを作り始めて間もないころ、実はこんなものを見つけていました。
無料の 3D モデルです。凄くかわいいです。
早速使ってみましたが、残念ながら当時は全く使い方が分からなかったです。
いつかこれを使ってゲームを作りたいなあ、と思っていました。
ここまで色々勉強してきたので、久しぶりに見直してみようと思いました。
そしたらなんと理解できます。成長を感じられて嬉しいです。
ちなみにここで Enum やメソッドなんかを覚えました。
そして 3 か月くらいかけ、無事ゲームを作ることができました。
こちらも Android 用のゲームです。DL 数は 250 くらいでした。
この辺から反応頂けるようになってきて嬉しかったです。
〇シェーダーを知る
もっと面白い表現ができるようになりたい、とにかくまだまだ知識が足りないと思って調べていたら、
http://tips.hecomi.com/entry/2014/03/16/233943
シェーダーに出会いました。
こんなことが出来るのかー、となんかもう革命が起こったような感じでした。
早速勉強を始めました。シェーダーの書き方は見慣れないものでした。
ですが、C# を感覚でコピペしていた頃とさほど変わらなかったのでここは大丈夫でした。
ただ問題は、やりたいことを検索しても出てこないことです。
用語を調べても良く分からない。そもそもこれは何をしているのか…。
残念ですが、なんかもう嫌になりそうだったので止む無く断念です。
〇気を取り直してゲームを作成
そういえばかくれんぼみたいなゲーム作りたいなー、と思って隠れて進むゲーム作りました。
製作期間は1か月半くらいです。
今回から Android に加え iOS バージョンも出しました。DL 数は計1300 くらい。
ユーザーの方から続編を希望して頂けたり、本当に嬉しかったです。
(ちょっとした宣伝。実は Mac がないと iOS アプリは作れません。ですが、こちらの方法なら Windows だけで iOS アプリ作れます。)
〇シェーダーに再び挑戦
ゲームを作りながらシェーダーをどうすれば学べるか考えていました。やっぱり楽しそうなので。
調べて分からないなら書籍で学ぼう、ということで思い切って英語の本を買いました。
https://www.packtpub.com/game-development/unity-5x-shaders-and-effects-cookbook
TOEIC 370 点の実力が発揮されましたが、やる気になれば読めます。
何よりずっとやりたかったことなので楽しかったです。
これでシェーダーについてある程度知ることができました。
ここまでが勉強を始めて 1 年くらいです。
〇Unity1Weekへ参加
Unity1Week は「一週間でゲームを作って公開しよう」というイベントです。
以下のサイトを見てもらえれば分かりますが、毎回たくさんの方が参加しています。
https://unityroom.com/unity1weeks
こういったイベントに参加したこと無かった & なんか面白そうということで参加しました。
今まで数か月単位でゲームを作ってましたが、本当に一週間ですべてが終わります。
そして他の方の進捗も見れるのでお祭り感が凄いです。
作り終わったらアドバイスを頂けたり他の方のゲームも学べたりで、本当にありがたいイベントでした。
ここから数か月間は Unity1Week → 課題や気になったことの勉強をしていきます。
一部ですがやったことを上げておきます。
・もっとC#を知りたかったので書籍を購入、ポリモーフィズムや Linq を知る
https://www.amazon.co.jp/dp/4774187585/ref=cm_sw_r_tw_dp_U_x_j2vDAb7SHHA3M
・メッシュの作成や頂点移動面白い
・メタボールをとりあえず理解する
〇やりたいことが増えてくる
こんな感じでシェーダーやら C# の勉強、面白そうな表現の勉強を続けていると、
どんどんやりたいことが増えてくるのでそれをまた勉強して…。
あれ、面白いゲームってなんだろうって考えたり…。
こんなことを繰り返すうちにあっという間に数か月経ちました。
〇またゲームを作る
もっと面白いゲームを作りたいなあ…。
と思っていたらこんなものが!
これを参考にまたゲーム作りました。
今回はアプリではなく、Web上で出来るやつです。
他にもやりたかった表現とかもあるのですが、1 か月で作り切ろうと決めていたので断念。
反省も多かったので次回に生かしたいです。
今回で Rx 系を知りました。まだまだやりたいこと、学びたいことが沢山です。
〇現在
とりあえず今やりたいことの一部です。
・SOLID原則を使ってゲームを作ってみたい
・シェーダーの勉強(ハイトマップやらテッセレーションが面白そう)
・フラクタルな何かを作りたい
・数学的な知識が全く足りてないので線形代数などを勉強
まだまだあります。楽しいです。
まとめ
長くなりましたが適当に振り返りました。
他にも色々な書籍や技術に手を出しているのですが、とりあえずはこんな感じです。
面白そうと思ったらとりあえず勉強して、分からなくて嫌になったら積んでおくって感じでやってきました。
なので基本的なことをちゃんと分かってるのかなーと不安になったりします。
例えばGetComponentとかでよく見る<> ←これ
なんて名前なのか知らないです。
あと CPU と GPU なども理解できていないです。
なのに Compute Shader に手を出していたり。
そうすると、専門学校などで学ぶのとどのくらい違うんだろう
とか、そもそも専門学校でどこまで勉強するんだろう
と気になってしまいます。
ただ、ゲーム制作自体はやってみると意外と何とかなりました。
そしてゲーム制作を始める前よりも勉強が楽しくなりました。
とにかくいろんな方のおかげです。ありがとうございます。
初めにも書きましたが
・学校ではこんなだったよー
・自分もそうだったよー
・独学でゲーム制作始めましたー
みたいなことを教えて頂けると嬉しいです。
(というか文字だけだと書ききれない部分があり過ぎたので伝わってるのか不安ですが…)
また、疑問や感想なども教えて頂けると記事がレベルアップするかもしれません!
ここまで読んでくださってありがとうございました!
お疲れ様でしたー!
2018/12/31 追記
その後どうなったかの話を書きました。ぜひ!