Kirino 的游戏宝藏
← 第 022 号へ
ゲーム観察

再生の中の一秒四と八百万画素、Alex van Rossum は digest で『Wreckwing』のカクつきを再現可能な労働にどう釘付けしたか

破壊飛行ものの制作デフォルトがしばしば「まず崩れる賑わいを作って、カクつきは感覚でエフェクトを切り、破片���減らし、どのフレームが高いかを当てる」であるなら、2026年10月初旬、オランダの独立スタジオ Trilithon Games の Alex van Rossum が自前エンジンの開発ログに並べた数字群は…

保存した記事 ↗

破壊飛行ものの制作デフォルトがしばしば「まず崩れる賑わいを作って、カクつきは感覚でエフェクトを切り、破片を減らし、どのフレームが高いかを当てる」であるなら、2026年10月初旬、オランダの独立スタジオ Trilithon Games の Alex van Rossum が自前エンジンの開発ログに並べた数字群は、そのデフォルトの請求書を再生可能な作業指示に書き換えたに等しい。ゲームは『Wreckwing』。Mac の Apple silicon 上で動き、エンジンは自作の Trilithon Engine、Swift に Metal に Jolt Physics。ストアページはまだなく、作品は開発中。本稿は完成版をプレイしていない。以下の場面と数字は作者の公開開発ログと公式サイトの資料による。

見つけられたエンジンノートを突き合わせた。釘付けできる事実は複雑ではない。10月6日、大都市プレイで何度も減速し、最悪時はほぼ這うほどになった。テレメトリはそれらをシミュレーション側に置き、構造部材を140から500片砕いた爆発の0.7から1.4秒後に落とした。プレイ側で報告されたカクつきは0.2秒から1.4秒。同じ週の前後に、彼らは決定論 digest、ヘッドレス再生、そして4Kフレームで照明がどう画素を少なく計算するかも書いた。草稿はリポジトリ内の Claude Code が起草し、Alex van Rossum 本人が各数字を確認した。

本稿を貫くイメージは再生であり、digest でもある。道具名のように聞こえる。制作倫理に落とすと、検証可能な約束になる。まず同じ指紋で世界を再現できるようにしてから、どの一刀が時間を節約したかを語る。節約は証拠を残さねばならない。変わったのは時間。世界の指紋はなお一致する。

『Wreckwing』ビル崩落場面

一、業界デフォルト、カクつきは当て推量、最適化はエフェクト切り

破壊場面が高いことはほぼ誰でも知っている。爆発で構造が砕け、破片が互いに起き続け、描画はすでに折れた部品をまだ掃除しなければならない。業界の既定手順も固定している。まず感覚で「物理だろう」と言い、破片を減らし、瓦礫をより早く凍結し、ライトや影の段を下げる。プレイヤーも同じ語彙でカクつきを読む。爆破のあとに一瞬止まる、大都市では高設定を避ける、と。その黙契が「当て推量」を許される制作文法にする。

『Wreckwing』は当て推量のコストを高くする。大スケール都市の破壊飛行だ。ミサイル一本で数十メートルのクレーターを掘り、ロケット斉射で新たに折れた剛体を万単位で起こせる。高い瞬間は同じ一秒に重なりやすい。除去フック、地形の重複除去、爆発表現、メッシュ圧密、支持検査、どれも数十から二百ミリ秒を足せる。どのフレームがカクつくかを感じるだけなら、犯人を誤りやすいし、直しても世界を変えてしまいやすい。

分岐はここにある。デフォルトは、フレームレートを良く見せるために何を切るかを問う。彼らは、その1.4秒をまず再生可能なセッションとして釘付けし、逐項目測り、直し、世界指紋で、プレイヤーが会う崩落がなお同じ崩落だと証明できるかを問うた。

カクつき再生開発ログのヒーロー図

二、方法、4096フレームのリングバッファ、マーカーキー、ヘッドレス再生、digest

10月6日朝、彼らはまずカクつきを指差す道具を作った。ゲームは直近4096フレームの現場をメモリに残す。120 fps なら約34秒。フレーム内の各部分とシミュレーション各段階の所要時間も記す。キーボードの X、またはパッドの Y を押すと Marked カウントが出て、カメラ位置と、その前20秒・後5秒が保存される。40 ms を超えたフレームは、マーカーがなくても内訳付きで自動保存される。1フレーム記録のメインスレッド中央値コストは5 µs 未満。記録のオンオフで終了状態は一致した。

リングバッファだけでは足りない。ゲームはもともとプレイセッションを記録する。再生ツールはウィンドウなしで、記録された爆破と砲撃を元のゲーム時間で再び撃てる。都市はそのセッションが最後に読み込んだもの。ある混成都市の再生は、単一の物理ステップで836 ms に達した。物理ステップはエンジンが一度に計算する1/60秒のシミュレーション切片だ。カクつきは再現可能な実験になった。以下の各修正は、記録セッションを再生し、状態 digest(ラン終了時の全世界の指紋)を照合して検証された。一致すれば、その一刀は時間だけを変えたことになる。

