Space Wandering
カテゴリー: 開発
作品URL: https://trpfrog.github.io/medipro-game
使用技術
- java
- Swing
- MVCモデル
概要
ロケットを操作して辿り着く各惑星でミニゲームを遊んでメダルを集める。
大学の授業でグループを組み開発した。Controllerを担当。
工夫点
以下の2つがControllerの責務と考えた。
- 思い通りの操作ができること
- 実行環境による差を無くすこと
keyPressedによるシンプルな実装は以下の問題点を生じた。
- キー入力を1つしか受け付けないので同時押しができない
- keyPressedが発火する間隔がPCによって異なる
- 長押し時の1回目の発火と2回目以降の発火の間にラグがあり操作感が悪い
これらの問題を解決するために入力部と実行部の分割を行った。SpaceControllerクラスは入力情報を保持するKeyStateとMouseState、1フレームにおける処理をするstep関数、step関数を実行するためのタイマーstepTimerを持つ。
KeyStateはキーコードのコレクションなので同時押しができる。押した時に追加、離した時に削除することで1回目の発火のみを受け取りラグの影響が消える。
step関数をstepTimerで回す。keyPressedの発火間隔に依らず指定したフレームレートでゲームを進行できる。
操作体験が大幅に向上した。