すごいゲーム作りたい!

Twitterで書ききれないことを載せる予定です。Unity勉強中!

ゲーム会社に入りました

以前こんな記事を書きました。

ざっくり言うと、大学休学して独学でゲーム作ったよーって内容です。

nknkybigames.hatenablog.com

改めて読み直したら内容がガバガバで黒歴史感ありますが、

こんな記事でも毎日100人以上の方が見てくれてるらしいですね。

ありがとうございます。

 

この記事を書いた頃(10か月前)はまだ大学生でした。

現在は某ゲーム会社への就職して色々勉強中です。

一応プログラマーやってます。

 

せっかくなので

・就活を簡単に振り返りつつ

・独学ではなく、人に教えてもらって感じたこと

辺りを以前の記事の補足程度に書いておこうかなーと思いました。

プログラマーなのでそっち寄りの話になる部分もありますが。

 

簡単な自己紹介

始めにも書きましたが大学を休学して独学で2年間ゲームを作ってました。

色々と事情があったり、独学での勉強に限界を感じたので、今年(2018年)の4月頃から休学中に

就活を始めて、就職先が決まったら大学も辞めようと思ってました。

結果として就職も決まり、大学も辞めました。

 

就活でやったこと

ゲーム会社にプログラマーで入りたいなと思っていました。

しかし退学予定だったので新卒で受けるわけにもいかないし、

そんな自分が一人で就活しても厳しいんじゃないかなと思っていました。

そんなときTwitterでちょうど自分の相談に乗ってくれる方がいたので就活の方法を聞きに行きました。

 そこで教えてもらったことは、

・とにかく直接メールで聞いてごらん、新卒でとってくれるかもよ?

面白いポートフォリオ作るといいよ?

といった感じでした。

 

※面白いって何?

ポートフォリオの作り方は検索すれば沢山出てきます。

面接官はもう見飽きているようです。

だから目を引くものでないとダメみたいですね。

例えばプログラマー志望の場合

自分でゲーム作りました!

よりも

自分でゲーム作りました!こんなコード書いたよ!載っけたから見てみて!

こっちの方相手に意図が伝わりますし、なんか面白いです。

まあ読んでもらえるかは別として

 

そんな知識を引っ提げて数ヶ月就活してました。

とはいえ基本お祈りメールです。まあキツかったです。

 

人との繋がり大事

一人だったら確実に心折れていました。

でも意外とTwitterには同じような境遇の人がいました。

とても助かりました。

今度焼き肉食べに行きましょう。

また、自分を応援してくれる人もいました。

結果的に無事就職出来ましたがそういった方々のおかげです。

 

独学ではなく社会で教えてもらえるように

就職したので人に直接質問ができるようになりました。

独学では厳しいかなと思い始めていたのでありがたい限りです。

そして実感するのが、自分の知識がガバガバなことです。

そして自分の場合、独学で好きなことをやってただけなので特に。

例:

UniRxちょっと書けるよ!

え、オブザーバーパターン?何それ?

 

そして周りの人みんな凄いんです。 

そんな凄い人から教えてもらえるのでとても捗ります。当然です。

 

また、学び方を教えてくれたことも嬉しかったです。

今大事にしていることが、

「それ、言葉で説明できる?」

ということです。

例えば、C#にはLinQというものがあります。

これって何なのか人に説明できるでしょうか?

私はできませんでした。というかまだ説明出来ないと諦めていました。

 

ある程度言葉で説明できると、

どこまで分かっていてどこが分からないか、

もっと言うとゲームを作るという目標のためにどこまで知るべきか、

そもそもこれを使うべきなのか、

といったことを考えるようになりました。

 

実際にやったこととしては、LinQ等について自分なりに言葉で説明して

それを先輩に確認して内容を調整するという感じです。

そうすると自分の知識に自信がついてきました。 

独学でやってたときに、

なんとなく分かったつもりになって、でも全く自信がない、

そんなことが多々あったんですけどこれが原因だったのかな?と思いました。 

まあ、独学で好きなことを好きなだけやるのだって凄く楽しかったですが!

 

あと皆かなりゲームやってました。

だから年末年始はドラクエビルダーズ2やります。

楽しみにしてたし。

 

最後に

