2026 CodeQuest 全球賽 教戰指南

多人競技場 · 2v2 足球

2026 CodeQuest 全球賽
教戰指南

Chaotic Cross | 用程式碼指揮 AI Agent,進球比對手更多!

球員 ×2 + 教練 + 守門員,全都由你的程式碼「注入靈魂」

🏆 晉級選手必讀

1. 競技場簡介Intro to the AI World Cup Arena

歡迎來到綠茵賽場!AI 世界盃是一款 2 對 2 的競技足球程式設計遊戲。它最特別的地方在於:場上奔跑的球員、場邊指揮的教練,全都不是普通角色,而是一個個由你的程式碼「注入靈魂」的 AI Agent(智能體)

你可以把 AI Agent 理解為一個「會自己思考、自己行動」的程式小人。你不需要用滑鼠一步步操控它,而是提前寫好一套決策邏輯(例如「如果我有球就射門,否則就去追球」),然後 AI Agent 就會在比賽中不停地按照這套邏輯自動做出判斷和動作。你的程式碼寫得越聰明,你的 AI Agent 踢得就越好——這正是「AI 世界盃」這個名字的由來。

1.1 你要指揮的三類 AI Agent

在這場比賽裡,你的程式碼將同時操控三個 AI Agent。它們分工不同,請先記住它們各自的角色:

  • ⚽ 兩名球員 AI Agent(Mates,球場單位):真正在場上跑動、爭球的兩名球員。特別之處在於,每名球員都在自己獨立的「執行緒」裡執行你的程式碼——你可以簡單理解為:兩名球員像兩個同時開工的小機器人,各想各的、各跑各的,互不等待。它們圍繞場上唯一的一顆球進行追逐、搶斷、傳球和射門。
  • 🎽 一名教練 AI Agent(Coach,即英雄 hero,執行於主執行緒):教練不下場踢球,而是站在場邊縱觀全場。它執行於「主執行緒」,可以隨時讀取全場資訊,並使用各種即時技能去幫助自家球員、或干擾對手。教練是你的「大腦指揮中樞」。
  • 🧤 一名自動守門員(Auto-keeper):雙方各有一名把守球門的守門員。它不是 AI Agent,沒有人給它寫程式碼——它的行為是系統固定的。你要做的不是控制它,而是想辦法「智勝」它,把球從它手裡送進門。
一句話理解你既是球隊的程式設計師,也是場邊的教練。兩名球員 AI Agent 各自為戰(多執行緒並行),教練 AI Agent 統籌全局(主執行緒),而守門員是一個需要你去攻破的固定 NPC。

1.2 程式語言

本競技場支援用 PythonC++ 兩種語言來撰寫 AI Agent 的邏輯。兩種語言的遊戲思路完全一致——都是「為球員寫執行緒處理函式,為教練寫主迴圈」,只是語法寫法不同。本文中每一段範例程式碼都同時提供 Python 與 C++ 兩個版本,點擊頁面上方的語言切換即可。建議初學者先從 Python 入手,熟悉之後再嘗試 C++。

紅隊球門(防守左側) 藍隊球門(防守右側) 中央開球點 紅隊防守左門,藍隊防守右門,中央為開球點
圖 1:球場示意圖

2. 遊戲目標與勝負Game Objective — Score to Win

目標非常簡單,和真實足球一樣:把球打進對方球門,讓自己的進球數比對手多。

2.1 比賽流程

一場比賽分為兩個回合(就像足球的上下半場),每個回合時長為 params.halfTime 秒。兩個回合分別編號為第 0 回合和第 1 回合(程式裡習慣從 0 開始數):

  • 🔴 紅隊在第 0 回合(上半場)開球。
  • 🔵 藍隊在第 1 回合(下半場)開球。

之所以讓兩隊輪流開球,是為了公平——開球方會先碰到球,稍佔一點便宜,兩回合各開一次就抵消了。

2.2 勝負判定規則

當第二回合結束的那一刻,系統會立即依下面的順序判定誰贏:

