KBEngine簡單RPG Demo原始碼解析 2

2022-08-30 07:30:10 字數 1991 閱讀 6892

七:服務端資產庫資料夾結構

public void createaccount());}

複製**

/*外掛程式的主迴圈處理函式

*/public virtual void process()

複製**

public void createaccount(string username, string password)

/**/

else

}複製**

複製**

public void login());}

複製**

public void login(string username, string password)

/**/

else

}複製**

if(password.size() > account_passwd_max_length)

複製**

else

}複製**

std::string& accountname, std::string& addr, uint16 port)

複製**

std::string& accountname, 

std::string& password)

複製**

"""kbengine method.

@type isbootstrap: bool

"""# 安裝監視器

watcher.setup()

if isbootstrap:

# 建立spacemanager

kbengine.createbaselocally( "spaces", {} )

複製**

2. 世界管理器建立出所有的場景

在spaces.py中, spaces通過initalloc函式根據配置中scripts/data/d_spaces.py建立出space實體,space實體描述的是乙個抽象空間,乙個空間可以被邏輯定義為大地圖、場景、房間、宇宙等等。

def initalloc(self):

# 註冊乙個定時器,在這個定時器中我們每個週期都建立出一些space,直到建立完所有

self._spaceallocs = {}

self.addtimer(3, 1, scdefine.timer_type_create_spaces)

self._tmpdatas = list(d_spaces.datas.keys())

for utype in self._tmpdatas:

spacedata = d_spaces.datas.get(utype)

if spacedata["entitytype"] == "spaceduplicate":

self._spaceallocs[utype] = spaceallocduplicate(utype)

else:

self._spaceallocs[utype] = spacealloc(utype)

複製**

def createspaceontimer(self, tid, tno):

"""建立space

"""if len(self._tmpdatas) > 0:

spaceutype = self._tmpdatas.pop(0)

self._spaceallocs[spaceutype].init()

if len(self._tmpdatas) <= 0:

del self._tmpdatas

self.deltimer(tid)

複製**

class space(kbengine.base, gameobject):

def __init__(self):

self.createinnewspace(none)

複製**

class space(kbengine.entity, gameobject):

def __init__(self):

複製**

KBEngine關於網路部分

整個網路介面是在network inte ce.h和network inte ce.cpp開始。配置資訊參考 assets res server kbegine.xml,這裡是網路對外的所有介面。eventdispatcher類是管理事件的乙個類,裡面有註冊 取消讀寫描述符,新增處理任務,出錯包處理...

開源網遊引擎kbengine的使用

從還沒參加工作,我就對遊戲的製作很有興趣,到參加工作,和我師兄通宵蟲很投緣,我們都想製作出一款帶大型的網路遊戲,但由於我們工作平台的限制,無法如願,不過還是做出了幾個單擊遊戲的作品。其實回想起來,我們想製作的不是遊戲,而是乙個世界,更是乙個現實無法給與我們的憧憬。由於我們這方面的積累空白,我打算從開...

KBEngine原始碼剖析1 角色賬號登入和管理

我主要是為了看原始碼,實現,所以後續的部落格,我應該都主要寫自己的原始碼閱讀情況了 登入時序圖 先貼上一張新賬號登入的時序圖。流程分析 一次登陸請求,從客戶端發起,到伺服器響應,涉及到至少5個程序間的互動通訊。pendingloginmgr plinfos ptinfos pendingloginm...