全体的にもう少し踏み込んだ内容を書こうと思ってたんですが、
まあ以前の記事の補足なのでこのくらいで!
また現在進行形ですが、多くの方にお世話になりました。

本当にありがとうございました。 

何か質問や意見があればコメントやTwitterなんかで教えて下さい。

可能な限りお答えします。

 

お疲れ様でしたー。

スクリプト上で Collider の設定をいじって当たり判定を変えるときは注意が必要かもしれない

とあるゲームにバグが出たので調べてみました。

前提

◆以下の内容を見ながら進めていきます。 

docs.unity3d.com

◆ FixedUpdate から yield WaitForFixedUpdate まで流れをマニュアル通り physics cycle と呼びます。 

◆ Unityのバージョンは 2017.2.1 です。 

 

記事の内容

 Unity で当たり判定を使う場合は OnTrigger と OnCollision を使用します。

この 2 つは 一度の physics cycle で複数のコライダーと判定することがあります。

ですが時には、

 複数回当たってほしくない、一度だけでいい!

という場合もあります。そんな時は 、

GetComponent<Collider>().enabled = false;

といったようにコライダーを無効化して対処してきました。

しかし恐らくこの回避法は間違っている、というのが今回の内容です。

 

実験してみる

OnTriggerEnter と OnCollisionEnter それぞれの判定を調べるために

 ①:同時に 100 個の球をターゲットに飛ばす

 ②:1フレームずつ球をターゲットに飛ばし、計 100 球(100 フレーム分)飛ばす

といったことをしてみました。

 また、① ② でターゲットに当たった時に

◎:GetComponent<Collider>().enabled = false;

を呼び出し、ターゲットの判定を消すとどうなるのかも調べました。

想定している挙動は一度だけ当たることです。

f:id:nknkYBI:20180308173950p:plain

 

結果

赤字は後々考察で使います

※ FixedTimestep はデフォルトの 0.02 です。

◆ OnTriggerEnter の場合

①:同時に 100 個

 全ての球が一度の physics cycle で判定されました。

f:id:nknkYBI:20180307173013p:plain

②:1フレームずつ 100 個

 判定が FixedTimestep 分だけズレたものがありますが、 全ての球が判定されました。

f:id:nknkYBI:20180307174514p:plain

① + ◎:同時に 100 個、当たったらコライダー消す

 1 つだけ判定されました。

f:id:nknkYBI:20180307174707p:plain

② + ◎:1フレームずつ 100 個、当たったらコライダー消す

 1 つだけ判定されました。

f:id:nknkYBI:20180307174917p:plain

 

◆ OnCollisionEnter の場合

①:同時に 100 個

  全ての球が一度の physics cycle で判定されました。

f:id:nknkYBI:20180307175424p:plain

②:1フレームずつ 100 個

 判定が FixedTimestep 分だけズレたものがありますが、 全ての球が判定されました。

f:id:nknkYBI:20180307175554p:plain

① + ◎:同時に 100 個、当たったらコライダー消す

 全ての球が一度の physics cycle で判定されました

f:id:nknkYBI:20180307180138p:plain

② + ◎:1フレームずつ 100 個、当たったらコライダー消す

 何度か試すと 1 つか 2 つほど判定されます。

f:id:nknkYBI:20180307180409p:plain

また FixedTimestep を 0.2 にすると更に多くの球が一度の physics cycle で判定されます。

21 球目以降は 1 球目の判定が始まった physics cycle では当たっておらず、

次の physics cycle ではコライダーが無いので判定されなかったと考えられます。

f:id:nknkYBI:20180307180726p:plain

 ちなみに

◎:GetComponent<Collider>().enabled = false;

◎:GetComponent<Collider>().isTrigger = false;

に変更しても結果は変わりませんでした。

コライダー自体の変更が反映されていないようです。

 

Stay, Exit の場合

 上記の OnTriggerEnter, OnCollisionEnter 以外にも

OnTriggerStay, OnTriggerExit, OnCollisionStay, OnCollisionExit

の 4 種でも同様の実験を行いましたが、同じような結果だったので割愛します。

 

恐らく…

 赤字で示した部分を見ると、

OnTrigger ではコライダーを消すことで判定がうまくいきますが、

