プラットフォーマーを作る前に:学んだことと、残したこと
Skyline Runを作る前に学んだこと(6種類のプラットフォーマー、ジャンプ、カメラ、最初のレベル)、ゲームができてから選んだこと、そしてゲームを作ったAIエージェントが間違えたことの記録です。
私のプラットフォーマーの最初のレベルには、ダッシュを教えるための穴がありました。計測してみると、普通のジャンプで越えられてしまいました。
それは後の話です。Skyline Runを作る前、私はプラットフォーマーが何でできているのかを知りませんでした。そこで調べました。どんな種類があるのか、ジャンプはどう感じられるべきか、カメラはプレイヤーに何を見せるべきか、最初のレベルはどう教えるのか。この記事はその調査に加えて、ゲームができてから選んだこと、AIエージェントのチームがどう作ったか、そして調査では答えが出なかったことをまとめたものです。

まず遊びたい方へ:Skyline Runをプレイできます。先にこの記事を読む必要はありません。
要点
小さなプラットフォーマーを始める人に私が勧める順番です。三目並べの記事で挙げた三つの問いを土台にしています。
- プラットフォーマーの種類を一つ選び、目標を一文で書く。
- 数値を決める前に、欲しいジャンプ(高さ、距離、猶予)を言葉で説明する。
- 跳ぶ前に着地点がカメラに映っているようにする。
- 一度に一つの考えを教え、スタート、学び、失敗、再挑戦、ゴールをつなげる。
- 計測し、誰かに遊んでもらい、要素を足す前に邪魔なものを直す。
まずプラットフォーマーの種類を一つ選ぶ
ジャンプは、まったく違うゲームに使われます。その幅を見るために六つの形を使いました。形同士は重なり合い、例はあくまで目印です。
- 高精度: 再現できる移動とタイミング。例:Celeste。
- パズル: 空間的またはシステム的な問題を解くこと。例:Braid。
- シネマティック: アニメーション、演出、設計された場面展開。例:Inside。
- メトロイドヴァニア: 新しい能力で再び開く探索。例:Hollow Knight。
- ローグライトとのハイブリッド: 条件が変わる反復プレイ。例:Dead Cells。
- ランナー: 前進し続けながら先を読むこと。例:Canabalt。
大事なのは絞ることです。最初のプロジェクトでは一つを選び、残りは置いておきます。
Skyline Runでは: 高精度を選びました。ゲーム全体を一文で言うと、「走り、跳び、ダッシュして、ネオンの地区の屋上の出口にたどり着く。危険物に触れるか落下すると、最後のチェックポイントに戻る」です。
この選択から、互いに影響し合う四つの問いが生まれます。移動がどう反応するか、カメラが何を見せるか、レベルがどう教えるか、失敗の後に何が起きるかです。

数値を決める前にジャンプを言葉で説明する
Steve SwinkのGame Feelは、操作がどう感じられるか、そしてゲームが入力にどれだけはっきり応えるかについての本です。Kyle PittmanのGDC講演「Building A Better Jump」は、それを実践的にしてくれました。重力の値からではなく、欲しい高さ、距離、時間から始めるという考え方です。可変ジャンプの高さや、頂点を過ぎてから速く落ちる仕組みも紹介されています。
Maddy Thorsonの「Celeste & Forgiveness」からは、少し早すぎたり遅すぎたりする入力のための小さな工夫を三つ学びました。
- コヨーテタイム: 足場の端から走り出た直後でも、少しの間はジャンプできる。
- ジャンプバッファリング: 着地の直前に押したジャンプが、着地したフレームで発動する。
- 頂点での滞空: Celesteでは、頂点付近でジャンプを押し続けると重力が半分になり、着地を合わせる時間ができる。

