JumpLab: an experiment software for the analysis of 'jump' for platformer game

概要

JumpLab は、『スーパーマリオブラザーズ』に代表されるプラットフォームゲーム(ジャンプアクションゲーム)のジャンプ処理やカメラ移動処理にまつわる諸パラメタを可変にした実験用ソフトウェアです。ビデオゲームにおけるパラメタ設定がプレイ感覚に与える影響を学ぶための教材として設計されています。

実行方法

JumpLab の実行には Processing 3 以降が必要です。また、追加ライブラリとして ControlP5 および Game Control Plusが必要です。追加ライブラリはどちらも は Processing のメニューからインストールすることができます。Sketch→Import Library...→Add Library...と辿った後、検索窓に "controlp5" や "game control plus" と入力して表示されたライブラリをインストールしてください。

準備が整ったら、下記リンク先からソースコードが収められた ZIP ファイルをダウンロード後、展開してから Processing で実行してください。

使い方

JumpLab を起動すると以下のような画面が表示されます。

紫色の人型キャラクタを、矢印キーの左右で左右移動、スペースキーでジャンプさせることができます。

変更可能なパラメタは以下の通りです。

SHOW TRAIL
プレイヤーキャラクタの過去64フレーム分の移動軌跡を表示させます。
CENTER MARKER
カメラ視野中心に十字マーカーを表示させます。プレイヤーキャラクタが視野中心にいるかどうかを検証するのに役立ちます。
PARALLAX SCROLLING
背景を parallax scrolling させるかどうかを選びます。Parallax scrolling を止めると、カメラの動きがより強調されて見えるようになります。
CAMERA EASING
カメラの動きを easing させます。センターマーカーを表示させておくと、easing の効果が分かりやすくなります。
ALLOW AERIAL JUMP
ジャンプの予備動作中、足場がないところにプレイヤーキャラクタがはみ出してもジャンプ可能にします。これを切るとギリギリジャンプの失敗率が上がります。
ALLOW AERIAL WALK
ジャンプ以外の要因で落下中、左右移動の加速度が通常走行時と同じになります。これを切ると足場から降りるときの制御が難しくなります。
MAX VX / MAX VY
水平および鉛直方向の最大速度です。MAX VY については、ジャンプ上昇中の速度は制限しません。
JUMP VELOCITY
ジャンプ時の鉛直方向の初速度です。
JUMP ANTICIPATION FRAMES
ジャンプの予備動作にかかるフレーム数です。大きくするとスペースキーを押してから飛び上がるまでより時間がかかるようになります。
GRAVITY (RISING)
ジャンプ上昇中にかかる重力加速度です。
GRAVITY (FALLING)
下降中にかかる重力加速度です。上昇中の加速度と等しく設定した場合とそうでない場合とで比較してみてください。
X ACCELL (NORMAL)
通常走行時にかかる水平方向の加速度です。
X ACCELL (BRAKING)
現在の移動方向と逆向きに走ろうとした際にかかる加速度です。要は、ブレーキの強さです。
X ACCELL (JUMPING)
ジャンプ中に左右キーで操作した際にかかる加速度です。'ALLOW AERIAL WALK' を OFF にした場合、足場からの下降時には水平方向の操作にはこの加速度がかかります。
CAMERA EASING COEF (NORMAL)
カメラの easing が有効になっている場合の、カメラの動きのスムーズさを調整します。値が小さいとより滑らかに動きます。
CAMERA EASING COEF (GROUNDING)
プレイヤーキャラクタが着地した際のカメラ動作のスムーズさを調整します。値が小さいとより滑らかに動きます。

実験してみよう

JumpLab の標準設定は、足場を利用しての頻繁な上り下りや、ジャンプ幅の微調整が求められる、やや難しめのプラットフォームゲームに適した設定にしてあります。パラメタをいろいろと変えてみて、プレイヤーキャラクタの挙動から受ける印象がどのように変わるか、実験してみましょう。

ジャンプ中制御の可否

'X ACCELL (JUMPING)' を 0 にすると空中制御がいっさいできなくなり、ジャンプ時に微細な制御が求められるようになります。空中制御の有難みがよくわかります。

重力加速度の対称性

'GRAVITY (FALLING)' を 'GRAVITY' と同じ値(初期設定では 0.5)にすると、ジャンプが描く放物線は物理的に馴染みのある左右対称な放物線になります。この設定で、階段状の箇所を降りてみたり、高い足場から段々に降りてみたりして、そこから受ける感覚を比べてみましょう。また、両方とも 1.2 程度に設定した上で 'JUMP VELOCITY' を 22 に設定するとどうなるでしょうか。

カメラ easing の効果

Jump Lab ではカメラの鉛直方向の動きにのみ easing がかけられるようになっています。これはジャンプ時のカメラの挙動の違いから受ける印象の違いを比較検証するための機能です。ジャンプのパラメタも様々に変えながら、'CAMERA EASING' の有効/無効を切り替えて確かめてみましょう。

なお、カメラ easing を切るときは一緒に 'PARALLAX SCROLLING' も無効にするとより印象が際立ちます。

カメラの挙動については、Itay Keren "Scroll Back: The Theory and Practice of Cameras in Side-Scrollers" が参考になります。

開発レポジトリ

JumpLab の git レポジトリは github で公開しています。

メモ

JumpLab では、プレイヤーキャラクタと障害物との衝突判定はだいぶ古いやり方で書かれています。これは開発当初、昔のゲームのバグの再現も目的の一つとしていたことの名残りです(結局、バグの再現は実装はされていません)。新しくプラットフォームゲームを作りたい、という方は、本プログラムの衝突判定をあまり参考にしない方がよいでしょう。

TODO

ライセンス

JumpLab は GNU GPL 3.0 にもとづいて配布しています。

JumpLab: an experiment software for the analysis of 'jump' for platformer game

Copyright (C) 2020 Kentaro Fukuchi

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.