Space Wandering
概要
大学の授業でチーム開発を行い作ったゲーム.ロケットで宇宙を飛び,配置された星でミニゲームを遊んでメダルを集めるというもの.操作部のプログラムを担当.
工夫
操作部が負う責務として次の2つを設定した.
- プレイヤーが思った通りに操作できること
- 実行環境によって差を生まないこと
必要な操作の洗い出し,キーへの割り当て,各動作の挙動をチームメンバーと相談しながら策定した.
また,標準実装のkeyPressed
には次の3つの問題があり責務を果たせない.また,マウスやタッチパッドによる入力についても考慮する必要がある.
- キー入力を1つしか受け付けないので同時押しができない
keyPressed
が発火する間隔が環境によって異なる- 長押し動作時に1回目の発火と2回目以降の発火の間にラグがあり操作感が悪い
これらはどれも入力の反映のタイミングに関する問題なのでkeyPressed
のラッパーを作り操作の入力と処理の分離を行った.
キー入力とマウス入力をStateに保持し,両方の入力があった場合はキー入力を優先するようにした.そして入力情報を元に1フレームごとの処理を行うstep
関数を一定間隔で実行することで環境の差を吸収できた.