whorl · 階段 1 · 物理核心可不可信

實驗頁

進遊戲先看入口選單(2026-09-16 重做成東方本家主選單的形狀:一欄大字、選中的蓋紅印、六個人繼續繞圈、場地上浮出該模式的位子;鍵盤上下加 Enter,觸控點一下看再點一下進)。故事(原名練習,2026-09-12;2026-09-19 改名並加上朱印帳):挑一個人 → 出戰 → 戰術選擇(不限時)→ 看 → 結算,對手每回合換一個。 正式對戰(2026-09-15):挑三個人組隊、點的順序就是出場順序(排序不再另外問一次,階段 5 已收案)→ 出戰 → 兩隊攤開對看 → 逐槽對打; 三槽打完沒人到分就照原順序續打(Q1:不重密封)。組隊限制是三顆不同類(階段 7 方向第 9 條、階段 6 驗過),夥伴不夠的槽照解鎖順序自動遞補。 對手是機器人(三顆不同類、戰術權重隨機)。物理、計分、丟法條件全部走 sim.js 與目前的池子,跟系列頁同一套。 入口連結:/story(舊的 /practice 照樣能用)、/match、/online,分享連結是 /r/房號(點開直接進那一間當客人,房主畫面有 QR 與複製)。連結只在打開那一刻讀,讀完網址換回根路徑,重新整理一律回標題;開檔時改用 ?bt=practice|match|online 與 ?join=房號。連線的戰術倒數 10 秒,時間到用看過的那一手;第一場有猜拳說明卡、打滿五場(whorl.played)三角旁的手才收。myteam=/foeteam= 用 1-based 索引寫死兩邊的隊伍與出場順序。頁面不會把參數寫回網址,要重現一場用下載紀錄裡的 replay 網址。 夥伴進度存在瀏覽器裡:unlock=all 全開、reset=1 清掉。auto= 選打法的倒數秒數(0 關閉)、bspeed= 撞到時的播放倍率(預設 2)、fast= 沒接觸時最多升到幾倍(預設 4)、idle= 幾秒沒接觸開始升、ramp= 用幾秒線性升到頂、 preview= 出手前先看這一手的推演(auto 依機器分、hover 滑過看、tap 點兩次、off 關掉)。

操控試玩(G6,2026-10-26):A 是你,從南邊射。左半邊拖曳=把軸壓向那個方向,陀螺往那邊走;右半邊按住=抓地(軸尖變平、摩擦變大:走得兇,也燒轉速)。 鍵盤:方向鍵或 WASD 加空白鍵。比賽條件跟對戰同一套(池子、場地、丟法),只是邊跑邊讀你的輸入;平衡還沒調。網址 ai=1 讓對手面向你時抓地,arena.steerTilt=、arena.gripTip=、arena.gripMu= 調手感。

這一場

種子–
時間–
撞擊次數–
結果進行中

陀螺 A

轉速–
爆裂累積–
離心距離–

陀螺 B

轉速–
爆裂累積–
離心距離–

批次結果

還沒跑。

批次只在同一台桌機、同一個瀏覽器上跑才有可比性。 不同瀏覽器引擎的三角函數結果不一致,手機用來看畫面就好,不要用來產數據。

參數掃描

選一個參數,其餘維持下方面板的設定。

掃描時其他參數固定不動,所以一次只看得出一個維度。 要比較兩個維度就把其中一個寫進網址、換個值再掃一次。 場數乘上格數就是總場次,跑太多會讓畫面卡住,先從小的試。

勝率矩陣 · 階段 2

十二組取樣點,兩兩對打,位置各半以消除先手優勢。 每配對一千場約需三到四分鐘,先用兩百場看趨勢比較快。

格子是「列」對「行」的勝率,排除平手後計算。 藍色代表列方佔優、紅色代表行方佔優。平手率超過 25% 的配對會加框, 那種配對的勝率讀起來意義會扭曲,循環偵測也會跳過它。

Q1 文字原型 · 3v3 密封排序()

