天堂私服 | IntelliJ IDEA 天堂模擬器除錯(Debug)
問題
每次核心修改完畢編譯成Jar檔,然後啟動模擬器(黑盒子),登入遊戲後可以看到修改的結果;但是沒辦法做所謂的Debug剛剛修改過的程式碼。
這樣在針對核心的修改,無法快速開發、測試、定位問題…等等諸多不方便。
這時候只需要會IDE內的除錯模式就可以解決此問題。
註:如不清楚除錯模式,請參考IntelliJ IDEA 逐步除錯(Debug)的步驟與演練
分析 main class
之前教學的啟動模擬器,都是透過執行Jar檔來做啟動;而我們在使用原始碼的時候,其實是不容易知道到底哪個是主要程式裡面main方法。
而啟動Jar檔的時候,他是如何知道哪支程式是主要的main方法呢?
- 必需有任何一套解壓縮軟體。
- 針對
l1jserver.jar做解壓縮的動作。
- 進入解壓縮後的目錄→
l1jserver→META-INF。 - 看到
MANIFEST.MF檔案,- 並編輯器軟體開啟此檔案。
- 可見內容
Main-Class: l1j.server.Server,說明了主要的程式是哪支class。
- 分析完後,可以把剛剛解壓縮的
l1jserver目錄做刪除。註:如對此檔有興趣,可以參考聊一聊JAR文件和MANIFEST.MF。
模擬器除錯模式
分析後的主要main的class:
1 | l1j.server.Server |
- 開啟
IntelliJ IDEA,並選擇L1J-3.80c專案進入。
- 點即打開主要的
main程式。 - 點擊
src→l1j.server→Server將程式打開於工作區。
- 點擊程式中的
main方法左邊的啟動按鈕,並選擇除錯(Debug)模式選項。
- 此時下方的除錯視窗是彈出,並且輸出與啟動
Jar檔黑盒子的內容一樣。
- 此時模擬器已經啟動成功。
- 使用登入器嘗試登入看是否可以正常連線進入。

- 我們嘗試在
Beginner程式內的,第54設定斷點。1
src.l1j.server.server.model.Beginner
- 天堂建立新人物。
- 會跳回
Intellia IDEA視窗,且斷點在剛剛設定的位置。 - 且天堂視窗會卡在人物建立的畫面並不會到人物選擇畫面。
- 此時就可以做除錯的行為了。
- 觀察一下
con。 - 觀察一下
pstm1。 
Step Over:步過。- 再觀察一下
pstm1。
- 觀察一下
- 假設都沒問題後,可以按下
Resume Program恢復程式,讓程式正常執行完畢。 - 回到天堂視窗可見已經建立好人物,且回到人物選擇視窗。

結語
針對模擬器核心的Debug到這邊教學相信已經非常清楚,希望接處核心開發修改的新手們,不至於不知道如何開始,可以輕鬆簡單的快速上手。
最後建議回顧一下首章天堂私服 | 天堂私服架設教學,了解其章節目錄。
免責聲明
- 本部落格文章中皆不提供任何所謂的遊戲「主程式」、「模擬器」、「登入器」…等等相關程式的下載點。
- 本部落格文章中所見之遊戲主程式和服務器端程序均來自網路發佈,版本歸原作者所有。
- 本部落格文章為研究SQL資料庫與修改JAVA語法使用,並非商業用途,亦無做營運事實等任何一切商業行為。
- 本部落格文章內容是為研究學習設計思想和原理為目的,絕沒有故意侵權或惡意抄襲、篡改其他遊戲內容!
註:以上參考了
聊一聊JAR文件和MANIFEST.MF
