本帖最後由 ro0061313 於 2026-3-13 12:33 編輯
# L1JGO-Whale
天堂 (Lineage 1) 3.80C 遊戲伺服器 — 使用 Go 語言從零重寫。
以 L1J 3.80C Java 伺服器為行為參考,但採用全新的 Go 架構:ECS 實體系統、Lua 腳本驅動遊戲邏輯、YAML 靜態資料、PostgreSQL 持久化。
> **開發階段**:目前已完成至 Phase 5(技能 / Buff / NPC AI),功能持續開發中。
## 已實現功能
| 類別 | 功能 |
|------|------|
| **帳號系統** | 登入驗證、自動建帳、封鎖帳號、bcrypt 密碼 |
| **角色系統** | 建立 / 刪除 / 切換角色、配點、角色列表 |
| **世界系統** | 進入世界、AOI 視野管理、地圖傳送門 |
| **移動系統** | 8 方向移動、地圖碰撞檢測、速度驗證 |
| **戰鬥系統** | 近戰 / 遠程攻擊、Lua 傷害公式、PK 系統 |
| **NPC 系統** | NPC 生成 / 重生、對話系統、商店 NPC |
| **NPC AI** | 仇恨目標偵測、追擊 / 攻擊 / 遊走(Lua 驅動) |
| **道具系統** | 背包管理、裝備穿脫、消耗品、地面物品 |
| **商店系統** | 購買 / 販賣、多層稅率計算 |
| **倉庫系統** | 存入 / 取出、堆疊道具 |
| **交易系統** | 玩家間交易、WAL 經濟安全 |
| **衝裝系統** | 武器 / 防具衝裝、祝福保護、碎裂機制 |
| **技能系統** | 技能施放、魔法商店學習、技能書學習 |
| **Buff 系統** | 加速藥水、技能 Buff、定時到期 |
| **怪物技能** | 怪物魔法攻擊、遠程攻擊、技能觸發 |
| **組隊系統** | 建立 / 加入 / 離開隊伍、隊長轉移、小地圖位置同步 |
| **聊天系統** | 一般 / 廣播 / 密語 / 隊伍頻道 |
| **傳送系統** | NPC 傳送、記憶座標(書籤)、傳送門 |
| **死亡系統** | 玩家死亡、經驗懲罰、重新開始 |
| **GM 指令** | 等級 / 屬性 / 傳送 / 生成道具 / 踢人等 |
| **自動存檔** | 定時存檔角色資料、斷線自動保存 |
## 技術架構
```
Go Engine(網路層、ECS 實體系統、世界管理、持久化)
+ Lua Scripts(所有遊戲邏輯:戰鬥公式、AI、技能)
+ YAML(靜態遊戲資料:道具、NPC、技能、地圖、商店)
+ TOML(運行時設定:倍率、伺服器參數)
+ PostgreSQL(資料持久化、WAL 經濟安全機制)
```
L1JGO-Whale/
├── server/
│ ├── cmd/l1jgo/main.go # 程式進入點
│ ├── config/server.toml # 伺服器設定檔
│ ├── data/yaml/ # 靜態遊戲資料(YAML)
│ ├── scripts/ # Lua 遊戲邏輯腳本
│ │ ├── ai/ # NPC AI
│ │ ├── combat/ # 戰鬥公式
│ │ ├── core/ # 核心查表(STR/DEX/經驗)
│ │ ├── character/ # 角色相關
│ │ ├── item/ # 道具使用
│ │ ├── skill/ # 技能處理
│ │ └── world/ # 世界事件
│ ├── internal/
│ │ ├── config/ # TOML 設定載入
│ │ ├── core/ecs/ # ECS 實體組件系統
│ │ ├── core/event/ # 事件匯流排
│ │ ├── core/system/ # 系統執行器
│ │ ├── net/ # 網路層(TCP、加密、封包)
│ │ ├── handler/ # 封包處理器
│ │ ├── world/ # 世界狀態、AOI
│ │ ├── scripting/ # Lua 引擎封裝
│ │ ├── persist/ # PostgreSQL 持久化
│ │ └── data/ # YAML 資料載入器
│ ├── seed/ # 開發測試資料
│ ├── Makefile
│ └── go.mod
├── map/ # 地圖檔案(.s32)
└── l1j_java/ # Java 參考原始碼(僅供參考)
```
## 設定檔說明
設定檔位於 `server/config/server.toml`,主要區塊:
| 區塊 | 說明 |
|------|------|
| `[server]` | 伺服器名稱、編號、語系 |
| `[database]` | PostgreSQL 連線字串、連線池 |
| `[network]` | 監聽位址、tick rate、佇列大小 |
| `[rates]` | 經驗 / 掉寶 / 金幣倍率 |
| `[enchant]` | 衝裝成功率 |
| `[character]` | 角色欄位數、自動建帳、刪除等待期 |
| `[logging]` | 日誌等級與格式 |
| `[rate_limit]` | 流量限制 |
## GM 指令
在遊戲內聊天輸入(需 GM 權限):
| 指令 | 說明 |
|------|------|
| `.level <n>` | 設定等級 |
| `.str/dex/con/wis/cha/int <n>` | 設定屬性 |
| `.hp/mp <n>` | 設定 HP/MP |
| `.move <x> <y> <map>` | 傳送到座標 |
| `.item <id> [count] [enchant]` | 生成道具 |
| `.kick <name>` | 踢出玩家 |
| `.kill` | 擊殺目標 |
| `.heal` | 回滿 HP/MP |
| `.speed <n>` | 設定移動速度 |
| `.spawn <npc_id>` | 生成 NPC |
| `.weather <type> <intensity>` | 設定天氣 |
| `.who` | 列出線上玩家 |
## License
本專案僅供學習與研究用途。
BUG回報/登入器:
https://discord.gg/4CvUqPdj3W
專案連結:
https://github.com/rdtc8822-debug/L1JGO-Whale