vars.php 以 PHP 陣列形式定義了遊戲中所有實體的靜態屬性:單位類型映射、前置條件、建造成本、戰鬥屬性、資源產出公式、啟用清單。理解此文件等於掌握了遊戲的「基因密碼」,是新增單位、調整平衡、開發模組的基石。
$messfields = array(
0 => "mnl_spy", // 間諜報告
1 => "mnl_joueur", // 玩家消息
2 => "mnl_alliance", // 聯盟消息
3 => "mnl_attaque", // 攻擊報告
4 => "mnl_exploit", // 掠奪報告
5 => "mnl_transport", // 運輸報告
15 => "mnl_expedition", // 遠征報告
97 => "mnl_general", // 一般消息
99 => "mnl_buildlist", // 建築隊列通知
100 => "new_message" // 總未讀計數字段
);
涵蓋四大類共 80+ 單位,ID 區間分配規律:
| 類別 | ID 範圍 | 代表單位 |
|---|---|---|
| 建築 | 1-44 | 金屬礦(1)、晶體礦(2)、重氫合成器(3)、太陽能電廠(4)、核能電廠(12)、機器人工廠(14)、納米工廠(15)、船廠(21)、資源倉庫(22-24)、研究實驗室(31)、地球改造器(33)、聯盟倉庫(34)、月球基地(41)、感測陣列(42)、跳躍門(43)、導彈發射井(44) |
| 科技 | 106-199 | 間諜科技(106)、電腦科技(108)、武器科技(109)、防禦科技(110)、護盾科技(111)、能源科技(113)、超空間科技(114)、燃燒引擎(115)、脈衝引擎(117)、超空間引擎(118)、雷射科技(120)、離子科技(121)、電漿科技(122)、星系間研究網絡(123)、遠征科技(124)、引力波(199) |
| 艦隊 | 202-215 | 小運輸船(202)、大運輸船(203)、輕型戰機(204)、重型戰機(205)、巡洋艦(206)、戰艦(207)、殖民船(208)、回收船(209)、間諜衛星(210)、轟炸機(211)、太陽能衛星(212)、毀滅者(213)、死星(214)、戰鬥艦(215) |
| 防禦 | 401-503 | 火箭發射器(401)、輕雷射(402)、重雷射(403)、高斯砲(404)、離子砲(405)、電漿砲(406)、小護盾(407)、大護盾(408)、反導彈(502)、星際導彈(503) |
| 專家 | 601-615 | 地質學家(601)、提督(602)、工程師(603)、技術官(604)、建築師(605)、科學家(606)、儲備官(607)、防禦官(608)、地堡官(609)、間諜官(610)、指揮官(611)、毀滅官(612)、將軍(613)、掠奪官(614)、皇帝(615) |
格式:目標ID => array(前置ID => 所需等級, ...)
// 範例:納米工廠需要機器人工廠10級 + 電腦科技10級 15 => array(14 => 10, 108 => 10), // 範例:死星需要船廠12級 + 超空間引擎7級 + 超空間科技6級 + 引力波1級 214 => array(21 => 12, 118 => 7, 114 => 6, 199 => 1), // 範例:將軍需要掠奪官1級 + 地堡官1級 613 => array(614 => 1, 609 => 1),
此結構驅動前端科技樹渲染與後端升級驗證邏輯。
統一結構:
ID => array(
'metal' => 基礎金屬成本,
'crystal' => 基礎晶體成本,
'deuterium' => 基礎重氫成本,
'energy' => 能源消耗/產出(負值=消耗,正值=產出),
'factor' => 成本增長因子(每級成本 = 基礎 * factor^級別),
// 僅艦隊單位擁有:
'consumption' => 燃料消耗(單程),
'consumption2'=> 燃料消耗(往返),
'speed' => 基礎速度,
'speed2' => 衝刺速度,
'capacity' => 載貨量,
// 僅專家單位擁有:
'max' => 最高等級上限
)
第 n 級成本 = 基礎成本 × factor^(n-1)
例:金屬礦 factor = 1.5,10 級成本 ≈ 60 × 1.5^9 ≈ 23,000 金屬
| 單位 | factor | 關鍵屬性 |
|---|---|---|
| 金屬礦(1) | 1.5 | 基礎產出公式見 $ProdGrid |
| 納米工廠(15) | 2.0 | 極高基礎成本(100萬/50萬/10萬),建築加速核心 |
| 地球改造器(33) | 2.0 | 需晶體5萬+重氫10萬+能源1千,擴展星球欄位 |
| 死星(214) | 1.0 | 成本500萬/400萬/100萬,護盾5萬、攻擊20萬、超高速射 |
| 引力波(199) | 3.0 | 無資源成本,需能源30萬,解鎖死星 |
每單位定義:shield(護盾)、attack(攻擊)、sd(速射目標映射)
// 死星:極高屬性 + 全單位速射
214 => array(
'shield' => 50000,
'attack' => 200000,
'sd' => array(
202 => 250, 203 => 250, 204 => 200, 205 => 100,
206 => 33, 207 => 30, 208 => 250, 209 => 250,
210 => 1250, 211 => 25, 212 => 1250, 213 => 5,
214 => 1, 215 => 15,
401 => 200, 402 => 200, 403 => 100, 404 => 50,
405 => 100, 406 => 1, 407 => 1, 408 => 1
)
)
速射機制:攻擊方對特定目標有 N% 機率在消滅該目標後立即再次攻擊(不切換目標),N = 100 * (1 - 1/sd)。死星對小運輸船 sd=250 → 99.6% 連射機率。
採用字串形式的 PHP 代碼片段,運行時 eval() 執行(安全風險極大,建議重構為閉包/類方法):
// 金屬礦
1 => array(
'formule' => array(
'metal' => 'return (30 * $BuildLevel * pow((1.1), $BuildLevel)) * (0.1 * $BuildLevelFactor);',
'crystal' => 'return "0";',
'deuterium' => 'return "0";',
'energy' => 'return - (10 * $BuildLevel * pow((1.1), $BuildLevel)) * (0.1 * $BuildLevelFactor);'
)
),
// 太陽能衛星 - 產出與星球溫度相關
212 => array(
'formule' => array(
'energy' => 'return (($BuildTemp / 4) + 20) * $BuildLevel * (0.1 * $BuildLevelFactor);'
)
)
變量說明:$BuildLevel(建築等級)、$BuildLevelFactor(宇宙加速倍率)、$BuildTemp(星球溫度,影響重氫/太陽能衛星)。
控制前端介面顯示與後端邏輯生效範圍:
$reslist['build'] = array(1,2,3,4,12,14,15,21,22,23,24,31,33,34,44,41,42,43); $reslist['tech'] = array(106,108,109,110,111,113,114,115,117,118,120,121,122,123,124,199); $reslist['fleet'] = array(202,203,204,205,206,207,208,209,210,211,212,213,214,215); $reslist['defense'] = array(401,402,403,404,405,406,407,408,502,503); $reslist['officier'] = array(601,602,603,604,605,606,607,608,609,610,611,612,613,614,615); $reslist['prod'] = array(1,2,3,4,12,212); // 產出型建築
新增單位必須同時在 $resource、$pricelist、$requeriments、$CombatCaps、$reslist 中登記才會生效。
$resource 分配新 ID(避開現有區間)$pricelist 定義成本與屬性$requeriments 設定前置條件$CombatCaps 定義戰鬥屬性$ProdGrid 定義公式$reslist 分類中加入新 IDeval() 執行,若配置被竄改可導致 RCE。必須改用沙箱或預編譯函數系列總結:七篇文章完整覆蓋 Xnova 核心架構、安裝、註冊、登錄、主界面、公共流程、基礎數值。掌握此代碼庫可快速上手瀏覽器策略遊戲開發,亦可作為重構練習素材。