【開発日記】ゲームプロデューサーになろう(8日目)

◆やったこと
必要なUIパーツの洗い出し
エクセル風UIパーツの制作取り掛かり(背景)

◆課題
ドット絵の打ち方の基本をどこかのタイミングで学ぶ必要がある
Firealpacaのドット絵ツールで間に合わせているが、これでいけるんだろうか……?

【開発日記】ゲームプロデューサーになろう(7日目)


※Gifアニメです。クリックすると動きます

◆やったこと
プランナー以外のアサイン状況もプロジェクトの進捗に影響するようにする
2本目、3本目のラインも稼働するようにする

◆次やること
一通り実装が終わったので、UIパーツの制作に移ります。
そのあとにはデータの調整を行い、面白くしていきます!

【開発日記】ゲームプロデューサーになろう(6日目)


※Gifアニメです。クリックすると動きます

◆やったこと
デバッグ用にスペース押下で時間が進むようにしていたのを、UI上のボタンで進行させるように変更
プランナー以外も雇ったりアサインしたり解雇できるようにした
GifCamというソフトを利用して、UnityのゲームビューをGifで録画できるようにした

◆困ったこと
ボタンにつけるスクリプトはすべて独立させるべきなのか?
publicな変数を含む場合、そのボタンには不要であっても余計なメモリを食ってしまう気がする
ボタンに使うスクリプトはpublicな変数を使わずfindを使うべきか?

メンバーの雇用解雇、各プロジェクトへのアサインがボタンだとわかりにくい?D&Dとかで直感的に操作したいけどちょっと今の自分にはハードル高い気がする

昔の実装を思い出しながらひたすらコピペしまくるので、イージーだけど単純作業でちょっと辛い

◆明日やること
プランナー以外もプロジェクトの進捗に影響を与えるようにする
プロジェクトを同時並行で複数進むようにする

【開発日記】ゲームプロデューサーになろう(3~5日目)

◆やったこと
ゲーム開始→メンバーをリクルート→給料を払いながらプロジェクトを進捗→完成して報酬を獲得→一定額稼いだらクリア
の基本サイクルをプランナーだけ、ライン一本分だけ実装

◆次やること
クリア画面、ゲームの目的を伝える導入シーンの整備
プランナー以外も実装
複数ラインで並行して開発できるよう実装
時間経過をボタンに出す

これらが終わったら、エクセル風UIのリソース制作に移ります

◆気づいたこと
あえて区切りの悪いところで終わらせることで、次に取り掛かるときのハードルを低くするという開発ハックを思いつきました。

【開発日記】ゲームプロデューサーになろう(2日目)

前の記事はこちら

【開発日記】ゲームプロデューサーになろう(仕切り直し初日)

◆今日やったこと
・プロジェクト全体の構成を再度確認
 └間の空いてしまったプロジェクトなので、前まで何をやっていたのかさっぱりわからなかった。まずはその振り返りに時間を使った。まったくモチベの上がらない作業なので、なるべく減らしたい部分である。

・実際にウィンドウで選んだゲームを、作るゲームとしてUIに表示させること
・ゲームが完成した時の報酬を、マスタデータから参照すること
 └ゲッターセッターでうまくいかなかったので、メソッドの引数としてマスタのIDを渡した。

Projectクラス:作っているゲームの進捗処理やUIの更新を管理
Proposalクラス:新しく作るゲームの情報や、ゲーム提案フェーズのUIを管理
Buttonクラス:提案フェーズで提案されたゲームを選んだ時にProposalが持っているマスタIDをProjectへ橋渡しする

ButtonクラスにマスタIDを渡し、さらにProjectクラスからButtonクラスへマスタIDを参照したがうまくいかなった。理由は不明だが、下記の通りButtonクラスから直接ProjectクラスへマスタIDを引数として渡したらうまくいった。

◆課題
・ゲーム内で複数のゲームをラインとして同時に作るとき、それぞれの進捗の仕方はそれぞれのクラスで管理することになる。共通の挙動も多いため、本来ならクラスの継承をつかうべきところな気はするが、新しいことをあんまりやりすぎると時間がかかって集中力が落ち、モチベが下がるので、複数クラスを用意する力業で行こうと思う。継承はまた今度。

◆アイデア
結局自分は絵が描けないため、既存のアセットに頼っている。もちろんうまくはまればよいクオリティのものができるが、ハマるものを探し続けていくうちにモチベが下がっていくことも考えられる。将来的なことを考えると、少しずつでもデザイン作業をやれるようになっていきたい。が、突然イラストを描くのもハードルが高い。ということで、難易度を落としつつチープに見えないためのアイデアとして、UIをエクセルなどのスプレッドシート風にしてみると面白いかもしれない。ゲームのコンセプトにも合致するし。

【開発日記】フットバ出前

Unity1week「あつい」にて制作。
作品URL:https://unityroom.com/games/huttobademae

やりたいことはいろいろあったが、結果的にはかなりオミットすることになった。
一番ボトルネックになったのは、パラメータの強化システム。ここの解決に時間を食った。
具体的に言うと、あるスクリプトで定義した変数を、ほかのスクリプトで呼び出し、変更し、再定義すること。
基本的にGetter/Setterを使うことは分かった。

