CheerLife 啦啦隊人生模擬器

裝在單一 3,500 行 HTML 檔裡的啦啦隊生涯模擬:16 歲高中舞社到 42 歲引退,一路經歷公開徵選、練習生合約、與逐年變強的對手爭隊內排位、副業經營、身心崩潰——以及你要用什麼姿態離開舞台。

6.0/10
加權總分
技術深度
5.5
遊戲設計
7.5
後端與安全
6.5
程式品質
5
測試
3
完成度
7
原創性
7
逐面向拆解

七大面向

memory技術深度 5.5/10

稱職但不深,而且是刻意的:單一 HTML 檔、零建置、零依賴、全部塞在同一個全域作用域。裡面有:以字串雜湊播種的 mulberry32 PRNG、難度隨聯盟階級與壓力浮動的 d20 檢定、通膨指數化的經濟系統(每年 2.8%,套用於稅級距、維持費與所有價格)、會遞減並觸發危機事件的持續收入、有版本號與遷移路徑的 localStorage 存檔、隊伍配色的 Canvas 生涯卡、SVG 雷達圖與環形圖。唯一稱得上技術的是 readable()——以相對亮度推導可讀色,讓深色隊伍主色當文字仍看得見——而那與 yakyulife/src/ui/dom.js 是同一套做法。

stadia_controller遊戲設計 7.5/10

以這個體量而言系統密度很高,而最好的點子是「反轉」不是「加法」。💀 最苦的種子起始資質上限最低,卻拿到最多的「鑽研」次數與最低的門檻,於是最差的起點練到最後天花板最高——努力成為天賦的真實替代路線,還獨佔專屬成就。崩潰不是一條血條:季末壓力 ≥88 觸發三振式判定,第三次由醫生強制引退。同期對手逐年變強、擋在 C 位前面,34 歲引退後由新一代接手。行動點與休賽期檔期是兩條各自獨立的稀缺軸,專注連段與全能連段互斥,副業收益遞減——沒有「全部都要」的流派。缺的是驗證:門檻是靠觀察(「實測難以達到」)調整,不是靠模擬分布。

security後端與安全 6.5/10

沒有後端,而且在本次體檢中少見地也沒有隱私上的自相矛盾:無帳號、無伺服器、明講不上傳任何資料、附上一張表列出用了哪些 localStorage 鍵與各自何時清除,流量統計用的是無 cookie 的 GoatCounter 而非 Google Analytics(index.html:3494)。輸出衛生是兩款人生模擬中較好的:esc()index.html:339)在每一處 innerHTML 插值都有套用,敘事文字則走 textContent。存檔讀取也防守到位——JSON.parse 包在 try/catch、以版本控管,並在某次發版出貨了會讓休賽期卡住的存檔後,改為載入時補齊缺漏欄位。

code程式品質 5/10

最弱的面向,也是單檔限制的直接代價:約 3,160 行 JavaScript 全在同一個全域作用域、131 個頂層函式、16 個 inline onclick 迫使那些函式必須留在全域,加上極度縮寫的命名(STHDFSEAMBTI),沒有對照表就很難讀懂呼叫端。註解裡帶著 修正③ 這類編號,指向一份不在 repo 裡的檢查清單。撐住整體的是真正統一的資料形狀:每個事件都是 {id, where, w, cd, cond, title, desc, ch},每個選項都經由單一的 fx() 效果套用器回傳 {ok, calc, story, log}——所以即使沒有模組化,104 個事件仍然一致。

experiment測試 3/10

一樣沒有自動化測試、沒有 CI,但這是本次體檢中唯一有附檢查器的專案。validateEvents()index.html:3471)以 #dev 載入頁面時執行,遍歷每個事件抓出 id 重複、缺 wherecd、選項少於兩個、title()ch() 執行期丟錯——接著斷言只有踩過坑的人才寫得出來的領域規則:徵選與練習生事件必須以對應旗標 gate、兼任事件要看 sideLg、學生階段不得混入職業內容。它是人工、手動觸發的資料完整性掃描,不是對邏輯的測試套件,而且發版前沒有任何機制強制它跑過。

verified完成度 7/10

從頭到尾可玩、文件也齊——上線於 GitHub Pages、1,681 行 wiki、逐版說明存檔相容性的更新日誌、跨生涯保存的成就殿堂、可分享的生涯卡、手機優先且處理安全區域的版型,還有真的無障礙屬性(role="progressbar"aria-liveradiogroup、有焦點鎖的對話框、noscript)。掉漆的是文件:README 仍寫 101 個事件、48 項成就,實際 build 是 104 與 49;版本徽章寫 v1.1.0、頁面標題寫 V1.1.1;三個連結是壞的——./CHANGELOG.md(檔名其實是 Changelog.md)、./docs/WIKI.md(wiki 在根目錄),以及 ./LICENSE:徽章寫著 CC BY-NC,但 repo 裡根本沒有這個檔案。範本佔位字也還在:你的帳號 的 clone 網址,以及授權那行旁邊的「← 依你的實際選擇替換」。