決定論はその方法の土台で、数日前の別ノートに書かれている。9月29日、同じオフィス爆破テストの二本の録画は食い違った。一方は696部材が倒れ、もう一方は1123。彼らは物理エンジン自身のドキュメントに従い、クエリ、活動体リスト、衝撃イベント、接触点を安定順に並べ、断裂も要求順に適用した。改修後、同シーンは1266部材が倒れ、キャプチャ・録画・ヘッドレス計測で同じ digest を出した。digest は各剛体位置をミリメートルまで指紋化する。1ミリずれれば指紋が変わる。

10月1日、彼らはシミュレーション、断裂、ステップを再利用可能なエンジンモジュールへ移し始めた。各段で世界は原状のまま残らねばならない。そこで `tools/digests.sh` が生まれた。テストシーン13本、実機プレイ再生2本、隔 tick ステップ、音声オン、全シーンの画面キャプチャを回し、環境スイッチを消した release ビルドの基線と比較する。一巡は約10分。ヘッドレスはウィンドウ・描画・音声を切る。10シーンは約1分で終わり、指紋は描画ありのアプリと一致した。画面がシミュレーションへ回流していない証拠になる。

再生自身も嘘をつく。都心セッションは約7回に1回、街区都市は約5回に1回、終了が違った。原因はテスト窓が起動時にフォーカスを奪い、別アプリで打ったキーがシミュレーションに入ること。途中で T を一度押すと画質段が高から中へ落ちる。直し方は地味だ。オフライン実行は窓を出してもフォーカスを取らず、キーとクリックを捨て、品質段をコマンドラインで固定する。電源状態通知と600ステップ後の T を入れても、指紋はクリーンランと一致。都心再生を三連続で回しても終了は同じ。

ここまでで方法は揃った。リングバッファが指す。ヘッドレス再生がやり直す。digest が証明する。十分のスクリプトが証明を日常にする。

三、罪状表、フック、ハッシュ、爆発、圧密、そして一秒四の製品判断

再現可能なセッションができたあと、原因を表に分け、一度に一つだけ動かした。

レンダラの除去フックは、折れた部品ごとに、シーン内の描画済み部品をすべて歩いていた。家具、トリム、車、船。都市にミサイル二発で、完了した断裂の適用に124と134 ms。改修後は7.9と8.1 ms。

地形頂点の重複除去ハッシュは積の下位ビットだけを読んでいた。整数メートルと四分の一メートルの格子では下位がゼロになりやすく、頂点が少数スロットに積み上がる。ミサイル一発のクレーターが192 ms、再生の最悪シミュレーションフレームは202 ms。Murmur3 の finalizer でビットを混ぜたあと、最悪シムは31.5 ms になった。

40 m 爆発の表現層は、到達範囲100 m 全体を検索し、剛体ごとに所属構造を引く。再生では52と83 ms。実機の164 ms フレームのうち86 ms を占めたこともある。改修後の再生は5.1と6.1 ms。

都市の描画メッシュを一フレームで圧密すると、再生221 ms、実機233から311。一巡で87 ms。10月7日セッションの第二巡で、125と134 ms が60と65 ms になった。低設定の大都市再生では、33 ms 超のステップが回あたり40〜79回から4〜48回へ。クレーター支持検査も32 ms(64 m クレーター、うち約30 ms が検査)から12.6 ms。

別の容疑者クラスは五刀とも時間を節約しなかった。第一都市の最重窓、Low Power Mode 基線で、ロケット斉射は最大約22000個の活動剛体を残し、99%が断裂破片。約半分はほぼ静止しているが、7000から9800個の接触集団に縛られ、物理エンジンはまとめてしか眠らせられない。ステップは84から114 ms。ジョブスレッド減、ソルバ反復減、接触キャッシュ緩和、睡眠閾値緩和、爆発床、五つともほぼ無駄。瓦礫凍結を2秒から1秒にすると、最遅ステップが62〜70 ms になった。

製品判断はここで形になる。負荷を切る道は二つ。瓦礫をより早く凍らせるか、破片を減らすか。彼らは現在の断裂密度を残し、テストの1秒ではなく1.4秒で凍結すると決めた。高設定の2秒から1.4秒への変更は、第二の再生確認を待つ。10月7日朝、大都市十分のプレイが新しい再生基線になった。一秒級の凍結はほぼ消えた。巨大ミサイルが都心に落ち、ほかの大きな着弾も、凍結を起こさなかった。彼らは浮く破片に一つの印を付けただけだ。

この表の力は、一行の派手な百分率から来ることは少ない。各行の前後数字と、「digest が一致した」という冷たい受入語から来る。犯人誤りのコストが下がった。世界を壊すリスクは指紋に止められた。

4Kフレーム分解の開発ログヒーロー図

四、もう一刀、八百万画素上の光、「少なく計算」がバイト一致をどう保つか

カクつき表が収まったあと、刀は4Kフレームに入った。最大都市、High、Low Power Mode。ベンチで GPU は約30 ms/フレーム、約33 fps。最大単段は表面プラス照明で13.1 ms。

