SagaECO

深入淺出SagaECO RPC篇(五) “揚帆啟程”

深入淺出SagaECO RPC篇(五) “揚帆啟程”

以下討論基於SagaECO svn ~400版本 源代碼可以從這裡下載 RPC篇終於來到第五篇… 上回提要是每當與伺服器連接時首要的鑰匙交換事項,換言之通信確立後馬上開始通信(傳送門)。 這次介紹登入的詳細步驟,手把手完成最基礎的登入ECO的過程。跟上一章同樣,登入的步驟是由癌炮指定的,跟SagaECO沒有關聯咯。 仔細看很多重覆的流程,無非是檢查版本->登入->做其他事的模式。這裡使用了SagaECO的命名方式。Gate Server的角色很簡單,就是用來做用戶認證,引導到用戶選擇遊戲伺服器的列表裡(C, L ,F , Z服)。 好像盤古開初的時候沒有這個Gate Server。從server.lst可以看出,本來就是讓玩家自己選遊戲伺服器。server.lst中加一行就能在登入畫面選伺服器。可能是後來意識到server.lst裡直接寫IP,容易被DDOS,於是把第一重登入交給Gate Server去做; 或者是Login Server負載大而需要多幾台伺服器,擔當負載平衡(分流)作用。後者推測比較合理,因為這種沒有代理作用的負載平衡器不見得能避免直接去DDOS後面的伺服器。 當伺服器列表交出去之後 Gate...

深入淺出SagaECO RPC篇(四) “不滅之握”

深入淺出SagaECO RPC篇(四) “不滅之握”

以下討論基於SagaECO svn 900版本源代碼可以從這裡下載 注意: 被分發SagaECO源代碼並不代表你被授權使用、修改、發布衍生的程式換言之SagaECO團隊仍然保留一切權利(雖然SagaECO團隊早就消失了… 這篇主要覆蓋SagaECO中的NetIO和Encryption類,比較沉悶,是失眠的良藥。 已經去掉無關代碼,但是還是太長了。要表達的其實是客戶端和伺服器確認連線的流程: 客戶端發送長度為8的封包 伺服器啟動鑰匙交換 ,準備私鑰 ,向客戶端發送含有公鑰、長度為529的封包 客戶端收到伺服器的公鑰,準備私鑰,製作共享鑰匙,並向伺服器發送含有 公鑰、長度為260的封包 伺服器收到客戶端的公鑰製作共享鑰匙 連接成立 想當年我自行斷斷續續去湊關鍵字花了幾個月最後才得出是DH交換書本和大神的文章是可以省掉以年為單位的時間可謂不誇張…每每醍醐灌頂每天生活在他們的陰影中實在不要太幸福 具體可以自行參照wiki對應交換所需要的資料。(謎之聲: 再說一次! Ecore是日本的網站非指ECO-Re私服) DH鑰匙交換的計算...

深入淺出SagaECO RPC篇(三) “解耦封包”

深入淺出SagaECO RPC篇(三) “解耦封包”

以下討論基於SagaECO svn 900版本源代碼可以從這裡下載(約svn 400版本) 注意: 被分發SagaECO源代碼並不代表你被授權使用、修改、發布衍生的程式換言之SagaECO團隊仍然保留一切權利(雖然SagaECO團隊早就消失了… 上文我們已經處理好輸出數據的格式和流程了,我們還有接收封包(Packet)的部分未解說呢。時間關係,讓我們一次過掀開完整的流程。 上一篇說的從Packet類的虛擬方法三巨頭 public virtual bool SizeIsOk 近乎沒有用到、忽略 public virtual Packet New() public virtual void...

深入淺出SagaECO RPC篇(二) “封包結構”

深入淺出SagaECO RPC篇(二) “封包結構”

以下討論基於SagaECO svn 900版本源代碼可以從這裡下載 注意: 被分發SagaECO源代碼並不代表你被授權使用、修改、發布衍生的程式換言之SagaECO團隊仍然保留一切權利(雖然SagaECO團隊早就消失了… 這篇主要討論繼承自Packet類的各個封包遊戲客戶端和伺服器透過不同封包來傳遞不同的信息,有玩家出現的通知,有組隊邀請的請求,有聊天信息通知…是聯繫世界中的一切的基礎。SagaECO這個ECO私服也不是例外。 這次我們從伺服器通知某人作出了坐下動作的封包入手。 每一個封包有對應的ID,這時要找的ID是121C。 除了ECore之外,se-a Packet Struct Tools也能查看封包結構。*站主曾經封鎖日本以外的IP,必要時請使用VPN。 可見兩者的記載並不吻合,在這時候建議使用Se-a的結構,它上面的資料是最新的。如果沒有理解錯誤的話,se-a的網站是從2017年起由大家分享封包紀錄。對於121C封包,舊的封包結構不兼容於新客戶端,新客戶端試圖讀取新增的第二個DWORD時舊封包就不夠長了。更常見的不兼容狀況有類型變更,例如金錢從DWORD延長為QWORD,也會導致上述的舊封包不夠長而失效。比較另類的變更涉及OpCode的變更。 兩個工具各有優缺點,整理成如下:Ecore優點– 對於資料的注釋較多、齊全、而且有提供相關連封包和流程– 是除了代碼之外唯一有覆蓋網絡層資料的文獻缺點– 資料比較舊 部分資料不適用於新版客戶端 新系統例如AAA之類 很可能會沒有相關資料–...

深入淺出SagaECO RPC篇(一) “序列爭戰”

深入淺出SagaECO RPC篇(一) “序列爭戰”

約4年前,機緣巧合地,SagaECO的源代碼輾轉落到我這個不懂編程的閑人手上…現在能跟大家一起解秘SagaECO,實是百感交集。詳解ECO私服運作的深入淺出SagaECO系列,在此出發~ 以下討論基於SagaECO svn 900版本源代碼可以從這裡下載 注意: 被分發SagaECO源代碼並不代表你被授權使用、修改、發布衍生的程式換言之SagaECO團隊仍然保留一切權利(雖然SagaECO團隊早就消失了… 這篇的主角是Packet.cs,SagaECO中所有封包皆繼承自Packet類。 Defines the base class of a network packet. Packets are send back and...