優先順序 判定標準
① 首先看 進球數高者獲勝。這是最直接的勝負標準。
② 若進球數相同 粉絲支持度更高的隊伍獲勝(見下一節)。
③ 若支持度也相同 擲硬幣決定——但這個「硬幣」是基於種子(seed)的,同一場比賽無論重播多少次,結果都完全一樣。
確定性設計(重要觀念)這個遊戲沒有任何真正的隨機性——連「擲硬幣」都是固定結果。這代表:相同的程式碼對陣相同的對手,比賽過程和結果永遠一模一樣。所以你可以放心地反覆測試、最佳化你的 AI Agent,不用擔心「這次是運氣好」。

2.3 粉絲支持度

觀眾來看球,最愛看的是積極進攻的足球。所以遊戲設計了「粉絲支持度」機制來獎勵主動進攻的一方。比賽過程中,雙方都會不斷累積粉絲支持度,它會直接顯示為你教練 AI Agent(英雄)的生命值數字——數字越高,代表你的球隊踢得越受歡迎。以下行為會為你累積支持度:

行為 支持度獎勵
成功把球傳給自己的隊友 params.activity.pass
贏得一次搶斷對抗(clash) params.activity.clash
射向對方球門(無論被撲出還是進球) params.activity.shot
把球留在對方半場裡 每秒 params.activity.ballInOpponentHalfPerSecond
攻勢至上僵局(deadlock)和消極打法,永遠會輸給積極、有建設性的程式碼。哪怕兩隊進球數打平,主動傳球、頻繁射門、把球壓在對方半場的一方,也會靠支持度笑到最後。所以寫程式碼時,要鼓勵你的 AI Agent 大膽進攻,而不是縮在自家門前乾等。

3. 球員 AI Agent 控制Mate Control — Your Two Field Agents

你控制兩名球員 AI Agent。每名球員都在自己獨立的執行緒裡執行你的處理函式。比賽開始時,這個處理函式會為每名球員各自呼叫一次;一旦呼叫,函式裡的迴圈就會一直跑到比賽結束(球員永遠不會死亡,也不會重生),所以你通常會在函式裡寫一個 while 無限迴圈,讓球員不停地思考和行動。

3.1 啟動球員執行緒

要讓球員 AI Agent 動起來,你必須先「註冊」一個處理函式,告訴系統:「每當一名球員登場,就用這個函式來控制它。」註冊方式是呼叫 hero.on("spawn-mate", 函式名)

新手最常犯的錯忘記寫 hero.on("spawn-mate", ...)!如果沒有這一行,球員執行緒根本不會啟動,你會看到兩名球員站在原地一動不動。請務必記得加上它。

下面是一段最基礎的球員邏輯:「有球就射門,沒球就追球。」

球員基礎邏輯
def onSpawnMate(mate):
    while True:
        if mate.hasBall:
            mate.shoot()        # 有球就射門
        else:
            mate.chaseBall()    # 沒球就追球

hero.on("spawn-mate", onSpawnMate)
void onSpawnMate(Mate* mate) {
    while (true) {
        if (mate->hasBall) {
            mate->shoot();       // 有球就射門
        } else {
            mate->chaseBall();   // 沒球就追球
        }
    }
}

hero.on("spawn-mate", onSpawnMate);
分工小技巧兩名球員會共用同一個處理函式,但你可以用 mate.mateId(值為 0 或 1)來區分它們,從而分配不同角色。例如:讓 0 號一直往前壓當「前鋒」,讓 1 號留在後場當「後衛」,這樣球隊才有層次,不會兩個人擠在一起搶同一個球。

3.2 基礎指令

