捻れたバベル

Space Wandering

カテゴリー: 開発

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の発火間隔に依らず指定したフレームレートでゲームを進行できる。

操作体験が大幅に向上した。