原创 英雄遠征Erlang源碼分析(2)-網關服務器的啓動

上一篇文章解析了遊戲源碼的結構,我們知道該源碼包含兩個服務器的啓動腳本:網關服務器和遊戲服務器,其中網關服務器用於在玩家選擇進入遊戲服務器之前獲取服務器列表,遊戲服務器則處理玩家進入遊戲服務器後的登錄,進入遊戲操作。 先來說說遊戲的網關服

原创 英雄遠征Erlang源碼分析(1)-源碼結構解析

    偶然得到了一份英雄遠征的Erlang服務端源代碼,想着通過對源代碼的分析,來熟悉使用Erlang編程語言的遊戲服務器的設計,遊戲中關鍵邏輯的實現。     解壓壓縮文件後,在Idea內導入文件夾創建相關工程,可以看到文件結構如下:

原创 開發筆記:遊戲中的好友系統

挺久沒更新文章了,這一年以來個人經歷了許多事情,去年下半年開始穩定下來了,但今年初始又趕上疫情,公司的項目進度也推遲了,現在好不容易復工,登錄了許久不上的博客,發現自己收到了很多新的關注和私信,也有很多網友表達了對自己文章的支持,在這裏先

原创 英雄遠征Erlang源碼分析(13)-總結 附上可執行的服務端和客戶端代碼

總結:其實也沒有什麼好總結的......英雄遠征這套源碼雖然說體積並不大,麻雀雖小五臟俱全,對於MMORPG網遊的一些基本系統都有完備的實現,雖然實現方法不一定是最好的。除去場景,戰鬥,組隊,任務等那些我文章中有提到的系統,源碼中還有像是

原创 英雄遠征Erlang源碼分析(12)-任務模塊解析

與玩家任務相關的模塊有:lib_task.erl(玩家任務相關操作),mod_task.erl(定時回寫任務數據) 玩家任務的初始化: 在登錄的時候調用lib_task:flush_role_task(PS),從數據庫中加載玩家角色數據

原创 英雄遠征Erlang源碼分析(11)-物品相關操作解析

遊戲中,玩家物品的管理是通過每個玩家獨有的物品管理進程,結合ETS緩存表實現的。 物品相關模塊有mod_goods.erl,lib_goods.erl,goods_util.erl和lib_make.erl mod_goods.erl:物

原创 英雄遠征Erlang源碼分析(10)-隊伍相關

組隊相關模塊有mod_team.erl和lib_team.erl 通過24000協議請求,調用mod_team:start(Uid,Pid,Nick,TeamName)開啓組隊進程,創建隊伍 組隊state爲 %%隊伍資料 -recor

原创 英雄遠征Erlang源碼分析(9)-戰鬥流程解析

和戰鬥相關的模塊有mod_battle.erl 當玩家進程和怪物進程被創建的時候都會通過mod_battle:start_link()創建一個戰鬥進程。 該戰鬥進程的state,用於保存玩家上次出手或者使用技能的時機,用於cd的判斷 -

原创 英雄遠征Erlang源碼分析(7)-場景與副本

場景和副本是玩家活動的區域,場景在服務器啓動的時候由mod_scene進程創建,場景信息保存在?ETS_SCENE中,並一直存在;副本在玩家請求進入的時候會創建副本服務進程,當玩家離開的時候會撤銷進程。 場景: 場景相關的模塊爲mod_s

原创 英雄遠征Erlang源碼分析(8)-怪物相關

與怪物相關的模塊有三個:mod_mon_create.erl,mod_mon_active.erl,lib_mon.erl mod_mon_create:創建負責創建怪物的進程,通過mod_mon_create:create_mon([M

原创 英雄遠征Erlang源碼分析(6)-玩家進程初始化和玩家模塊相關方法

客戶端發送登錄請求後,服務器檢查玩家登錄需求,創建玩家進程以及進行相關的初始化工作,只有這些做完後,客戶端操控的角色纔算是和服務器的玩家進程建立了關聯。 創建玩家進程調用mod_player:start/1,使用process_flag(

原创 英雄遠征Erlang源碼分析(5)-協議解析與玩家登錄處理

現在,客戶端與服務器的連接算是正式建立了,此時用戶需要做的第一件事就是登陸。不過在登錄之前,我們要先研究下前後端通信的協議。 客戶端與服務端建立連接後,通過提前制定好的協議進行交互。具體的協議文檔在doc文件夾下。 典型的協議結構如下(此

原创 英雄遠征Erlang源碼分析(3)-遊戲服務器的啓動

上一篇文件介紹了網關服務器的啓動,其功能主要用於給客戶端返回可選的遊戲服務器列表,讓客戶端去連接。其實有些遊戲的網關部分使用的是PHP搭建,代碼的維護和Erlang是分開的。現在讓我們來看遊戲服務器的部分。 同樣,找到script文件夾,

原创 英雄遠征Erlang源碼分析(4)-TCP連接處理

上一篇文章大概捋了一下游戲服務器啓動的時候對應模塊的動作,現在我們來仔細研究一下其中的start_tcp/0和start_client/0部分。 在start_tcp/0中啓動了sd_tcp_listener_sup監控樹,並掛到sd_s

原创 MochiWeb使用+源碼分析資料整理

  畢業了好一段時間了,現在回頭看自己的校招經歷的話實在說不上成功,重視程度不夠+準備不足,沒能和同學一樣拿到一個光鮮的offer,現在也已經參加工作了半年了,回頭感慨再多也沒有用,從今往後還是腳踏實地認真努力的工作,保持飢渴狀態不斷學習