查看: 109|回覆: 0

[設定] rAthena 伺服器架設教學|從原始碼到啟動

[複製鏈接]
發表於 2026-10-8 23:17:59 |台湾台北| 顯示全部樓層 |閱讀模式

馬上註冊,結交更多好友,享用更多功能,讓你輕鬆玩轉社區。

您需要 登入 纔可以下載或查看,沒有賬號?立即註冊

×
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,選擇要安裝的版本並點擊「安裝」。

CH06_01.jpg
▲ 圖 9-1:選擇 Visual Studio 版本

版本說明:本教學截圖使用 Visual Studio 2026 Insiders(預覽通道),畫面可能和正式版略有不同。一般使用者建議安裝正式版,預覽版可能有未修正的問題。

9-2. 勾選 C++ 桌面開發
  • 進入「工作負載」頁面。
  • 勾選「使用 C++ 的桌面開發」。
  • 確認右側的安裝詳細資料包含 MSVC 編譯工具 與 Windows SDK(預設都會勾選)。
  • 點擊「安裝」,等待安裝完成。


CH06_02.jpg
▲ 圖 9-2:工作負載設定

CH06_03.jpg
▲ 圖 9-3:勾選「使用 C++ 的桌面開發」

9-3. 設定封包版本(PACKETVER)
rAthena 編譯時要指定和客戶端相符的封包版本,否則客戶端可能無法登入、卡在連線畫面或斷線。

用文字編輯器開啟 src/custom/defines_pre.hpp,在檔案中加入一行(數字換成你的客戶端日期,格式為西元年月日):
  1. #define PACKETVER 20260926
複製代碼

注意:
‧PACKETVER 必須是 rAthena 支援的客戶端版本。太新的客戶端,rAthena 可能還沒有對應的封包,請以 rAthena 官方說明為準。
‧客戶端如果已經用 patch 關閉封包加密,伺服器端的封包加密設定也要對應調整(說明在 src/config/packets.hpp)。
‧修改 PACKETVER 後,一定要重新編譯才會生效。

9-4. 開啟 rAthena.sln
開啟 rAthena 原始碼資料夾,找到 rAthena.sln,用 Visual Studio 開啟。

CH06_04.jpg
▲ 圖 9-4:開啟方案檔

提示:
‧使用較新版本的 Visual Studio 開啟時,可能會詢問是否「重定目標」或升級專案,選擇確定即可。
‧上方工具列的組態建議選 Release、平台選 x64。Release 執行效率較好;Debug 適合除錯,但執行較慢。

9-5. 清除方案(選用)
在右側「方案總管」對 rAthena 方案按右鍵,選擇「清除方案」,等待完成。
第一次編譯通常不需要清除;修改 PACKETVER 或更新原始碼後,建議先清除再重建。

CH12_01.jpg
▲ 圖 9-5:清除方案

CH12_02.jpg
▲ 圖 9-6:清除完成

9-6. 重建方案
在方案上按右鍵,選擇「重建方案」,然後查看下方「輸出」視窗。

CH07_02.jpg
▲ 圖 9-7:重建方案

CH10_04.jpg
▲ 圖 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,雙擊執行。會開啟三個視窗:登入、角色、地圖伺服器。

43_032230.png
▲ 圖 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-servers1/p1 帳號密碼不一致,請對照上一篇第 7 章
無法綁定連接埠(port 被占用)已經有另一組伺服器在執行,或其他程式占用 6900/6121/5121
視窗一開就關閉在命令提示字元直接執行 exe,就能看到錯誤訊息





第 11 章|對外連線設定(進階)

單機玩家可以略過本章
只在同一台電腦遊玩,而且 127.0.0.1 能正常連線,就不需要修改 IP、防火牆或路由器設定。請直接前往第 12 章。
小提醒:以下設定都寫在 conf/import 資料夾。這裡的檔案不會被官方更新覆蓋,不要直接修改 conf 裡的原始設定檔。

11-1. 角色伺服器設定
開啟 conf/import/char_conf.txt,加入:
  1. login_ip: 127.0.0.1
  2. login_port: 6900
  3. char_ip: 你的對外IP
  4. char_port: 6121
複製代碼