ほかのスクリプトから変数の値を参照する
https://qiita.com/Teach/items/8d1cdb90a3b533707c9a

【初心者向け】変数ではなくプロパティを公開する

シーンをまたいでデータを参照する

【初心者向け】変数ではなくプロパティを公開する


 ※FindObjectOfTypeを利用してGetterを使うやり方はできない?⇒シーンに存在するオブジェクトから探してくるっぽい

が、ボタンオブジェクトにくっつけたスクリプト内でGetter/Setter関数を使ってもうまくいかない。
public staticな変数を取得、変更しても、同じ変数名で中身が異なるものが複数存在するような状況になってしまった。

tmpPowerValueは、別スクリプトで定義したパワーの値をGetterで取得して格納している。仮に10が入っているとして、これを実行すると、中身が10のtmpPowerValueと11のものが同時に存在するような状況に。
解決策としては、tmpPowerValueもpublic staticなものとして宣言することで意図するような挙動となった。残念ながら理由はわからない。おそらく、変数の寿命の問題だろうと考えている。このメソッドの中で変更した値が、クラス全体で共有されてないとかそんな感じ。クラス変数と、メソッドの中でしか有効でない変数について、勉強する必要がありそうだ。ということで下記を読んでみる

苦しんで覚えるC言語「変数の寿命」
https://9cguide.appspot.com/12-01.html

【開発日記】ゲームプロデューサーになろう(仕切り直し初日)

◆こんなゲームにしよう
コンセプト:
ゲームを作るゲーム

必要な仕様:
・開発するゲームが提示される
・選んだゲームトップ画面に表示される
・選んだゲームバーをアサインできる
・時間が経過するとアサインされたメンバーの能力に応じて、ゲームが進捗する
・ランダムイベントが起こる
・ゲームが完成するとポップアップが表示され、報酬が受け取れる。
・完了したゲームはトップ画面に表示されなくなる
・メンバーや設備に投資する
・次のゲームが提示される
(以上を繰り返す)

◆新たな試み
・ゲーム内で制作するゲームを外部マスターとして管理する。

アチーブメントをスプレッドシートで管理して実装する
https://note.mu/azumagoro/n/n1e915ab38ead

ScriptableObjectとして作成したデータを取り出す

◆トラブル
途中でUnity1Weekが挟まって開発期間が意図せず長くなってしまっている。
今作では、この外部マスタを使ったデータの管理が新しい学びになったので、その他の機能の部分はある程度シュリンクさせて、とりあえず完成させることを優先しようと思う。
本当は、開発メンバーにも信長の野望みたいに個性を持たせたかったが、クッキークリッカーのようにリソース(=数字)と割り切ってそれを増やしていくタイプの強化に割り切ろう。強化の仕組みはUnity1weekのフットバ出前で習得したので時間かからずできるはず。

◆今の進捗

この新しいゲームの企画データを、Googleスプレッドシートで管理し取り込んでいる

【開発日記】ブタさんパズル

3つ目はジグソーパズルに挑戦。その開発中トラブルや思ったことの備忘録
@Unity2017.3→途中から2018.2.1

・開発のきっかけ
アクションゲームを2つ作ったので、アクションじゃないものが作ってみたかった。
豚肉の部位毎のおいしい食べ方をきちんと理解したかったので、豚肉のパズルにすることにした。
ピースを持ったときにその部位の名前と、おいしい食べ方を覚えられるゲームを目指した。

・タッチしたところにオブジェクトを追従させる方法
参照:http://nekosuko.jp/blog/?p=267
タッチした座標(スクリーン座標)と、オブジェクトが存在する座標(ワールド座標)とは全くの別物であり、変換する必要がある。
スクリーン座標をワールド座標に変換した後は、オブジェクトのtransform.positionにその座標をフレームごとに直接ぶち込んでやることにした。

・ピースの上でタッチした時だけそのピースを動かせるようにする
ピースの中心座標を取得し、そこから一定の範囲にあるときだけ動かせるようにした。

 うまくいかなかったのでRaycastでの実装に切り替えた

・ビルド時にUIがずれる問題

【開発日記】赤いきつねで緑のかえるを駆除するよ

https://unityroom.com/games/frogfox
2つ目の習作の開発中に詰まったところとその解決策の備忘録
@Unity2017.3

・突然TilePalleteに何も表示されなくなる不具合
Unityの再起動で解決

・Tilemapでステージを作った際の二段ジャンプのさせ方
始め、AddForceを使ってジャンプ挙動を制御させていた
すると、二段ジャンプするタイミングが上昇中か下降中かでジャンプ量が変わってしまった
そのため、2段目の直前にVelocityをリセットし、ジャンプ量をフラットにさせようとした

・タイトル名を最初カッコつけて「フォックスフロッグ」とかにしていた(それでもそのまんまだが…)
Unityroomでは、ゲームを遊ぶかどうかの基準はタイトル名とSSのみ。エモいタイトル名にするより、何をするゲームなのかわかりやすいタイトルのほうがたぶん遊ばれやすいかなと思う。