プログラミング学習日記3日目 「ゲームからWeb系への転向」

 

実際に作ってみる

テキストゲームの作り方の動画を見終わって、想像よりも目標物がハード+ゲーム作っている感が少ない、という観点からモチベーションが落ちた。

 

ということで、理論的でわかりやすい解説動画は一旦休止して、実際に簡単なゲームを作ってみました。

モチベーション維持のためにも、実際にゲームを作ってみるのが良いかなと思ったので、今日は本格的?にゲーム作りを開始しました。

 

参考にしたサイトは、おもちゃラボさんです。

【Unity入門】60分で作るシューティングゲーム 第1回 - おもちゃラボ
Unityをインストールしてみたけれども「どうやってゲームを作っていけばよいか分からない!」という方は多いと思います。 かくいう私もUnityを触り始めたときは、何をどうしていいのかさっぱり分かりませんでした。そこで、簡単なシューティングゲームを作りながらUnityの使い方を紹介できればと思います〜。 記事は第1回〜第...

 

三日坊主という言葉もありますし、ここでモチベーションを上げるのは大切ですよね。

こちらのサイトの通りにすれば多分作れるだろう、ということで見ながら作ってみました。

 

サイトにはスクリプトが書かれた後で、これを写してください的な感じでしたが、その関数の意味を自分で理解しながら作っていきました。

テキストゲームで、gameObjectにスクリプトを付ける意味を知っていたので、理解のスピードは結構早いかな、と思いました。

 

新しい発見

①gameObjectの位置を動かす関数。

テキストゲームしか勉強していなかったので、オブジェクトを動かす関数は初めてみました。

アクションゲームなどでは不可欠な関数ですね。

 

②Prefabの作り方と意味。

インスタンス化などは大切ですよね。

これを活用すれば、出現するオブジェクト全てを個別に作成する必要がなくなるので、便利ですね。

(理解度低いから少し間違っているかも)

 

③GetKeyDownとGetKeyの違い。

前者が押した時に一度だけ動く。

後者は押している間は動き続ける。

つまり、前者はクリック、後者は連射みたいな感じ。

 

④画面外にいったオブジェクトを消すまでが1セット。

消さないとずっとバックグラウンドで存在し続けるらしい。

それによってオブジェクトが多くなりすぎて処理おちするとのこと。

昔のゲームだと、画面内に表示できるオブジェクト数に制限があるから、こういう技を使えばオブジェクトを出現させずにゲームを進めることができる、というのを聞いたことがあります。

RTA動画なんかでは時々言われていることですね。

なので、画面から消えたらキチンとオブジェクトはdestroyしましょうということですね。

 

開発過程

最初は順調に進んでいきましたが、隕石を自動で出現させ続けるというところで異常事態が起きました。

まず、理想形がこちら。

ポロポロと隕石が降ってくる、まあざっくり言えばのんびりとした画面。

 

で、私がプログラムして起動させたゲーム画面がこちら

なんだこの無理ゲー!?

 

はい、めちゃくちゃ降ってきたんですよね。

攻撃して隕石を破壊するゲームとはいえ、これはやりすぎですね・・・・・・。

起動して数秒後にこれだけの隕石が降ってきて、おもわず笑ってしまいました。

 

 

Updateのところに入れているので、1フレーム毎に1個発生していると考えれば、まあそんな数になるのかなといった感じです。

 

プログラミング経験者なら多分多いだろう、思い通りに行かなくなる現象が多発。

まず、canvasの大きさ調整。

Render ModeからCameraと同じに設定する。

ScalarのUI Scale ModeもScreen Sizeに調整。

Reference Resolutionも画面サイズと同じに書き直す。

これでようやくCanvasのサイズが画面サイズと一致。

 

次に出てきた問題が、テキストが表示されないということ。

これに関しては新しくテキストを作り直せば出現したので、解決。

 

文字サイズを大きくすると表示されなくなることがあったけど、28以上になると消える、ということから、テキストの表示範囲が枷になっている可能性を見てその範囲を大きくすれば無事表示されるようになった。

 

スクリプトのエラーなら問題点が目に見えて直したりできるんだけど、オブジェクトが表示されないなどの不具合はめんどくさい。

目に見えない部分のエラーというのは調べるのも、解決させるのも辛かった。

Canvasの表示チェックが入っていないとか、そんなのあるわけねえだろ!

と思ってしまうことが何度もあった。

エラーの内容なんて人それぞれなのだから、自分のつまずいている部分にピンポイントで解決策を提示してくれることなんてないんだな、という当たり前のことを知った。

 

ググれば最終的になんとかなるとは言え、時間的にももう少し調査能力をあげたいと思った。

あと、基本的なUnity操作についてももう少し勉強の余地があるな、という問題点を知れた。

 

Text邪魔問題

真ん中にGameOver用のテキストを配置したのですが、このNew Textという表示がずっと画面上に出続けます。

ゲーム的に邪魔なので、文字を消すとこれは表示されなくなった(当然だけど)。

そして、その何も書いていない状態から、隕石が−5になった時にGameOverという文字を表示する。

この流れが完成した。

 

 

 

 

ということで完成しました。

サイトの通りにすれば作れると思いますが、今回私は色々問題を抱えたままとりあえず最後まで突っ走ったので、かなり雑な作りになっていると思います。

処女作ということで記念に残しておきます。

※ブラウザにUnityを載せる方法が難しすぎたので、保留。見栄えがまともになったらUnityのコミュニティに載せたいな。

 

にしても、見本を見ながら作っているはずなのにこのゲームを作るのに半日もかかってしまった・・・。

別に問題ないですけど、これは本業としてできるようになるには時間がかかるなぁ・・・。

できれば夜勤が強制されるような会社は早く抜けたいし、すぐに稼げるプログラミング言語に軽く方向転換しようかな。

Web系を勉強して転職をして、そこからスキルを磨いたりプログラミングの環境を得てからゲームプログラマーを目指せるならそれもいいのかな。

 

若い時間は有限だし、出来る限り早く稼げて転職可能なスキルを身に付けたいし。

余裕が出てきたらまたゲーム開発系に戻ってきたいです。

 

ということで、転向いたします。

ゲームプログラマーではなく、幅広いプログラマーになるまでの日記に変わりますが、どうぞよろしくお願いします。

 

 

 

コメント

タイトルとURLをコピーしました