馬上註冊,結交更多好友,享用更多功能,讓你輕鬆玩轉社區。
您需要 登入 纔可以下載或查看,沒有賬號?立即註冊
×
rAthena 伺服器架設教學|從原始碼到啟動
Visual Studio 編譯|啟動伺服器|對外連線|客戶端設定|建立測試帳號
閱讀前說明
‧本篇接續《RO 私服資料庫完整圖文教學》,章節編號從第 9 章開始。
‧開始前請先完成上一篇:MariaDB 安裝、建立資料庫、匯入 SQL、設定 conf/import/inter_conf.txt。
‧圖片中的版本號碼僅供參考,請以實際安裝的版本為準。
本篇會完成的事
- 設定封包版本並用 Visual Studio 編譯 rAthena
- 啟動 login/char/map 三個伺服器
- (進階)設定讓其他玩家連線
- 設定 RO 客戶端的連線資訊
- 建立測試帳號,並設定 GM 權限
第 9 章|Visual Studio 編譯 rAthena
9-1. 安裝 Visual Studio
官方下載:Visual Studio
一般使用免費的 Community 版本即可。
開啟 Visual Studio Installer,選擇要安裝的版本並點擊「安裝」。
▲ 圖 9-1:選擇 Visual Studio 版本
版本說明:本教學截圖使用 Visual Studio 2026 Insiders(預覽通道),畫面可能和正式版略有不同。一般使用者建議安裝正式版,預覽版可能有未修正的問題。
9-2. 勾選 C++ 桌面開發
- 進入「工作負載」頁面。
- 勾選「使用 C++ 的桌面開發」。
- 確認右側的安裝詳細資料包含 MSVC 編譯工具 與 Windows SDK(預設都會勾選)。
- 點擊「安裝」,等待安裝完成。
▲ 圖 9-2:工作負載設定
▲ 圖 9-3:勾選「使用 C++ 的桌面開發」
9-3. 設定封包版本(PACKETVER)
rAthena 編譯時要指定和客戶端相符的封包版本,否則客戶端可能無法登入、卡在連線畫面或斷線。
用文字編輯器開啟 src/custom/defines_pre.hpp,在檔案中加入一行(數字換成你的客戶端日期,格式為西元年月日):
- #define PACKETVER 20260926
複製代碼
注意:
‧PACKETVER 必須是 rAthena 支援的客戶端版本。太新的客戶端,rAthena 可能還沒有對應的封包,請以 rAthena 官方說明為準。
‧客戶端如果已經用 patch 關閉封包加密,伺服器端的封包加密設定也要對應調整(說明在 src/config/packets.hpp)。
‧修改 PACKETVER 後,一定要重新編譯才會生效。
9-4. 開啟 rAthena.sln
開啟 rAthena 原始碼資料夾,找到 rAthena.sln,用 Visual Studio 開啟。
▲ 圖 9-4:開啟方案檔
提示:
‧使用較新版本的 Visual Studio 開啟時,可能會詢問是否「重定目標」或升級專案,選擇確定即可。
‧上方工具列的組態建議選 Release、平台選 x64。Release 執行效率較好;Debug 適合除錯,但執行較慢。
9-5. 清除方案(選用)
在右側「方案總管」對 rAthena 方案按右鍵,選擇「清除方案」,等待完成。
第一次編譯通常不需要清除;修改 PACKETVER 或更新原始碼後,建議先清除再重建。
▲ 圖 9-5:清除方案
▲ 圖 9-6:清除完成
9-6. 重建方案
在方案上按右鍵,選擇「重建方案」,然後查看下方「輸出」視窗。
▲ 圖 9-7:重建方案
▲ 圖 9-8:編譯完成畫面
編譯成功的判斷:
- 輸出視窗最後顯示「失敗 0 個」(英文版為 0 failed)。
- rAthena 資料夾裡出現 login-server.exe、char-server.exe、map-server.exe。
- 同時也會自動建立 conf/import 資料夾(如果上一篇已手動建立,裡面的設定不會被覆蓋)。
第 10 章|啟動 rAthena 伺服器
10-1. 確認 MariaDB 正常執行
- 按 Win + R,輸入 services.msc。
- 找到 MariaDB 服務,確認狀態為「執行中」。
- 用 HeidiSQL 連線,確認 ragnarok、ragnaroklog 資料庫和資料表都存在。
10-2. 執行 runserver.bat
在 rAthena 資料夾找到 runserver.bat,雙擊執行。會開啟三個視窗:登入、角色、地圖伺服器。
▲ 圖 10-1:三個伺服器啟動畫面
啟動成功的判斷:
- 三個視窗都沒有出現 [Error] 或 [SQL] 開頭的錯誤訊息。
- char-server 顯示已連上 login-server,map-server 顯示已連上 char-server。
- map-server 載入完成後,會停在等待連線的狀態。
常見錯誤排查:
| 錯誤現象 | 可能原因 | | 資料庫連線失敗(Access denied、Unknown database) | inter_conf.txt 設定錯誤,請對照上一篇第 6 章 | | char-server 連不上 login-server | s1/p1 帳號密碼不一致,請對照上一篇第 7 章 | | 無法綁定連接埠(port 被占用) | 已經有另一組伺服器在執行,或其他程式占用 6900/6121/5121 | | 視窗一開就關閉 | 在命令提示字元直接執行 exe,就能看到錯誤訊息 |
第 11 章|對外連線設定(進階)
單機玩家可以略過本章
只在同一台電腦遊玩,而且 127.0.0.1 能正常連線,就不需要修改 IP、防火牆或路由器設定。請直接前往第 12 章。 小提醒:以下設定都寫在 conf/import 資料夾。這裡的檔案不會被官方更新覆蓋,不要直接修改 conf 裡的原始設定檔。
11-1. 角色伺服器設定
開啟 conf/import/char_conf.txt,加入:
- login_ip: 127.0.0.1
- login_port: 6900
- char_ip: 你的對外IP
- char_port: 6121
複製代碼
11-2. 地圖伺服器設定
開啟 conf/import/map_conf.txt,加入:
- char_ip: 127.0.0.1
- char_port: 6121
- map_ip: 你的對外IP
- map_port: 5121
複製代碼
設定說明:
‧login_ip、char_ip(在 map_conf 裡):伺服器之間互相連線用。三個伺服器在同一台電腦時,維持 127.0.0.1 即可。
‧char_ip(在 char_conf 裡)、map_ip:會傳給玩家的客戶端,所以要填玩家連得到的 IP。
‧只給同一個區域網路的朋友玩:填這台電腦的區域網路 IP(例如 192.168.x.x)。
‧給外網玩家:填你的公網 IP。
‧上一篇第 7 章修改的 userid/passwd 也寫在這兩個檔案裡,請不要刪掉。
11-3. 防火牆與路由器
- 確認你有真正的公網 IP。如果是電信業者的 CGNAT(共用 IP),外部玩家無法直接連入,需要向業者申請固定 IP 或改用其他方式。
- 在 Windows 防火牆新增輸入規則,開放 TCP 6900、6121、5121。
- 在路由器設定連接埠轉發(Port Forwarding),把這三個連接埠轉到架設伺服器的電腦。
- 修改設定後,重新啟動伺服器。
安全提醒:
‧不要關閉整個 Windows 防火牆,只開放需要的連接埠。
‧不要對外開放 MariaDB 的 3306 連接埠。
第 12 章|RO 客戶端連線設定
12-1. 本教學使用的客戶端
| 項目 | 說明 | | 原始版本 | 韓國官方 kRO 客戶端 | | 示範版本 | KRO260926 | | 語言 | 繁體中文化(Big5 相容處理) | | 連線設定檔 | data/clientinfo.xml |
注意事項:
‧不同版本的客戶端,使用的文字編碼、資料檔案與連線設定方式可能不同。
‧Big5 相容處理不是所有 kRO 客戶端都需要,也不代表客戶端所有檔案都是 Big5 編碼。
‧客戶端版本必須和第 9-3 節設定的 PACKETVER 相符,否則可能登入失敗或遊戲異常。
‧客戶端需要設定成優先讀取 data 資料夾,修改 data/clientinfo.xml 才會生效。
12-2. 設定連線位址
開啟客戶端的 data 資料夾,用文字編輯器(建議 Notepad++)開啟 clientinfo.xml,修改:
- <address>127.0.0.1</address>
- <port>6900</port>
複製代碼
- 單機測試:填 127.0.0.1。
- 給其他玩家:填第 11 章設定的對外 IP(或網域名稱)。
- port:填登入伺服器的連接埠,預設 6900。
▲ 圖 12-1:連線位址設定
12-3. 語言與地區參數 langtype
本教學的客戶端經過繁體中文化與 Big5 相容處理,所以使用 4。
▲ 圖 12-2:langtype 位置
注意事項:
‧langtype 是客戶端的語言與地區設定,不是直接指定 Big5 編碼。
‧不同版本的客戶端對 langtype 的處理可能不同,請依實際測試結果設定。
‧如果客戶端目前已經能正常顯示繁體中文,不建議隨意修改。
12-4. admin 標籤
clientinfo.xml 裡的 admin 標籤是填入帳號編號(account_id),讓客戶端對這些帳號開啟特定顯示功能。
這不等於伺服器的 GM 權限,GM 權限要在第 13-3 節設定。
▲ 圖 12-3:admin 標籤
第 13 章|建立測試帳號與登入遊戲
13-1. 用 _M/_F 建立帳號
rAthena 支援在登入畫面直接建立帳號:在帳號後面加上 _M(男)或 _F(女)。
確認設定:開啟 conf/login_athena.conf,查看 new_account 的設定。如果是 no,在 conf/import/login_conf.txt 加入:
修改後重新啟動登入伺服器。
建立方式:
- 開啟客戶端,在登入畫面輸入帳號,例如 test01_M,再輸入密碼。
- 第一次登入會自動建立帳號 test01(性別男)。
- 之後登入只要輸入 test01,不用再加 _M。
▲ 圖 13-1:執行客戶端
注意:
‧帳號(不含 _M/_F)至少要 4 個字元。
‧部分新版客戶端可能不支援這種建立方式,可以改用 13-4 的 SQL 方式建立。
‧正式開放給玩家後,如果改用網頁註冊,建議把 new_account 改回 no。
13-2. 查看 login 資料表
用 HeidiSQL 連線到 ragnarok 資料庫,點選 login 資料表,切換到「資料」分頁,就能找到剛建立的帳號。
▲ 圖 13-2:login 資料表
▲ 圖 13-3:查看帳號資料
13-3. 設定 GM 權限
- 開啟 conf/groups.yml,確認 GM 群組的 Id。rAthena 預設 99 是 Admin(最高權限)。
- 在 login 資料表找到測試帳號,把 group_id 改成 99。
- 按上方的勾號(或 Ctrl + Enter)儲存。
- 如果角色正在遊戲中,需要登出再重新登入才會生效。
▲ 圖 13-4:修改 group_id
▲ 圖 13-5:儲存修改
容易搞混的欄位:
‧account_id:帳號編號,系統自動產生,不要修改。
‧group_id:權限群組,0 是一般玩家,99 是 Admin。
13-4. 用 SQL 指令設定(選用)
也可以在 HeidiSQL 的「查詢」分頁直接執行:
- UPDATE `login` SET `group_id` = 99 WHERE `userid` = 'test01';
複製代碼
13-5. 確認 GM 權限
重新登入遊戲後,在聊天框輸入:
如果出現可用指令清單,就代表 GM 權限設定成功。
|