指令 說明
mate.moveTo(x, y) 朝目標點 (x, y) 移動一步(步長為 params.stepDistance)後就返回。注意:它一次只走一小步!這一步期間執行緒會被阻塞(暫停),走完這步之後你的程式碼會重新執行、重新做決策。所以要走到遠處,通常要放在迴圈裡反覆呼叫。
mate.distanceTo(target) 返回本球員到任意帶有 x、y 座標的物件(例如球、對手、球門)之間的距離。常用來判斷「夠不夠得著」。
速度要點(很關鍵)持球的球員會變慢——速度會乘以 params.carrierSpeedFactor(預設 0.75,即降到 75%)。這帶來一個重要結論:空手的追趕者總能追上帶球的盤帶者。所以別指望一個人一路帶球過全場,那一定會被搶斷——正確做法是靠傳球把球快速推進。另外,被暈眩的球員無法移動,此時呼叫 moveTo 會一直卡住,直到暈眩結束才返回。

3.3 搶斷能力 clash(球員唯一的主動技能)

mate.clash() 是球員 AI Agent 唯一的主動技能:從敵方持球者腳下把球搶過來。它的冷卻時間是 params.clashCooldown 秒,而且每次嘗試都會消耗冷卻——也就是說,無論你搶成功還是失敗,都得等冷卻結束才能再搶一次。

結果 觸發條件與效果
✅ 成功 當敵方持球者在 params.clashRange 範圍內、且不處於免疫狀態時:球立刻轉移到你腳下,對手被暈眩 params.clashStunTarget 秒,同時你還獲得一小段控球免疫(這段時間對手搶不回去)。
❌ 失敗 如果目標超出了搶斷範圍、或對手正處於免疫狀態:搶斷落空,反而是你自己被暈眩 params.clashStunSelf 秒——白白暴露一個大破綻。
務必先檢查搶斷前一定要先判斷對方的 isImmune(是否免疫)!對一個正在免疫中的持球者搶斷,必定失敗並讓自己暈眩,等於主動送給對手一次機會。養成「先看 isImmune,再決定要不要 clash」的習慣。

3.4 出球 roll(傳球和射門是同一個動作!)

mate.roll(x, y, power) 是把球踢出去的唯一方式。這裡有一個非常重要的設定:在本遊戲裡,「傳球」和「射門」其實是同一個動作——都是把球朝某個點滾出去,區別只在於你瞄準的是隊友、還是球門。其中 power(力量)決定球滾多遠:

出球射程
# 最大射程 = power × params.rollRangeFactor
# 如果 power 超過 params.maxPower,會被自動限制到上限
mate.roll(x, y, power)
// 最大射程 = power × params.rollRangeFactor
// 如果 power 超過 params.maxPower,會被自動限制到上限
mate->roll(x, y, power);
  • 🧱 球會在上下牆壁反彈——所以「撞牆傳球」(bank pass,像撞球擦邊一樣)是合法且免費的戰術,可以用來繞過對手。
  • ⚡ 出球成功時永遠不會被阻塞:哪怕你正被一群人圍住(混戰 scrum),持球者也總有一次瞬間把球踢出去的機會,不會被卡死。
  • ⏳ 你無法在 params.selfRecaptureDelay 秒內接回自己剛踢出的球。過了這段短暫時間後,「踢一腳給自己」的直塞式自傳球(把球往前捅一下再追上去)是允許的。

3.5 巨集指令(Convenience Macros)

為了讓你少寫程式碼,遊戲內建了一批常用的「巨集指令」——它們其實是把常見操作打包好的快捷方法,直接呼叫即可:

巨集指令 效果
mate.chaseBall() 朝球的方向移動一步(追球)。
mate.shoot() 以最大力量把球射向對方球門中心(射門)。
mate.passTo() 把球傳給你的搭檔(你只有一名搭檔,所以不用指定傳給誰)。
mate.cross() 朝遠門柱區域橫傳(cross,即「傳中」)——這是本競技場的招牌打法,非常好用。
mate.defendGoal() 朝「球—本方球門」的連線上退守一步(回防站位)。

3.6 球員屬性(唯讀)

屬性 型別 說明
x / y 數值 球員當前所在位置的橫 / 縱座標。
mateId 數值 0 或 1,用來區分兩名球員、分配角色。
color 字串 本隊顏色,"red""blue"
hasBall 布林值 當前是否持球。
isStunned 布林值 是否被暈眩(暈眩時無法移動、搶斷或接球)。
isImmune 布林值 是否擁有控球免疫(免疫時無法被對手搶斷)。
clashReady 布林值 搶斷技能是否已經冷卻好、可以使用。