Skyline Runでは: 最大ジャンプは56 px(3.5タイル)上昇し、60 Hzのゲームの14ティック目で頂点に達します。1ティックだけ押すと16.56 px、約1タイルの小ジャンプになります。コヨーテタイムとジャンプバッファはそれぞれ5ティック、約83 msです。ジャンプを押し続けている間は頂点付近で重力が半分になり、落下中の重力は上昇中より25%強くなります。
跳ぶ前に着地点を見せる
どこに着地するのか見えなければ、ジャンプに踏み切れません。カメラの仕事はキャラクターを追うことだけでなく、次の判断に必要なものを見せることです。
Itay Kerenの横スクロールのカメラについての分析は、カメラウィンドウという考え方を説明しています。プレイヤーはその枠の中では自由に動け、枠を出たときに画面がスクロールします。Rastanでは縦の枠がジャンプ一回分の高さです。Fezは縦方向に固定したカメラを滑らかに動かし、Super Mario Worldはジャンプ中は止まったまま、着地時に位置を合わせることがあります。

Skyline Runでは: カメラは向いている方向に24 px先を映します。上方向のウィンドウは72 pxで、最大ジャンプの56 pxより広く、下方向は40 pxです。どちらの軸にもスムージングをかけています。
一度に一つの考えを教える
Timothy J. SeppalaによるEngadgetのSuper Mario 3D Worldについての記事は、四段階の教え方を紹介しています。3Dゲームの話ですが、この形は最初の2Dレベルにも使えます。
- 導入: 失敗しても痛くない場所で、一つの考えを見せる。
- 展開: 位置、リズム、結果を変えて深める。
- ひねり: 最初の解き方を調整しないと通れないようにする。
- 締め: はっきりした使い方を一度見せて、次へ進む。

Skyline Runでは: ここで、調査は正しかったのに私の数値は間違っていました。地区1の教える穴は5タイル幅で、「ここではダッシュが必要だ」と伝えるためのものでした。ところがエンジンで計測すると、普通のジャンプで越えられました。修正後は、一段低い床の上にある6タイルの穴になりました。ジャンプだけでは穴の底に落ちますが、そこから歩いて戻ってやり直せます。向こう側の屋上に届くのは、ジャンプと空中ダッシュを組み合わせたときだけです。次の穴では、失敗を許すための足場が二つ、ダッシュを飛ばせる階段になっていました。それを、近道にはならない回復用の足場一つに置き換えました。詳しくは計測が正したジャンプに書いています。