OnCollision ではコライダーを消してもうまくいきません。

こうなってしまう原因は分かりません。

 ただ、マニュアルにもある通り OnTrigger と OnCollidion は FixedUpdate の後に実行されるようです。

つまりコライダー同士がぶつかるなどの物理演算が終わった後に実行されます。

 それなのに今更コライダーの設定変えられても困るよ!

ということかもしれないです。

なので本来は OnTrigger でもあまりコライダーを変更しない方が良いのかもしれないです。

 

結論

スクリプトでコライダーを変更する場合は注意が必要かも。

特に OnTrigger や OnCollision では注意!

yield WaitForFixedUpdate で待ってから変えるのが一番安全かもしれない。

◆一度だけの判定はコライダーをいじるのではなく、こんな感じで bool などを使った方が良さそう。

bool triggerHit = false;

private void OnTriggerEnter(Collider other) {
    if (triggerHit == false) {
        triggerHit = true;

        //何らかの処理
    }
}

bool collisionHit = false;

private void OnCollisionEnter(Collision collision) {
    if (collisionHit == false) {
        collisionHit = true;

        //何らかの処理
    }
}

 

おまけ 1:コライダーの変更は Physics と Game logic のどちらで変わるのか

 以下の条件を追加してみます。

③:Application.targetFrameRate = 1 にした後、yield WaitForFixedUpdate ずつ球をターゲットに飛ばし、計100球(FixedTimestep x 100 秒分)飛ばす

④:FixedTimestep を 1 にした後、1フレームずつ球をターゲットに飛ばし、計 100 球(100 フレーム分)飛ばす

そのうえで、

③ + ◎:Application.targetFrameRate = 1、yield WaitForFixedUpdate ずつ 100 個、当たったらコライダー消す

④ + ◎:FixedTimestep 1、1フレームずつ 100 個、当たったらコライダー消す

の 2 つを OnCollisionEnter で試してみました。

もし ③ + ◎ でコライダーが消えるのが遅ければ Game logic の方で変わることに、

もし ④ + ◎ でコライダーが消えるのが遅ければ Physics の方で変わることになるはずです。

 

結果は、 

③ + ◎:

f:id:nknkYBI:20180308170729p:plain

④ + ◎: 

f:id:nknkYBI:20180308171254p:plain

となりました。ということで恐らく Physics の方で変わっているのだと思われます。

(当然といえば当然かもしれないけど…)

 

おまけ 2:処理落ちすると…

 シューティングなどで球を連続で飛ばしている際に処理落ちすると、

一度の physics cycle 中に複数個の球が判定されやすくなるようです。

OnCollisionEnter で判定を取っている場合スコアを複数回送ってしまったりで非常に困ります。

記事の始めに書いたバグの原因はこれでした。

 マニュアルを参考にすると一度の physics cycle で処理しきれなかった場合、

次の physics cycle は処理を待機し、その次から再び処理を行うようです。

このようにして遅れた分だけ物理演算で沢山移動するので、

一度の physics cycle で多くの判定されやすくなるのかな?と思います。

逆に言えば処理落ちしても最大で FixedTimestep 分だけ移動や判定が遅れるだけなのかな?

あくまで考察ですが、とりあえず bool などで確実に一度だけの処理にした方が良さそうです。

 

Unity1Week(お題:当てる)ありましたね!

ありましたね!

今年初の Unity1Week!今回は「当てる」でした。

いつも通り振り返っておこうと思います。 

 

目標

 やりたいことは色々あったのですが、とりあえずこの2つを消化しようと思いました。

 ・いい感じの 3D の絵作り( Post Processing Stack をしっかり使えるようにする)

 ・SOLID原則でコードを書いてみる

 

作成

 「当てる + 3D」だともう「打ちまくって壊す」しか出てきませんでした。

この方向性で進めます。

 SOLID原則は基本的にはこちらを参考に進めていきます。

tsubakit1.hateblo.jp

 ・SOLID原則

 ・デザインパターン

 ・クラスを分ける

 ・インターフェイスを使う などなど

普段の自分の書き方と全く違ったので新鮮で楽しかったです。

何より、なんか綺麗にコード書けてる!という気持ちになれます。

でも実際、

 ・機能の追加や変更などがスムーズにできる

 ・原因不明のバグが少なくなりそう、というか今回は無い…はず