4. 球與控球機制Ball & Possession

要踢好球,得先搞懂「球是怎麼被搶到、被守住、被攔截的」。這一節的規則決定了控球權的歸屬,非常值得細讀。

4.1 粘球與控球免疫

球是「粘」的:一顆無人控制的自由球,只要進入了某名球員的 params.captureRadius 範圍,就會自動「吸附」到那名球員腳下,變成他控球。之後持球者會一直控著球,直到發生下面三種情況之一:他主動出球(roll)、被敵方成功搶斷(clash)、或被守門員撲住。

控球免疫(Possession Immunity)在任何一種方式拿到球之後(無論是撿到自由球、搶斷得手、還是接到隊友傳球),新的持球者都會獲得 params.possessionImmunity 秒的免疫時間,這段時間裡他不會被搶斷。換句話說,每一次拿到球,你都保證有一次「從容不被打擾」的行動機會。正因如此,對一個免疫中的持球者搶斷必定失敗(還會自暈),所以出手前一定要先看 isImmune

4.2 釋放氣泡與攔截

釋放氣泡(Release Bubble):一顆剛被踢出、正在滾動的球,在它離開釋放點、飛行距離還沒達到 params.rollReleaseRadius 之前,任何人都無法接住它(連守門員也不行)。這就好比球剛出腳時外面罩著一層保護泡泡。因此,即使對手就貼在你身邊,你也能安全地把球踢出去。而與之相對,一顆完全靜止的球,任何時候都可以被撿走。

攔截(Interception):只要你的球員站在滾球的路徑上、並且位於釋放氣泡之外的位置,球飛過來就歸你了。由於球的運動軌跡是直線,你完全可以透過 hero.ball 提供的位置和速度資訊 (x, y, vx, vy),用數學算出球接下來會經過哪裡,從而提前跑位去攔截。

攔截漏洞被暈眩的球員既不能接球、也不能攔截——所以一名被暈眩的防守者,就等於對方傳球路線上憑空出現的一個大漏洞。反過來利用這一點:先搶斷對方的防守者製造暈眩,再從他身邊穿過去傳球或射門,是非常高效的進攻套路。
同一時刻爭球是「確定」的當雙方在同一幀同時爭搶一顆球時,離球更近的球員獲勝;如果距離完全相等,就由兩隊輪流獲得球權。整個判定過程沒有任何隨機成分——一切都可以計算、可以預測,這也是撰寫精確策略的基礎。

5. 進球與開球Goals & Kickoffs

紅隊始終防守左側球門,藍隊始終防守右側球門。當球進入某個球門區域(params.gates)時就算進球——而且不管球是誰踢進去的!

當心烏龍球烏龍球(own goal,把球打進自家門)會算作對手得分,包括自己不小心帶球退進了本方球門。所以在任何角色下(哪怕是純防守的後衛),你的程式碼都要處理好 mate.hasBall 的情況,別讓防守球員糊裡糊塗地把球送進自家大門。

每次進球之後(以及每個回合剛開始時),所有球員的位置和技能冷卻都會重置回初始陣型,球會被重新放到球場中央,並朝開球方偏移一小段距離 params.kickoffOffset——這樣開球方就會確定性地先碰到球。

開球權的價值進球之後,是由剛剛丟球的一方開球(這也符合真實足球規則)。因此開球階段拿到的控球權,最多只值一次進攻機會,別把所有希望都押在開球上——真正的較量在整個回合的攻防之中。

6. 自動守門員Auto-Keeper — The Fixed NPC

每個球門都由一名 NPC 守門員把守。它不是 AI Agent,沒有人給它寫程式碼——它的行為是系統固定的、完全可預測的。而「可預測」恰恰是你的機會:只要摸清它的規律,就能設計出穩定的破門方法。

