ぼくの息抜き

ぼくの息抜き

気ままな二人が記事を書くことで息抜きしていくブログ

CSS MenuMaker

Unity!Unity!ついにUnityゲーム作成にかけた時間が100時間を超えた! - 備忘録 -

f:id:bokunoikinuki:20180621201305p:plain

何かのプロフェッショナルになるには10000時間が必要だと聞いたことがある。

となると自分は1/100プロになったことになる。

実はUnityゲーム作成にハマったのは初めてではない。

去年参考書を買ってゲームを作るくらいのやる気が一時はあった。

が、一週間くらいで飽きてしまった。

だが、今回のUnityハマりは違う。ここ1ヶ月くらいUnityに時間を費やし続けている。

その成長軌跡をここに備忘録としてまとめる。

またゲームプログラミングにハマる

何がきっかけでunityを再度始めたが忘れたが、確か1年前くらいにunityの参考書を買って少し勉強したことがある。

お得意の飽き性ですぐに飽きてしまった。

で、2018年今年の5月末からunityでのゲーム作りをまた始めた。

あ、思い出した。プログラマーの友人とunityでゲームを作り始めたのがunityに再度ハマったきっかけだ。

成長過程をブログに残そうと思っていたが…

一度ハマるととことんやり続けてしまう癖でどんどん進めてしまって、ハッと気が付いた時には文章に起こすにはあまりにボリュームがありすぎて記事を書くのがめんどくさくなる。

 

このままズルズルプログラミングをやり続けてもいいのだが、しかし。

ブログは自己成長のために使いたい!

という気持ちがあるため、簡略でもやってきたことをまとめることにする。

20180522からUnityを再勉強し始めた。

Googleカレンダーをみると本気でunityのゲームを作り始めたのは5/22日からになっている。ここからunityに費やした時間を記録し始めた。

evernoteにメモとホワイトボードでの思考整理を残しているので、そっから整理する。

5/22

f:id:bokunoikinuki:20180621180409p:plain

やりたいことについてホワイトボードで考えていたようだ。

5/23

f:id:bokunoikinuki:20180621180547p:plain

確か最初は以前買って途中でやめたUnityの参考書、Unityの寺子屋を1からやり直していた気がする。

それを元にオリジナルゲーム島ゲームをUnityで作り始めたんだった。

そもそも島ゲームはJavascriptでゲームを少し作っていた時にやっていた。

これをunityでも似たような奴を作ってアプリ化させるのが最初の目的だった。

気がする。

5/25

f:id:bokunoikinuki:20180621180016p:plain

放置ゲームが好きだから、小さな放置ゲームをたくさん作ると言っている。

これは大切だ。

最初から大作なんか作れない。

5/26

こんなメモが残っていた。

 
C#GetComponent
 
 
Android ビルド
 
Android ビルドができない
⇨解決法?
⇨そもそもSDKをダウンロードしていなかった
 
Android StudioでSDK指定してもビルドできない
⇨toolsを過去のものに差し替える

 

androidにゲームをあげようとしたのだろう。これに関しては記事を書いた。

 

 

読みにくい備忘録だが、なんやかんやあって問題を解決できたことがわかる。

読みにくいけど、プログラミングしててぶつかった問題はすぐに箇条書きして、その時どうすれば問題解決できるか思いついたか書き残すと面白いかもしれない。

そこからどのようにスキルを得られたのかわかる。

面白いな。絶対やろう。

ということで次。

5/27

毎日毎日暇あればUnityゲーム作成していた。

5/27時点ですでにUnityに18時間を費やしている。

f:id:bokunoikinuki:20180621182201p:plain

UIについて考えてた?

もう1ヶ月も前になると文章や写真などの記録がないと全く思い出せない。

5/28

この日は3時間Unityに時間を費やしているが、これしかメモがない。

f:id:bokunoikinuki:20180621182534p:plain

まじで全然わからんが、多分ゲームの内容を説明する1枚絵を表示させて消そうとしたかったぽい。

今なら最近見つけたのだが、Invokeで呼び出す関数をずらして実装する。

これを経て今の自分がいると思うと感慨深くなる。過去の自分よく頑張ってくれた。

5/29

この日も3時間くらいUnityに時間を費やしているが、なんと何もメモが残っていなかった。

何しているんだ!過去の自分!

Googleカレンダーがなかったらもはややってなかったと同義だ。

自分のgoogleカレンダーをみるとやったことが時間ごとに事細かに書いてあるので、その日何をやっていたのかは一目瞭然だ。

だが、Unityプログラミングの何をやっていたかの内容までは全く思い出せない。

5/30

この日はUnityはやっていないみたいだ。ただ、ゲーム作成についての思考を整理したみたいで、ホワイトボードメモが残っていた。