というのはなんとなく実感できました。

今回は一週間だったので大丈夫でしたが、もっと長期間の開発になればコードがぐちゃぐちゃになる気がします。

そうすると必要なのが、

なんだと思います。以前触ったときは便利さが分からなかったのですが、今なら分かるかも…。 

 ちなみにこんなのもあるみたいなので次の機会に使ってみたいです。

qiita.com

 

 こんな感じで勉強しているとあっという間に木曜日が終わりました。

ゲーム制作は全く進んでません。

 

 ここからはとにかくゲームを完成させるモードに入りました。

いつも通り遊びのデザイン講座と、

japan.unity3d.com

フォロワーの方から教えて頂いた進むことの面白さや単調さの回避を軸に考えました。

 ・一定数得点を得るとボーナスが出る

 ・初めとは違う色の敵(壊せるやつ)が出る

 ・最後は制限を取っ払って打ちまくる などなど

まだ変化をつけたかったのですが、

(例えば終盤に連れて敵の出てくる速度がアップするなど)

とりあえず以前よりは良くなったはず!

そんなこんなで4時間の遅刻を経てなんとか完成しました。

こんな感じで球を打ちまくって壊すゲームです。

f:id:nknkYBI:20180228180657g:plain

たまうち | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

 

技術的なこと

● オブジェクトプール

 Unityの Instantiateって結構重い処理らしいです。

qiita.com

今回は球を大量に打つ必要があったり、敵はこんな感じで大量の破片で構成されています。

毎回 Instantiateで作っていたら大変なことになるだろうなー。f:id:nknkYBI:20180228195155g:plain

ということでオブジェクトプールを使用しました。

ゲームを始めたときにあらかじめ球や敵をいくつか作って使い回してます。

こちらでは動画でオブジェクトプールの作り方を説明してくれています。

www.youtube.com

  また、今回は使いませんでしたが UniRx にも ObjectPool ってのがあるみたいです。

indie-du.com

こちらも次の機会に使ってみようかなーと思います。

 

● ガウシアンブラー

 ポーズ画面とかで背景をぼかしたいなー

ということでガウシアンブラーを使用しました。

f:id:nknkYBI:20180228201836p:plain

自作ではこれが限界でしたが、一応ゲーム内では使用しています。

ちなみにですが、検索すると凄くきれいなブラーが見つかります。

wordpress.notargs.com

 

反省

● サムネ

 サムネを直した方が良いというご指摘を頂けました。

f:id:nknkYBI:20180228180657g:plain

確かに面白くなさそう!

ということで色を少し濃いめにして、ゲームで面白そうな部分を新たにサムネにしてみました。

f:id:nknkYBI:20180228222955g:plain

こっちの方が面白そうな気がしますし、内容も伝わりそうです。

 

● UI(コンボ)

 今回のゲームのスコアは単純に

「敵を倒した得点 x コンボ(倍率) = スコア」という計算式でした。

ですが UI では「コンボ : 2.00」と表示されておりコンボが倍率である感じがしません。

同じお題で投稿されていた AroundStar というゲームでは

「Combo X 1.00」と表記されていました。

こちらの方が点数が倍率で上がる感じが分かりやすくていいな!と思いました。

なので x を付けてみました。

f:id:nknkYBI:20180301153709p:plain

 

● タイトルの音楽

 今回実は時間が無くてタイトルの音楽を入れていませんでした。

ですが、生放送などを見ているとどのくらいの音量か知るためにもやはり必要だと思いました。

特に今回のゲームはクリックした瞬間にすぐに始まるので、音量調整する暇もありません。

これはいけません。

 

● その他

 この他にもたくさんのことを学ばせていただきました。

次回以降に生かしたいと思います。

もしアドバイス等がありましたら教えて頂けると嬉しいです!

 

最後に 

 以前に比べ少しづつ成長している、なんてお言葉も頂けました。

ありがとうございます!

これからも頑張ります。お疲れ様でしたー!

ゼロから2年間独学でゲーム作った振り返り

  独学で Unity を使ってゲーム作ってます。2018 年の 4 月で 2 年目になります。

それ以前は Unity やプログラミングを知らない学生でした。

 