特性 說明
移動受限 守門員只在自己的專屬區域(params.keeperZones)內移動,速度為 params.keeperSpeed,並且始終朝「區域內離球最近的那個點」移動。它移動得不快、反應滯後,就是你的得分窗口。
物理撲救 它的撲救是物理性的、而非「守住整個球門」:只有當它的身體真的靠近到 params.keeperCatchRadius 範圍內時,才能接住滾來的球。所以快速射向它夠不到的遠角,就能攻破一個被引偏了位置的守門員。
不可撼動 守門員無法被搶斷(clash),它手裡握著的球也無法被搶走。不過你可以自由進入它的區域,無需顧忌。

解圍超級長傳(Clearance / Super Kick)

守門員拿到球並持球 params.keeperHoldTime 秒之後,會以 params.superKickSpeed 的極快速度,朝離它最近的、且沒被暈眩的自家球員射出一道超級長傳——直線飛行、中途不減速。關於這道解圍球,有幾點要知道:

  • 🚫 敵方無法攔截飛行途中的解圍球(它太快了,還帶著「不可攔截」的特性)。
  • 🐢 當球飛到接應球員所在的距離時,會降速為普通滾球;如果它撞到牆壁反彈,之後就變回一顆普通的自由球,此時又可以被爭搶了。
  • 🤝 如果接應的球員本來就已經在守門員的 params.captureRadius 範圍內,球會被直接交到他腳下,省去飛行過程。
得分要領(記住這一條基本就會破門了)守門員永遠追著球移動。所以套路是:先透過帶球或向邊路傳球,把守門員從球門中心引開,等它跑偏之後,再把球射向空出來的遠門柱。歸根結底,整場比賽拼的就是一場博弈——「球飛到球門需要的時間」vs「守門員挪回位置的反應延遲」。這也是 cross(橫傳/傳中)成為招牌打法的原因:它能把守門員往一側拽,再打空檔。

7. 教練 AI Agent(英雄)Coach (Hero) — The Main Thread Agent

主執行緒執行的就是你的教練 AI Agent。和場上跑動的球員不同,教練不親自碰球,而是像一位真正的主教練那樣站在場邊:它能看見場上發生的一切,並適時使用各種即時技能(每個技能都有自己獨立的冷卻時間),從戰術層面影響比賽走向。

7.1 教練方法

方法 說明
hero.wait(duration) 讓教練的主執行緒暫停 duration 秒。常用來控制主迴圈的節奏,避免每一幀都做重複判斷。
hero.random() 返回一個 [0, 1) 之間的偽隨機數。它基於種子生成,每場比賽結果確定(不會真的隨機亂變)。
hero.abilityReady(name) 檢查某個技能是否已冷卻好,好了返回 true。技能名有四個:"inspire""press""whistle""distract"

7.2 四大教練技能

教練 AI Agent 有四個技能,兩個用來「增益自己人」,兩個用來「干擾對手」:

技能 效果
hero.inspire(mate) 激勵 讓指定的自家球員提速(速度 × inspire.factor),持續 inspire.duration 秒。冷卻 inspire.cooldown 秒。適合在反擊、追球時使用。
hero.press(enemyMate) 壓迫 讓指定的敵方球員減速(速度 × press.factor),持續 press.duration 秒。冷卻 press.cooldown 秒。適合拖慢對方持球者。
hero.whistle(mate) 哨聲 立刻解除自家球員身上的暈眩。冷卻 whistle.cooldown 秒。這是專門剋制「搶斷流」對手的利器——被搶斷暈眩後一聲哨響就能立刻恢復。
hero.distract() 干擾 讓敵方守門員減速(速度 × distract.factor),持續 distract.duration 秒。冷卻 distract.cooldown 秒。射門前用它,能讓守門員更難撲救。
關於返回值這些技能在成功施放時返回 true;如果技能還沒冷卻好、或遊戲當前未啟用,則返回 false。所以穩妥的做法是:呼叫前先用 abilityReady(...) 判斷一下,避免浪費。

