商業(yè)路線課程項(xiàng)目Roguelike游戲演示01
C# 服務(wù)器框架Fantasy開發(fā),交流群號(hào) 656091376

上線級(jí)登錄注冊(cè)實(shí)現(xiàn):
1、采用鑒權(quán)服務(wù)器驗(yàn)證(短連接)、根據(jù)用戶Id或名字指定一個(gè)服務(wù)器生成一個(gè)Token發(fā)送給客戶端。
2、客戶端通過Token連接登錄到指定的服務(wù)器進(jìn)行登錄。ToKen采用JWT的RSA加密、幾乎沒有破解的可能、能有效的保證服務(wù)器的安全性和一致性。
3、分開鑒權(quán)和游戲服務(wù)器的關(guān)系、比如鑒權(quán)是其他平臺(tái)開發(fā)的、如PHP、JAVA等、這些服務(wù)器生成Token就可以了。
4、鑒權(quán)是獨(dú)立的跟其他服務(wù)器沒有任何關(guān)系、就很容易做成多個(gè)區(qū)或服的鑒權(quán)登錄服務(wù)器、單獨(dú)部署到一個(gè)服務(wù)器中、不需要跟隨游戲服務(wù)器。
5、鑒權(quán)服務(wù)器是最容易攻擊的、現(xiàn)在如果被攻擊了、可以隨時(shí)在啟動(dòng)一個(gè)鑒權(quán)就可以了、完全不影響游戲服務(wù)器的邏輯。
無縫大地圖實(shí)現(xiàn):
1、使用9宮格根據(jù)人物坐標(biāo)每隔一定時(shí)間計(jì)算所在格子的位置來渲染周圍9個(gè)格子的地圖。
2、具體算法:Mathf.RoundToInt(position.x / self.CellSize.x)。
3、周圍地圖都使用對(duì)象池來進(jìn)行緩存、避免重復(fù)創(chuàng)建。
地圖傳送實(shí)現(xiàn)
1、分為CopyDispatcher、CopyManage、Copy三部分組成。
2、當(dāng)執(zhí)行傳送時(shí)會(huì)首先去CopyDispatcher服務(wù)器申請(qǐng)一個(gè)副本、CopyDispatcher會(huì)找到當(dāng)前負(fù)載(人數(shù)最少)服務(wù)器。
3、請(qǐng)求CopyManage服務(wù)器創(chuàng)建一個(gè)新的副本、CopyDispatcher把這個(gè)服務(wù)器添加到定時(shí)檢測(cè)任務(wù)、查看這個(gè)副本是否過期、如果過期會(huì)減少負(fù)載。
4、Copy必須有超時(shí)時(shí)間、如果時(shí)間不夠可以通過CopyDispatcher來進(jìn)行續(xù)約,通過copySceneRouteId執(zhí)行傳送邏輯傳送到目標(biāo)副本中。
5、傳送成功后客戶端會(huì)收到H_G2C_TransferStart消息、客戶端執(zhí)行切換地圖的相關(guān)邏輯。