記事を書いた理由

 独学でやってて気になったのが

専門学校とかで学ぶのと、どれくらい違うんだろう

ということでした。例えば専門学生なら知っていて当然の知識を知らないんだろうなー

とかそんな心配をしてしまいます。

 そんなことを考えていたら、ふと

逆に、独学で学んだらどんな感じなんだろうと気になる方もいるかも

と思ったので記事を書いてみました。というかよく考えたら私も

ゲーム制作始める前は出来るか不安だったので、そんな方にも一例として見て頂けたら嬉しいです。

そして、

 ・学校ではこんなだったよー、こんなことも習ったよー

 ・自分もそうだったよー

 ・独学でゲーム制作始めましたー

みたいなことを教えて頂けると嬉しいなー、とチラチラ皆さんを見つめております。

(ちなみに記事の内容はあくまで一例です!ご注意を!)

 

振り返る内容

 この 2 年の間、メインでやってきた以下のものを軸に振り返ります。

 ・プログラミング( C# や Shader )

 ・ゲーム制作の勉強

Unity の使い方は恐らく多くの方がご自身で学ぶ(多分…)気がするのであまり触れません。

Unity 以外のエンジンもありますしね。

また、作成したアプリゲームは DL 数なんかも載せておきます。

 

振り返り

〇始まり

 たまたま長期の休暇ができたので、昔からやりたかったゲーム制作をやってみようと思いました。

タイトルの通り始めは何も知らない状態です。

具体的には Unity や Unity で使われる C# というプログラミング言語も知らない状態です。

ちなみに始めに作りたかったゲームはアクションゲームです。

 

〇ゲームの作り方を調べる

 まずは検索です。とにかく出てくるゲーム制作ツールの多さに驚きました。

なのでツール選びから始まります。あくまで目標はアクションゲームですが、

将来的にはもっと様々な種類のゲームを作りたいと思っていました。

また、きっとプログラムっていつか通る道だろうと思っていたので Unity と C# を勉強することに決めました。

 

〇勉強を始めたものの…

 ということでまずはUnityのチュートリアルをやりました。

http://tutorial.unity3d.jp/

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 で拡散する球を作れます。

f:id:nknkYBI:20180203192249g:plain

こんな感じで試行錯誤を繰り返し、作り終わったのは3か月後でした。

現在は配信していませんが、Android のゲームです。

f:id:nknkYBI:20180208162951g:plain

作り終わってからずっと、

「ああ、神ゲーができてしまった…ランキングを賑やかしてしまうなあ…」

なんてウキウキしながら 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 のゲームです。

f:id:nknkYBI:20180208165305g:plain

前回の反省を生かし、予約トップ 10 様に登録してからリリースしました。

無料でゲームを登録できるのでオススメです。DL 数は 100 になりました。

 

遺伝的アルゴリズムを作る

 2 つ目のゲームを作る過程で配列の存在を知りました。

もしかしたら出来るかも、ということで遺伝的アルゴリズムっぽいのを作りました。

以下の動画を参考にしました。

https://www.youtube.com/watch?v=gWExx-NpimQ

ちなみにこんな感じです。Generation が進むと球が右に進むようになってます。

f:id:nknkYBI:20180203222146g:plain

方法とか色々ガバガバなんですが、とりあえずそれっぽいのが出来て大満足です。

 
〇変化( C# の勉強がしたい)

 段々とプログラミングの楽しさに目覚めてきました。もっときれいに書きたい、

いろんなことしたい、ということで C# の基礎を検索して再び勉強してみました。

始めにやった時より明らかに楽しくてスラスラと進みました。

浮動小数点とか色々感覚で使っていたものを整理できました。

そしてここで Switch 構文を知りました。物凄く便利です。

 

〇ちょっとした目標

 ゲームを作り始めて間もないころ、実はこんなものを見つけていました。

無料の 3D モデルです。凄くかわいいです。

早速使ってみましたが、残念ながら当時は全く使い方が分からなかったです。

いつかこれを使ってゲームを作りたいなあ、と思っていました。

 ここまで色々勉強してきたので、久しぶりに見直してみようと思いました。

そしたらなんと理解できます。成長を感じられて嬉しいです。

ちなみにここで Enum やメソッドなんかを覚えました。

そして 3 か月くらいかけ、無事ゲームを作ることができました。

f:id:nknkYBI:20180208172130g:plain

こちらも Android 用のゲームです。DL 数は 250 くらいでした。

この辺から反応頂けるようになってきて嬉しかったです。

 

〇シェーダーを知る

 もっと面白い表現ができるようになりたい、とにかくまだまだ知識が足りないと思って調べていたら、

http://tips.hecomi.com/entry/2014/03/16/233943

シェーダーに出会いました。

こんなことが出来るのかー、となんかもう革命が起こったような感じでした。

早速勉強を始めました。シェーダーの書き方は見慣れないものでした。

ですが、C# を感覚でコピペしていた頃とさほど変わらなかったのでここは大丈夫でした。

ただ問題は、やりたいことを検索しても出てこないことです。

用語を調べても良く分からない。そもそもこれは何をしているのか…。

残念ですが、なんかもう嫌になりそうだったので止む無く断念です。

 
〇気を取り直してゲームを作成

 そういえばかくれんぼみたいなゲーム作りたいなー、と思って隠れて進むゲーム作りました。

f:id:nknkYBI:20180208173106g:plain

製作期間は1か月半くらいです。

今回から Android に加え iOS バージョンも出しました。DL 数は計1300 くらい。

ユーザーの方から続編を希望して頂けたり、本当に嬉しかったです。

(ちょっとした宣伝。実は Mac がないと iOS アプリは作れません。ですが、こちらの方法なら Windows だけで iOS アプリ作れます。)

pronama.azurewebsites.net 

〇シェーダーに再び挑戦

 ゲームを作りながらシェーダーをどうすれば学べるか考えていました。やっぱり楽しそうなので。

調べて分からないなら書籍で学ぼう、ということで思い切って英語の本を買いました。

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# の勉強、面白そうな表現の勉強を続けていると、

どんどんやりたいことが増えてくるのでそれをまた勉強して…。

あれ、面白いゲームってなんだろうって考えたり…。

こんなことを繰り返すうちにあっという間に数か月経ちました。

 

〇またゲームを作る

 もっと面白いゲームを作りたいなあ…。

と思っていたらこんなものが!

japan.unity3d.com

これを参考にまたゲーム作りました。

f:id:nknkYBI:20180208175939g:plain

今回はアプリではなく、Web上で出来るやつです。

他にもやりたかった表現とかもあるのですが、1 か月で作り切ろうと決めていたので断念。

反省も多かったので次回に生かしたいです。

今回で Rx 系を知りました。まだまだやりたいこと、学びたいことが沢山です。

 
〇現在

とりあえず今やりたいことの一部です。

 ・SOLID原則を使ってゲームを作ってみたい

 ・シェーダーの勉強(ハイトマップやらテッセレーションが面白そう)

 ・フラクタルな何かを作りたい

 ・数学的な知識が全く足りてないので線形代数などを勉強

まだまだあります。楽しいです。

 

まとめ

 長くなりましたが適当に振り返りました。

他にも色々な書籍や技術に手を出しているのですが、とりあえずはこんな感じです。

面白そうと思ったらとりあえず勉強して、分からなくて嫌になったら積んでおくって感じでやってきました。

なので基本的なことをちゃんと分かってるのかなーと不安になったりします。

例えばGetComponentとかでよく見る<> ←これ

なんて名前なのか知らないです。

あと CPU と GPU なども理解できていないです。

なのに Compute Shader に手を出していたり。

そうすると、専門学校などで学ぶのとどのくらい違うんだろう

とか、そもそも専門学校でどこまで勉強するんだろう

と気になってしまいます。

ただ、ゲーム制作自体はやってみると意外と何とかなりました。

そしてゲーム制作を始める前よりも勉強が楽しくなりました。

とにかくいろんな方のおかげです。ありがとうございます。

初めにも書きましたが

 ・学校ではこんなだったよー

 ・自分もそうだったよー

 ・独学でゲーム制作始めましたー

みたいなことを教えて頂けると嬉しいです。

(というか文字だけだと書ききれない部分があり過ぎたので伝わってるのか不安ですが…)

また、疑問や感想なども教えて頂けると記事がレベルアップするかもしれません!

 

ここまで読んでくださってありがとうございました!

お疲れ様でしたー!

 

2018/12/31 追記

その後どうなったかの話を書きました。ぜひ!

nknkybigames.hatenablog.com

Unity1Week(お題:Space)ありましたね!

またまた開催されましたUnity1Week!

今回のお題はSpaceでした。

私は以下のスペースを抜けて進む(落ちる)感じのゲームを作りました。

           f:id:nknkYBI:20171124203327g:plain

https://unityroom.com/games/spacegame/webgl

思いっきり遅刻したけどね!ライバルズが悪い。

 

作る上での目標

今回は2つの目標がありました。

1つ目は、Unityあそびのデザイン講座で学んだことを生かすことです。

japan.unity3d.com

この辺の知識が全くなかった私にとって非常にありがたいものでした。

ここで得た知識をもとに

 ・コンセプト:避ける(落ちる)

 ・眩暈:物凄く早くなる(避ける+早くなる=落ちる にしました)

 ・模倣:煙突の中を落ちる(落ちる→煙突→サンタと連想しました)

 ・競争:ランキング(ただゲーム数が多いので1位はみんな取れるよう上限つけたい)

 ・偶然:ランダム生成、あたり判定小さめにして偶然避けた感を…

 ・思考:ふうせんの使い方、コントラスト、煙突くぐったらどうなるか、など

というのを最低限入れたいなーという感じでやってみました。

使い方合ってる…はず。

 

もう一つは色々な演出を入れてみることです。

過去のUnity1Weekで演出が面白いとゲームが面白くなることを学びました。

(結果表示の際、単にアフロをかぶせた数を出すのではなく1から数えなおしたり、

文字が動いて面白かったり、綺麗な演出でステージが出てきたりなどなど)

なので、文字を動かしたり障害物を綺麗に出したりしてみたいと思いました。

 

反省

● ゲームの面白さは…どうだったのかな?

まあとりあえずこんな感じのままで!

ただ、ランキングの上限はいらなかったかもです。

● 文字動かしたり障害物を出現させたりなど、初めてこういった演出を作ってみて

「一気に面白そうになったかも!」とか思っていたのですが、

もっときれいな演出がついたゲームがたくさんあって

自分のチープさが際立っていました…。凄いなあ。

● 今回はキーボード操作中心だったのにマウス操作も組み込んでいました。

実は以前のUnity1Weekでボタンで作った方が綺麗にまとまるかなーと思ってのことだったのですが、やはり駄目ですね!

 

最後に

このくらいの期間でできる簡単なゲームをしっかりと作りこんでみたいと思いました。(例えば煙突(背景)がスタート時にバーッと出現したり、障害物がもっときれいに出現したり。)

なによりモチベーションが保ちやすそう!

 

今回は投稿が遅れてしまいました。申し訳ないです。

ですがとても楽しかったです!
そして勉強になりました。ありがとうございました!

 

使用アセット

障害物(Cube)と当たった、画面端に当たったなどのエフェクトに使用しました。 

 

障害物(Cube)のテクスチャーに使用しました。

 

タイトルに出てくる家です。

 

クリア時のオブジェクトはほぼ全てこれです。

 

物凄く便利です。カメラ移動は全てこれです。 

 

Unityちゃんが持ってる例の袋に使用しました。

 

タイトルで使った木や岩です。

 

本来はお城として使うようですが、今回は煙突として使用しました。

 

クリア時の床に使用しました。

 

モデルが50体ほど入っており本当に凄いです。

 

一気に見た目が綺麗になります。

 

タイトルの背景や雲として使用しました。

 

今回はふうせんを使用しました。

 

アイコンや円のテクスチャーなどUIを作る際に便利な素材が入っています。

自己紹介

こんにちは。

なかなかと申します。モバゲーのニックネームを決める際、ガラケーで適当に打って出てきた名前が ”なかなか” で、これをずっと使っています。(5252と打つと出てきます)

今まで4本のスマホ向けゲームを作りましたが、今は2本だけ配信しております。

https://play.google.com/store/apps/developer?id=nknkYBI

残りの2本はバグの海に消えました。とても深い海です。

 

小さいころからゲーム制作に憧れていた、”一応” 現役の大学生です。

というのも、現在休学2年目です。

実は大学4年生の頃、研究と就活の両立ができず体調を壊して1年間休学しました。

ただ、半年くらいで大分回復したので、

残りの期間でゲームを作ってみようかなーと思い現在に至ります。

ゲーム制作が楽しすぎてそのまま休学2年目に突入していますが。

(実は以下のサイトでもこの件に触れて頂いてます。)

blog.seekgeeks.net

 

ということで、ゲーム制作は去年の4月から始めました。

それ以前はUnityすら知りませんでした。

そんな私でもゲームが作れているのは本当に多くの方にお世話になっているためです。

ありがとうございます。

 

教育学部だったので人に教えることは大好きです。

私で良ければ質問なんかもウェルカムです。待ってます。

 

今後の方針は、来年の4月に大学を辞めるので、

とりあえずゲームを作りつつ就活ですねー。

ゲーム会社目指してます。

とにかく技術を盗みたいんです。教えて下さい。

あと、シェーダーやメッシュをもっと勉強したいですね。

使いこなせたら凄く楽しそう。

 

 どうぞ、よろしくお願い致します-。

 

(ミヤマサってゲームが凄く好きでね、もうサービス終了したんですけど。

復活しないかなー)

unity1weekありましたね!

今月もやってきたunity1week。(正確には先月ですかね)

またまた参加させていただきました。

今回はのテーマは「夏」ということで、花火を避けるor当たるゲームを作りました。

          f:id:nknkYBI:20170803191350g:plain

https://unityroom.com/games/toaru_natsunoyoru/webgl

 

コンセプト

先月投稿された上位のゲームは見た目が綺麗なものが多かったです。

なので綺麗なものを作りたいなー、と考えていました。

となるとやはり花火かな?

花火って弾幕っぽいよね?

と思いこのゲームを作りました。

 

反省

●サムネ

 数時間かけてできたサムネがこちらです。

          f:id:nknkYBI:20170803194618p:plain

 

やはりダサいです。なんてこった!

しかし、投稿されたいくつかのゲームはサムネが動いていたので、

私も動くものにしてみました。

           f:id:nknkYBI:20170803191350g:plain

 

こっちの方が綺麗で分かりやすいです。製作時間もかからない!

ちなみにサムネを変えた結果、プレイ数、unityroomでの評価がかなり上がりました。

毎回痛感しますがサムネめっちゃ大事です。

●上位のゲームはやっぱりUIとか見た目が綺麗

私のは頑張っているつもりでもやはりチープ。 うーん。

操作方法

今までキーボードで操作できるよう作っていたのですが、操作を文字で説明するしかないためぐちゃぐちゃになってます。

クリックやボタン操作にした方が分かりやすいかもしれないです。

例えばツイッターならアイコンを置くだけでOKになります。 

●プレイ時間

私のは中途半端な気がします。繰り返してやりたくないけど長くもないみたいな…。

難易度も高かったのに…。

(というかテンポが悪いのかな?とにかく長く感じます。)

ネタ被りについて

今回はネタ被りが心配されるツイートを多く見かけました。実際私のテーマであった花火も多くの方が取り組んでいました。

ただ、同じ花火でも人によって作り方やゲーム性が違ったりで、第三者目線だとそれでも十分に楽しいと思いました。

私自身もネタ被りはしたくないと思っていたのですが、そこまで恐れる必要はないのかなーと思ったりしました。

(あくまで個人の感想です!)

普段私が作るものはゲームでなかったり、作り始めても大抵エターなるので進捗を出せていなかったのですが今後はもう少し出してみようかなと思いました。

 

最後に

今回は技術や世界観が凄いものが多かったように思いました。

砂を崩したり、波が跳ねたり、暗闇が移動したり…。

私には思いつきませんでした。

なので勝手ながら真似させて頂き、勉強しております。

メッシュってこんなことできるんだ!という感じです。

(もし自分で再現できなかったときは教えて頂けれると嬉しいです。)

 

やはり楽しいです!こういうイベント!

 

使用アセット

かわいい見た目のなんとSprite画像。

 

背景に使用しました。

 

移動やカメラ揺らしなど、とても便利です。

 

画面が一気に綺麗になります。

  

使いやすく重宝しています。