專利名稱:一種將Flash單機(jī)雙人游戲在雙主機(jī)上同步運行的方法
技術(shù)領(lǐng)域:
本發(fā)明型技術(shù)方案涉及計算機(jī)網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,本技術(shù)方案支持各種設(shè)備上的基于
Flash的互動應(yīng)用,如游戲、學(xué)習(xí)等。
背景技術(shù):
現(xiàn)有的Flash單機(jī)雙人游戲,需要玩家使用同一個鍵盤或者鼠標(biāo),在同一個顯示器上觀看 游戲,受制于鍵盤和顯示器的大小,玩家很難得到好的游戲體驗。現(xiàn)有的Flash網(wǎng)絡(luò)游戲,采 用與服務(wù)器通訊,然后服務(wù)器來處理整個游戲中的邏輯事務(wù),服務(wù)器再把處理結(jié)果發(fā)送給客 戶。傳統(tǒng)的支持多人的Flash網(wǎng)絡(luò)游戲,首先在Flash創(chuàng)作上,它需要創(chuàng)作人員編寫相當(dāng)數(shù)量的 Flash腳本語言(Action Script),來處理與游戲服務(wù)器的通訊和游戲本身的邏輯事務(wù),增加了 游戲制作的難度和開發(fā)的成本。其次,現(xiàn)有的Flash網(wǎng)絡(luò)游戲,都需要昂貴的Flash多媒體服務(wù) 器(Flash Media Server)或者Flash通訊服務(wù)器(Flash Communication Server)來協(xié)調(diào)處理各 個玩家發(fā)送的數(shù)據(jù),然后反饋數(shù)據(jù)給各個玩家,使游戲運行過程復(fù)雜化也提高了商業(yè)成本。 最后,現(xiàn)有的Flash游戲需要Flash腳本語言(Action Script)反復(fù)地與服務(wù)器通訊,所以Flash 游戲運行的相對慢,不同的玩家之間的時間延遲相對長,不適合玩各種需要快速反應(yīng)的游戲。
發(fā)明內(nèi)容
3.1本發(fā)明所要解決的技術(shù)問題
本發(fā)明的目的是為了克服現(xiàn)有的單機(jī)雙人游戲只能在同一臺電腦上進(jìn)行,不方便兩個玩 家同時操作游戲的不足,從而發(fā)明單機(jī)雙人游戲在雙主機(jī)上同步運行的方法。本發(fā)明所要解 決的最核心的問題就是同一個游戲在不同主機(jī)之間的同步執(zhí)行技術(shù)。
同步是指,兩臺主機(jī)上同時運行同一個游戲,兩個主機(jī)上的游戲畫面和互動過程均保持 一致。即不同客戶端所呈現(xiàn)的游戲畫面和游戲邏輯結(jié)果同步。本方法主要通過封裝網(wǎng)絡(luò)通信 和一系列同步技術(shù)來解決單機(jī)雙人游戲在雙主機(jī)上同步運行的技術(shù)難題。運用該方法對Flash 游戲不需做任何改動,就能使游戲同步運行在兩臺不同的主機(jī)上,使每個玩家同時獨占一臺 機(jī)器進(jìn)行游戲,更好地享受游戲體驗。該發(fā)明中所提到的游戲,是指基于虛擬機(jī)上運行的游戲, 包括但不限于Flash游戲。
3.2本發(fā)明提供的完整技術(shù)方案
本發(fā)明的目的是利用網(wǎng)絡(luò)通信和同步技術(shù),讓原本只能在一臺主機(jī)上運行的Flash游戲, 能夠在兩臺或者多臺主機(jī)上同步運行。
由于Flash游戲,必須支持幀同步和Flash腳本語言(ActionScript)執(zhí)行同步。而用戶輸 入觸發(fā)的事件序列和客戶端獨立的一些Flash腳本語言(ActionScript),都會影響到幀同步和 Flash腳本語言(ActionScript)的執(zhí)行,所以用戶輸入觸發(fā)的事件序列和客戶端獨立的Flash 腳本語言(ActionScript)也必須同步。下面我們就從同步方法及其具體應(yīng)用上來詳細(xì)介紹本 發(fā)明。
3.2.1同步方法
同步方法就是,通過網(wǎng)絡(luò)通信,不同的客戶端交換同步信息(同步元語、同步命令和同 步數(shù)據(jù)等)。基于不同的客戶端可以運行在不同網(wǎng)絡(luò)環(huán)境中(如串口、以太網(wǎng)、Wifi、 Bluetooth、 紅外等),我們把同步通信分為邏輯通信層和硬件通信層。邏輯通信層負(fù)責(zé)把硬件通信層和執(zhí) 行引擎分隔開,使硬件通信層與執(zhí)行引擎的耦合盡可能地減小。邏輯通信層,主要負(fù)責(zé)接受 我們的客戶端執(zhí)行引擎所產(chǎn)生的同步信號,并把它組裝成不同的同步信息,然后發(fā)送給硬件 通信層;接受硬件通信層收到的同步信息,并拆分組成同步信號發(fā)送給執(zhí)行引擎。硬件通信 層,主要負(fù)責(zé)接受邏輯通信層發(fā)來的同步信息,把它們組合拆分為成特定的網(wǎng)絡(luò)通信數(shù)據(jù)包, 通過它下面特定的硬件驅(qū)動發(fā)送到特定的網(wǎng)絡(luò)中;從特定的網(wǎng)絡(luò)中接受數(shù)據(jù)包,并組合拆分 成同步信息,發(fā)送給邏輯通信層。
3.2.2幀同步信號的組裝和發(fā)送
考慮到不同的Flash游戲的幀速和Flash腳本語言(ActionScript)的復(fù)雜程度的不同,以 及不同的網(wǎng)絡(luò)環(huán)境下帶寬和質(zhì)量的差異,對同步數(shù)據(jù)包的大小和發(fā)送速率也要采取有效地控 制。同時,還要保證同步數(shù)據(jù)包的時序,避免造成數(shù)據(jù)包之間碰撞,產(chǎn)生同步元語死鎖。
由于Flash本身就是基于幀的概念,而且大部分Flash腳本語言(ActionScript)也是和幀 對應(yīng)的,所以接下來的問題就是幀同步信號的組裝和發(fā)送。為了達(dá)到事件同步(鼠標(biāo)和鍵盤的 動作同步等),要使每個客戶端產(chǎn)生的事件都被映射到其他的客戶端上,而且每個客戶端都按 同樣的順序處理所有的事件,使每個事件的當(dāng)前執(zhí)行環(huán)境都相同,產(chǎn)生同樣的結(jié)果。
于是本發(fā)明采用一種特定的同步元語和同步數(shù)據(jù)包,使得同步信息包的發(fā)送接受和當(dāng)前的網(wǎng)絡(luò)質(zhì)量相匹配。同時,在邏輯通信層,我們加入了一種特定的調(diào)度策略,保證同步數(shù)據(jù) 包的發(fā)送和接受的時序。所以,拋開底層協(xié)議棧,同步元語和數(shù)據(jù)包的大小、網(wǎng)絡(luò)質(zhì)量和調(diào) 度策略三者之間是相互影響和制約的。數(shù)據(jù)包發(fā)送接收速率越快,對網(wǎng)絡(luò)帶寬要求就越高; 網(wǎng)絡(luò)信號質(zhì)量越差,數(shù)據(jù)包的時間延遲越大,數(shù)據(jù)包的時序混亂的可能性就越大;數(shù)據(jù)包時 序越差,調(diào)度策略就需要越復(fù)雜,造成的時間延遲越大,使得數(shù)據(jù)包堆積地越多,就需要更 多更快的發(fā)送。
通過上面的討論,可見只要允許時間延遲過大,同歩的矛盾就可以解決。由于時間延遲 過大,會嚴(yán)重影響到用戶的體驗。所以,在一定的網(wǎng)絡(luò)條件下,我們通過更合理的同步數(shù)據(jù) 包的構(gòu)造組合和更有效率的調(diào)度策略,來更好地提高用戶的體驗。
3.2.3 同步方法中Flash幀的處理
Flash允許跳幀,其實Flash的游戲邏輯反映到畫面上就是各種不同的Flash元素的跳幀。 跳幀,會改變當(dāng)前的執(zhí)行環(huán)境,破環(huán)當(dāng)前的同步,所以需要在跳幀之后盡快地重新建立同歩, 減少延遲??蛻舳霜毩⒌囊恍〧lash腳本語言(ActionScript) (getTimer和rand等)的同步, 可以分為兩種 一種是rand,只需要在客戶端初始化的時候,同步它們的rand seed;另一種 是getTimer,由于和當(dāng)前的平臺環(huán)境密切相關(guān),需要特別的同歩方法。在精度要求不高和幀 同步的前提下,我們可以利用幀數(shù)等Flash自身元素來模擬那些硬件相關(guān)操作結(jié)果;如果精 度要求很高,我們可以利用其中一個客戶端產(chǎn)生的相關(guān)結(jié)果,通過同步元語發(fā)送給其他客戶 端,使其同步,但是它需要消耗一定的網(wǎng)絡(luò)資源和造成客戶端之間的同步等待,尤其是在Flash 腳本語言(ActionScript)執(zhí)行這種命令過多過快的情況下。
3.3本發(fā)明方法帶來的有益效果是
1. 在Flash創(chuàng)作方面,不需要創(chuàng)作人員對Flash做任何修改,就能夠支持網(wǎng)絡(luò)多人對打功能, 而且只要對現(xiàn)有的單人游戲簡單修改,如簡單加入另外一個游戲角色,就可以使其支持網(wǎng)絡(luò) 多人游戲,減少了游戲制作的難度和開發(fā)的成本。
2. 不需要昂貴的Flash媒體服務(wù)器(Flash Media Server)或者Flash通訊服務(wù)器(Flash Communication Server)來協(xié)調(diào)處處理各個玩家發(fā)送的數(shù)據(jù),不需要任何Server。只需要客戶 端,就可以使游戲正常運行,這樣不僅運行過程簡單,從經(jīng)濟(jì)方面,也節(jié)約了成本。
3. 比現(xiàn)有的Flash游戲運行的速度更快,不同的玩家之間的時間延遲更小,更適合玩各種需 要快速反應(yīng)的游戲。
下面結(jié)合附圖對本發(fā)明型進(jìn)一步說明。 圖1是本發(fā)明的網(wǎng)絡(luò)同步執(zhí)行機(jī)制原理圖。
具體實施例方式
本發(fā)明的主要核心技術(shù),是網(wǎng)絡(luò)同步執(zhí)行機(jī)制。其原理,詳見下述。附圖l為其原理圖。 首先要讓Player初始化,驗證雙方的玩家(Player)的軟件版本號、Flash文件等信息, 確認(rèn)允許雙方建立連接,網(wǎng)絡(luò)連接初始化。主玩家(Player)發(fā)送一個隨機(jī)種子(Random Seed), 并等待從玩家(Player)的應(yīng)答;從玩家(Player)等待接收主玩家(Player)的隨機(jī)種子(Random Seed),接收到后立即應(yīng)答主玩家(Player)。主從玩家(Player)進(jìn)入主循環(huán)。主玩家(Player)工作原理
1. 主玩家(Player)計算出走幀數(shù),并發(fā)送給從玩家(Player)。
2. 主玩家(Player)等待從玩家(Player)的應(yīng)答。
3. 主玩家(Player)接收到從玩家(Player)的應(yīng)答后,立即播放走幀。
4. 走幀結(jié)束后,主玩家(Player)取出事件消息,并發(fā)送給從玩家(Player)。
5. 主玩家(Player)執(zhí)行自己的事件消息。
6. 主玩家(Player)等待從玩家(Player)的事件消息。
7. 主玩家(Player)接收到從玩家(Player)的事件消息,并執(zhí)行它。
8. 主玩家(Player)接受消息處理,進(jìn)入下一輪循環(huán)。 從玩家(Player)工作原理
1. 從玩家(Player)等待主玩家(Player)的走幀數(shù)。.
2. 從玩家(Player)接收到主玩家(Player)的走幀數(shù),立即應(yīng)答主玩家(Player)。
3. 從玩家(Player)播放走幀。
4. 從玩家(Player)等待主玩家(Player)的事件消息。
5. 從玩家(Player)接收到主玩家(Player)的事件消息后,立即執(zhí)行它。
6. 從玩家(Player)取出自己的事件消息,并發(fā)送給主玩家(Player)。
7. 從玩家(Player)執(zhí)行自己的事件消息,進(jìn)入下一輪循環(huán)。
權(quán)利要求
1. 一種將Flash單機(jī)雙人游戲在兩個主機(jī)上同步運行的方法,其特征是利用一套網(wǎng)絡(luò)通信和同步技術(shù),使兩臺主機(jī)上可以同步運行一個游戲,并且兩個機(jī)器上的游戲畫面和互動過程均保持一致。
2. 根據(jù)權(quán)利要求1所述的同步,其特征是通過網(wǎng)絡(luò)通信,在兩個的客戶端快速交換包 括同步元語、同步命令和同步數(shù)據(jù)等信息。
3. 根據(jù)權(quán)利要求1所述的主機(jī),其特征是具有計算能力的電子系統(tǒng)。
全文摘要
一種將Flash單機(jī)雙人游戲在雙機(jī)上同步運行的方法,其特征是利用一套網(wǎng)絡(luò)通信和同步技術(shù),使兩臺主機(jī)上同步運行同一個游戲,并且兩個機(jī)器上的游戲畫面和互動過程均保持一致,實現(xiàn)游戲?qū)Υ虻男Ч?br>
文檔編號A63F13/00GK101420347SQ200810087318
公開日2009年4月29日 申請日期2008年3月18日 優(yōu)先權(quán)日2008年3月18日
發(fā)明者博 任, 王睿斌, 薛平安 申請人:王睿斌