7.3 全場感知(唯讀)

屬性 說明
hero.ball 球的資訊 {x, y, vx, vy, owner, heldByKeeper};其中 owner 是當前持球球員的視圖,若沒人持球則為空(Python 中為 None,C++ 中為 nullptr)。
hero.myMates / hero.theirMates 我方 / 對方球員的視圖陣列,每個含 {x, y, id, color, hasBall, isStunned, isImmune, clashReady}
hero.myKeeper / hero.theirKeeper 我方 / 對方守門員的資訊 {x, y, hasBall}
hero.myGoal / hero.theirGoal 我方 / 對方球門的資訊 {x, y, width},即球門線上的中心點。
hero.score / hero.opponentScore 當前我方 / 對方的進球數。
hero.color 你所在隊伍的顏色,"red""blue"
hero.gameTime 整場比賽已經進行的秒數。
hero.roundTime 當前回合已經進行的秒數。
hero.round 當前回合編號,0(第一回合)或 1(第二回合);本回合剩餘時間 = params.halfTime - hero.roundTime
hero.gameActive 遊戲是否處於進行狀態;暫停時為 false(此時所有動作和技能都無效)。

7.4 教練範例程式碼

下面這段教練邏輯做了兩件聰明事:幫被暈眩的隊友吹哨解控,以及在對方持球時壓迫拖慢對手。

教練主迴圈
while True:
    # 誰被暈眩了,就吹哨幫他解除
    for m in hero.myMates:
        if m.isStunned and hero.abilityReady("whistle"):
            hero.whistle(m)

    # 敵方持球時,用壓迫拖慢對手
    carrier = hero.ball.owner
    if carrier and carrier.color != hero.color and hero.abilityReady("press"):
        hero.press(carrier)

    hero.wait(0.3)
while (true) {
    // 誰被暈眩了,就吹哨幫他解除
    for (auto m : hero.myMates) {
        if (m.isStunned && hero.abilityReady("whistle"))
            hero.whistle(m);
    }
    // 敵方持球時,用壓迫拖慢對手
    auto carrier = hero.ball.owner;
    if (carrier && carrier->color != hero.color && hero.abilityReady("press")) {
        hero.press(carrier);
    }
    hero.wait(0.3);
}

8. 實戰策略Putting It All Together

把球員 AI Agent、教練 AI Agent、守門員這三套系統串起來,一套穩健、適合新手起步的思路大致如下:

  • 先啟動執行緒:程式碼裡務必寫上 hero.on("spawn-mate", ...),否則球員 AI Agent 根本不會動——這是最容易忘、也最致命的一步。
  • 球員分工:用 mateId 區分角色——比如一人主攻、搶球射門,一人拉邊接應或回防。每個角色都要處理 hasBall,防止後衛烏龍。
  • 靠傳球推進:記住持球會變慢、追趕者總能追上,所以別硬帶球——多用 passTo / cross,甚至撞牆傳球來撕開防線。
  • 搶斷先看免疫:呼叫 clash 前先查對手的 isImmune,避免對免疫者搶斷而害自己暈眩。
  • 攻破守門員:守門員追球移動,先把它引離球門中心,再射向遠門柱空檔;進攻時可以配合 hero.distract() 拖慢它。
  • 教練輔助時機:進攻反擊時用 inspire 給自家球員提速;防守時用 press 拖慢敵方持球者;自家球員被搶斷暈眩時,立刻 whistle 解控。
  • 追求攻勢:多傳球、多射門、儘量把球壓在對方半場——這些都在累積粉絲支持度,會在打平時救你一命。
終極目標提醒整套遊戲毫無隨機性,勝負完全取決於你的計算與策略。進球第一,其次拼支持度——讓你寫出的 AI Agent 踢得比對手更主動、更聰明!

9. 遊戲參數速查Game Parameters

你可以透過 params 物件存取下面所有參數。以下均為預設值——如果文件過時,實際比賽可能採用不同數值,請以遊戲內即時的 params 為準

場地與球門