f:id:bokunoikinuki:20180621183339p:plain

最初に設計書を作ろう!みたいなことだ。

f:id:bokunoikinuki:20180621183416p:plain

やっぱり自分がやって楽しいゲームを作りたいね。

5/31

8.5時間ぶっ通しでUnityプログラミングやっていたっぽい。恐ろしい集中力。

以下メモ~

ボタン作成関連の知識
 
ボタンを非表示にしたりするのに苦戦した
⇨参考になった記事
  ⇨ありがとうございます
   ⇨buttonではSetActive使えないとのこと

~メモ終了

f:id:bokunoikinuki:20180621183745p:plain

ゲームはやっぱり放置ゲームが作りたい。

菌を操る放置的なゲームはまだ作れてない。

タップで菌を増やし、タップした場所に菌が移動する、菌を操る変なシュミレーターはできたが、、まだゲームじゃない。

とにかく8.5時間は伊達じゃない。

6/2

例のごとく何もメモが残っていないので、何をしていたか不明。

pythonで作った自動売買プログラムを4時間も修正していた。プログラミング欲がすごい。

6/3

結構思考メモが残っていた。

メモ開始~

今回の放置ゲームで足りないもの
次欲しい機能
⇨セーブ、リセット
 ⇨タイトルに表示
⇨ランキング
⇨豪華なエフェクト、音
⇨SNSにランキングを自慢できるもの
 ⇨エフェクトでストレス解消されそうなもの
 ⇨癒されそうなもの
⇨追加要素
 ⇨ステージクリアでポイントゲット
  ⇨アップグレードできる
   ⇨最初から村の人口を増やすとか
   ⇨ターンの時間減らすとか
 ⇨人口や食料を減らして、派遣する
  ⇨10分とかで戻ってきて、アイテムや報酬をゲットできる
   ⇨放置クエストっぽい
 ⇨ステージクリアではクエスト方式にする
  ⇨時間制限や、村人、商人何人、ゴールドなど
 ⇨エンドコンテンツ
  ⇨これは確実にセーブ必須
   ⇨ステージごとにセーブするか、セーブなくすか、クリアしないと次のステージ選択できないようにする?
 
 
今すぐ実装するべきもの
⇨セーブ、ローカルで最高記録をタイトルに表示
⇨ゲームオーバーになったらタイトルに戻る
⇨それぞれのステージでクリア日数表示
⇨タイトル画面からステージセレクト選択
 ⇨unityの本でステージセレクトを見る
  ⇨scene選択すればいいはず
   ⇨スクリプトがややこしくならないようにするにはどうすればいいか
 
次は何から着手するか
⇨ステージ構成を作って拡張しやすくする
~メモ終了
放置ゲームだけどステージ式でクエストごとのゲームに改変しようとしていた。
まだチュートリアルステージは作ってないな。
 

f:id:bokunoikinuki:20180621184416p:plain

細かく小さなゲームを作るという方向性は変わらず、1日でクリアできる放置ゲームをたくさん作ろうかなと思ったというメモ。

それもあり。

確かにエフェクトと音に凝ったゲーム作りたいな。内容シンプルだけど、音と内容に特化したゲーム作ってみるか。

6/4

これだけメモが残っていた。

 

プログラミングunity
テキストを改行
http://hidex97.hotcom-web.com/wordpress/?p=224

 

unityプログラミング1時間やってそれだけはないだろw

6/5

6/5はホワイトボードメモが残っていた。

f:id:bokunoikinuki:20180621190109p:plain

一つ一つ小さなアプリを作っていく方向性はずっと変わっていない。

モチベーションを維持する方法について深く考えた日だった。

若干記憶がある。

f:id:bokunoikinuki:20180621190245p:plain

まだ島ゲーム完成してないな。

6/7

Inspectorに直接追加しなくてもできる方法を色々試行錯誤していたようだ。