アブレーションは率直だ。照明を全部外すと8.7、よって照明自体は約4.5。最大12個の動的小ライトを外すと10.7、よって小ライトは約2.5、照明の半分超。空の可視度約0.9、地面バウンス約0.5、室内灯と PCSS 軟影辺はノイズ内で≈0。八百万画素が、最大12灯を各3回評価する。本体、スペキュラ、煙の輝き。灯の到達は最遠約16 m。通りの大半の画素はどの球の外にいるのに、空チェックを回していた。

改修は各灯の余白付き画面矩形を先に求め、画素は自分を覆う灯だけを見る。三灯で壁を照らす対照テストでは、改前後の画像がバイト一致。同ステップは平均13.8から11.8 ms、30 ms フレームから約2 ms を削った。限界もはっきり書かれている。プレイヤーのエンジンはしばしばチェイスカメラの直前にあり、その灯の矩形が全画面になり、全画素がなおそれを見る。他の灯は跳ばされる。

材質ディテールも同じように分解された。全ディテール材質約2.9 ms。そのうち手続き的コンクリートノイズが一層で約1.3。建物間の色差約0.55、風化と積塵が各約0.3。都市の三百万三角形を G-buffer に書くのは約3.5 ms。画面外建物を早期に跳ばす試みは約0.4 ms を節約したが、75画素の着色が違い、入れなかった。絵を変える最適化は、前後の静止画比較を経てから幹線へ入る。

傍系にはアセットとロードもある。テクスチャ付き Sniper 艦は約303458三角形、旧モデル約8800。Sniper 六機、3840×2160 High で、フレームは7.16から10.39 ms。影を約3万三角形の LOD にすると、影コストは1.9から0.2 ms。広い都市ロードは9.7秒から3.1秒。ガンシップ残骸の組み立てカクつきは290から12 ms。これらは0.15系の続報にあり、主線と同じ方向だ。まず測り、形を変え、見た目や世界が静かにすり替わっていないことを証明する。

収束、独立とは再現可能性に十分払う意思である

この10月のノート群を2026年秋の独立エンジン現場に戻すと、まず打撃するのは隠れた制作慣性だ。カクつきは当て推量、最適化はエフェクト切り、「直して動く」で足りる、直しあとの世界がなお同じ芝居かを問わない。Alex van Rossum は別の道を広げた。道具はマーカーキーほど地味でよい。受入はミリメートル指紋ほど硬くてよい。十分の `digests.sh` は決定論をスローガンから日次ゲートに変えられる。

小チームにとって、この材料は特に使える。Swift 自作エンジンを持たなくても、22000個の起きている破片がなくてもよい。各自の「もう十分」リストはある。爆破後のカクつきを感覚だけで帰属させる。平均フレームだけ見て最悪ステップを見ない。ヘッドレス対照なしのリファクタ。フォーカスを奪うテスト窓で flaky 再生を「物理が非決定」と呼ぶ。Trilithon の公開宿題はコストを地味に書く。1フレーム記録は5 µs 未満で足りる。ヘッドレス10シーンは約1分。完全 digests は約10分。高いのは、その10分を毎日払う意思と、製品として、1.4秒凍結が断裂密度を残したあとの明示的選択だと認める意思だ。

実行可能な提示は短い。

  • まずカクつきに「指差せる」能力を与える。リングバッファ、閾値超え自動保存、前後窓付きマーカー。最適化会議の前に少なくとも一つを着地させる。
  • 性能修正のたびに二問を固定する。前後数字はいくつか。世界指紋はなお一致するか。一致しない「高速化」は勝利ではなく欠陥として扱う。
  • 描画がシミュレーションへ回流している疑いがあるとき、ヘッドレスと描画ありを各一巡。指紋が一致してから画質に刀を入れる。
  • 絵を変えるカリングとベイクは、バイト級または静止画対照を先に。同一バイトで2 ms なら幹線へ入れてよい。75画素が違って0.4 ms なら記録を残し、先に換えない。

1.4秒のカクつき、836 ms の単ステップ、八百万画素上の灯、十分の digests。ストアページが開く前に、制作者は監査基準を公開ログへ書いた。まず崩落を再現できるようにする。それから時間を安くする。

小光

出典と延伸読書

Alex van Rossum / Trilithon Games(2026-10-07)Finding 1.4-second stalls by replaying play

Alex van Rossum / Trilithon Games(2026-10-01)Making a collapse repeat exactly

Alex van Rossum / Trilithon Games(2026-10-13)Skipping pixels and tearing down a 4K frame

Alex van Rossum / Trilithon Games(2026-10-10)Textured ship models

Trilithon Games(2026-10-07)Release 0.15

Trilithon Games Since 0.15.5

『Wreckwing』製品頁 https://trilithon.games/games/wreckwing/

Press kit https://trilithon.games/press/

ログインして読書記録を残しましょう。

いいね・保存を別の端末でも確認できます。

ログイン