參數 預設值 含義
params.field {minX:4,minY:0,maxX:96,maxY:64} 場地邊界
params.gates.red {x0:0,y0:24,x1:4,y1:40} 紅隊球門區
params.gates.blue {x0:96,y0:24,x1:100,y1:40} 藍隊球門區
params.kickoffOffset 4 開球偏移量
params.halfTime 60 每回合時長(秒)

球員與移動

參數 預設值 含義
params.stepDistance 8 移動步長
params.mateSpeed 20 球員基礎速度
params.carrierSpeedFactor 0.75 持球速度系數
params.captureRadius 4 接球範圍

搶斷與控球

參數 預設值 含義
params.clashRange 4 搶斷距離
params.clashStunTarget 1.2 搶斷成功暈眩對手時間
params.clashStunSelf 0.8 搶斷失敗自暈時間
params.clashCooldown 3 搶斷冷卻時間
params.possessionImmunity 0.5 控球免疫時間
params.selfRecaptureDelay 0.3 自傳球接球延遲

出球(滾球)

參數 預設值 含義
params.rollReleaseRadius 8 球釋放安全半徑
params.maxPower 100 最大踢球力量
params.rollRangeFactor 0.45 踢球射程系數
params.rollFriction 55 滾動摩擦系數

守門員

參數 預設值 含義
params.keeperSpeed 4 守門員移動速度
params.keeperCatchRadius 3 守門員撲救範圍
params.keeperHoldTime 1 守門員持球時間
params.keeperZones.red {x0:4,y0:20,x1:12,y1:44} 紅隊守門員區域
params.keeperZones.blue {x0:88,y0:20,x1:96,y1:44} 藍隊守門員區域
params.superKickSpeed 60 守門員解圍速度

教練技能

參數 預設值 含義
params.coach.inspire {cooldown:6,duration:2,factor:1.5} 激勵(提速)
params.coach.press {cooldown:6,duration:2,factor:0.6} 壓迫(減速)
params.coach.whistle {cooldown:8} 哨聲(解暈眩)
params.coach.distract {cooldown:10,duration:2,factor:0.5} 干擾(拖慢守門員)

粉絲支持度

參數 預設值 含義
params.activity.pass 1 成功傳球加分
params.activity.clash 2 贏得搶斷加分
params.activity.shot 2 射門加分
params.activity.ballInOpponentHalfPerSecond 0.1 控球於對方半場每秒加分

🏆 核心速查表Core Cheat Sheet

系統 關鍵命令 / 概念 要點
目標 進球數 > 對手 平局比支持度,仍平則種子擲幣
比賽 兩回合 × halfTime 紅隊先開第 0 回合,藍隊開第 1 回合
支持度 傳球/搶斷/射門/壓對方半場 顯示為教練血量;攻勢球勝消極球
球員啟動 hero.on("spawn-mate", fn) 必須寫,否則球員不動;用 mateId 分工
移動 mate.moveTo / chaseBall 一步一決策;持球變慢,會被追上
搶斷 mate.clash() 先查 isImmune,失敗會自暈
出球 mate.roll(x, y, power) 傳球=射門;可撞牆反彈;出球不阻塞
巨集 shoot/passTo/cross/defendGoal cross 橫傳遠門柱是招牌打法
控球 captureRadius / possessionImmunity 粘球;接球後有一次免疫窗口
守門員 固定 NPC,追球移動 引開後射遠角;distract 拖慢它
教練 inspire/press/whistle/distract 即時技能,各自冷卻,主執行緒執行
球員追風,教練運籌,智取門將 ⚽🧠

現在,去 AI 世界盃的賽場上,讓你的 AI Agent 踢出制勝一球吧!🏆

本頁內容整理自主辦方 扣哒世界/CodeCombat 官方競技場教戰資料(AI Agent 足球賽 Chaotic Cross),由 AI4Kids 繁體中文化,供 2026 CodeQuest 全球賽晉級選手賽前準備使用。
技術數值與規則以遊戲內即時 params 為準。