失敗を安くする
プラットフォーマーの大半は、失敗してもう一度挑戦することです。だから、ミスの直後の瞬間も設計の一部です。いつ操作を止めるか、プレイヤーがどこに戻るか、再挑戦で何を残すかを決めます。
Skyline Runでは: 落下や危険物に触れると、入力が18ティック(0.3秒)止まり、最後のチェックポイントから再開します。再挑戦しても、タイム、ミスの回数、チェックポイントはそのまま残ります。
AIエージェントがどう作り、どこで間違えたか
Skyline Runのコードは、私が手で書いたものではありません。8月19日、私はClaude Fable 5に調査メモを渡し、詳しい実装計画を頼みました。計画には、エンジンの定数、四つの部屋、そして「one 5-tile gap (jump-uncrossable)」、つまりジャンプでは越えられない5タイルの穴がある教える部屋が書かれていました。
次に、Claude Opus 5のエージェントがオーケストレーターとして制作を指揮しました。作業は波のように振り分けられ、GPT-5.6のワーカーエージェントがエンジン、レベル、ページを並行して書き、別のQAエージェントとレビューエージェントがその成果を確認しました。計画には「実装、QA、評価の役割は分け、判定はQAが持つ」とありました。最初の遊べるバージョンは、その日の夜、約2時間で完成しました。
間違いは、この記事がずっと扱ってきたものと同じです。オーケストレーターは計画の数値を調整し直し、「Measured ability envelope — authoritative for level authoring and tests」(計測済みの能力範囲。レベル制作とテストの正式な基準)という表をワーカーに渡しました。ジャンプの行には、ジャンプで越えられるのは4タイルまでで「5 is impossible」(5は不可能)と書かれていました。しかし、実際のエンジンではまだ何も計測されていませんでした。ワーカーがその主張をテストにし、QAエージェントが実行すると、テストは失敗しました。ジャンプで5タイルの穴を越えられたのです。
オーケストレーター自身の診断は、穴の幅がぎりぎりで、フレーム単位で完璧なコヨーテジャンプなら越えられる、というものでした。プレイヤーは幅12 pxの当たり判定の左端が屋上に乗っている間は接地したままなので、実際に踏み切る位置は、モデル化したより12 px先だったのです。同じ夜、オーケストレーターは自分の到達距離の表が間違っていたのに、レベルを「not completable」(クリア不可能)と判定しました。また、レビューエージェントは、Shiftを押しながら文字キーを押すと、その後ずっとジャンプできなくなる不具合を見つけました。
ここから学んだのは、エージェントが数値を「計測済み」と呼んでも、それは主張であって計測ではない、ということです。間違いを見つけたのは、その主張を実際のエンジンで試した別のエージェントでした。だから今、このレベルには固定のテストがあります。記録した1,304ティックのクリアプレイが、毎回ミスなしで地区1をクリアしなければなりません。
入れなかったもの
最初のバージョンは、四つの部屋からなる一つの地区でした。走る、跳ぶ、空中ダッシュ、五つのチェックポイント、キーボードと画面上のタッチ操作、そしてグレーのブロックによる仮のアートです。記録したリプレイは、ミスなしで21.7秒でクリアします。8月30日には、キャンペーンは十の地区に増えていました。
それ以外はすべて後回しにしました。ほかの移動能力、敵、戦闘、アイテム、サウンド、本番のアート、ゲームパッド対応、セーブ、レベルエディター、難易度設定です。ゴール画面の先に隠れているものはありません。
調査で答えが出なかったこと
読むことで、正しい問いは手に入りました。でも、自分のゲームにとって正しい数値は手に入りませんでした。それをくれたのは、動いているエンジンの計測だけです。そして私はまだ、誰かが説明なしで遊ぶ様子を見ていません。だから、ダッシュの教えが人に伝わるかどうかは、まだわかりません。
その後の話:私はジャンプを計測し、次にゲームを訓練の場にして、ニューラルネットワークが屋上の走り方を学べるかを試しました。ネットワークは代わりに一つの地区を丸暗記しました。
ぜひ協力してください。地区1を遊んで、最初にどこで落ちたか、ダッシュの教えに気づいたかを教えてください。Instagramの@ai.maker.labへのDMやコメントで届きます。
この記事の調査、図版制作、翻訳、レビューにはAIと自動化を使用し、記事で扱うゲームもAIエージェントが制作しました。私はAI Maker LabとSkyline Runの運営者として、最終的な文章と出典確認に責任を持ちます。
出典
- Swink, Steve; CRC Press. Game Feel: A Game Designer’s Guide to Virtual Sensation. 初版、copyright 2009. https://www.routledge.com/Game-Feel-A-Game-Designers-Guide-to-Virtual-Sensation/Swink/p/book/9780123743282. 2026-08-19閲覧。
- Pittman, Kyle; Game Developers Conference. “Math for Game Programmers: Building A Better Jump.” GDC 2016. https://gdcvault.com/play/1023559/Math-for-Game-Programmers-Building. 2026-08-19閲覧。
- Thorson, Maddy. “Celeste & Forgiveness.” 公開日は表示されていません。 https://www.maddymakesgames.com/articles/celeste_and_forgiveness/index.html. 2026-08-19閲覧。
- Keren, Itay. “Scroll Back: The Theory and Practice of Cameras in Side-Scrollers.” 2015年5月11日。 https://www.gamedeveloper.com/design/scroll-back-the-theory-and-practice-of-cameras-in-side-scrollers. 2026-08-19閲覧。
- Seppala, Timothy J.; Engadget. “This is why ‘Mario’ levels are brilliant.” 2015年3月17日。 https://www.engadget.com/2015-03-17-super-mario-3d-world-design.html. 2026-08-19閲覧。