Comm Jam 整體概念


  Comm Jam 是一個編程遊戲 (coding game),在瀏覽器上遊玩。玩家必須寫程式來解決各個關卡的挑戰(大部分會是通訊實體層的問題,畢竟這是我的研究領域),有點像是 online judge (事實上就是基於開源的 Judge0 來改造的)。


  這個頁面介紹 Comm Jam 的整體構想,隨時會更新。要是能真的完成這個構想就好了 (2026/1/18)。

遊戲架構

  如下表,目前的構想很簡單,之後可能還會增加特殊關卡、限時競賽或是小組賽的遊戲機制。

版面概念圖 說明
首頁,可以選擇登入或是註冊帳號。註冊需要提供電子郵件,忘記密碼時才能發送信件來重設密碼。
captcha應該是可有可無。
個人頁面排行榜,各佔一半畫面,大概就如圖所示。
轉場,如圖所示,進度條下方會顯示一些和通訊有關的知識,或是關卡提示(但好像也沒什麼好提示的)。也可以顯示一些幹話之類。
遊戲畫面,中間為程式碼編輯器,左右為描述任務情境的動畫/圖案,上方有關卡名稱、關卡內容與提示,可以點擊展開。最上方有一 Youtube 音樂列,顯示目前播放的音樂名稱。
遊戲畫面,關卡說明與提示視窗展開後。
結果頁面,上方為程式結果,會即時顯示相關的圖表(如錯誤率、瞬時功率之類的),以及資源使用情況(如記憶體、執行時間等等);下方為個人遊戲結果,等於是個人目前分數的 summary。

遊戲玩法

  玩家身為一位通訊系統工程師,被派遣到各個地方來設計通訊系統,每個地方的要求、資源與環境都不同,玩家要在這些條件的限制下,達成指定的任務;成功的話有獎勵,失敗的話也會有懲罰。具體來說,玩家會有三個分數指標;

  • 生命:玩家一開始共有三顆命,每過五關可以增加一命,若某關失敗三次便會扣一命,上限為五顆命。一顆命都沒有的話,玩家會被停止遊戲兩個禮拜,之後補回三顆生命繼續遊戲。若程式碼造成系統危害、資源佔用,生命值直接歸零

  • 技術能力:玩家每通過一關,技術能力值都會增加,上限為 1600;相反的,某一關失敗兩次便會開始扣技術能力值。達到特定技術能力,關卡就會解鎖;如果技術能力不夠,可以

    1. 再次挑戰先前關卡,嘗試得到更高的關卡分數,可以增加技術能力值。
    2. 用生命換,一顆生命可以換 100 技術能力。
    3. 用溝通能力換,30 溝通能力可以換 100 技術能力。

  • 溝通能力:玩家若某一關一次過,溝通能力值就會增加,無上限,也不會扣除。溝通能力對於遊戲沒有太大影響,但是可以解鎖特殊關卡(暫時還沒有想法)。


  每一關也會有關卡分數,根據以下表現來評分:

  • 正確性:程式建造的通訊系統能夠正確運作。這部分包含正確訊號呈現、符合規定的錯誤率、符合規定的瞬時功率等等,因關卡而異。需要完全正確才能拿到這部分分數。

  • 時間:程式執行時間,也可以說是程式複雜度、計算複雜度。執行時間愈長,這部分的分數愈低。

  • 資源使用:如記憶體、CPU、硬碟I/O等的資源使用,但是這部分實現比較困難,目前還沒有想法。

  • 行數:程式碼行數愈少,這部分分數愈高。行數計算會扣除空白行、註解行。


  任務內容對應到的領域包含但不限於:

  • 類比調變 (AM、DSB、SSB、FM 等)
  • 基礎數位通訊 (BPSK、QPSK、16QAM 等)
  • OFDM 及相關技術 (Wifi、5G 等)
  • 通道編碼 (錯誤更正碼、通訊序列等)
  • 展頻通訊 (DSSS、FHSS 等)
  • 等化器設計、通道估測

系統架構

  這一節介紹整個系統(程式)的架構,如下圖。目前只是把專案的環境大概建置好,所以這張圖只是非常初期的構想。


美術

  由 Raymond Su 繪製草圖,GeminiNano Banana 修飾。草圖由紙和筆繪製,再經由漫畫轉檔程式處理、小畫家著色,最後送給 Nano Banana 調整。

音樂

  遊戲過程(即寫程式時)的音樂應該會使用 Youtube 上的音樂,並標示作者與作品名稱。首頁、個人頁面以及結果頁面的音樂,由 Raymond Su 製作,目標是做出和 Toby Fox 的作品一樣、和遊戲超級搭配的音樂。

開發人員

  • Raymond Su:本網誌作者。