比分你 0 : 0 對手
戰績尚未開打
從六組裡挑三顆組隊(點一下選取,再點取消)。對手的隊伍在你確認後揭曉。
你的排序(空)
播放速度

計分:高分擊墜 3(出場速度 ≥ vstar)、出場 2、爆裂 2、耐久勝 1、自爆判對手 1、同歸於盡 0,先到 target 分。 三槽打完沒人到分:?series=fixed 照原排序再打一輪,?series=reseal 回到排序重新密封。 對手 bot=random 亂排,bot=counter 針對你上一次亮出的排序回擊。 live=1 是階段 3 的 B 版:每一槽在上方畫面拖曳發射,放開那一刻比賽開始、動畫播完再記帳。 gesture=flick 換成甩的手勢:放開的點是落點、甩的速度是力道。input=buttons 把發射變成三顆按鈕加提示,先驗決定、不驗手。 預設池子是搜出來的八顆(躲三、守二、攻擊三,pool=eight),pool=three 是 C2/C4/C6 三角,pool=six 回到原本六顆; pool=r5(預設)是卡榫物理下重搜的五顆;pool=w4/w3/eight/three/six 是舊物理的池子,沒帶場地參數時會自動套回它們當時的場地; lite=1 減益面板:自動隨機組隊與排序,每槽只講剋不剋與擅長,打完只講勝敗,資料照存。對手 botLaunch=signature 用擅長丟法、adapt 針對你上一次的丟法回應、default 預設發射。 每次排序花了幾秒會記進紀錄,那是階段 5「會不會停下來想」的指標。

2a · 單顆的行為空間

單顆放進碗裡、不給對手,跑到停轉或出場。四個單顆描述量:平均離心距離、離心距離的標準差、 轉速半衰時間、平均線速度;加一個碰撞描述量 impact:對中點對手打 8 場的平均最大衝量。 參數空間(mass、comHeight、bumpiness、friction、tip)均勻取樣,加上每個參數單獨從最小掃到最大、其餘固定在中點。 500 點乘 3 種子在桌機約一分鐘。

及格線照 plan.md 2a(2026-09-03 修訂):每個參數的全範圍掃描至少讓一個描述量改變 30% 以上; 沒有參數所有描述量都變不到 5%;描述量空間的有效維度至少二(參與比 1 ÷ Σ主成分比例² 不低於 2); 任兩參數的影響曲線相關係數絕對值小於 0.9。舊的 k=3 silhouette 只列出來當參考。 所有工作共用同一組種子,格與格之間的差只剩參數本身。

2b · 對撞矩陣

先跑 2a 掃描拿到那團雲(沒跑過會自動跑),在描述量空間用 k=20 挑二十顆代表(pick=iso&poolN=60&poolPer=200 改成等強度挑選:先挑 60 顆候選兩兩對打,只留池內強度 40–60% 的再挑二十顆,多約十二分鐘), 先固定一對換五個種子量勝率變異數,再 190 個配對兩兩對打、位置各半。每配對一千場在桌機約七分鐘。

及格線照 plan.md 2b(2026-09-03 修訂):擊墜、爆裂、耐久勝各佔 5% 以上且沒有一種超過 60%,自爆那一格等階段 3 接上發射再補驗; 存在 v* 讓高分擊墜佔出場的 15% 到 35%;至少三個每邊 ≥ 60% 的三角循環;沒有任何一顆平均勝率 ≥ 65% 或 ≤ 35%; 至少 20% 的配對與一維評分(Bradley–Terry)預測相差 15 點以上;場長中位 20 到 60 秒;每配對場數要讓勝率標準誤 ≤ 2 點(一千場是 1.6 點)。

參數(直接改,不用碰程式碼)

被改過的欄位會標成黃色。所有參數都能寫在網址的查詢字串裡,例如 ?seed=99&a.mass=1.4&arena.slope=1200,沒指定的用預設值, 所以一次實驗的完整紀錄就是一行網址。