プログラミングunity
⇨FindとFindChildの違い
 ⇨http://ch.nicovideo.jp/golden_duck2/blomaga/ar720005
  ⇨Find(“/~”)直接パスでも指定できる
   ⇨Resources.Loadは最初のパス指定の時/いらない
    ⇨Resources.Load<GameObject("Prefabs/Ex1StageBack”);
    ⇨transform.Find("/CanvasGame/TestImage(Clone)/TestText 2").gameObject;
    ⇨GameObject testImage = Resources.Load<GameObject> ("Prefabs/TestImage");
GameObject ts2 = (GameObject)Instantiate (testImage);
GameObject ts2Text = ts2.transform.Find("TestText 2").gameObject;
     ⇨Instantiateでクローン作らなくてもTextの中身変えられる
Transform.Findについて
⇨unity公式リファレンス
 ⇨https://docs.unity3d.com/ScriptReference/Transform.Find.html

 

public GameObject testText;

void Awake ()
{
// 普通にpublicのGameObjectからtext変更
testText.GetComponent<Text> ().text = "ああああ";

// 子要素のあるPrefabをLoadする
GameObject testImage = Resources.Load<GameObject> ("Prefabs/TestImage");
GameObject ts2 = (GameObject)Instantiate (testImage);
// LoadしたPrefabの子要素を取得
GameObject ts2Text = ts2.transform.Find("TestText 2").gameObject;
// 直接パス指定の場合
// GameObject ts2Text = transform.Find("/CanvasGame/TestImage(Clone)/TestText 2").gameObject;
// 子要素の
ts2Text.GetComponent<Text> ().text = "あううう";
// InstantiateでCloneを表示
ts2.transform.SetParent(canvasGame.transform, false);

}

 

GamaObject.Findは便利だ。だが、だいぶ重いらしい。重いと感じるほど大きなアプリはまだ作っていない。

6/8

この日はプログラミングを1から学びたいと思い『プログラムはこうして作られる』という本を買って数時間読んでいた。

また、Unityのアセットなども調べていたようだ。

 
すげー3dが綺麗になるアセット
 
4ドルでお安く感じる3dエフェクトアセット
 
2dゲームはフリーアイコンで十分
 
プログラミングunity
→シーン名取得
 
画像などが綺麗になるとゲームのクオリティもグッと上がる。がっつりいい素材を探す時間を設けたい。

6/9

この日はだいぶメモが残っていた。

チュートリアル2の内容どうしようか
⇨商人をある程度増えたらだとどうなる?

explainのImageは全部
⇨transform.Findでやろう
 ⇨Sceneで必要のないImage数が出ても非表示のままにできる
  ⇨ただunityのバージョンによって変わってしまうかもしれない

explainを分ける
⇨分けた
⇨Prefabを使わずに表示、非表示を行う
 ⇨2つ目の表示が終わったら同時に消すような形にしたい
  ⇨変数をリストに入れて変数で管理したら楽ではないか?


スプライトが動くようにプレハブの時点で指定できないか
調べる
スプライトが横から動くように
⇨itweenを導入

GameObject.Findはシーン上になくても探せるが、
Transform.Findはシーン上にないと探せない
この違いはでかい


Unityオブジェクトを表示、非表示
→SetActive(true, false)
状態

 

こういう感じで箇条書きでいいから思考の経緯を残しておくと何して、何を得たのか振り返れる。島ゲームのチュートリアルは面白い作り方をした。こういう時もPrefabを使った方がいいのかは謎。

f:id:bokunoikinuki:20180621191336p:plain

ホワイトボードの思考をこう残しておくのはほんといいな。面白い。

Time.deltaTimeを使ってチュートリアルの画像を順番に出そうとしている。Invoke知っていたら…

こういうのはメンター的な人がいたら一瞬で解決されるんだろうなーと思う。

f:id:bokunoikinuki:20180621192514p:plain

PrefabにせずScene跨いでも同じ名前のチュートリアルセットを取ってくるのはナイスアイデアだったと思う。

 

6/10

この日もすごいunityプログラミングデー、休憩挟みながらだけど、8.5時間もプログラミングやってる。

f:id:bokunoikinuki:20180621192832p:plain

でもメモしてるのはこれだけ。

それだけサクサク進んだってことだろうな。

次からはしっかり備忘録に残していくぞ。成長過程が失われるのは勿体無い。

6/11

菌ゲームのプロトタイプ作り始めてるな。

f:id:bokunoikinuki:20180621193047p:plain

タップしたところにGameObjectを動かす方法をiTweenを使わずにどうやったらできるか考えてた。

これで気が付いたけど、数学全くできなくなってる。三角関数ももう全然扱えない。どっかで数学がっつりやりたい。タイトル忘れたけど、unityを使って数学学べる本が最近出て立ち読みしたけど、最初の数ページですら全然わからなくなった。

タイトル忘れたけど、いつかあれ買って1から勉強し直す!

6/12

Unityプログラミング4時間くらいやってたっぽいけど、メモが全く残っていない。反省。

6/14

f:id:bokunoikinuki:20180621193821p:plain

一回区切りがついたっぽい。でもここで終わらなくてほんとよかった!ナイス過去の自分!

以下メモ

菌を指示して戦うゲームを作りたい
ランダムに敵を探すブロックを装備し、そのボタンを押すと菌たちが敵を探す
 
増やすを優先するボタンは立ち止まって増える
とか菌たちの性格なんかも作ったら面白そう
索敵範囲とか攻撃力、耐久力、速度、増殖力
AIをカスタマイズできるとか
 
案外簡単に3d作れる
 
いやー、菌ゲーム作りたいけど、まだ構想固まってないから小さなプロトタイプ作ろう!

6/15

今日が6/21だからもう一週間前のことになるが、あんまり覚えていない。

メモは残ってないが、Googleカレンダーには

unity prefabのスクリプトの変数についてテストする@89.5h

と残っている。多分static publicについて色々テストしてみてた気がする。

Instantiateで複数複製するPrefabに紐づいてるManagerにstatic変数入れると全部のprefabで値を共有するが、publicだとInstat個々に変数を持てる。

という認識であってると思っている。

6/16

振り返りに飽きてきたが、ここまできたら6/20まで振り返っておいて心機一転させたい。

タップで移動するscriptを導入するだけで読み込めるようにしたい
prefabをユニークな番号などで管理するには?

メモはこれだけ。

これまだやってない。拡張scriptをiTweenみたいに関数呼び出すだけで使えるようにしたい。自作scriptを使い回せるようにしたい。C#的な知識をもっとつけないと難しいと思っているが、どうなんだろう。

6/17

島ゲーム作りこむのイメージもブレブレだし、いいアイデアないから小さい脳トレゲームを作ることにした。

家の近辺を2時間くらい歩き回って思いついたことをメモした。

この後3時間で脳トレの基礎部分を作ることができた。

いかにプログラミングをする前にゲームの構想があると早く作れるかわかった日でもある。

以下メモ 〜

きちんとしたゲームなんてまだ作れない
simagameはゲームオーバー作って終わりにしよう
何かテーマを絞って小さいゲームをたくさん作ろう

当たり判定

色を記憶するゲーム
2秒間ランダムな位置に玉が出て
全て色が白になる
ステージ式?
毎回1から?
ハイスコアを記憶する
gameオーバーになったら
enumで色の情報を代入
正解の色をタッチしたら正解カウント
間違った色で即ゲームオーバー
正解の音出す
コリンだー玉がで被らないようにする
スタート画面
説明
説明スキップボタン作る
ゲームスタート
成長要素でゲームをなん度も繰り返すとポイントがもらえる
そのポイントで難易度が上がる要素が買える
要素を追加すればするほど、ハイスコアが出やすくなる
最初は5個しか色がないとか?
とにかく今日中に色の玉が表示出来て、秒数で色が変わって、間違った色をタッチするとゲームオーバー、全てあってる色をタッチするとクリアの部分だけ作ろう
タイトル、ゲーム場面、一面のみ

〜メモ終了 

f:id:bokunoikinuki:20180621195053p:plain

プロトタイプの作る手順をできるかぎり簡易化して、これ以外の余計なプログラムは入れずに作ったら3時間で作れた。

都度都度の動画があるから今度別記事にしてあげることにする。

自画自賛だが、結構すごい。

6/18

6/17に作った脳トレゲームをタイトルやステージ構成にして小さな脳トレゲームとして遊べるようにした。

6/19

よりゲームらしくなるように一回構想をまとめてから一気にプログラムを書いた。

f:id:bokunoikinuki:20180621195606p:plain

細かいバグを直し、一旦完成。ここから成長要素を入れたいと思っている。

 

振り返り終わり!

今思ったが、6/20の昨日はバイトがダブルであったのもあったが、プログラミングをやっていなかった。ってかここ数日体調が優れず、全然パワーが出なかった。

原因は特定できたから今日こうして2時間半も掛けて今までの振り返りを1記事にまとめた。

誰かに読んでもらうための記事の構成には全くなっていない。が、これで一旦スッキリした。

振り返っての一番の反省点はやっぱり、問題の壁にぶつかった時の問題、解決方法という過程を残していなかったので、成長がいまいちわからないところだ。

ブログに成長過程を書き残すために以下のことを箇条書きにしたいと思う。

  • 何をしたいのか
  • それを実現するにはどんなプログラムを書こうとしているか
  • 問題やその問題の解決方法

これらを残すだけで鮮明な記録が出来上がると思う!

やろう!1年間このペースでunity勉強したら、1000時間余裕で突破して、1/10プロになれるぞ!w

想像したゲームを自分で作れるようになる!

 

いやー、メモコピペしたってのもあるけど、8000文字の記事になるとは思わなかった。すげーな。これでも今までunityプログラミングやってきたことの6割、いや8割は抜け落ちてる。

100時間って伊達じゃない!

ということで疲れた。終わり。

今日の記事書く時間もunityプログラミングの一部とするとこれで合計109時間になった。1000時間とか余裕じゃないか?笑