emoji_objects原創性 7/10

題材是本次體檢中最稀有的。運動生涯模擬是擁擠的類型;但以啦啦隊員為主角的生涯模擬——徵選、隊內排位、跨運動兼任、周邊與直播經濟、這個行業真實的身心消耗——本文作者找不到前例,而且文本具體到讀得出是台灣而非泛用背景。不過底盤是繼承來的:README 把原創概念署名給最先生(@mr.themost),正是 YaKyoLife 片頭署名、且出現在其 git 歷史中的同一人,兩款遊戲共享種子化人生的結構、結算卡、第二人生結局,以及幾乎一字不差的道別句。原創的題材,借來的骨架。

trending_up亮點

  • 最差的種子擁有最高的天花板——💀 種子起始資質上限最低,卻拿到最多鑽研次數、最低門檻與專屬成就:把「努力」做成天賦的真實替代路線
  • 壓力三振——季末壓力 ≥88 逐級升高:醫囑休養 → 留下永久慢性壓力 → 醫生禁止上場強制引退,並有專屬引退稱號
  • 有壽命的對手——同期競爭者逐年加分、擋住 C 位,34 歲引退後由下一代接手
  • 手寫的完整性檢查器——validateEvents() 斷言 gate 規則並實際執行每個事件的 title()ch() 以抓出執行期錯誤,以 #dev 觸發(index.html:3471
  • 一致的輸出跳脫——單一 esc() 套用於每一處 innerHTML 插值,敘事文字則走 textContentindex.html:339

trending_down弱點

  • README 三個壞連結——./CHANGELOG.md(實際檔名 Changelog.md)、./docs/WIKI.md(wiki 在根目錄),以及 ./LICENSE:徽章寫 CC BY-NC,但 repo 裡沒有這個檔案
  • 三處版本不一致——README 徽章 v1.1.0、頁面標題 V1.1.1、程式開頭註解宣告 VER 111 而下一行是 const VER=110index.html:329-333);正確的是常數,因為 v1.1.1 宣告與舊存檔相容
  • 全部擠在一個全域作用域——約 3,160 行 JS、131 個頂層函式,以及 16 個逼它們必須留在全域的 inline onclick
  • 內容量數字過期——README 寫 101 個事件、48 項成就;實際 build 是 104 與 49
  • 平衡靠觀察而非量測——門檻因為「實測難以達到」而下修,新數字背後沒有模擬分布支撐

兩款遊戲,同一條血脈

CheerLife 的 README 把原創概念署名給最先生(@mr.themost)。那正是 YaKyoLife 片頭署名的同一個名字,而 mr.themost <ja42022@gmail.com> 是 YaKyoLife git 歷史中的 committer——與擁有該 repo 的帳號共用同一個 email。這不是兩個碰巧相似、互不相干的業餘專案。

共用的底盤在程式碼裡看得見:以字串播種、且種子本身就是可分享物的 PRNG;規劃 → 事件 → 結算的年度循環;結算才揭曉的隱藏特質;引退後的第二人生結局;Canvas 結算卡;以相對亮度推導可讀色好讓隊色不失效。連收尾都押韻——YaKyoLife 的 retire.js 寫「離開球場的人生,也是人生」,CheerLife 的 README 寫「離開舞台的人生,也是人生」。

於是這一對成為本次體檢的第三個物種,與「個人+AI 衝刺」和「制度性專案」並列:把格式交給第二位製作人。一個人的設計範本,由另一個人換到完全不同的題材上,而且署名寫在最前面。取捨反映在分數上——CheerLife 在輸出衛生上勝出,也是全站唯一附檢查器的專案;但它繼承了一副不必自己發明的骨架,也略過了讓原作平衡站得住腳的那套量測紀律。

smart_toyAI 輔助開發跡象

全案沒有任何 AI 署名——沒有共同署名的 commit、沒有工具設定檔、沒有 generated-with 註腳。git 歷史在另一個方向上同樣沒有資訊量:17 個 commit 全部來自 GitHub 網頁介面(「Add files via upload」「Update index.html」),代表整段開發歷史發生在平台之外,commit 數完全不能拿來衡量投入。從成品本身能看出的是高度反覆、以檢查清單推進的流程——程式裡穿插編號的 修正 標記、逐版追蹤存檔結構相容性的更新日誌,以及 104 個共用同一個物件形狀的事件。

summarize統計

技術棧Single-file HTML · Vanilla JS · Canvas 2D · SVG · localStorage · GitHub Pages
類型純文字生涯養成模擬
開發期間2026-08-12 → 2026-08-19
實際開發天數4 天
Commit 數17
程式碼行數~3,497
作者jarvanthevoyager

總評

稀有的題材,執行紀律遠比 17 個 commit 的歷史看起來更好:系統彼此咬合、全站唯一有出貨檢查器、跳脫一致、隱私姿態誠實。拖住它的是自己選的單檔架構、已經與 build 脫節的文件,以及在姊妹作用模擬論證平衡的地方,它只能用手感論證。