ゴムひもの山歩き：張った力を、どこで離すか

012は、ゴムひもを杭につないで岩棚を渡る小さなゲームです。
SPACEでつなぐ、もう一度で離す。上と下でひもの長さを変え、左右で進路を少し調整します。
離した瞬間にジャンプ力が加わる仕組みではありません。それまでに得た勢いを、そのまま次の棚へ運びます。

一番確かめたいのは「次は早く離そう」「横へ急がず少し巻き取ろう」と、失敗を見て行動を変えられることです。
到着の時間制限や、長く休んだことへの減点は入れていません。途中の棚で止まることにも意味を持たせました。

3つの道
最初は広い向こう岸。固定の長さでも、右へ振って離せます。
2つ目は短い棚と、その先の危険な岩。勢いを付け過ぎると越えてしまうため、解放時機と張り方を変えます。
3つ目は高い棚。まず中棚へ登り、ひもを離して休み、次の杭へつなぎ直します。

設計案から変えた点
当初の座標をそのまま正解とはせず、成功入力を走査しました。
Bの開始位置はx44へ動かし、開始直後から接続範囲へ入るようにしました。
Cの中棚はx96〜128、2本目の杭は(140,26)に置きました。手前の側面へ引っかかるだけの配置から、上昇を待って乗れる配置へ直しています。
これらは実装前後の調整履歴です。複数の変更を一つの比較実験として扱ってはいません。

一つだけ変えた比較
Bで、開始位置・地形・同じ入力列を固定しました。
基準版ではひもの長さ38が固定。変更版は上キーによる巻取りだけを有効にしています。
横入力なしで35フレーム巻き取り、離す入力を与えると、基準版は落下1回、変更版は落下0回で到着しました。
別の時機なら基準版にも解があります。固定長の静かな振りでは48〜56フレーム、巻取りありでは23〜48フレームに成功が見つかりました。
新しい操作が誰にとっても楽しいという証明ではなく、到達方法を変える働きがあることの確認です。

点のように細い正解にしない
30Hz入力で解放時機を1フレームずつ走査しました。
Aの「右へ振る・固定長」は18〜51フレーム、Bの「横入力なし・巻取り」は23〜48フレームが成功。
Cの1本目は同じ巻取りで30〜48フレームに中棚へ安定着地します。この範囲は中棚までの値です。
完成したCの成功ログには、中棚で休み、2本目を選び、最後の旗まで登る全入力を残しました。
時間刻みを半分にしても3ルートとも到着し、最終着地点の差は1px以内でした。

コードで練習する点
描画と物理を分離し、同じ入力から同じ状態へ進む純粋な更新関数を作ること。
ひもがたるんだ時と張った時、地上と空中、押した瞬間と押し続けた時を分けること。
速い移動を点の衝突だけで判定せず、移動区間で岩を調べること。
日本語・空白を含むフォルダやWindows既定の文字コードを想定し、UTF-8を明示すること。

見つかった簡単な安全策
追加の検査では、横に動かず巻き取り続け、40フレームごとにつないだり離したりする方法で3つの道を通れました。Cでは届く次の杭へ選び直します。
これを塞ぐための時間制限や罰は加えていません。同じリズムを覚えた後にも操作を楽しめるかは未確認で、毎回難しい判断が必要だとは言えません。

まだ確かめたいこと
これは軽いゲーム用のばね近似です。巻取りは外部の力を加えるので、エネルギー保存の教材とはしていません。
映像は実際のPyxel描画を自動入力で録画した無音映像です。人の試遊映像ではありません。
実装・自動検証と、人が操作して感じる分かりやすさ、面白さを分けて記録しています。
人の試遊では「次は早く離す？ 少し緩める？」「届かないのか、速過ぎたのか分かった？」を聞きたいです。