11-2. 地圖伺服器設定
開啟 conf/import/map_conf.txt,加入:
  1. char_ip: 127.0.0.1
  2. char_port: 6121
  3. map_ip: 你的對外IP
  4. 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,修改:
  1. <address>127.0.0.1</address>
  2. <port>6900</port>
複製代碼


  • 單機測試:填 127.0.0.1。
  • 給其他玩家:填第 11 章設定的對外 IP(或網域名稱)。
  • port:填登入伺服器的連接埠,預設 6900。


35_031015.png
▲ 圖 12-1:連線位址設定

12-3. 語言與地區參數 langtype
  1. <langtype>4</langtype>
複製代碼


本教學的客戶端經過繁體中文化與 Big5 相容處理,所以使用 4。

數值012345
地區韓國美國日本中國台灣泰國


36_031025.png
▲ 圖 12-2:langtype 位置

注意事項:
‧langtype 是客戶端的語言與地區設定,不是直接指定 Big5 編碼。
‧不同版本的客戶端對 langtype 的處理可能不同,請依實際測試結果設定。
‧如果客戶端目前已經能正常顯示繁體中文,不建議隨意修改。

12-4. admin 標籤
clientinfo.xml 裡的 admin 標籤是填入帳號編號(account_id),讓客戶端對這些帳號開啟特定顯示功能。
這不等於伺服器的 GM 權限,GM 權限要在第 13-3 節設定。

37_031046.png
▲ 圖 12-3:admin 標籤




第 13 章|建立測試帳號與登入遊戲

13-1. 用 _M/_F 建立帳號
rAthena 支援在登入畫面直接建立帳號:在帳號後面加上 _M(男)或 _F(女)。

確認設定:開啟 conf/login_athena.conf,查看 new_account 的設定。如果是 no,在 conf/import/login_conf.txt 加入:
  1. new_account: yes
複製代碼

修改後重新啟動登入伺服器。

建立方式:
  • 開啟客戶端,在登入畫面輸入帳號,例如 test01_M,再輸入密碼。
  • 第一次登入會自動建立帳號 test01(性別男)。
  • 之後登入只要輸入 test01,不用再加 _M。


52_screen001.png
▲ 圖 13-1:執行客戶端

注意:
‧帳號(不含 _M/_F)至少要 4 個字元。
‧部分新版客戶端可能不支援這種建立方式,可以改用 13-4 的 SQL 方式建立。
‧正式開放給玩家後,如果改用網頁註冊,建議把 new_account 改回 no。

13-2. 查看 login 資料表
用 HeidiSQL 連線到 ragnarok 資料庫,點選 login 資料表,切換到「資料」分頁,就能找到剛建立的帳號。

45_032442.png
▲ 圖 13-2:login 資料表

46_032511.png
▲ 圖 13-3:查看帳號資料

13-3. 設定 GM 權限
  • 開啟 conf/groups.yml,確認 GM 群組的 Id。rAthena 預設 99 是 Admin(最高權限)。
  • 在 login 資料表找到測試帳號,把 group_id 改成 99。
  • 按上方的勾號(或 Ctrl + Enter)儲存。
  • 如果角色正在遊戲中,需要登出再重新登入才會生效。


47_032524.png
▲ 圖 13-4:修改 group_id

48_032549.png
▲ 圖 13-5:儲存修改

容易搞混的欄位:
‧account_id:帳號編號,系統自動產生,不要修改。
‧group_id:權限群組,0 是一般玩家,99 是 Admin。

13-4. 用 SQL 指令設定(選用)
也可以在 HeidiSQL 的「查詢」分頁直接執行:
  1. UPDATE `login` SET `group_id` = 99 WHERE `userid` = 'test01';
複製代碼


13-5. 確認 GM 權限
重新登入遊戲後,在聊天框輸入:
  1. @commands
複製代碼

如果出現可用指令清單,就代表 GM 權限設定成功。




恭喜!到這裡你已經完成 rAthena 伺服器的架設,可以登入遊戲測試了。
有問題歡迎在下方回覆,或到 POPLAB Discord 或到
RO私服疑問區 詢問!

主席
回覆

使用道具 舉報

在本版發帖返回頂部