青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Fork me on GitHub
隨筆 - 215  文章 - 13  trackbacks - 0
<2016年3月>
282912345
6789101112
13141516171819
20212223242526
272829303112
3456789


專注即時通訊及網游服務端編程
------------------------------------
Openresty 官方模塊
Openresty 標準模塊(Opm)
Openresty 三方模塊
------------------------------------
本博收藏大部分文章為轉載,并在文章開頭給出了原文出處,如有再轉,敬請保留相關信息,這是大家對原創(chuàng)作者勞動成果的自覺尊重!!如為您帶來不便,請于本博下留言,謝謝配合。

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

相冊

Awesome

Blog

Book

GitHub

Link

搜索

  •  

積分與排名

  • 積分 - 219749
  • 排名 - 117

最新評論

閱讀排行榜

@import url(http://m.shnenglu.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

來源:http://cl314413.blog.163.com/blog/static/1905079762012102124637521/ 

https://blog.51cto.com/kenkao/1707619


前言:

本簡易文檔主要翻譯自Photon官方Mmo文檔,也加入了一些自己的理解和提示,以后會嘗試著用自己的項目來講一講具體的開發(fā)流程。當然。。水平問題,肯定會有我不知道的錯誤,建議對照著英文原版來看。(雖然這貨耽誤了我兩個月時間,但還是想說好值啊!)不多廢話了,直接開始。

一、基礎:興趣管理(Interest Management)

玩游戲都知道,作為一個在線游戲來講,人物的走動是基礎中的基礎。然而,在虛擬世界中,一個東西位置發(fā)生變化會觸發(fā)位置更新消息。為了在其他客戶端展示這個東西是在流暢的運動,最少需要每秒10次的更新。

但問題在于,如果這個游戲是成百上千人在玩的話。。。作為客戶端來講肯定不能讓它接受到所有人物移動的消息的,計算機會爆掉。。所以呢,興趣管理就是解決這個問題的好方法了。每個客戶端都只獲取他想要的事件,也就是他所能看見的東西的事件。

二、概念

游戲中的虛擬世界(IWorld)有一個建立在坐標基礎上的虛擬空間。

每個坐標都是被3D向量表現出來的。幾個坐標定義了一個區(qū)域(IArea)。

每一個在這個虛擬世界中存在的物體都被叫做“物品”(Item)。

客戶端用位置和范圍定義他們感興趣的區(qū)域,并且只能看到這個興趣區(qū)域(Interest Area)范圍內的物品。

思路來了,但是呢,計算哪些物品進入哪些興趣區(qū)域會非常消耗CPU資源,尤其當物品和興趣區(qū)域在快速的運動的時候。

一個加快這個計算過程的簡單方法就是把虛擬空間劃分成一些固定地帶(fixed Regions)然后只計算哪些地帶和興趣區(qū)域是重疊的。

客戶端會接收到所有重疊地帶中的事件。

而這,就是傳說中的貼圖算法了(Square Tile Algorithm)。

一旦一個物品出現在了特定的興趣區(qū)域的邊界之內,這個興趣區(qū)域就會自動的把客戶端實例(peer)和這個物品的事件頻道(event channel)相訂閱。

客戶端從這一刻起就會收到所有被這個物品或者通過它發(fā)送的消息。

如果一個物品是在興趣區(qū)域的邊界來回晃悠的話,很可能就會造成頻繁的訂閱和未訂閱的變化。為了解決這個問題,一個附加的更大的興趣范圍(interest area radius)就這么被創(chuàng)造出來了。已訂閱的物體如果出了這個范圍那就不再被訂閱,客戶端也就不再接收它的事件。

三、Photon MMO 功能

   1、基于地帶(region)的興趣管理

       使用貼圖算法,長度和寬度可變,并且平鋪尺寸也已經實現好了(tile size is implemented)

       很方便用其他的地帶算法取代默認的貼圖算法。

    2、物品(角色,NPC,共享的游戲對象)【Items(Avatars,NPCs,shared game objects)】

       客戶端可以產生、銷毀或者移動物品。

       物品具有可以被其他客戶端讀取以及被所有者更改的屬性。

       物品屬性里有一個修訂號碼(revision number),客戶端如果在一定時間內看不到一個物體了,可以把修訂號碼進行比較,以此決定接不接受該物品屬性的更新。

    3、興趣區(qū)域:物品的事件在興趣區(qū)域中是被自動接收的

       興趣領域有兩個興趣界點(interestthresholds)。物品進入里面的興趣區(qū)域邊界(inner radius)會變的可視,離開外面的興趣范圍就會變得不可視。這會最優(yōu)的減少頻繁的可視狀態(tài)變化。

        

         1 不可視物品,范圍之外

         2 不可視物品進入外圍興趣區(qū)域

         3 不可視物品進入內部興趣區(qū)域變得可視了

         4 可視物品離開內部興趣區(qū)域

         5 可視物品離開外圍興趣區(qū)域變得不可視了

     興趣區(qū)域可以被重新設置范圍大小:調整視野范圍以適應能看見的物品的數量

         為了提高在擁擠區(qū)域內的程序性能

         在物品比較稀少的區(qū)域可以展示較遠的物品。

     興趣區(qū)域可以附加給任何物品:無論是在物品移動了興趣區(qū)域之后還是改變了興趣區(qū)域本身。這對本身的角色移動興趣區(qū)域尤其有用。(Whenever the item moves the interest area follows and changes theinterest accordingly. This is especially useful to move the interest area withthe own avatar.)

     已分離的興趣區(qū)域可以被自由的移動,這對攝像機漫游很有幫助。

     客戶端可以有多個興趣區(qū)域在同一時間展示世界的不同部分。

    4、自動的興趣管理

     客戶端可以自動的申請或者取消掉物品的興趣區(qū)域。(Clients can manually (un-)declare interest in items.)

    5、自定義事件(Custom events)可以通過物品發(fā)送到兩個可能的目標

     物品的擁有者所有對物品感興趣的客戶端

    6、最優(yōu)化的位置更新機制:客戶端只會在物品移動的時候才會發(fā)送更新消息。

    7、復制用戶的確認信息:發(fā)生在后的用戶連接會重置之前的連接信息。(Duplicate user recognition: A subsequent user connection resets theprevious con-nection.)

四、狀態(tài)機(StateMachine)

  一個客戶端實例peer有如下的狀態(tài)。

1、  Connected:在連接之后的初始狀態(tài),玩家還沒有進入世界。

2、  WorldEntered:在向服務端發(fā)出EnterWorld的請求以后,玩家進入世界。

3、  Disconnected:客戶端未連接。

          Peer實例為每一個狀態(tài)使用一個不同的申請句柄(operation handler)。這允許申請在每個狀態(tài)下表現的不同。下面是用到的申請句柄。

  1. State     Connected: Photon.MmoDemo.Server.MmoPeer        

  2. State     WorldEntered: Photon.MmoDemo.Server.MmoActor        

  3. State     Disconnected: Photon.SocketServer.Rpc.OperationHandlerDisconnected        

           客戶端應該在呼叫一個狀態(tài)變化申請之后一直等待與之關聯的申請返回或者事件(operation response / event)。客戶端實例peer的狀態(tài)和現在的申請句柄【operationhandler (operation behavior)】在沒有接收到返回或者事件是不會被確認的。EnterWorld申請將會返回一個申請返回,ExitWorld申請將會返回一個事件WorldExited。

五、白楊的話

      1、整個的MMO項目(包括客戶端和服務端)就在photon服務端SDK的src-server文件夾下。右鍵sln解決方案,用VS2010打開就可以看到了。

         

          我第一次看的時候一下子就懵了。。這忒復雜了吧,都什么啊。。。

          但是后來慢慢探索就明白各個項目的關系了。

          簡單的來說,Client.DotNet的項目內容和Client.Unity3D等同。是客戶端例子的基礎,已經封裝好了peer初始化、operation申請、興趣區(qū)域等基礎類。這兩個項目編譯出來以后都是一個單獨的類庫,是后面那三個client例子用的。Client例子的任務就是引用基礎類庫,開發(fā)更加圖形化的功能,比如Radar(物品雷達,用來管理地圖上的物品,畫小地圖)。

          MmoDemo.Common和MmoDemo.Server都是服務端的內容。Common定義了幾個用來傳送事件的ID或Code枚舉。而Server就主要是用來實現服務端邏輯了。

       2、如何用這貨來開發(fā)MMO功能呢?

          舉例來說,如何開發(fā)一個簡單的登陸注冊功能?

          大概思路如下:(這里只是簡述,肯定不完整,我會爭取在我的項目比較穩(wěn)定以后用項目來說明)

1)  在client基礎類庫項目的GameStateStrategies中加入一個新狀態(tài)類Login.cs。

