FPS管理(フレームレート管理)
そもそもパターンが複数あるね。
フレームレートを固定
- いわゆるTimer
- フレーム間でWaitをかけ、時間的に一定間隔になるようにフレームを更新していく。
- 弾幕STGみたいに処理落ちを演出の一環としないならフレームスキップも忘れずに。
垂直同期
- いわゆるV-SYNC
- モニターのリフレッシュレートと同一にする
- 描画の安定度的に理想
- 色んなモニターがあることを考慮しないといけない。
そもそも固定しない
- Unityのデフォルトはこれのはず。
- 前フレームからかかった時間 Δt で今フレームの動作を決定していく。
- 例えば 移動距離=移動速度 × Δt のように使っていく。
- フレームスキップを考えなくてもいいはず
- ドットやマス単位で動くのが大事な2Dゲームには向かないかもしれない
シーン管理
- ゲームをシーン単位に切り分けて管理できるといいね。
- 綺麗に管理できるなら楽になるだろうけど、実際そんな疎結合な設計にできるかというと難しそう。
シーンの切り分け方
- まずはここが問題。
- 例えば
- 「タイトル」「ゲーム本編」「エンディング」の3つくらいにする。
- シンプル。
- 本編がすごく・・・大きいです・・・。
- 「メニュー画面」や「エンカウント戦闘」や「フィールドマップ移動」もそれぞれシーンとする。
- 共通項をまとめるというプログラムの基本を考えるとこれくらいですかね?
- ACTの「ステージ」やRPGの「ダンジョン」も1つ1つシーンとする(某配管工のゲームだったら「ステージ1-1」から「ステージ8-4」までそれぞれシーンを作る)。
- シーン数が多くなりすぎる。
- マップ等をソース直書きするならこうなるかな。
- ステージ専用ギミックを作りやすいかも。
- 「タイトル」「ゲーム本編」「エンディング」の3つくらいにする。
- 考えすぎて手を止めるくらいなら、動けば正義くらいで気楽にやろう。
シーン間の情報やり取り
- 設計的に上手にするなら、シーン生成時に引数として必要な情報のコレクションを渡すようにするのかな?
- でも「主人公のステータス」とか「アイテム所持数」とかシーン遷移じゃ変わらない情報が多いし、グローバルで情報管理すればいい気がする。
スクリプトの自作
- エンジンさえ完成すれば、あとは楽。
- ただし、エンジン側のテストは全力でやらないといけないね。