DirectPlay SDK中文翻譯

來源:互聯網
上載者:User

DirectPlay SDK中文翻譯--Introduction To DirectPlay


Introduction To DirectPlay

目錄:
  Creating and Managing Sessions
  DirectPlay Network Communication
  DirectPlay Transport Protocol
  Communicating with DirectPlay Objects
  DirectPlay Lobby Support
  
本文:

Microsoft? DirectPlay? API為開發人員提供了開發諸如多人遊戲或聊天程式的工具。一個多人遊戲有兩個基本特性:
1 兩個或更多的獨立使用者,每個使用者都擁有用戶端遊戲程式
2 網路連接了使用者的電腦(通過中央電腦伺服器串連)
DirectPlay提供了一個額外的層,使你的遊戲和網路底層相隔。並且,你的遊戲可以非常簡單的使用DirectPlay API,並使用DirectPlay管理網路通訊。DirectPlay提供的特性,使多人遊戲在開發中得到了很多簡化。其中包括:
1 建立和管理點對點,客戶/服務會話(Session)
2 在一個會話中系統管理使用者(User)和組(Group)
3 管理在不同網路平台上進行會話的成員之間發送的訊息
4 使遊戲在大廳(Lobby)中互動
5 使使用者可以進行語音互動

  這部分的文檔(Introduction To DirectPlay)高度概括了DirectPlay的功能。隨後的章節將告訴你DirectPlay的細節和如何在你的遊戲中使用DirectPlay。

Creating and Managing Sessions
  遊戲會話是一個特殊的多人遊戲。會話中會有兩個或者更多的使用者同時線上,使用者彼此擁有相同的遊戲用戶端。角色(Player)在遊戲中是一個實體,它被遊戲所定製。每個使用者可以擁有多個角色。不過,遊戲必須自己管理這些角色,使用DirectPlay介面對象來管理這些角色。

建立會話的第一步就是收集一組使用者的資訊。有兩種方式:
1 大多數遊戲會話都被一個運行在遠端電腦上大廳程式(lobby application)所管理。大多數基於Internet的遊戲都用這種方式。
2 各個使用者自己相互進行聯絡。這種方式一般用在小型的區域網路中。並且遊戲不是很大。

會話被管理後,遊戲就可以被串連。在會話過程中,角色可能從會話中退出,或者新的角色被加入。

  在多人遊戲中,同一會話中的使用者UI應該進行同步。管理多人遊戲會話應該反覆發送訊息流程給每個使用者。比如,每當角色移動,一個訊息就應該被發送,以便在所有其他遊戲用戶端更新角色的位置。DirectPlay的核心就是為所有在一個會話中的電腦發送高效安全的訊息。

有兩種基本方式來組織會話訊息,一種是點對點,一種是客戶/服務模式。講這兩種模式的資料很多,這裡就不再複述。

DirectPlay Network Communication
   DirectPlay的主要功能是使遊戲和網路底層分開。如果你需要發送狀態更新的訊息,你可以很簡單的調用DirectPlay API,不必在意複雜的網路連接情況。DirectPlay網路服務提供了多種網路連接支援:TCP/IP, IPX, modem, 和 serial links。

DirectPlay Transport Protocol
   DirectPlay網路核心是DirectPlay協議。這個傳輸層協議在DirectPlay8中完全重寫,現在已經被用在所有的訊息中。DirectPlay協議重點放在讓你可以很簡單的發送訊息。協議為多人遊戲提供了很多量身定製的特性,包括:
1 可靠和不可靠的訊息傳遞。可靠傳遞的訊息是不斷的發送,直到目標程式確信接收了他們。你可以根據你的情況分配訊息的具體發送方法。
2 連續和非連續訊息傳遞。連續訊息被一個個傳送到目標程式中。
3 訊息分割和打包。當訊息的大小超過網路的許可,DirectPlay將自動進行分割和重組打包。
4 阻塞控制。DirectPlay會自動控制(throttles)你傳出訊息的速度,使目標程式能夠執行和接收訊息。
5 發送順序。要確保重要的訊息被首先發送,DirectPlay可以設定訊息的發送層級,其中包括low, medium, 和 high priority。High priority(最高優先發送)訊息被最先送上訊息佇列的前端,然後是medium和low。
6 訊息逾時處理。防止訊息佇列被阻塞,DirectPlay允許你指派每個訊息一個逾時值,當這個訊息逾時後,便從訊息佇列中移除。 DirectPlay Addresses

為了傳送訊息,每個加入多人遊戲的人都要有一個唯一的地址。運行遊戲用戶端的電腦提供裝置地址,而遊戲主機將提供主機地址。

DirectPlay的地址是一個URL字串。這些字串由如下格式構成:
x-directplay:/[data string]
在不同的網路連接上,它包含發送訊息方和接收方這樣的元素。
DirectPlay地址對象會產生URL字串。依你的熟練程度,你可以直接使用URL地址或者通過DirectPlay地址對象來管理URL。(using the methods exposed by the address object to handle each element of the data string separately)

Communicating with DirectPlay Objects
   DirectPlay其實是基於COM的。各個組件管理各個不同的方面。比如,DirectPlay點(peer)對象(CLSID_DirectPlay8Peer),就是負責管理點對點遊戲的。

你通過組件的介面來和它通訊。比如,在點對點遊戲中,你發送給另外使用者資料時,使用IDirectPlay8Peer::SendTo。DirectPlay會發送訊息到目標。

DirectPlay通過很多callback functions(回呼函數)進行聯絡。在原理上,這些函數和windows程式使用得回呼函數一樣。遊戲執行這些callback function,在DirectPlay初始化期間傳送函數指標。當DirectPlay需要通訊時,它調用callback function,並且傳遞兩個重要訊息:
1 評鑑訊息類別ID。
2 一個資料區塊指標,一般是一個結構體。

比如,當一個訊息發送上面的資訊到目標,目標程式的callback function將接收到DPNMSGID_RECEIVE訊息ID,指出那個訊息已經到達。並伴隨著包含資料的結構。

因為大多數的DirectPlay訊息是多線程的,其中關鍵就是callback function如何被恰當的執行。

DirectPlay Lobby Support
  大廳(Lobby)主要的任務是安排角色會面和安排遊戲。大廳伺服器(Lobby servers)一般還有其他功能,比如主持聊天室,發送新聞和資訊,主持商業買賣。大廳伺服器可以便利的使用和安排多人遊戲工作,但它不是必需的。多人遊戲也可以直接在大廳用戶端之間進行通訊(lobby clients)。

一個具有大廳的多人遊戲,由三個部分組成:
1 大廳伺服器
2 大廳用戶端
3 支援大廳的遊戲(A lobbyable game)

DirectPlay沒有具體的告訴大廳伺服器如何工作,你可以自己安排。DirectPlay提供了對大廳用戶端的支援。一個大廳用戶端通過大廳伺服器串連程式(vendor)進行工作,串連程式被安裝到使用者的系統上。它就像一個鏈,來串連使用者和大廳。當你要直接進行通訊,你必須知道每個大廳的工作細節。

大廳用戶端遊戲接收大廳伺服器的通訊細節,使用恰當的通訊協議。大廳用戶端進行使用者和遊戲程式之間的通訊。遊戲也能使用介面傳送訊息給大廳用戶端。

大廳實際可以串連任何程式。不過,遊戲必須有某些具體的大廳支援組件(lobby-aware components)。一般的,一個支援大廳的遊戲可以通過會話和大廳用戶端進行聯絡。如果遊戲被註冊成支援大廳,大廳用戶端能自動的接收更新資訊,並在遊戲裡進行相應的更新。諸如host migration。
 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.