2)  在項目的Operations.cs中實現入一個新的傳送用戶名和密碼的方法,注意,這里你使用的OperationCode服務端還無法識別,先記下。過程中別忘了新狀態(tài)。

3)  在你要更改的例子中,在enterworld之前調用這一方法。

4)  來到服務端的common,在OperationCode.cs之中定義好你剛才在客戶端中傳送的OperationCode,還要分別在ErrorCode和EventCode中給這個登錄方法加一個申請返回和事件回復的Code。

5)  再來到server,在Operations中加入判斷登錄信息的新類,在Events中加入返回成功失敗消息的新類。過程中還是別忘了判斷Login狀態(tài)。


3、  至于用什么數據庫。。。能力有限,一直用的都是LINQ To SQL,架設比較方便,在photon中使用也很簡單,這方面的技術查閱C#紅皮書或者新出的數據庫技術的書就好。不過目測這貨已經過時了,所以。。也不是太敢確定會一直用它,慢慢來,比起各種缺文檔的photon,數據庫好學多了不是么!

posted on 2016-03-14 15:02 思月行云 閱讀(2089) 評論(0)  編輯 收藏 引用 所屬分類: Photon
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品国产一区二区| 亚洲精品网址在线观看| 欧美激情视频网站| 久久精品中文字幕免费mv| 香蕉久久a毛片| 欧美一区二区啪啪| 久久亚洲影音av资源网| 欧美激情视频一区二区三区在线播放| 欧美第十八页| 国产精品99久久久久久久久| 亚洲免费在线看| 老色鬼久久亚洲一区二区| 欧美理论电影在线播放| 国产精品久久久久久久久久三级| 国产精品麻豆va在线播放| 国产欧美韩国高清| 亚洲高清一区二| 亚洲欧美日韩精品综合在线观看| 久久嫩草精品久久久久| 99re6这里只有精品| 久久成人免费| 欧美视频导航| 在线看日韩欧美| 在线亚洲精品| 免费日韩av片| 午夜国产欧美理论在线播放| 免费观看久久久4p| 国产日产高清欧美一区二区三区| 亚洲经典三级| 久久精品一本| 亚洲天堂成人在线视频| 欧美激情视频一区二区三区在线播放| 国产欧美视频一区二区| 99综合视频| 蜜桃伊人久久| 欧美在线视频免费观看| 欧美日韩系列| 欧美国产日产韩国视频| 亚洲宅男天堂在线观看无病毒| 久久天天狠狠| 亚洲影院在线观看| 欧美日韩国产一级| 亚洲精品三级| 欧美肥婆在线| 久久精品国产一区二区三区| 国产精品久久久久一区二区三区 | 欧美另类videos死尸| 激情小说另类小说亚洲欧美| 先锋影音网一区二区| 99在线精品观看| 欧美日韩精品免费观看视频完整| 亚洲国产精品久久久久秋霞蜜臀| 久久蜜桃av一区精品变态类天堂| 亚洲欧美日韩在线一区| 国产精品日韩精品| 亚洲免费一在线| 亚洲一卡久久| 国产欧美婷婷中文| 久久大逼视频| 久久成人免费| 亚洲电影自拍| 欧美激情精品久久久久久变态| 久久亚洲捆绑美女| 亚洲片区在线| 亚洲免费观看高清完整版在线观看熊| 欧美精品成人| 亚洲欧美日韩精品久久亚洲区| 中文精品视频| 国产日产亚洲精品| 久久人体大胆视频| 久久亚洲私人国产精品va媚药| 亚洲国产精品成人| 亚洲精品久久久蜜桃| 欧美日韩成人精品| 午夜精品视频在线观看| 亚洲女女做受ⅹxx高潮| 国产综合网站| 亚洲高清免费在线| 国产精品99一区二区| 欧美一区二区三区男人的天堂 | 亚洲伊人第一页| 亚洲综合色网站| 亚洲国产精品视频| 日韩五码在线| 黑人巨大精品欧美一区二区| 亚洲国产婷婷| 国产日韩精品视频一区| 亚洲国产精品成人综合色在线婷婷 | 国产啪精品视频| 欧美成人高清视频| 欧美性色综合| 狂野欧美性猛交xxxx巴西| 99精品视频免费| 欧美一区二区三区婷婷月色 | 亚洲免费影视第一页| 午夜精品美女自拍福到在线| 在线看片欧美| 亚洲在线观看视频| 亚洲黄色免费| 午夜精品视频在线观看| 亚洲精品自在久久| 先锋影音国产一区| 99成人在线| 久久久www成人免费毛片麻豆| 9色国产精品| 久久综合伊人77777麻豆| 先锋影院在线亚洲| 欧美精品免费播放| 欧美凹凸一区二区三区视频| 国产精品vvv| 亚洲三级电影全部在线观看高清| 国产欧美精品国产国产专区| 亚洲精品色婷婷福利天堂| 雨宫琴音一区二区在线| 亚洲一区二区三区中文字幕| 日韩午夜在线观看视频| 久久裸体艺术| 久久久久九九视频| 国产精品国产一区二区| 亚洲免费av网站| 亚洲精品美女在线观看| 久久久91精品国产| 久久久久久久激情视频| 国产精品最新自拍| 亚洲一区网站| 亚洲欧美在线网| 国产精品区一区二区三区| 亚洲另类视频| 亚洲视频高清| 国产精品成人aaaaa网站| 91久久精品一区| 在线亚洲自拍| 国产精品国产亚洲精品看不卡15 | 先锋影音网一区二区| 欧美视频导航| 亚洲一区视频在线| 久久99伊人| 国内精品伊人久久久久av一坑 | 欧美视频一区二区三区四区| 亚洲欧洲在线视频| 亚洲午夜视频在线| 国产精品视频久久久| 午夜精品久久久久久99热软件| 欧美尤物一区| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲视频在线二区| 久久久久久久久久久久久久一区 | 亚洲免费影视第一页| 欧美视频1区| 午夜精品久久久久久久久久久| 欧美一区二区三区精品| 久久精品在线观看| 久久一本综合频道| 欧美激情综合色| 一区二区欧美日韩| 国产精品久久久久久久久免费樱桃 | 久久久噜久噜久久综合| 麻豆国产精品va在线观看不卡 | 国产精品专区一| 久久国产精品亚洲va麻豆| 欧美成人乱码一区二区三区| 亚洲精品日韩久久| 国产乱人伦精品一区二区| 久久国产手机看片| 国产精品久久久久久户外露出| 亚洲欧美中文日韩v在线观看| 狼人天天伊人久久| 一区二区电影免费观看| 国产欧美日韩在线视频| 久久综合久久综合这里只有精品| 亚洲精品一区中文| 久久露脸国产精品| 在线一区观看| 精品成人一区二区| 欧美午夜视频| 乱码第一页成人| 亚洲视频在线观看网站| 欧美激情四色| 久久精品欧美| 亚洲男人第一网站| 亚洲人成网站999久久久综合| 国产美女一区二区| 欧美色精品天天在线观看视频 | 亚洲电影免费观看高清完整版在线观看| 欧美激情一区二区三区在线视频观看 | 欧美精品99| 久久激情视频久久| 亚洲一区二区视频| 亚洲欧洲在线免费| 蜜桃精品久久久久久久免费影院| 亚洲欧美国产另类| 夜夜嗨av一区二区三区| 伊人色综合久久天天| 国产欧美日韩一区二区三区在线观看 | 一区二区日韩欧美| 亚洲第一搞黄网站| 久久综合中文色婷婷| 性色av一区二区怡红| 99re热这里只有精品免费视频| 狠狠久久综合婷婷不卡|