Photon Server基本概念

Application 應(yīng)用程序

一個(gè)應(yīng)用程序是一個(gè)游戲服務(wù)器端的邏輯。一個(gè)游戲的所有特征(例如遠(yuǎn)程過程調(diào)用,數(shù)據(jù)存儲(chǔ)等)都在一個(gè)Photon Application中實(shí)現(xiàn)。C#代碼編譯之后,Photon會(huì)其加載生成的程序集。Photon Core使用配置文件來設(shè)置應(yīng)用程序和定義啟動(dòng)參數(shù)。

通常,在單個(gè)應(yīng)用中提供游戲的所有邏輯。Photon仍然能夠同時(shí)運(yùn)行多個(gè)應(yīng)用程序。每個(gè)應(yīng)用程序可以有不同的任務(wù)。例如,可以編寫單獨(dú)的應(yīng)用程序向基于web的客戶端發(fā)送策略文件。

客戶端通過在連接時(shí)提供應(yīng)用程序的名稱來選擇它想要使用的應(yīng)用程序。

游戲邏輯

游戲邏輯定義了客戶端如何與服務(wù)器交互。它實(shí)現(xiàn)操作,事件和服務(wù)器自己執(zhí)行的任何操作。

在SDK文件夾(“{Server_SDK_path}/src-server/Loadbalancing”)中有一個(gè)“LoadBalancing應(yīng)用程序”,它提供了基于房間游戲的一個(gè)好的例子。

如果你的游戲?qū)⑹且粋€(gè)單一的,巨大的世界,MMO演示應(yīng)用程序是一個(gè)很好的例子。此應(yīng)用程序處理客戶端的利益管理,并提供項(xiàng)目,屬性,演員和更多的類。

或者,任何游戲邏輯可以直接在C??蚣苤祥_發(fā)。這個(gè)入口點(diǎn)是定義在Photon.Socketserver.dll中的應(yīng)用程序類。

Operations 操作

一個(gè)操作是Photon相當(dāng)于一個(gè)遠(yuǎn)程過程調(diào)用。Photon客戶端使用操作調(diào)用來完成任何他們想做的事情。

根據(jù)需要在服務(wù)器端應(yīng)用程序中定義操作及其所有參數(shù)??蛻舳丝梢酝ㄟ^設(shè)置帶有符合操作約定的鍵和值的哈希表來調(diào)用任何操作??蛻舳撕头?wù)器框架負(fù)責(zé)序列化,傳輸和反序列化。

每個(gè)操作也可以提供結(jié)果。這是向客戶端提供所請求數(shù)據(jù)的一種方式。當(dāng)然可以跳過結(jié)果,從而節(jié)省帶寬。

操作調(diào)用和結(jié)果是一個(gè)客戶端和服務(wù)器之間的事情。其他客戶端不會(huì)知道這些。

Events 事件

Photon事件是為客戶端準(zhǔn)備的消息。每個(gè)事件由字節(jié)碼輸入?yún)^(qū)分類型,并攜帶游戲更新。 “LoadBalancing應(yīng)用程序”定義了幾個(gè)事件,但是可以純粹在客戶端定義自己的事件。

與操作結(jié)果不同,接收的事件很可能導(dǎo)致另一個(gè)客戶端的操作調(diào)用。這意味著:事件可能會(huì)隨時(shí)到達(dá)。 “LoadBalancing應(yīng)用程序”在有人加入或離開房間時(shí)發(fā)送事件。

操作RaiseEvent使事件真正通用:任何客戶端可以通過將散列表與數(shù)據(jù)組合在一起,并在發(fā)送時(shí)指定代碼來創(chuàng)建新事件。游戲數(shù)據(jù)可以發(fā)送,不需要更改服務(wù)器。

當(dāng)然,對于更精細(xì)的服務(wù)器端對事件的反應(yīng),可以定義自定義操作,其檢查事件數(shù)據(jù),編譯它或創(chuàng)建其他事件。

連接和超時(shí)

與普通UDP不同,Photon的可靠UDP協(xié)議建立了服務(wù)器和客戶端之間的連接:如果UDP包中的命令是可靠的,則它們具有序列號和標(biāo)志。如果這樣的話,接收端必須確認(rèn)命令??煽康拿钜远涕g隔重復(fù),直到確認(rèn)到達(dá)。如果未到達(dá),則連接超時(shí)。

雙方從他們的角度獨(dú)立地監(jiān)視這種連接。雙方都有自己的規(guī)則來決定另一個(gè)是否仍然可用。

如果檢測到超時(shí),則在連接的那一側(cè)發(fā)生斷開連接。一旦一方認(rèn)為他方不再響應(yīng),就不會(huì)向它發(fā)送任何消息。這就是超時(shí)斷開是單向的而不是同步的原因。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 12,332評論 6 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,893評論 25 709
  • 文/寸心悟? 聽過一個(gè)笑話,王健林給王思聰五個(gè)億創(chuàng)業(yè),王思聰也是爭氣賺了四十個(gè)億翻了八倍。如果王思聰不成功怎么辦?...
    寸心悟閱讀 836評論 1 4
  • 我來到有海的城市 來尋你詩里的故事 那海岸的珠貝 莫不是你離別時(shí)的淚水 我踏著你詩的韻律 來尋你青春的印記 那海風(fēng)...
    愛笑陽陽陽閱讀 283評論 3 7

友情鏈接更多精彩內(nèi)容