本發(fā)明涉及計算機領域,具體而言,涉及一種場景動畫的播放方法、裝置及系統(tǒng)。
背景技術:
目前,為了提高用戶對應用的使用體驗,在應用中會播放場景動畫,例如,在闖關類游戲中會在游戲劇情發(fā)展的關鍵階段使用場景動畫串接游戲前后劇情,或為關鍵人物出場做鋪墊,以提高游戲的感染力?,F(xiàn)有的多人闖關類游戲中一般直接使用傳統(tǒng)的場景動畫播放方案,即場景動畫播放的觸發(fā)和控制均是由客戶端決定。但是,在多人合作闖關類游戲中,每個玩家所使用的設備環(huán)境是不同的,其加入關卡的時間也是不確定的,因此容易出現(xiàn)不同玩家的設備上游戲場景動畫的播放進度不一致的問題。特別是在移動終端上,由于網(wǎng)絡延遲和網(wǎng)絡抖動等因素,場景動畫的播放進度不一致的問題會更加明顯,甚至可能出現(xiàn)部分玩家已經完成場景動畫的展示,進入核心戰(zhàn)斗階段,而另一部分玩家還在觀看場景動畫的現(xiàn)象,嚴重影響了玩家的合作闖關的游戲體驗。
針對上述的問題,目前尚未提出有效的解決方案。
技術實現(xiàn)要素:
本發(fā)明實施例提供了一種場景動畫的播放方法、裝置及系統(tǒng),以至少解決相關技術由于網(wǎng)絡延遲或抖動等因素造成多個客戶端中的同一個應用的場景動畫的播放進度不一致的技術問題。
根據(jù)本發(fā)明實施例的一個方面,提供了一種場景動畫的播放方法,包括:獲取多個第一賬號對應的場景數(shù)據(jù),其中,場景數(shù)據(jù)為多個第一賬號登錄客戶端后所產生的數(shù)據(jù);根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件;在達到播放目標場景動畫的預定觸發(fā)條件的情況下,向多個第一賬號中的每個第一賬號發(fā)送控制消息,其中,控制消息用于指示多個第一賬號所登錄的客戶端同步播放目標場景動畫。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種場景動畫的播放方法,包括:將第一賬號對應的場景數(shù)據(jù)導出給服務器,其中,場景數(shù)據(jù)為第一賬號登錄客戶端后所產生的數(shù)據(jù);接收服務器返回的控制消息,其中,服務器用于根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件,并在達到預定觸發(fā)條件的情況下返回控制消息,控制消息用于指示播放目標場景動畫;按照控制消息播放目標場景動畫。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種場景動畫的播放裝置,包括:獲取單元,用于獲取多個第一賬號對應的場景數(shù)據(jù),其中,場景數(shù)據(jù)為多個第一賬號登錄客戶端后所產生的數(shù)據(jù);判斷單元,用于根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件;第一發(fā)送單元,用于在達到播放目標場景動畫的預定觸發(fā)條件的情況下,向多個第一賬號中的每個第一賬號發(fā)送控制消息,其中,控制消息用于指示多個第一賬號所登錄的客戶端同步播放目標場景動畫。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種場景動畫的播放裝置,包括:發(fā)送單元,用于將第一賬號對應的場景數(shù)據(jù)導出給服務器,其中,場景數(shù)據(jù)為第一賬號登錄客戶端后所產生的數(shù)據(jù);接收單元,用于接收服務器返回的控制消息,其中,服務器用于根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件,并在達到預定觸發(fā)條件的情況下返回控制消息,控制消息用于指示播放目標場景動畫;播放單元,用于按照控制消息播放目標場景動畫。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種場景動畫的播放系統(tǒng),包括:服務器和多個客戶端;其中,服務器用于執(zhí)行本發(fā)明上述實施例中的任意一種場景動畫的播放方法,多個客戶端中的每個客戶端用于本發(fā)明上述實施例中的場景動畫的播放方法。
在本發(fā)明實施例中,采用服務器統(tǒng)一控制場景動畫播放的方式,通過獲取多個客戶端發(fā)送的場景數(shù)據(jù),并根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件,在達到預定觸發(fā)條件的情況下向所有的客戶端發(fā)送控制消息,以指示所有的客戶端同步播放目標場景動畫,達到了保證應用的場景動畫的播放進度同步的目的,進而解決了相關技術由于網(wǎng)絡延遲或抖動等因素造成多個客戶端中的同一個應用的場景動畫的播放進度不一致的技術問題,從而提高了用戶對應用的使用體驗。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。在附圖中:
圖1是根據(jù)本發(fā)明實施例的場景動畫的播放方法的硬件環(huán)境的示意圖;
圖2是根據(jù)本發(fā)明實施例的一種可選的場景動畫的播放系統(tǒng)的架構示意圖;
圖3是根據(jù)本發(fā)明實施例1的一種可選的場景動畫的播放方法的流程圖;
圖4是根據(jù)本發(fā)明優(yōu)選實施例的場景動畫同步交互流程的時序圖;
圖5是根據(jù)本發(fā)明優(yōu)選實施例的一種可選的邏輯對時的示意圖;
圖6是根據(jù)本發(fā)明優(yōu)選實施例的另一種可選的邏輯對時的示意圖;
圖7是根據(jù)本發(fā)明實施例2的一種可選的場景動畫的播放方法的流程圖;
圖8是根據(jù)本發(fā)明實施例3的一種可選的場景動畫的播放方法的流程圖;
圖9是根據(jù)本發(fā)明實施例4的一種可選的場景動畫的播放裝置的示意圖;
圖10是根據(jù)本發(fā)明實施例5的一種可選的場景動畫的播放裝置的示意圖;以及
圖11是根據(jù)本發(fā)明實施例的一種終端的結構框圖。
具體實施方式
為了使本技術領域的人員更好地理解本發(fā)明方案,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應當屬于本發(fā)明保護的范圍。
需要說明的是,本發(fā)明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數(shù)據(jù)在適當情況下可以互換,以便這里描述的本發(fā)明的實施例能夠以除了在這里圖示或描述的那些以外的順序實施。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它步驟或單元。
首先,在對本發(fā)明實施例進行描述的過程中出現(xiàn)的部分名詞或者術語適用于如下解釋:
場景動畫:游戲過程中用于承接劇情轉變或突出關鍵事件而播放的動畫,主要包括角色特定狀態(tài)或動作的特寫,預設的劇情對白,突出的場景變化和關鍵的劇情事件等。
實施例1
根據(jù)本發(fā)明實施例,提供了一種場景動畫的播放方法的方法實施例。
可選地,在本實施例中,上述場景動畫的播放方法可以應用于如圖1所示的由服務器102和終端104所構成的硬件環(huán)境中。如圖1所示,服務器102通過網(wǎng)絡與終端104進行連接,上述網(wǎng)絡包括但不限于:廣域網(wǎng)、城域網(wǎng)或局域網(wǎng),終端104并不限定于pc、手機、平板電腦等。本發(fā)明實施例的場景動畫的播放方法可以由服務器102來執(zhí)行,也可以由終端104來執(zhí)行,還可以是由服務器102和終端104共同執(zhí)行。其中,終端104執(zhí)行本發(fā)明實施例的場景動畫的播放方法也可以是由安裝在其上的客戶端來執(zhí)行。
需要說明的是,該實施例1中的場景動畫的播放方法主要由服務器102和終端104共同執(zhí)行。在對本發(fā)明實施例的場景動畫的播放方法的具體流程進行介紹至之前,首先對執(zhí)行該場景動畫的播放方法的場景動畫的播放系統(tǒng)的架構進行說明。
本發(fā)明實施例中的場景動畫的播放系統(tǒng)可以包括服務器和多個客戶端,其中,服務器可以是一個服務器或者多個服務器組成的服務器集群,客戶端可以是安裝在任意終端設備上的客戶端,終端設備可以包括但并不限于pc、手機、平板電腦等。需要說明的是,服務器可以與每個客戶端通信連接,利用該通信連接可以實現(xiàn)服務器與客戶端之間的數(shù)據(jù)交互。
需要說明的是,本發(fā)明實施例中的場景動畫的播放系統(tǒng)可以采用dedicated-server(ds)式的網(wǎng)絡同步架構,其特征主要包括如下兩點:
(1)服務器上運行完整的應用邏輯;
(2)應用狀態(tài)以服務器數(shù)據(jù)為權威,客戶端只根據(jù)這些服務器數(shù)據(jù)做表現(xiàn)模擬。
下面將以以unity游戲引擎為基礎的移動游戲應用為例對本發(fā)明實施例中的場景動畫的播放系統(tǒng)的ds架構進行說明。
圖2是根據(jù)本發(fā)明實施例的一種可選的場景動畫的播放系統(tǒng)的架構示意圖,圖2中僅示出系統(tǒng)包括服務器和一個客戶端的情形,如圖2所示,客戶端直接使用unity引擎進行開發(fā),服務器則選用與unity底層一致的physx物理引擎和recastnavigation導航網(wǎng)格,保證兩邊物理算法的一致性。客戶端的場景碰撞數(shù)據(jù)與關卡邏輯數(shù)據(jù)可以通過自定義工具導出到服務器,從而保證雙方物理環(huán)境和游戲配置一致。服務器依賴這些數(shù)據(jù)自主運行游戲邏輯,例如進行移動運算和戰(zhàn)斗計算等,并通過udp網(wǎng)絡快速傳輸層下發(fā)數(shù)據(jù)驅動所有客戶端的游戲流程。
在上述場景動畫的播放系統(tǒng)中所執(zhí)行的場景動畫的播放方法的具體流程可以如圖3所示,其中,圖3中僅示出了服務器與多個客戶端中的其中一個客戶端的具體交互流程,該流程具體包括以下步驟:
步驟s301,將客戶端的場景數(shù)據(jù)導出給服務器。
在上述步驟s301中,用戶登錄客戶端所使用的賬號可以為第一賬號,第一賬號登錄客戶端后,在客戶端運行過程中可以產生數(shù)據(jù),該數(shù)據(jù)即為場景數(shù)據(jù)。例如,用戶使用游戲賬號登錄游戲應用客戶端之后,在游戲過程中所產生的實時數(shù)據(jù),例如賬號等級、賬號對應的游戲金幣、賬號當前所在的位置等數(shù)據(jù),這些數(shù)據(jù)被統(tǒng)稱為場景數(shù)據(jù)。
需要說明的是,客戶端的場景數(shù)據(jù)可以通過自定義工具導出至服務器中,同理,對于場景動畫的播放系統(tǒng)中的每個客戶端的場景數(shù)據(jù)均可以導出給服務器。此處需要說明的是,每個客戶端對應的賬號可以不同。
還需要說明的是,在將客戶端的場景數(shù)據(jù)導出至服務器同時,本發(fā)明實施例還可以將預先配置好的場景碰撞數(shù)據(jù)以及關卡邏輯數(shù)據(jù)等數(shù)據(jù)通過自定義工具導出給服務器,以便于服務器可以根據(jù)實時的場景數(shù)據(jù)和預先配置好的場景碰撞數(shù)據(jù)以及關卡邏輯數(shù)據(jù)等數(shù)據(jù)準確判斷是否達到播放目標場景動畫的預定觸發(fā)條件。
步驟s302,服務器根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件。
在上述步驟s302中,目標場景動畫為與場景數(shù)據(jù)相匹配的場景動畫,本發(fā)明實施例可以根據(jù)實際需求為應用中的不同場景分別配置相應的場景動畫,服務器在接收到客戶端導出的實時的場景數(shù)據(jù)和預先配置好的場景碰撞數(shù)據(jù)以及關卡邏輯數(shù)據(jù)等數(shù)據(jù)之后,可以首先確定與其對應的場景動畫為目標場景動畫,然后在根據(jù)實時的場景數(shù)據(jù)和預先配置好的場景碰撞數(shù)據(jù)以及關卡邏輯數(shù)據(jù)等數(shù)據(jù)判斷是否達到播放該目標場景動畫的預定觸發(fā)條件。此處需要說明的是,播放目標場景動畫的預定觸發(fā)條件可以為根據(jù)實際需求預先設定好的條件。作為一種可選的實施例,本發(fā)明實施例中的預定觸發(fā)條件可以包括以下至少之一:
第一賬號對應的事件對象進入目標區(qū)域;
第一賬號對應的事件對象在目標區(qū)域的停留時間大于預定時間;
第一賬號完成目標任務;
第一賬號的屬性值超過預定閾值,其中,屬性值包括以下至少之一:賬號等級、賬號登錄時間、賬號對應的事件資源數(shù)量。
針對上述所列舉的預定觸發(fā)條件,需要說明的是,第一賬號對應的事件對象可以為在客戶端運行過程中第一賬號對應的虛擬的事件對象,例如,第一賬號對應的事件對象可以為游戲中的角色人物。目標區(qū)域可以為任意指定的區(qū)域;目標任務可以為任意指定的任務;預定時間和預定閾值可以根據(jù)實際需求設定,此處不做具體限定。還需要說明的是,本發(fā)明實施例中的預定觸發(fā)條件還可以包括其他條件,此處不再一一舉例說明。
還需要說明的是,服務器中可以預先存儲有預定觸發(fā)條件,且播放每個場景動畫對應的預定觸發(fā)條件可以不同,服務器還可以存儲有場景動畫與播放該場景動畫的預定觸發(fā)條件的對應關系,以便于在接收到場景數(shù)據(jù)之后,可以根據(jù)該對應關系確定該場景數(shù)據(jù)對應的預定觸發(fā)條件,然后再根據(jù)實時的場景數(shù)據(jù)和預先配置好的場景碰撞數(shù)據(jù)以及關卡邏輯數(shù)據(jù)等數(shù)據(jù)判斷是否達到該預定觸發(fā)條件。
步驟s303,當服務器判斷出在達到播放目標場景動畫的預定觸發(fā)條件的情況下,服務器可以向客戶端發(fā)送控制消息。
在上述步驟s303中,當服務器判斷出已經達到了播放目標場景動畫的預定觸發(fā)條件時,服務器可以立即觸發(fā)該目標場景動畫的播放事件,并向所有的客戶端發(fā)送一個控制消息,其中,該控制消息可以用于指示客戶端播放目標場景動畫,而且該控制消息中可以攜帶有指示開始播放該目標場景動畫的服務器時間。此處需要說明的是,控制消息中攜帶的服務器時間為服務器的本地時間,由于網(wǎng)絡因素各個客戶端的本地時間與服務器的本地時間可能并不一致,或者各個客戶端的本地時間可能并不一致,本發(fā)明實施例的場景動畫的播放方法為基于邏輯時間對齊的場景動畫同步播放方案,也就是說,通過由服務器統(tǒng)一控制場景動畫的播放,使得各個客戶端按照服務器時間同步播放場景動畫。
步驟s304,客戶端接收服務器發(fā)送的控制消息,并按照該控制消息播放目標場景動畫。
在上述步驟s304中,各個客戶端在接收到服務器發(fā)送的控制消息之后,可以觸發(fā)播放目標場景動畫,但是,由于客戶端與服務器的時間不一致,且控制消息的傳輸會有延時,為了保證所有的客戶端中目標場景動畫的播放進度一致,各個客戶端需要按照服務器時間播放目標場景動畫,且各個客戶端從接收到控制消息之后并不一定均是從目標場景動畫的起始播放時刻開始播放的。
下面將以一個客戶端為例具體說明在接收到服務器發(fā)送的控制消息之后,按照該控制消息播放目標場景動畫的具體過程,而對于其他客戶端播放目標場景動畫的過程與該過程相同。具體地,該客戶端在接收到控制消息之后可以執(zhí)行以下步驟:
步驟s3041,根據(jù)控制消息中攜帶的服務器時間確定該服務器時間對應的客戶端時間。
需要說明的是,客戶端在接收到控制消息之后,可以從控制消息中解析得到指示開始播放目標場景動畫的服務器時間,由于客戶端與服務器的本地時間不一致,客戶端首先需要按照服務器時間進行邏輯對時,以確定該服務器時間對應的客戶端時間,其中,客戶端時間為該客戶端的本地時間。
作為一種可選地實施例,確定服務器時間對應的客戶端時間可以具體包括:獲取與服務器之間的目標時間差;根據(jù)目標時間差確定服務器時間對應的客戶端時間,其中,客戶端時間為服務器的時間與目標時間差的和。
需要說明的是,確定與服務器時間對應的客戶端時間的關鍵在于如何獲取目標時間差,可選地,本發(fā)明實施例中獲取目標時間差可以通過以下兩種方式:
第一種方式:按照以下公式獲取與服務器之間的目標時間差:
actualdelta=min(actualdelta,calcdelta)
其中,calcdelta=logictimedelta+transmitdelay,transmitdelay=s1-s0,logictimedelta=c1-s1,s0為服務器發(fā)送對時包的時間,c1為接收到服務器發(fā)送的對時包的時間,s1為接收到對時包時服務器的時間,actualdelta為目標時間差。
第二種方式:按照以下公式獲取與服務器之間的目標時間差:
actualdelta=c1-s1–netdelay
其中,netdelay=(c1-c0)/2,c0為向服務器發(fā)送對時包的時間,c1為接收到服務器響應對時包所返回的響應消息的時間,s1為服務器接收到對時包的時間。
需要說明的是,通過上述任意一種方式均可以獲取到目標時間差,然后將其與服務器時間求和便可以獲取到與服務器時間對應的客戶端時間。
步驟s3042,確定接收到控制消息的接收時間。
需要說明的是,在邏輯對時確定服務器時間對應的客戶端時間之后,例如確定服務器時間09:00對應客戶端時間10:00,其目標時間差為1個小時。由于控制消息的傳輸存在延時,假設延時為1分鐘,則服務器在服務器時間09:00發(fā)送的控制消息,將會在客戶端時間10:01達到客戶端,也即客戶端接收到控制消息的接收時間為10:01。
步驟s3043,根據(jù)客戶端時間和接收時間獲取目標場景動畫當前播放的時間戳。
需要說明的是,由于控制消息的傳輸存在延時,當客戶端接收到控制消息之后,目標場景動畫已經播放了一段時間。為了保證客戶端播放目標場景動畫的進度與服務器一致,進而使得各個客戶端播放目標場景動畫的進度同步,客戶單需要確定接收到控制消息時目標場景動畫的播放進度,也即根據(jù)上述步驟確定的客戶端時間和接收時間獲取目標場景動畫當前播放的時間戳,具體地,該時間戳可以為接收時間與客戶端時間之間的時間差。例如,服務器時間09:00對應客戶端時間10:00,客戶端接收到控制消息的接收時間為10:01,則說明目標場景動畫當前播放的時間戳為1分鐘,則為了保證客戶端與服務器同步播放該目標場景動畫,該客戶端需要從目標場景動畫的第1分鐘開始播放。
步驟s3044,從接收時間開始播放目標場景動畫中的時間戳之后的動畫。
需要說明的是,在客戶端確定了目標場景動畫當前播放的時間戳之后,客戶端可以從目標場景動畫的該時間戳開始播放該時間戳之后的動畫,以達到使得該客戶端播放目標場景動畫的進度與服務器播放目標場景動畫的進度同步,而場景動畫的播放系統(tǒng)中的所有客戶端均執(zhí)行相同播放流程之后,可以達到使得所有客戶端同步播放目標場景動畫的目的。可選地,在客戶端確定了目標場景動畫當前播放的時間戳之后,客戶端還可以從目標場景動畫的開始時刻以快進的形式播放動畫,直至快進播放的進度達到服務器中的目標場景動畫的進度客戶端才開始以正常播放速度播放之后的動畫,這種方式既能保證所有客戶端在同一時間結束播放目標場景動畫,以使得所有客戶端同步進入下一個應用場景,又能保證各個客戶端完整播放目標場景動畫。在實際應用場景中,可以根據(jù)實際需求選擇上述兩種播放目標場景動畫的方式中的任意一種。
需要說明的是,場景動畫的播放系統(tǒng)中的所有客戶端在接收到服務器發(fā)送的控制消息之后,均可以執(zhí)行上述目標場景動畫的播放流程,這樣可以達到場景動畫的播放系統(tǒng)中的所有客戶端同步播放目標場景動畫的目的。由于多個客戶端與服務器均是同步播放目標場景動畫,則當服務器播放完目標場景動畫時,各個客戶端也播放完該目標場景動畫。
作為一種可選的實施例,在達到播放目標場景動畫的預定觸發(fā)條件的情況下,向多個第一賬號中的每個第一賬號發(fā)送控制消息之后,服務器還可以執(zhí)行以下步驟:
步驟s1,檢測是否接收到第二賬號發(fā)送的請求消息,其中,請求消息用于請求登錄所述客戶端;
步驟s2,在檢測到接收到第二賬號發(fā)送的請求消息的情況下,向第二賬號發(fā)送控制消息,其中,控制消息用于指示第二賬號所登錄的客戶端與多個第一賬號所登錄的客戶端同步播放目標場景動畫。
需要說明的是,第二賬號為在目標場景動畫播放過程中請求登錄客戶端的賬號,當服務器檢測到第二賬號發(fā)送的請求消息時,可以響應該請求消息并向第二賬號發(fā)送控制消息,該控制消息主要用于指示第二賬號所登錄的客戶端播放目標場景動畫。為了保證場景動畫的播放系統(tǒng)中的所有客戶端均可以同步播放目標場景動畫,在目標場景動畫的播放過程中,第二賬號所登錄的客戶端在接收到服務器發(fā)送的控制消息之后,需要首先進行邏輯對時,然后再計算目標場景動畫當前的播放進度,以實現(xiàn)按照該當前播放進度同步播放該目標場景動畫。需要說明的是,第二賬號接收到控制消息之后的處理流程與上述步驟s3041至步驟s3044所示的處理流程相同,區(qū)別僅在于所計算得到的目標場景動畫當前的播放進度不一樣。
該可選實施例能夠實現(xiàn)對目標場景動畫播放過程中請求登錄客戶端的賬號所登錄的客戶端與其他客戶端同步播放目標場景動畫的目的,進而提高了用戶對應用的使用體驗。
本發(fā)明還提供了一種優(yōu)選實施例,該優(yōu)選實施例為本發(fā)明實施例的場景動畫的播放方法應用于游戲領域的具體實例。在對該優(yōu)選實施例進行詳細介紹之前,此處首先對以下術語進行簡要說明:
fps手游:指在手機端運行的,第一人稱射擊游戲。
pve:玩家與ai對戰(zhàn),指的是在游戲中玩家挑戰(zhàn)游戲程序所控制的npc怪物和boss。
npc:非玩家控制角色,這里指在游戲中可以被玩家擊殺的怪物角色。
boss:關卡中的怪物頭領。
場景動畫:游戲過程中用于承接劇情轉變或突出關鍵事件而播放的動畫,主要包括角色特定狀態(tài)或動作的特寫,預設的劇情對白,突出的場景變化和關鍵的劇情事件等。
該優(yōu)選實施例提供了一種基于邏輯時間對齊的場景動畫同步方案,通過服務器統(tǒng)一控制場景動畫的觸發(fā)和播放進度,所有移動設備與服務器進行對時和實時較正,保證場景動畫進度同步,提高了玩家的游戲體驗。
需要說明的是,在本方案中,場景動畫本身的創(chuàng)作和播放仍是在客戶端執(zhí)行,但是觸發(fā)播放的條件以及播放進度由服務器統(tǒng)一控制和下發(fā)。客戶端所有場景動畫及其觸發(fā)條件可以通過工具導出為統(tǒng)一的配置,服務器讀取該配置,并根據(jù)當前游戲進度和游戲狀態(tài)下發(fā)場景動畫觸發(fā)事件和當前進度,驅動客戶端中的場景動畫的同步播放。
在具體應用場景中,例如在fps手游中,多人pve闖關作為游戲核心玩法之一,包含了豐富的游戲背景和游戲劇情。因此,在多人pve玩法的游戲過程中,也需要使用場景動畫技術推動游戲情節(jié)的發(fā)展。為了保證不同玩家設備上場景動畫同步進行,fps手游統(tǒng)一使用了本方案中提出的游戲場景動畫同步播放技術,完成場景動畫的設計和實時播放。
需要說明的是,游戲美術師可以使用場景動畫編輯工具完成場景動畫內容的創(chuàng)作,具體包括角色動作的控制,場景特效的觸發(fā)及場景音效的播放等。一個場景動畫內,所有的內容由統(tǒng)一的時間線控制,時間線直接影響場景動畫的播放進度,并支持快進,定點播放等特性。
還需要說明的是,游戲策劃可以根據(jù)劇情需要配置整個關卡的任務流程,并在特定任務觸發(fā)或者完成時,配置對應場景動畫的播放信息,主要包括場景動畫的觸發(fā)條件,動畫時長,是否需要隱藏本地人物,是否需要切換渲染攝像機等。
通過上述預先配置,可以實現(xiàn)在游戲過程中服務器根據(jù)這些任務流程配置信息以及場景動畫配置信息,動態(tài)觸發(fā)對應的場景動畫播放事件,驅動游戲劇情發(fā)展。
本方案提出的場景動畫同步技術,場景動畫的觸發(fā)與播放由服務器統(tǒng)一驅動與控制。因此,該方案實施的技術基礎是游戲使用dedicated-server(ds)式的網(wǎng)絡同步架構,其特征主要包括如下兩點:
(1)服務器上運行完整的游戲邏輯;
(2)游戲狀態(tài)以服務器數(shù)據(jù)為權威,客戶端只根據(jù)這些數(shù)據(jù)做表現(xiàn)模擬.
針對以unity游戲引擎為基礎的移動游戲,本方案提出一種可行的ds架構的實現(xiàn)方案。該實現(xiàn)方案客戶端直接使用unity引擎進行開發(fā),服務器則選用與unity底層一致的physx物理組件和recastnavigation導航組件,保證兩邊物理算法的一致性??蛻舳说膱鼍芭鲎矓?shù)據(jù)與關卡邏輯數(shù)據(jù)通過自定義工具導出到服務器,從而保證雙方物理環(huán)境和游戲配置一致。服務器依賴這些數(shù)據(jù)自主運行游戲邏輯,并通過網(wǎng)絡下發(fā)數(shù)據(jù)驅動所有客戶端的游戲流程,其主要的邏輯架構可以如圖2所示。
該方案中的場景動畫同步交互流程可以如圖4所示,具體地可以描述為:在玩家游戲過程中,也即在游戲進程推進過程中,服務器會持續(xù)檢測是否觸發(fā)場景動畫,也即服務器會持續(xù)檢測玩家是否達到游戲策劃預先配置好的場景動畫播放的要求,當檢測到某個場景動畫要求被達到后,就會觸發(fā)場景動畫播放事件,并通過網(wǎng)絡下發(fā)給所有當前已連接該局游戲的玩家,例如圖4中的客戶端a??蛻舳薬收到該下發(fā)事件后,會先進行邏輯對時,然后計算場景動畫的播放進度,并按照當前播放進度播放場景動畫。對于在場景動畫播放過程中途加入的玩家,例如圖4中的客戶端b,服務器會補發(fā)對應的場景動畫播放事件,新玩家客戶端b收到該事件后,也會首先進行邏輯對時,然后根據(jù)服務器下發(fā)的數(shù)據(jù)計算出場景動畫當前播放進度,并直接從該進度點開始播放,從而保證與其他玩家當前進度一致。
需要說明的是,對于多人合作闖關類游戲來說,一般允許玩家在游戲過程中途加入,這樣就會導致服務器的時間線與客戶端的時間線不一致,或者不同客戶端之間的時間線不一致。而要實現(xiàn)場景動畫的同步播放,必須保證所有客戶端與服務器有統(tǒng)一的邏輯時間線。在如圖2所示的ds架構中,每個客戶端單獨與服務器進行交互,因此邏輯對時也是每個客戶端單獨與服務器完成。
邏輯對時的具體算法描述如下:
如圖5所示,服務器在s0的時候發(fā)送了一個包pkg,客戶端在本地時間c1的時候收到這個包,這時候服務器對應時間是s1,我們需要知道c1和s1的差值,該差值記為logictimedelta。因為服務器是在s0的時候發(fā)送數(shù)據(jù)包,s1的時候才送達客戶端,所以這時候的網(wǎng)絡延遲就是s1-s0??蛻舳嗽赾1時間收到這個包時,因為包里面包含了服務器發(fā)包時的時間戳,可以算出現(xiàn)一個差異值calcdelta,它實際上就是雙端真實時間差logictimedelta和傳輸延遲transmitdelay之和。
transmitdelay=s1-s0;
logictimedelta=c1-s1;
calcdelta=c1-s0=logictimedelta+transmitdelay
如果當時的網(wǎng)絡延遲越小,這個差異值就越接近真實的時間差。所以可以在游戲過程中持續(xù)監(jiān)測這個值,并維護它的最小值,從而得到一個穩(wěn)定的雙端時間差actualdelta,用來進行雙端對時。當收到來自服務器指定的時間servertime時,客戶端可以通過雙端時間差計算出其對應的客戶端時間clienttime。
actualdelta=min(actualdelta,calcdelta)
clienttime=servertimestamp+actualdelta
可選地,邏輯對時除了使用上述的最小差值算法外,還可以通過專用邏輯對時包實現(xiàn),如圖6所示,客戶端在c0時刻發(fā)送對時請求包到服務器,服務器在s1時刻收到請求并立刻回復對時信息,客戶端在c1時間收到服務器的回復,則雙端時間差可以按以下方式計算:
netdelay=(c1-c0)/2
actualdelta=c1-s1-netdelay
得到雙端時間差actualdelta后,客戶端就可以把服務器的時間servertime轉換成對應的本地時間clienttime:
clienttime=servertime+actualdelta
需要說明的是,使用本方案中提出的場景動畫同步技術,可以保證多人闖關類游戲中不同玩家設備上游戲場景動畫的一致性與同步性,極大地提高玩家合作闖關的游戲體驗。
需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到根據(jù)上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產品的形式體現(xiàn)出來,該計算機軟件產品存儲在一個存儲介質(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。
實施例2
在該實施例2中提供了一種場景動畫的播放方法,需要說明的是,該場景動畫的播放方法可以由圖1以及圖2所示的服務器執(zhí)行。
圖7是根據(jù)本發(fā)明實施例2的一種可選的場景動畫的播放方法的流程圖,如圖7所示,該方法可以包括以下步驟:
步驟s702,獲取多個第一賬號對應的場景數(shù)據(jù),其中,場景數(shù)據(jù)為多個第一賬號登錄客戶端后所產生的數(shù)據(jù);
步驟s704,根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件;
步驟s706,在達到播放目標場景動畫的預定觸發(fā)條件的情況下,向多個第一賬號中的每個第一賬號發(fā)送控制消息,其中,控制消息用于指示多個第一賬號所登錄的客戶端同步播放目標場景動畫。
需要說明的是,上述步驟s702至步驟s706的具體說明已經在本發(fā)明實施例1中的步驟s301至步驟s304(包括步驟s3041至步驟s3044)中進行了詳細介紹,此處不再一一贅述。
通過上述步驟s702至步驟s706,通過獲取多個客戶端發(fā)送的場景數(shù)據(jù),并根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件,在達到預定觸發(fā)條件的情況下向所有的客戶端發(fā)送控制消息,以指示所有的客戶端同步播放目標場景動畫,達到了保證應用的場景動畫的播放進度同步的目的,進而解決了相關技術由于網(wǎng)絡延遲或抖動等因素造成多個客戶端中的同一個應用的場景動畫的播放進度不一致的技術問題,從而提高了用戶對應用的使用體驗。
作為一種可選的實施例,在達到播放目標場景動畫的預定觸發(fā)條件的情況下,向多個第一賬號中的每個第一賬號發(fā)送控制消息之后,服務器還可以執(zhí)行以下步驟:檢測是否接收到第二賬號發(fā)送的請求消息,其中,請求消息用于請求登錄所述客戶端;在檢測到接收到第二賬號發(fā)送的請求消息的情況下,向第二賬號發(fā)送控制消息,其中,控制消息用于指示第二賬號所登錄的客戶端與多個第一賬號所登錄的客戶端同步播放目標場景動畫。
需要說明的是,第二賬號為在目標場景動畫播放過程中請求登錄所述客戶端的賬號,當服務器檢測到第二賬號發(fā)送的請求消息時,可以響應該請求消息并向第二賬號發(fā)送控制消息,該控制消息主要用于指示第二賬號所在的客戶端播放目標場景動畫。為了保證場景動畫的播放系統(tǒng)中的所有客戶端均可以同步播放目標場景動畫,在目標場景動畫的播放過程中,第二賬號所在的客戶端在接收到服務器發(fā)送的控制消息之后,需要首先進行邏輯對時,然后再計算目標場景動畫當前的播放進度,以實現(xiàn)按照該當前播放進度同步播放該目標場景動畫。需要說明的是,第二賬號接收到控制消息之后的處理流程與本發(fā)明實施例1中的步驟s3041至步驟s3044所示的處理流程相同,區(qū)別僅在于所計算得到的目標場景動畫當前的播放進度不一樣。
該可選實施例能夠實現(xiàn)對目標場景動畫播放過程中請求登錄客戶端的賬號所登錄的客戶端與其他客戶端同步播放目標場景動畫的目的,進而提高了用戶對應用的使用體驗。
作為一種可選的實施例,預定觸發(fā)條件可以包括以下至少之一:第一賬號對應的事件對象進入目標區(qū)域;第一賬號對應的事件對象在目標區(qū)域的停留時間大于預定時間;第一賬號完成目標任務;第一賬號的屬性值超過預定閾值,其中,屬性值包括以下至少之一:賬號等級、賬號登錄時間、賬號對應的事件資源數(shù)量。
需要說明的是,第一賬號對應的事件對象可以為在客戶端運行過程中第一賬號對應的虛擬的事件對象,例如,第一賬號對應的事件對象可以為游戲中的角色人物。目標區(qū)域可以為任意指定的區(qū)域;目標任務可以為任意指定的任務;預定時間和預定閾值可以根據(jù)實際需求設定,此處不做具體限定。還需要說明的是,本發(fā)明實施例中的預定觸發(fā)條件還可以包括其他條件,此處不再一一舉例說明。
需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到根據(jù)上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產品的形式體現(xiàn)出來,該計算機軟件產品存儲在一個存儲介質(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。
實施例3
在該實施例3中也提供了一種場景動畫的播放方法,需要說明的是,該場景動畫的播放方法可以由圖1以及圖2所示的客戶端執(zhí)行。
圖8是根據(jù)本發(fā)明實施例3的一種可選的場景動畫的播放方法的流程圖,如圖8所示,該方法可以包括以下步驟:
步驟s802,將第一賬號對應的場景數(shù)據(jù)導出給服務器,其中,場景數(shù)據(jù)為第一賬號登錄客戶端后所產生的數(shù)據(jù);
步驟s804,接收服務器返回的控制消息,其中,服務器用于根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件,并在達到預定觸發(fā)條件的情況下返回控制消息,控制消息用于指示播放目標場景動畫;
步驟s806,按照控制消息播放目標場景動畫。
需要說明的是,上述步驟s802至步驟s806的具體說明已經在本發(fā)明實施例1中的步驟s301至步驟s304(包括步驟s3041至步驟s3044)中進行了詳細介紹,此處不再一一贅述。
通過上述步驟s802至步驟s806,通過獲取多個客戶端發(fā)送的場景數(shù)據(jù),并根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件,在達到預定觸發(fā)條件的情況下向所有的客戶端發(fā)送控制消息,以指示所有的客戶端同步播放目標場景動畫,達到了保證應用的場景動畫的播放進度同步的目的,進而解決了相關技術由于網(wǎng)絡延遲或抖動等因素造成多個客戶端中的同一個應用的場景動畫的播放進度不一致的技術問題,從而提高了用戶對應用的使用體驗。
作為一種可選的實施例,控制消息中攜帶有服務器指示開始播放目標場景動畫的服務器時間,其中,步驟s806按照控制消息播放目標場景動畫可以包括:確定服務器時間對應的客戶端時間;確定接收到控制消息的接收時間;根據(jù)客戶端時間和接收時間獲取目標場景動畫當前播放的時間戳,其中,時間戳為接收時間與客戶端時間之間的時間差;從接收時間開始播放目標場景動畫中的時間戳之后的動畫。
可選地,確定服務器時間對應的客戶端時間可以包括:獲取與服務器之間的目標時間差;根據(jù)目標時間差確定服務器時間對應的客戶端時間,其中,客戶端時間為服務器的時間與目標時間差的和。
可選地,該可選實施例可以按照以下公式獲取與服務器之間的目標時間差:actualdelta=min(actualdelta,calcdelta),其中,calcdelta=logictimedelta+transmitdelay,transmitdelay=s1-s0,logictimedelta=c1-s1,s0為服務器發(fā)送對時包的時間,c1為接收到服務器發(fā)送的對時包的時間,s1為接收到對時包時服務器的時間,actualdelta為目標時間差。
可選地,該可選實施例可以按照以下公式獲取與服務器之間的目標時間差:actualdelta=c1-s1–netdelay,其中,netdelay=(c1-c0)/2,c0為向服務器發(fā)送對時包的時間,c1為接收到服務器響應對時包所返回的響應消息的時間,s1為服務器接收到對時包的時間。
需要說明的是,對該可選實施例的具體介紹已經在本發(fā)明實施例1中的步驟s3041至步驟s3044中進行了詳細介紹,此處不再一一贅述。
需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到根據(jù)上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產品的形式體現(xiàn)出來,該計算機軟件產品存儲在一個存儲介質(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。
實施例4
根據(jù)本發(fā)明實施例,還提供了一種用于實施本發(fā)明實施例2中的場景動畫的播放方法的場景動畫的播放裝置。圖9是根據(jù)本發(fā)明實施例4的一種可選的場景動畫的播放裝置的示意圖,如圖9所示,該裝置可以包括:
獲取單元92,用于獲取多個第一賬號對應的場景數(shù)據(jù),其中,場景數(shù)據(jù)為多個第一賬號登錄客戶端后所產生的數(shù)據(jù);判斷單元94,用于根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件;第一發(fā)送單元96,用于在達到播放目標場景動畫的預定觸發(fā)條件的情況下,向多個第一賬號中的每個第一賬號發(fā)送控制消息,其中,控制消息用于指示多個第一賬號所登錄的客戶端同步播放目標場景動畫。
需要說明的是,該實施例中的獲取單元92可以用于執(zhí)行本申請實施例1中的步驟s702,該實施例中的判斷單元94可以用于執(zhí)行本申請實施例1中的步驟s704,該實施例中的第一發(fā)送單元96可以用于執(zhí)行本申請實施例1中的步驟s706。
此處需要說明的是,上述模塊與對應的步驟所實現(xiàn)的示例和應用場景相同,但不限于上述實施例2所公開的內容。需要說明的是,上述模塊作為裝置的一部分可以運行在如圖1或者圖2所示的服務器中,可以通過軟件實現(xiàn),也可以通過硬件實現(xiàn)。
作為一種可選的實施例,該可選實施例還可以包括:檢測單元,用于在達到播放目標場景動畫的預定觸發(fā)條件的情況下,向多個第一賬號中的每個第一賬號發(fā)送控制消息之后,檢測是否接收到第二賬號發(fā)送的請求消息,其中,請求消息用于請求登錄所述客戶端;第二發(fā)送單元,用于在檢測到接收到第二賬號發(fā)送的請求消息的情況下,向第二賬號發(fā)送控制消息,其中,控制消息用于指示第二賬號所登錄的客戶端與多個第一賬號所登錄的客戶端同步播放目標場景動畫。
作為一種可選的實施例,預定觸發(fā)條件可以包括以下至少之一:第一賬號對應的事件對象進入目標區(qū)域;第一賬號對應的事件對象在目標區(qū)域的停留時間大于預定時間;第一賬號完成目標任務;第一賬號的屬性值超過預定閾值,其中,屬性值包括以下至少之一:賬號等級、賬號登錄時間、賬號對應的事件資源數(shù)量。
通過上述模塊,可以解決相關技術由于網(wǎng)絡延遲或抖動等因素造成多個客戶端中的同一個應用的場景動畫的播放進度不一致的技術問題,進而達到了提高用戶對應用的使用體驗的效果。
實施例5
根據(jù)本發(fā)明實施例,還提供了一種用于實施本發(fā)明實施例3中的場景動畫的播放方法的場景動畫的播放裝置。圖10是根據(jù)本發(fā)明實施例5的一種可選的場景動畫的播放裝置的示意圖,如圖10所示,該裝置可以包括:
導出單元102,用于將第一賬號對應的場景數(shù)據(jù)導出給服務器,其中,場景數(shù)據(jù)為第一賬號登錄客戶端后所產生的數(shù)據(jù);接收單元104,用于接收服務器返回的控制消息,其中,服務器用于根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件,并在達到預定觸發(fā)條件的情況下返回控制消息,控制消息用于指示播放目標場景動畫;播放單元106,用于按照控制消息播放目標場景動畫。
需要說明的是,該實施例中的導出單元102可以用于執(zhí)行本申請實施例1中的步驟s802,該實施例中的接收單元104可以用于執(zhí)行本申請實施例1中的步驟s804,該實施例中的播放單元106可以用于執(zhí)行本申請實施例1中的步驟s806。
此處需要說明的是,上述模塊與對應的步驟所實現(xiàn)的示例和應用場景相同,但不限于上述實施例3所公開的內容。需要說明的是,上述模塊作為裝置的一部分可以運行在如圖1或者圖2所示的客戶端中,可以通過軟件實現(xiàn),也可以通過硬件實現(xiàn)。
作為一種可選的實施例,控制消息中攜帶有服務器指示開始播放目標場景動畫的服務器時間,其中,播放單元106可以包括:第一確定模塊,用于確定服務器時間對應的客戶端時間;第二確定模塊,用于確定接收到控制消息的接收時間;獲取模塊,用于根據(jù)客戶端時間和接收時間獲取目標場景動畫當前播放的時間戳,其中,時間戳為接收時間與客戶端時間之間的時間差;播放模塊,用于從接收時間開始播放目標場景動畫中的時間戳之后的動畫。
作為一種可選的實施例,第一確定模塊可以包括:獲取子模塊,用于獲取與服務器之間的目標時間差;確定子模塊,用于根據(jù)目標時間差確定服務器時間對應的客戶端時間,其中,客戶端時間為服務器的時間與目標時間差的和。
作為一種可選的實施例,獲取子模塊用于按照以下公式獲取與服務器之間的目標時間差:actualdelta=min(actualdelta,calcdelta),其中,calcdelta=logictimedelta+transmitdelay,transmitdelay=s1-s0,logictimedelta=c1-s1,s0為服務器發(fā)送對時包的時間,c1為接收到服務器發(fā)送的對時包的時間,s1為接收到對時包時服務器的時間,actualdelta為目標時間差。
作為一種可選的實施例,獲取子模塊用于按照以下公式獲取與服務器之間的目標時間差:actualdelta=c1-s1–netdelay,其中,netdelay=(c1-c0)/2,c0為向服務器發(fā)送對時包的時間,c1為接收到服務器響應對時包所返回的響應消息的時間,s1為服務器接收到對時包的時間。
通過上述模塊,可以解決相關技術由于網(wǎng)絡延遲或抖動等因素造成多個客戶端中的同一個應用的場景動畫的播放進度不一致的技術問題,進而達到了提高用戶對應用的使用體驗的效果。
實施例6
根據(jù)本發(fā)明實施例,還提供了一種用于實施上述場景動畫的播放方法的終端。
圖11是根據(jù)本發(fā)明實施例的一種終端的結構框圖,如圖11所示,該終端可以包括:一個或多個(圖中僅示出一個)處理器201、存儲器203、以及傳輸裝置205,如圖11所示,該終端還可以包括輸入輸出設備207。
其中,存儲器203可用于存儲軟件程序以及模塊,如本發(fā)明實施例中的場景動畫的播放方法和裝置對應的程序指令/模塊,處理器201通過運行存儲在存儲器203內的軟件程序以及模塊,從而執(zhí)行各種功能應用以及數(shù)據(jù)處理,即實現(xiàn)上述的場景動畫的播放方法。存儲器203可包括高速隨機存儲器,還可以包括非易失性存儲器,如一個或者多個磁性存儲裝置、閃存、或者其他非易失性固態(tài)存儲器。在一些實例中,存儲器203可進一步包括相對于處理器201遠程設置的存儲器,這些遠程存儲器可以通過網(wǎng)絡連接至終端。上述網(wǎng)絡的實例包括但不限于互聯(lián)網(wǎng)、企業(yè)內部網(wǎng)、局域網(wǎng)、移動通信網(wǎng)及其組合。
上述的傳輸裝置205用于經由一個網(wǎng)絡接收或者發(fā)送數(shù)據(jù)。上述的網(wǎng)絡具體實例可包括有線網(wǎng)絡及無線網(wǎng)絡。在一個實例中,傳輸裝置205包括一個網(wǎng)絡適配器(networkinterfacecontroller,nic),其可通過網(wǎng)線與其他網(wǎng)絡設備與路由器相連從而可與互聯(lián)網(wǎng)或局域網(wǎng)進行通訊。在一個實例中,傳輸裝置205為射頻(radiofrequency,rf)模塊,其用于通過無線方式與互聯(lián)網(wǎng)進行通訊。
其中,具體地,存儲器203用于存儲應用程序。
處理器201可以調用存儲器203存儲的應用程序,以執(zhí)行下述步驟:獲取多個第一賬號對應的場景數(shù)據(jù),其中,場景數(shù)據(jù)為多個第一賬號登錄客戶端后所產生的數(shù)據(jù);根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件;在達到播放目標場景動畫的預定觸發(fā)條件的情況下,向多個第一賬號中的每個第一賬號發(fā)送控制消息,其中,控制消息用于指示多個第一賬號所登錄的客戶端同步播放目標場景動畫。
處理器201還用于執(zhí)行下述步驟:在達到播放目標場景動畫的預定觸發(fā)條件的情況下,向多個第一賬號中的每個第一賬號發(fā)送控制消息之后,檢測是否接收到第二賬號發(fā)送的請求消息,其中,請求消息用于請求登錄所述客戶端;在檢測到接收到第二賬號發(fā)送的請求消息的情況下,向第二賬號發(fā)送控制消息,其中,控制消息用于指示第二賬號所登錄的客戶端與多個第一賬號所登錄的客戶端同步播放目標場景動畫。
處理器201可以調用存儲器203存儲的應用程序,以執(zhí)行下述步驟:將第一賬號對應的場景數(shù)據(jù)導出給服務器,其中,場景數(shù)據(jù)為第一賬號登錄客戶端所產生的數(shù)據(jù);接收服務器返回的控制消息,其中,服務器用于根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件,并在達到預定觸發(fā)條件的情況下返回控制消息,控制消息用于指示播放目標場景動畫;按照控制消息播放目標場景動畫。
處理器201還用于執(zhí)行下述步驟:確定服務器時間對應的客戶端時間;確定接收到控制消息的接收時間;根據(jù)客戶端時間和接收時間獲取目標場景動畫當前播放的時間戳,其中,時間戳為接收時間與客戶端時間之間的時間差;從接收時間開始播放目標場景動畫中的時間戳之后的動畫。
處理器201還用于執(zhí)行下述步驟:獲取與服務器之間的目標時間差;根據(jù)目標時間差確定服務器時間對應的客戶端時間,其中,客戶端時間為服務器的時間與目標時間差的和。
處理器201還用于執(zhí)行下述步驟:按照以下公式獲取與服務器之間的目標時間差:actualdelta=min(actualdelta,calcdelta),其中,calcdelta=logictimedelta+transmitdelay,transmitdelay=s1-s0,logictimedelta=c1-s1,s0為服務器發(fā)送對時包的時間,c1為接收到服務器發(fā)送的對時包的時間,s1為接收到對時包時服務器的時間,actualdelta為目標時間差。
處理器201還用于執(zhí)行下述步驟:按照以下公式獲取與服務器之間的目標時間差:actualdelta=c1-s1–netdelay,其中,netdelay=(c1-c0)/2,c0為向服務器發(fā)送對時包的時間,c1為接收到服務器響應對時包所返回的響應消息的時間,s1為服務器接收到對時包的時間。
采用本發(fā)明實施例,提供了一種場景動畫的播放方案,該方案采用服務器統(tǒng)一控制場景動畫播放的方式,通過獲取多個客戶端發(fā)送的場景數(shù)據(jù),并根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件,在達到預定觸發(fā)條件的情況下向所有的客戶端發(fā)送控制消息,以指示所有的客戶端同步播放目標場景動畫,達到了保證應用的場景動畫的播放進度同步的目的,進而解決了相關技術由于網(wǎng)絡延遲或抖動等因素造成多個客戶端中的同一個應用的場景動畫的播放進度不一致的技術問題,從而提高了用戶對應用的使用體驗。
可選地,本實施例中的具體示例可以參考上述實施例1至實施例5中所描述的示例,本實施例在此不再贅述。
本領域普通技術人員可以理解,圖11所示的結構僅為示意,終端可以是智能手機(如android手機、ios手機等)、平板電腦、掌上電腦以及移動互聯(lián)網(wǎng)設備(mobileinternetdevices,mid)、pad等終端設備。圖11其并不對上述電子裝置的結構造成限定。例如,終端還可包括比圖11中所示更多或者更少的組件(如網(wǎng)絡接口、顯示裝置等),或者具有與圖11所示不同的配置。
本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令終端設備相關的硬件來完成,該程序可以存儲于一計算機可讀存儲介質中,存儲介質可以包括:閃存盤、只讀存儲器(read-onlymemory,rom)、隨機存取器(randomaccessmemory,ram)、磁盤或光盤等。
實施例7
本發(fā)明的實施例還提供了一種存儲介質??蛇x地,在本實施例中,上述存儲介質可以用于執(zhí)行場景動畫的播放方法的程序代碼。
可選地,在本實施例中,上述存儲介質可以位于上述實施例所示的網(wǎng)絡中的多個網(wǎng)絡設備中的至少一個網(wǎng)絡設備上。
可選地,在本實施例中,存儲介質被設置為存儲用于執(zhí)行以下步驟的程序代碼:
s1,獲取多個第一賬號對應的場景數(shù)據(jù),其中,場景數(shù)據(jù)為多個第一賬號登錄客戶端后所產生的數(shù)據(jù);
s2,根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件;
s3,在達到播放目標場景動畫的預定觸發(fā)條件的情況下,向多個第一賬號中的每個第一賬號發(fā)送控制消息,其中,控制消息用于指示多個第一賬號所登錄的客戶端同步播放目標場景動畫。
可選地,存儲介質還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在達到播放目標場景動畫的預定觸發(fā)條件的情況下,向多個第一賬號中的每個第一賬號發(fā)送控制消息之后,檢測是否接收到第二賬號發(fā)送的請求消息,其中,請求消息用于請求登錄所述客戶端;在檢測到接收到第二賬號發(fā)送的請求消息的情況下,向第二賬號發(fā)送控制消息,其中,控制消息用于指示第二賬號所登錄的客戶端與多個第一賬號所登錄的客戶端同步播放目標場景動畫。
可選地,在本實施例中,存儲介質被設置為存儲用于執(zhí)行以下步驟的程序代碼:
s1,將第一賬號對應的場景數(shù)據(jù)導出給服務器,其中,場景數(shù)據(jù)為第一賬號登錄客戶端后所產生的數(shù)據(jù);
s2,接收服務器返回的控制消息,其中,服務器用于根據(jù)場景數(shù)據(jù)判斷是否達到播放目標場景動畫的預定觸發(fā)條件,并在達到預定觸發(fā)條件的情況下返回控制消息,控制消息用于指示播放目標場景動畫;
s3,按照控制消息播放目標場景動畫。
可選地,存儲介質還被設置為存儲用于執(zhí)行以下步驟的程序代碼:確定服務器時間對應的客戶端時間;確定接收到控制消息的接收時間;根據(jù)客戶端時間和接收時間獲取目標場景動畫當前播放的時間戳,其中,時間戳為接收時間與客戶端時間之間的時間差;從接收時間開始播放目標場景動畫中的時間戳之后的動畫。
可選地,存儲介質還被設置為存儲用于執(zhí)行以下步驟的程序代碼:獲取與服務器之間的目標時間差;根據(jù)目標時間差確定服務器時間對應的客戶端時間,其中,客戶端時間為服務器的時間與目標時間差的和。
可選地,存儲介質還被設置為存儲用于執(zhí)行以下步驟的程序代碼:按照以下公式獲取與服務器之間的目標時間差:actualdelta=min(actualdelta,calcdelta),其中,calcdelta=logictimedelta+transmitdelay,transmitdelay=s1-s0,logictimedelta=c1-s1,s0為服務器發(fā)送對時包的時間,c1為接收到服務器發(fā)送的對時包的時間,s1為接收到對時包時服務器的時間,actualdelta為目標時間差。
可選地,存儲介質還被設置為存儲用于執(zhí)行以下步驟的程序代碼:按照以下公式獲取與服務器之間的目標時間差:actualdelta=c1-s1–netdelay,其中,netdelay=(c1-c0)/2,c0為向服務器發(fā)送對時包的時間,c1為接收到服務器響應對時包所返回的響應消息的時間,s1為服務器接收到對時包的時間。
可選地,本實施例中的具體示例可以參考上述實施例1至實施例5中所描述的示例,本實施例在此不再贅述。
可選地,在本實施例中,上述存儲介質可以包括但不限于:u盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
上述實施例中的集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產品銷售或使用時,可以存儲在上述計算機可讀取的存儲介質中。基于這樣的理解,本發(fā)明的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形式體現(xiàn)出來,該計算機軟件產品存儲在存儲介質中,包括若干指令用以使得一臺或多臺計算機設備(可為個人計算機、服務器或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。
在本發(fā)明的上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的客戶端,可通過其它的方式實現(xiàn)。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。