初心者が2週間かけてUnityで作ったアプリをGooglePlayにリリースしてみる話 第5日目
「上手くいっていたものを崩す勇気は100倍じゃ足りない」
こんばんは。
色々な人のゲーム開発体験談を見ていると、ゲームそのものよりも設定画面やその他の機能を作る方が時間がかかると言っていて戦々恐々としている先端のマーシーです。
1.床移動システムの修正
前回までの作業で床の自動生成スクリプトを作成しましたが、その後に床の移動速度を上げて試してみました。
すると一定速度以上からプレイヤーが踏んでいる状態でも消えてしまうことが判明。
慌てて床の枚数を増やす処置を行いました。
そこまでは単純な修正で済んだのですが、結果的に新しい不具合が起きました。
その様子がこちら。
無限床の生成で出来る謎の隙間に手間取ってた
— 先端のマーシー (@Masashi_Sentan) 2021年9月10日
これUpdateで回してる床の速度と、一定間隔の座標で消滅するっていう静的と動的の兼ね合いの悪さが影響してる気がするなぁ...#Unity初心者 #プログラミング pic.twitter.com/QYuT3kKCVf
床そのものが移動しているので、生成のタイミングがズレてしまうことがあります。
プログラムなので寸分違わず一定速度で動作するイメージがありますが、実際には動画の様にパフォーマンスがその都度変わっています。
しかしこれは私のプログラムが欠陥品と言えるでしょう。
スマートフォンは様々な機種や年代がある為、そのスペックによってゲームそのものが崩壊してしまうのはあってはならないこと。
このままだと、スペックが十分でない端末や動作が不十分だった場合には床が一定間隔で抜け続けるという事態に。
とりあえず調べつつの修正方針としては以下のものを建てました。
- 床の枚数を減らす
- 床の更新タイミングの修正
- Prefabでの生成・削除の廃止
床の枚数を減らすことですが、単純に1枚当たりの長さを2倍にして更新する頻度を減らしてみました。
また更新タイミングですが、前回までは一定の座標を通り過ぎると削除して新しい床を作っていました。
ですが座標で削除・生成をしてしまうと1枚の床がズレたらその後の全てがズレてしまうと考えました。
そこで考えたのが時間での処理。
小学校からおなじみの距離/速度でScene上にいて欲しい時間を求め、座標での更新が上手くいかない場合には時間で更新するタイミングを作りました。
そして最後にPrefabの削除。
「え、前日にあんなに得意げに語っていたのに!?」と思う方もいるでしょう。
いやほんとうに。
異を痛めながらの決断でした。
というのもPrefabの場合、Destroy処理をしてしまうと重いという記事を見かけたのです。
もちろん仕組みを変えるとはいえ完全に無駄にする訳ではありません。
ギミックや障害物なんかを作る時に応用しようと思いますが、ステージは割と更新頻度が多いので出来るだけ軽くしたいという思いでした。
そして修正した後の動作がこちら。
無限ステージ生成、中々良ろしいんじゃないでしょうか#Unity #unity3d pic.twitter.com/CbIxc8wfK0
— 先端のマーシー (@Masashi_Sentan) 2021年9月10日
今の所は安定してそうですね。
2.ゲームの方向性
さて、怪我の功名というかなんというか。
穴が開いてみて修正している時に思ったのですが、定期的に落とし穴を作っても面白そうだと思いました。
ちょっとだけ画面がリッチになりましたね。
キャラクターの横移動は黒い道路部分に限定しようとは思っているのでキャラクターや道路の大きさは要調整だと思いますが。
少し見切れてはいますが、段々と背景などの建物などを作り始めています。
背景が変わらないのも面白くないのでこちらも自動生成システムを作れればと考えてます。
もうすぐ一週間、土日で一気に加速したいですね!
それではまた明日の記事でお会いしましょう。
Twitterのフォローよろしくお願いします!!!