Comm Jam 整體概念
Comm Jam 是一個編程遊戲 (coding game),在瀏覽器上遊玩。玩家必須寫程式來解決各個關卡的挑戰(大部分會是通訊實體層的問題,畢竟這是我的研究領域),有點像是 online judge (事實上就是基於開源的 Judge0 來改造的)。
這個頁面介紹 Comm Jam 的整體構想,隨時會更新。要是能真的完成這個構想就好了 (2026/1/18)。
遊戲架構
如下表,目前的構想很簡單,之後可能還會增加特殊關卡、限時競賽或是小組賽的遊戲機制。
| 版面概念圖 | 說明 |
|---|---|
|
|
首頁,可以選擇登入或是註冊帳號。註冊需要提供電子郵件,忘記密碼時才能發送信件來重設密碼。 captcha應該是可有可無。 |
|
|
個人頁面及排行榜,各佔一半畫面,大概就如圖所示。 |
|
|
轉場,如圖所示,進度條下方會顯示一些和通訊有關的知識,或是關卡提示(但好像也沒什麼好提示的)。也可以顯示一些幹話之類。 |
|
|
遊戲畫面,中間為程式碼編輯器,左右為描述任務情境的動畫/圖案,上方有關卡名稱、關卡內容與提示,可以點擊展開。最上方有一 Youtube 音樂列,顯示目前播放的音樂名稱。 |
|
|
遊戲畫面,關卡說明與提示視窗展開後。 |
|
|
結果頁面,上方為程式結果,會即時顯示相關的圖表(如錯誤率、瞬時功率之類的),以及資源使用情況(如記憶體、執行時間等等);下方為個人遊戲結果,等於是個人目前分數的 summary。 |
遊戲玩法
玩家身為一位通訊系統工程師,被派遣到各個地方來設計通訊系統,每個地方的要求、資源與環境都不同,玩家要在這些條件的限制下,達成指定的任務;成功的話有獎勵,失敗的話也會有懲罰。具體來說,玩家會有三個分數指標;
生命:玩家一開始共有三顆命,每過五關可以增加一命,若某關失敗三次便會扣一命,上限為五顆命。一顆命都沒有的話,玩家會被停止遊戲兩個禮拜,之後補回三顆生命繼續遊戲。若程式碼造成系統危害、資源佔用,生命值直接歸零。
技術能力:玩家每通過一關,技術能力值都會增加,上限為 1600;相反的,某一關失敗兩次便會開始扣技術能力值。達到特定技術能力,關卡就會解鎖;如果技術能力不夠,可以
- 再次挑戰先前關卡,嘗試得到更高的關卡分數,可以增加技術能力值。
- 用生命換,一顆生命可以換 100 技術能力。
- 用溝通能力換,30 溝通能力可以換 100 技術能力。
溝通能力:玩家若某一關一次過,溝通能力值就會增加,無上限,也不會扣除。溝通能力對於遊戲沒有太大影響,但是可以解鎖特殊關卡(暫時還沒有想法)。
每一關也會有關卡分數,根據以下表現來評分:
正確性:程式建造的通訊系統能夠正確運作。這部分包含正確訊號呈現、符合規定的錯誤率、符合規定的瞬時功率等等,因關卡而異。需要完全正確才能拿到這部分分數。
時間:程式執行時間,也可以說是程式複雜度、計算複雜度。執行時間愈長,這部分的分數愈低。
資源使用:如記憶體、CPU、硬碟I/O等的資源使用,但是這部分實現比較困難,目前還沒有想法。
行數:程式碼行數愈少,這部分分數愈高。行數計算會扣除空白行、註解行。
任務內容對應到的領域包含但不限於:
- 類比調變 (AM、DSB、SSB、FM 等)
- 基礎數位通訊 (BPSK、QPSK、16QAM 等)
- OFDM 及相關技術 (Wifi、5G 等)
- 通道編碼 (錯誤更正碼、通訊序列等)
- 展頻通訊 (DSSS、FHSS 等)
- 等化器設計、通道估測
- …
系統架構
這一節介紹整個系統(程式)的架構,如下圖。目前只是把專案的環境大概建置好,所以這張圖只是非常初期的構想。
美術
由 Raymond Su 繪製草圖,Gemini 的 Nano Banana 修飾。草圖由紙和筆繪製,再經由漫畫轉檔程式處理、小畫家著色,最後送給 Nano Banana 調整。
音樂
遊戲過程(即寫程式時)的音樂應該會使用 Youtube 上的音樂,並標示作者與作品名稱。首頁、個人頁面以及結果頁面的音樂,由 Raymond Su 製作,目標是做出和 Toby Fox 的作品一樣、和遊戲超級搭配的音樂。
開發人員
- Raymond Su:本網誌作者。