プログラミング初心者がUnityでゲームを作ってみた

mig

先月からプログラミングを始めた初心者が、さっそくUnityでゲームらしきものを作ってみた。

プログラミング歴

プログラミングはほぼ未経験である。

といっても完全未経験というわけではなく、5年ぐらい前のニート時代にRubyという言語を少しやって1日でやめたことがある。

環境構築とか”Hello World”とか四則演算のあたりで面倒になってやめたので、まあ未経験と変わりないレベルである。

で、先月からまた挑戦してみようと思って始めたところ。

Unityに出会うまで

最初はUnityでゲームを作ろうとかは全く考えておらず、30歳近い年になって何のスキルもない自分を憂いて、何となくプログラミングをやってみることに。

とりあえず人気のPythonという言語から始めた。

まずはProgateという学習サイトで、10日ほどかけてPython講座を2周終わらせた。

その後は何をすればいいのか分からなくなったので、とりあえずモチベーションが保ちやすそうなゲーム作りをやってみることに。

そこでUnityというゲーム制作ソフトを知るのだが、C#しか使えないということなので一旦スルーした。

そしてPythonでゲームが作れるPygameというライブラリを使うことにしたのだが、あまりにも難しくて挫折

ただ画像を表示するだけでも、よく分からないコードを書かないとダメだし…

とりあえず画像を回転させたり線を引いたりして遊んでたけど、一向にゲームを作れる気がしなかった。

ググっても出てきた記事のコードが全然理解できないし。

もっとお手軽な方法ないのかと色々調べてみたところ、

「Unityが使いやすい」「Unity凄い」

みたいなべた褒め記事がいっぱい出てきたので、観念してunityとC#を始めることにした。

さようならPython。

UnityとC#

Unityをやろうと決めたものの、何から始めたらいいのか分からなかったので、とりあえず体系的な知識を身に付けるためにUnityの教科書という簡単な入門書を買ってみた。

UnityだけでなくC#についても解説されてるので、プログラミング素人でも取っつきやすい良本だった。

特に僕の場合、事前にPythonでプログラミングの基礎を終えてたので、C#もササッと学習できた。

言語が変わっても多少書き方が変わるだけで、基本的な仕組みは変わらないようで安心した。

それで本に従ってUnityを色々と触ってみたところ、まあ評判通り使いやすいソフトだった。

Pygameみたいに全部コードで表現する必要はなく、画像やファイルをドラッグ&ドロップするだけで視覚的に作れる部分が多いので、プログラミング素人にはかなり嬉しい。

あとUnityは利用者も多いので、分からないことをググったら情報がたくさん出てくるのも良い。(難しくてよく分からない情報も多かったけど)

さっそくUnityで何か作ってみた

入門書を終わらせたので、さっそくゲームらしきものを作ってみることにした。

最初は本当に1から自分で作れるのか疑問だったが、やってみると意外となんとかなった。

といっても練習で作ったものなので、とても遊べるレベルには達していないけど…

1作目:シューティングっぽい何か

プレイはこちら。(PC用なのでスマホだとプレイできないかも)
https://unityroom.com/games/t001

製作期間:2日

「W」「A」「S」「D」キーで移動
スペースキーで攻撃

「敵」と「敵の弾丸」を量産しようとしたら何故かうまくいかなかったので、弾丸だけ自動生成にして敵オブジェクトは諦めて1つ1つ設置することにした。

敵の弾の発射動作を1匹ずつ分けて書いてるので、コードが無駄に長くなってしまった。

配列とか使えばスッキリ書けるのかな?とも思ったけど、ここは調べても意味不明だったのでゴリ押しで完成させた。

まだまだUnityの使い方もプログラミングもよく分かっていない。

とりあえず1日目でゲームの大枠を完成させて、2日目で色々な調整(ボスの動きとか、アニメーションとか、自機を画面外に出れないようにしたりとか、弾の連射を抑えたりとか)をやった。

こんなショボイのでも作るのは結構苦戦した。

おそらく10時間以上は費やしただろう。

といってもほとんどエラー対応と調べものに費やした時間なので、慣れればこのぐらいなら2~3時間で作れるようになると思う。

2作目:タワーディフェンスっぽい何か

プレイはこちら。
https://unityroom.com/games/t002

製作期間:4日

タワーを設置して拠点に攻めてくる敵を撃退するゲーム。

クリックでタワーを設置。
タワーは近くの敵を自動攻撃する。
敵を倒すと5ポイントのお金が手に入る。
タワーを設置するには30ポイント必要になる。
拠点の体力が0になるとゲームオーバー
スペースキーでリスタート
という流れ。

1作目はほとんど入門書の内容を応用しただけだったが、今回はググりながら様々な機能を実装していった。

攻撃対象として複数の敵の中から「タワーに一番近い敵」を1体選びたかったのだが、これが一番苦戦したところ。

色々試してもエラーが出まくってもう諦めようかと思ったが、最終的には敵オブジェクトを配列に入れてforeachで1つ1つ取得してifを通すことで、最短距離の敵を取得することになんとか成功した。

あとは変な動きをする部分を1つ1つ潰していったら、それっぽいゲームが完成した。

まあ色々と妥協した部分もあるが、大体思った通りのものが完成したので良しとしよう。

あとは様々な機能(複数種類の敵やタワー、レベルアップ機能など)を搭載し、デザインを改善すれば、普通にプレイできるタワーディフェンスゲームになりそう。(それが難しいのだが)

てか今のままではタワーを設置しまくる以外に選択肢がないので、ゲームとして成立していないな...

なかなか地道な作業だった

やってみて分かったのは、製作時間のほとんどは「調べる時間」だということ。

分からないことだらけなのでやり方を調べる。
やってみたらエラーが出るので原因を調べる。
また分からないことが出てくる。

この繰り返し。

おそらく経験を積めばエラーの原因もすぐに特定できるようになるんだろうけど、今のところ何がダメなのか見当が付かないことが多い。(後になって何となく分かったところもあるけど)

ゲーム制作というのはなかなか地道で進展のない作業なんだなと。

今の実力ではクソゲー以下のサンプルゲームみたいなのしか作れないので、今後は公式のチュートリアルを進めてUnityの使い方をしっかり押さえていこうと思う。

あとやっぱりコードをしっかり書けた方が表現の幅が広がると思うので、C#をもう少し本格的に勉強してみるつもりだ。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする