本發(fā)明實施例涉及網(wǎng)絡技術(shù)領域,特別涉及一種屬性信息的更新方法及裝置。
背景技術(shù):
目前的虛擬場景都需要服務器的支持和管理,服務器通??梢源鎯μ摂M場景中各種虛擬對象的屬性信息,并對發(fā)生變化的屬性信息進行更新。例如,對于網(wǎng)絡游戲中的游戲場景,場景中的虛擬對象可以為用戶角色、怪物、道具、場景物件等。當多個用戶終端處于同一游戲場景時,若任一用戶終端執(zhí)行游戲操作,游戲服務器中存儲的虛擬對象的屬性信息都可能會發(fā)生改變,為了使得游戲服務器中存儲的虛擬對象的屬性信息與在該游戲場景中的各個用戶終端顯示的虛擬對象的屬性信息同步,該游戲服務器還需要根據(jù)當前存儲的虛擬對象的屬性信息,對各個用戶終端顯示的虛擬對象的屬性信息進行更新。
現(xiàn)有技術(shù)中,游戲服務器與用戶終端之間通常采用基于虛擬對象的各個功能模塊的數(shù)據(jù)更新協(xié)議,對虛擬對象的屬性信息進行更新的方式。具體地,游戲服務器通常將虛擬對象劃分為多個功能模塊,例如可以將用戶角色對象劃分為肢體模塊、生命模塊、戰(zhàn)斗模塊等,而且不同的功能模塊對應不同的數(shù)據(jù)更新協(xié)議,對于該多個功能模塊中的每個功能模塊,當該功能模塊中的任一屬性信息發(fā)生改變時,不管該功能模塊中的其他屬性信息有沒有發(fā)生改變,該游戲服務器都會將該功能模塊的所有屬性信息發(fā)送給用戶終端,且只能通過該功能模塊對應的數(shù)據(jù)更新協(xié)議發(fā)送給用戶終端,以使該用戶終端對當前存儲的該功能模塊的所有屬性信息進行更新。
但是上述方法中,每個虛擬對象的屬性信息分布在多個功能模塊中,屬性信息更新過程較為繁瑣,而且所發(fā)送的功能模塊的屬性信息中不僅包括發(fā)生變化的屬性信息,還包括未變化的屬性信息,從而會造成網(wǎng)絡資源的浪費,另外由于每個功能模塊都對應一個數(shù)據(jù)更新協(xié)議,從而大大提高了協(xié)議的維護難度。
技術(shù)實現(xiàn)要素:
為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種屬性信息的更新方法及裝置。所述技術(shù)方案如下:
第一方面,提供了一種屬性信息更新方法,所述方法包括:
對于虛擬場景包括的多個虛擬對象中的每個虛擬對象,從所述虛擬對象的多個屬性信息中確定目標屬性信息,所述目標屬性信息為在所述虛擬場景的運行過程中發(fā)生變化的屬性信息,所述目標屬性信息包括目標數(shù)值屬性信息和目標字符串屬性信息;
將所述虛擬對象的標識、所述目標數(shù)值屬性信息和所述目標數(shù)值屬性信息的標識,通過第一指定協(xié)議發(fā)送至當前處于所述虛擬場景內(nèi)的多個用戶終端,以使所述多個用戶終端對當前顯示的所述虛擬對象的數(shù)值屬性信息進行更新,所述第一指定協(xié)議用于傳輸數(shù)值屬性信息;
將所述虛擬對象的標識、所述目標字符串屬性信息和所述目標字符串屬性信息的標識,通過第二指定協(xié)議發(fā)送至所述多個用戶終端,以使所述多個用戶終端對當前顯示的所述虛擬對象的字符串屬性信息進行更新,所述第二指定協(xié)議用于傳輸字符串屬性信息。
第二方面,提供了一種屬性信息的更新裝置,所述裝置包括:
確定模塊,用于對于虛擬場景包括的多個虛擬對象中的每個虛擬對象,從所述虛擬對象的多個屬性信息中確定目標屬性信息,所述目標屬性信息為在所述虛擬場景的運行過程中發(fā)生變化的屬性信息,所述目標屬性信息包括目標數(shù)值屬性信息和目標字符串屬性信息;
第一發(fā)送模塊,用于將所述虛擬對象的標識、所述目標數(shù)值屬性信息和所述目標數(shù)值屬性信息的標識,通過第一指定協(xié)議發(fā)送至當前處于所述虛擬場景內(nèi)的多個用戶終端,以使所述多個用戶終端對當前顯示的所述虛擬對象的數(shù)值屬性信息進行更新,所述第一指定協(xié)議用于傳輸數(shù)值屬性信息;
第二發(fā)送模塊,用于將所述虛擬對象的標識、所述目標字符串屬性信息和所述目標字符串屬性信息的標識,通過第二指定協(xié)議發(fā)送至所述多個用戶終端,以使所述多個用戶終端對當前顯示的所述虛擬對象的字符串屬性信息進行更新,所述第二指定協(xié)議用于傳輸字符串屬性信息。
本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
本發(fā)明實施例中,服務器可以對應存儲虛擬場景中各個虛擬對象的多個屬性信息,并可以直接以對象為單位對終端顯示的各個虛擬對象的屬性進行更新,而非以虛擬對象的各個功能模塊為單位進行更新,從而簡化了屬性信息的更新流程;而且在具體更新過程中,該服務器還可以從該虛擬對象的多個屬性信息中確定目標屬性信息,該目標屬性信息為在該虛擬場景的運行過程中發(fā)生變化的屬性信息,且該目標屬性信息包括目標數(shù)值屬性信息和目標字符串屬性信息,從而該服務器可以將該目標數(shù)值屬性信息通過第一指定協(xié)議發(fā)送至當前處于該虛擬場景內(nèi)的多個用戶終端,并可以將該目標字符串屬性信息通過第二指定協(xié)議發(fā)送至該多個用戶終端,以使該多個用戶終端分別對當前顯示的該虛擬對象的數(shù)值屬性信息和字符串屬性信息進行更新,如此該服務器可以僅向各個終端發(fā)送發(fā)生變化的屬性信息,從而極大地節(jié)省了網(wǎng)絡資源,而且僅需兩條協(xié)議:用于傳輸數(shù)值屬性信息的第一指定協(xié)議和用于發(fā)送字符串屬性信息的第二指定協(xié)議,就可完成各個虛擬對象的屬性信息的同步工作,從而減小了協(xié)議的維護難度,簡化了屬性信息的同步工作。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1A是本發(fā)明實施例提供的一種網(wǎng)絡游戲系統(tǒng)的結(jié)構(gòu)示意圖;
圖1B是本發(fā)明實施例提供的一種屬性信息的更新方法流程圖;
圖2A是本發(fā)明實施例提供的另一種屬性信息的更新方法流程圖;
圖2B是本發(fā)明實施例提供的一種服務器和指定終端關(guān)于同一虛擬對象的數(shù)值屬性信息的映射示例圖;
圖2C是本發(fā)明實施例提供的一種服務器存儲的一個虛擬對象的數(shù)值屬性信息集合的示例圖;
圖2D是本發(fā)明實施例提供的一種服務器和指定終端關(guān)于同一虛擬對象的字符串屬性信息的映射示例圖;
圖2E是本發(fā)明實施例提供的一種服務器存儲的一個虛擬對象的字符串屬性信息集合的示例圖;
圖2F是本發(fā)明實施例提供的一種虛擬對象的屬性位圖的示意圖;
圖2G是本發(fā)明實施例提供的另一種虛擬對象的屬性位圖的示意圖;
圖3是本發(fā)明實施例提供的一種屬性信息的更新裝置的結(jié)構(gòu)示意圖;
圖4是本發(fā)明實施例提供的一種屬性信息的更新裝置的服務器結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
在對本發(fā)明實施例進行詳細的解釋說明之前,先對本發(fā)明實施例的應用場景予以介紹。本發(fā)明實施例提供的方法應用于多個用戶終端與服務器的虛擬交互系統(tǒng)中,且在該交互系統(tǒng)中,服務器可以提供一個虛擬場景,每個用戶終端均可在該虛擬場景中擁有一個虛擬對象,從而多個用戶終端即可基于各自的虛擬對象在該虛擬場景中進行交互。另外,在該交互系統(tǒng)中,服務器還需對該虛擬場景中的各個虛擬對象的屬性信息進行維護,例如,需要在任一虛擬對象的屬性信息發(fā)生變化時,對該虛擬對象的屬性信息進行更新。具體地,該虛擬交互系統(tǒng)可以為網(wǎng)絡游戲系統(tǒng)、網(wǎng)絡直播交互系統(tǒng)、AR(增強現(xiàn)實技術(shù))交互系統(tǒng)等,本發(fā)明實施例對此不做限定。
以網(wǎng)絡游戲系統(tǒng)為例,參見圖1A,該網(wǎng)絡游戲系統(tǒng)可以包括游戲服務器10和多個用戶終端20,且該游戲服務器提供的虛擬場景為游戲場景。其中,該游戲服務器10和各個用戶終端20之間可以通過有線網(wǎng)絡或者無線網(wǎng)絡進行通信,且該多個用戶終端20為在該游戲服務器10所提供的網(wǎng)絡游戲的游戲場景中的用戶終端,該游戲服務器10用于為該多個用戶終端20的游戲操作提供支持和管理。例如,該游戲服務器10可以存儲該游戲場景中的各個虛擬對象的屬性信息,如該游戲場景中的用戶角色、怪物、道具、場景物件等虛擬對象的屬性信息,而且當任一用戶終端20在該游戲場景中執(zhí)行操作,并使得該游戲服務器中存儲的虛擬對象的屬性信息發(fā)生變化,該游戲服務器10即會對該多個用戶終端20顯示的虛擬對象的屬性信息進行更新,以保證該游戲服務器10中存儲的各個虛擬對象的屬性信息與該多個用戶終端20所顯示的各個虛擬對象的屬性信息能夠保持一致。
圖1B是本發(fā)明實施例提供的一種屬性信息的更新方法流程圖,參見圖1B,該方法可以包括如下幾個步驟:
步驟101:對于虛擬場景包括的多個虛擬對象中的每個虛擬對象,從該虛擬對象的多個屬性信息中確定目標屬性信息,該目標屬性信息為在該虛擬場景的運行過程中發(fā)生變化的屬性信息,該目標屬性信息包括目標數(shù)值屬性信息和目標字符串屬性信息。
步驟102:將該虛擬對象的標識、該目標數(shù)值屬性信息和該目標數(shù)值屬性信息的標識,通過第一指定協(xié)議發(fā)送至當前處于該虛擬場景內(nèi)的多個用戶終端,以使該多個用戶終端對當前顯示的該虛擬對象的數(shù)值屬性信息進行更新,該第一指定協(xié)議用于傳輸數(shù)值屬性信息。
步驟103:將該虛擬對象的標識、該目標字符串屬性信息和該目標字符串屬性信息的標識,通過第二指定協(xié)議發(fā)送至該多個用戶終端,以使該多個用戶終端對當前顯示的該虛擬對象的字符串屬性信息進行更新,該第二指定協(xié)議用于傳輸字符串屬性信息。
本發(fā)明實施例中,服務器可以對應存儲虛擬場景中各個虛擬對象的多個屬性信息,并可以直接以對象為單位對終端顯示的各個虛擬對象的屬性進行更新,而非以虛擬對象的各個功能模塊為單位進行更新,從而簡化了屬性信息的更新流程;而且在具體更新過程中,該服務器還可以從該虛擬對象的多個屬性信息中確定目標屬性信息,該目標屬性信息為在該虛擬場景的運行過程中發(fā)生變化的屬性信息,且該目標屬性信息包括目標數(shù)值屬性信息和目標字符串屬性信息,從而該服務器可以將該目標數(shù)值屬性信息通過第一指定協(xié)議發(fā)送至當前處于該虛擬場景內(nèi)的多個用戶終端,并可以將該目標字符串屬性信息通過第二指定協(xié)議發(fā)送至該多個用戶終端,以使該多個用戶終端分別對當前顯示的該虛擬對象的數(shù)值屬性信息和字符串屬性信息進行更新,如此該服務器可以僅向各個終端發(fā)送發(fā)生變化的屬性信息,從而極大地節(jié)省了網(wǎng)絡資源,而且僅需兩條協(xié)議:用于傳輸數(shù)值屬性信息的第一指定協(xié)議和用于發(fā)送字符串屬性信息的第二指定協(xié)議,就可完成各個虛擬對象的屬性信息的同步工作,從而減小了協(xié)議的維護難度,簡化了屬性信息的同步工作。
可選地,該從該虛擬對象的多個屬性信息中確定目標屬性信息之前,還包括:
在該虛擬場景的運行過程中,當檢測到該虛擬對象的任一屬性信息發(fā)生變化時,對發(fā)生變化的屬性信息進行標記,得到已標記的屬性信息;
相應地,該從該虛擬對象的多個屬性信息中確定目標屬性信息,包括:
從該虛擬對象的多個屬性信息中確定已標記的屬性信息;
將該已標記的屬性信息確定為該目標屬性信息;
相應地,該從該虛擬對象的多個屬性信息中確定目標屬性信息之后,還包括:
取消對該目標屬性信息的標記。
可選地,該對發(fā)生變化的屬性信息進行標記,得到已標記的屬性信息,包括:
將該發(fā)生變化的屬性信息在該虛擬對象的屬性位圖中的標記值從第一預設數(shù)值更改為第二預設數(shù)值,以對該發(fā)生變化的屬性信息進行標記,其中,該屬性位圖用于指示該虛擬對象的多個屬性信息是否發(fā)生改變,該第一預設數(shù)值用于指示屬性信息未發(fā)生改變,該第二預設數(shù)值用于指示屬性信息發(fā)生改變;
相應地,該取消對該目標屬性信息的標記,包括:
將該目標屬性信息在該虛擬對象的屬性位圖中的標記值從該第二預設數(shù)值更改為該第一預設數(shù)值。
可選地,該對于虛擬場景包括的多個虛擬對象中的每個虛擬對象,從該虛擬對象的多個屬性信息中確定目標屬性信息之前,還包括:
當接收到指定終端發(fā)送的初始化請求時,基于該指定終端登錄的用戶賬號,獲取該多個虛擬對象中每個虛擬對象的多個屬性信息,每個屬性信息包括數(shù)值屬性信息和字符串屬性信息,該指定終端為該多個用戶終端中的任一終端;
對于該多個虛擬對象中的每個虛擬對象,將該虛擬對象的標識、該虛擬對象的多個屬性信息包括的數(shù)值屬性信息以及該數(shù)值屬性信息的標識,通過該第一指定協(xié)議發(fā)送至該指定終端;
將該虛擬對象的標識、該虛擬對象的多個屬性信息包括的字符串屬性信息以及該字符串屬性信息的標識,通過該第二指定協(xié)議發(fā)送至該指定終端。
可選地,該方法還包括:
當指定終端退出該虛擬場景時,向該指定終端發(fā)送對象銷毀請求,該對象銷毀請求用于指示該指定終端將存儲的該多個虛擬對象的標識和該多個虛擬對象的屬性信息進行刪除;
將該虛擬場景中指定虛擬對象的標識和該指定虛擬對象的屬性信息刪除,該指定虛擬對象為該指定終端在該虛擬場景中所擁有的虛擬對象。
上述所有可選技術(shù)方案,均可按照任意結(jié)合形成本發(fā)明的可選實施例,本發(fā)明實施例對此不再一一贅述。
圖2A是本發(fā)明實施例提供的一種屬性信息的更新方法流程圖,參見圖2A,該方法可以包括如下幾個步驟:
步驟201:當服務器接收到指定終端發(fā)送的初始化請求時,基于該指定終端登錄的用戶賬號,獲取該指定終端當前所處虛擬場景包括的多個虛擬對象中每個虛擬對象的多個屬性信息,每個屬性信息包括數(shù)值屬性信息和字符串屬性信息。其中,該指定終端的初始化請求可以由該指定終端在進入該虛擬場景時觸發(fā),用于請求獲取該虛擬場景中多個虛擬對象的屬性信息,以便根據(jù)獲取的屬性信息,在當前顯示界面中顯示該虛擬場景中的多個虛擬對象。
其中,該服務器可以為游戲服務器、直播服務器、AR服務器等,相應地,該虛擬場景可以為游戲場景、直播場景、AR場景等,本發(fā)明實施例對此不做限定。
例如,當該虛擬場景為游戲服務器提供的游戲場景時,該虛擬場景可以為網(wǎng)絡游戲中該指定終端所處的某張游戲地圖場景。另外,當該虛擬場景為該指定終端所處的某張游戲地圖場景時,該游戲地圖場景可以為該指定終端所處的整張游戲地圖場景,可以為該整張游戲地圖場景中該指定終端所處的部分游戲地圖場景,也可以為該整張游戲地圖場景中該指定終端當前顯示界面中能夠顯示的部分游戲地圖場景等,本發(fā)明示例對此不做限定。
本發(fā)明實施例中,當服務器接收到指定終端發(fā)送的初始化請求時,該服務器首先需要初始化該虛擬場景中包括的多個虛擬對象,也即是,完成各個虛擬對象的屬性信息的初始化。具體地,初始化該虛擬場景中包括的多個虛擬對象的過程可以包括:基于該指定終端登錄的用戶賬號,獲取該指定終端當前所處虛擬場景包括的多個虛擬對象中每個虛擬對象的多個屬性信息。
需要說明的是,本發(fā)明實施例中將每個虛擬對象的屬性信息歸納為兩種類型的屬性信息集合,一類是數(shù)值屬性信息集合,一類是字符串屬性信息集合,而且這兩種類型的屬性信息集合是完全獨立的,每個屬性信息集合中的屬性類型和屬性數(shù)量均可以獨立擴展。因此,該服務器在獲取每個虛擬對象的屬性信息時,需要分別獲取每個虛擬對象的所有數(shù)值屬性信息和所有字符串屬性信息,以完成每個虛擬對象的初始化。
其中,基于該指定終端登錄的用戶賬號,獲取該指定終端當前所處虛擬場景包括的多個虛擬對象中每個虛擬對象的多個屬性信息的過程可以包括:獲取在該指定終端進入該虛擬場景之前,該虛擬場景中包括的各個虛擬對象的屬性信息,并根據(jù)該指定終端登錄的用戶賬號,從游戲數(shù)據(jù)庫中獲取該用戶賬號所擁有的虛擬對象的屬性信息,之后,將該虛擬場景中包括的各個虛擬對象的屬性信息與該用戶賬號所擁有的虛擬對象的屬性信息進行組合,得到該指定終端進入該虛擬場景后,該虛擬場景包括的多個虛擬對象的屬性信息。
其中,當該虛擬場景為游戲場景時,該用戶賬號所擁有的虛擬對象可以為該用戶賬號所擁有的游戲角色等,相應地,該用戶賬號所擁有的虛擬對象的屬性信息可以包括該游戲角色的等級屬性信息、裝備屬性信息、武力屬性信息、點券屬性信息等等,本發(fā)明實施例對此不做限定。
另外,針對該指定終端是否為進入該虛擬場景的第一個用戶終端,獲取在該指定終端進入該虛擬場景之前,該虛擬場景中包括的各個虛擬對象的屬性信息的過程相應不同,具體可以包括以下幾種方式:
第一種方式:當該指定終端為進入該虛擬場景的第一個用戶終端時,該服務器可以從游戲數(shù)據(jù)庫中獲取該指定終端進入該虛擬場景之前,該虛擬場景中各個虛擬對象的屬性信息。其中,該游戲數(shù)據(jù)庫存儲有多個虛擬場景中每個虛擬場景的各個虛擬對象的屬性信息。
也即是,當該指定終端為進入該虛擬場景的第一個用戶終端時,在該指定終端進入該虛擬場景之前,該服務器可能還沒有建立與該虛擬場景對應的指定屬性集合,該指定屬性集合用于存儲該虛擬場景中各個虛擬對象的屬性信息,因此,在該指定終端進入該虛擬場景后,該服務器還需從游戲數(shù)據(jù)庫中獲取該虛擬場景中各個虛擬對象的屬性信息。
第二種方式:當該指定終端不是進入該虛擬場景的第一個用戶終端時,該服務器可以從已建立的與該虛擬場景對應的指定屬性集合中,獲取該虛擬場景中各個虛擬對象的屬性信息,其中,該已建立的指定屬性集合存儲有該指定終端進入該虛擬場景之前,該虛擬場景中各個虛擬對象的屬性信息。
也即是,當該指定終端不是進入該虛擬場景的第一個用戶終端時,在該指定終端進入該虛擬場景之前,該服務器可能已建立了與該虛擬場景對應的指定屬性集合,從而當該指定終端進入該虛擬場景時,該服務器即可直接從該指定屬性集合中獲取該虛擬場景中各個虛擬對象的屬性信息,而無需從游戲數(shù)據(jù)庫中獲取。另外,將該虛擬場景中各個虛擬對象的屬性信息與該用戶賬號所擁有的虛擬對象的屬性信息進行組合后,還可以將組合后的信息對應存儲在該指定屬性集合中,從而得到刷新后的指定屬性集合。
需要說明的是,本發(fā)明實施例中僅是以將該虛擬場景中的各個虛擬對象的屬性信息存儲在指定屬性集合中為例進行說明,而實際應用中,該虛擬場景中的各個虛擬對象的屬性信息也可以存儲在列表、數(shù)組或者數(shù)據(jù)庫中,本發(fā)明實施例對上述屬性信息的存儲形式不做限定。
步驟202:對于該多個虛擬對象中的每個虛擬對象,將該虛擬對象的標識、該虛擬對象的多個屬性信息包括的數(shù)值屬性信息以及該數(shù)值屬性信息的標識,通過第一指定協(xié)議發(fā)送至該指定終端。
其中,該虛擬對象的標識用于唯一指示該虛擬對象,可以為該虛擬對象的名稱、ID(Identification,身份標識)等,相應地,該數(shù)值屬性信息的標識用于唯一指示該數(shù)值屬性信息所定義的數(shù)值屬性,可以為該數(shù)值屬性的名稱、ID等,本發(fā)明實施例對此也不做限定。
本發(fā)明實施例中,得到該虛擬場景中包括的多個虛擬對象中每個虛擬對象的屬性信息后,該服務器即可將每個虛擬對象的屬性信息發(fā)送至該指定終端,以便該指定終端根據(jù)每個虛擬對象的屬性信息,在當前顯示界面中顯示該虛擬場景及該虛擬場景中包括的多個虛擬對象。
例如,當該虛擬場景為游戲場景時,根據(jù)每個虛擬對象的屬性信息,該指定終端可以顯示所進入的游戲地圖場景,該游戲地圖場景可以包括地圖背景、怪物、NPC(Non-playable Character,非玩家角色)、其他終端擁有的虛擬對象、該指定終端所擁有的虛擬對象等等。
需要說明的是,本發(fā)明實施例中,為了簡化處理,該服務器可以將每個虛擬對象的所有數(shù)值屬性信息和所有字符串屬性信息,分別通過不同的協(xié)議集中進行發(fā)送。也即是,本發(fā)明實施例中僅定義了兩種傳輸屬性信息的協(xié)議:第一指定協(xié)議和第二指定協(xié)議,其中,第一指定協(xié)議用于傳輸數(shù)值屬性信息,第二指定協(xié)議用于傳輸字符串屬性信息,從而只需通過兩種協(xié)議即可將該多個虛擬對象的全部屬性信息同步至該指定終端,大大簡化了屬性信息的同步流程,而且,該指定終端也僅需解析兩種協(xié)議,即可完成虛擬對象的屬性信息的同步工作。本發(fā)明實施例提供的方法,極大地降低了服務器的協(xié)議定義和填充工作,減小了服務器和指定終端之間維護協(xié)議和屬性信息的難度,也降低了該指定終端解析協(xié)議和處理屬性信息的工作量,從而減小了協(xié)議處理過程中出錯的概率。
另外,該指定終端通過該第一指定協(xié)議,接收到該虛擬對象的標識、該虛擬對象的多個屬性信息包括的數(shù)值屬性信息以及該數(shù)值屬性信息的標識之后,即可建立該指定終端與該服務器之間,對于該虛擬對象的各個數(shù)值屬性信息的一一映射關(guān)系。
其中,對于每個虛擬對象的多個數(shù)值屬性來說,可以預先定義每個數(shù)值屬性的數(shù)值屬性信息所占據(jù)的指定字節(jié)數(shù),該指定字節(jié)數(shù)可以為4個字節(jié)、8個字節(jié)等,本發(fā)明實施例對此不做限定。而且,每個數(shù)值屬性的數(shù)值屬性信息可以為整型,也可以為浮點型,本發(fā)明實施例對此不做限定。進一步地,當某個數(shù)值屬性的數(shù)值屬性信息占據(jù)多個指定字節(jié)數(shù)時,還可以用多個屬性位來表示該數(shù)值屬性,例如,以該指定字節(jié)數(shù)為4個字節(jié)為例,當某個數(shù)值屬性的數(shù)值屬性信息占據(jù)8個字節(jié)時,則可以用兩個屬性位來表示該數(shù)值屬性。
例如,圖2B是本發(fā)明實施例提供的一種服務器和指定終端關(guān)于同一虛擬對象的數(shù)值屬性信息的映射示例圖,參見圖2B,服務器存儲的數(shù)值屬性ID和該指定終端存儲的數(shù)值屬性ID一一對應,且每個相同的數(shù)值屬性ID可以對應存儲相同的數(shù)值屬性信息,從而可以保持數(shù)值屬性信息的同步,而且每個數(shù)值屬性的數(shù)值屬性信息均占據(jù)4個字節(jié)。
再例如,圖2C是本發(fā)明實施例提供的一種服務器存儲的一個虛擬對象的數(shù)值屬性信息集合的示例圖,參見圖2C,每個數(shù)值屬性ID對應的數(shù)值屬性信息可以為INT(整型),也可以為FLOAT(單精度浮點型)和DOUBLE(雙精度浮點型),當數(shù)值屬性4的數(shù)值屬性信息占據(jù)2個指定字節(jié)數(shù)時,則可以用兩個屬性位來表示該數(shù)值屬性4,且每個屬性位存儲該數(shù)值屬性4的部分數(shù)值屬性信息,數(shù)值屬性5同理。
需要說明的是,上述數(shù)值屬性信息的存儲形式可以由該服務器和該指定終端之間預先協(xié)商約定,而無需在該第一指定協(xié)議里傳輸,從而節(jié)省了網(wǎng)絡資源,降低了服務器與該指定終端之間的同步開銷。
進一步地,每個數(shù)值屬性還可以包括多個子屬性,并可以將每個數(shù)值屬性的各個子屬性合并在一個數(shù)值屬性中,例如,當指定字節(jié)數(shù)為4時,對于1個字節(jié)和2個字節(jié)的子屬性,可以將這兩個子屬性合并在一個數(shù)值屬性中。其中,對于每個數(shù)值屬性中的子屬性來說,每個子屬性代表的屬性類型還需要服務器和指定終端通過其他定義來約定,本發(fā)明實施例對此不做限定。另外,對于每個數(shù)值屬性的子屬性,也可以將每個子屬性與一個字符串屬性對應存儲,從而在更新該子屬性時,僅需更新該子屬性對應的字符串屬性即可,本發(fā)明實施例對此也不做限定。
進一步地,為了節(jié)省網(wǎng)絡資源,對于每個虛擬對象的多個數(shù)值屬性信息,可以先從該多個數(shù)值屬性信息中確定出不為0的數(shù)值屬性信息,并僅將該不為0的數(shù)值屬性信息和該不為0的數(shù)值屬性信息的標識發(fā)送至該指定終端。
進一步地,由于大部分數(shù)值屬性信息都是1-100萬范圍內(nèi)的數(shù)字,因此本發(fā)明實施例中還可以采用第一預設編碼算法對待發(fā)送的數(shù)值屬性信息進行編碼,再將編碼后的數(shù)值屬性信息發(fā)送給指定終端,而該指定終端在接收到該編碼后的數(shù)值屬性信息后,可以先按照該第一預設編碼算法進行解碼,再根據(jù)解碼后的數(shù)值屬性信息進行處理。如此,可以降低所發(fā)送的數(shù)值屬性信息的字節(jié)數(shù),從而節(jié)省網(wǎng)絡資源。
其中,該第一預設編碼算法為該服務器和該指定終端預先約定的編碼算法,可以為BASE 128VARIANT(一種編碼算法)等,本發(fā)明實施例對此不做限定。
步驟203:將該虛擬對象的標識、該虛擬對象的多個屬性信息包括的字符串屬性信息以及該字符串屬性信息的標識,通過第二指定協(xié)議發(fā)送至該指定終端。
其中,該字符串屬性信息的標識用于唯一指示該字符串屬性信息所定義的字符串屬性,可以為該字符串屬性的名稱、ID等,本發(fā)明實施例對此不做限定。
進一步地,為了節(jié)省網(wǎng)絡資源,對于每個虛擬對象的多個字符串屬性信息,可以先從該多個字符串屬性信息中確定出字符串長度不為0的字符串屬性信息,并僅將該字符串長度不為0的字符串屬性信息和該字符串長度不為0的字符串屬性信息的標識發(fā)送至該指定終端。
另外,該指定終端通過該第二指定協(xié)議,接收到該虛擬對象的標識、該虛擬對象的多個字符串信息包括的字符串屬性信息以及該字符串屬性信息的標識之后,即可建立該指定終端與該服務器之間,對于該虛擬對象的各個字符串屬性信息的一一映射關(guān)系。
其中,對于每個虛擬對象的字符串屬性,可以預先定義字符串屬性信息的存儲形式。例如,可以預先定義每個字符串屬性信息的最大長度;或者規(guī)定每個字符串屬性信息的末尾以0結(jié)尾,以便指定終端在讀取該字符串屬性信息時,當讀取到0值時確定該字符串屬性信息讀取完畢;或者規(guī)定每個字符串屬性信息帶有一個長度前綴,以便該指定終端可以根據(jù)該長度前綴確定該字符串屬性信息的長度,并按照該長度讀取該字符串屬性信息等,從而可以方便對字符串屬性信息進行處理。
例如,圖2D是本發(fā)明實施例提供的一種服務器和指定終端關(guān)于同一虛擬對象的字符串屬性信息的映射示例圖,參見圖2D,服務器存儲的字符串屬性ID和該指定終端存儲的字符串屬性ID一一對應,且每個相同的字符串屬性ID可以對應存儲相同的字符串屬性信息,從而可以保持字符串屬性信息的同步,而且字符串屬性的長度不定,也即是,每個字符串屬性信息的長度根據(jù)實際發(fā)送的字符串屬性信息進行確定。
再例如,圖2E是本發(fā)明實施例提供的一種服務器存儲的一個虛擬對象的字符串屬性信息集合的示例圖,參見圖2E,每個字符串屬性的字符串屬性信息可以包括一個長度前綴,以指示該字符串屬性信息的長度。
需要說明的一點是,上述字符串屬性信息的存儲形式可以由該服務器和該指定終端之間預先協(xié)商約定,而無需在該第二指定協(xié)議里傳輸,從而可以節(jié)省網(wǎng)絡資源,降低服務器與該指定終端之間的同步開銷。
需要說明的另一點是,對于該虛擬場景中包括的多個虛擬對象,該服務器和該指定終端之間可以預先協(xié)商約定每個虛擬對象的標識所代表的虛擬對象的名稱或類型,對于每個虛擬對象的多個數(shù)值屬性信息和多個字符串屬性信息,也可以預先協(xié)商約定每個數(shù)值屬性信息的標識所代表的數(shù)值屬性的名稱或類型,以及每個字符串屬性信息的標識所代表的字符串屬性的名稱或類型,從而可以避免在第一指定協(xié)議和第二指定協(xié)議里傳輸上述信息,節(jié)省了網(wǎng)絡資源。
當然,在另一實施例中,該服務器和該指定終端之間也可以不預先協(xié)商約定上述信息,而在向該指定終端全量發(fā)送屬性信息之前,先把該虛擬場景中的所有虛擬對象的標識、對應的類型等信息發(fā)送該指定終端,并把每個虛擬對象的各個屬性信息的標識、對應的類型、限定的長度等信息發(fā)送給該指定終端,以便該指定終端對接收到的屬性信息進行處理。這種方式可以實現(xiàn)協(xié)議的通用化,所有的用戶終端無需預先與服務器進行協(xié)商預定,即可直接對接收到的屬性信息進行處理。
需要說明的再一點是,本發(fā)明實施例僅是以先向該指定終端發(fā)送數(shù)值屬性信息,再發(fā)送字符串屬性信息為例進行說明,而實際應用中,也可以先發(fā)送字符串屬性信息再發(fā)送數(shù)值屬性信息,或者將數(shù)值屬性信息和字符串屬性信息同時發(fā)送,本發(fā)明實施例對此不做限定。
進一步地,本發(fā)明實施例中,還可以將字符串屬性進行擴充來傳輸二進制數(shù)據(jù),也即是,字符串屬性對應的存儲單元中不僅可以存儲字符串屬性信息,還可以存儲二進制數(shù)據(jù),本發(fā)明實施例對此不做限定。進一步地,對于該二進制數(shù)據(jù),可以先采用第二預設編碼算法進行編碼,編碼后再發(fā)送給該指定終端,該指定終端接收后再進行解碼即可。如此,可以降低所發(fā)送的二進制數(shù)據(jù)的字節(jié)數(shù),從而可以節(jié)省網(wǎng)絡資源。
其中,該第二預設編碼算法為該服務器和該指定終端預先約定的編碼算法,可以為BASE 64(一種編碼算法)等,本發(fā)明實施例對此不做限定。
步驟204:對于該虛擬場景包括的多個虛擬對象中的每個虛擬對象,從該虛擬對象的多個屬性信息中確定目標屬性信息,該目標屬性信息為在該虛擬場景的運行過程中發(fā)生變化的屬性信息,該目標屬性信息包括目標數(shù)值屬性信息和目標字符串屬性信息。
在該虛擬場景的運行過程中,隨著處于該虛擬場景中的多個用戶終端的操作,該虛擬場景中的各個虛擬對象的屬性信息可能會發(fā)生變化,為了使得該服務器存儲的虛擬對象的屬性信息與該多個終端顯示的虛擬對象的屬性信息保持同步,該服務器還需要將發(fā)生變化的虛擬對象的屬性信息發(fā)送至該多個終端,以便該多個終端對當前顯示的虛擬對象的屬性信息進行更新。
本發(fā)明實施例中,為了進一步節(jié)省網(wǎng)絡資源,可以僅將各個虛擬對象的目標屬性信息發(fā)送給該指定終端。由于僅將各個虛擬對象中發(fā)生變化的屬性信息同步給用戶終端,而無需將未發(fā)生變化的屬性信息一起同步給用戶終端,從而可以大大節(jié)省服務器的下行網(wǎng)絡資源,相應地,也避免了用戶終端在短時間內(nèi)接收大量未發(fā)生變化的屬性信息,以及對大量未發(fā)生變化的屬性信息的非必要更新處理,簡化了用戶終端的更新處理工作。
進一步地,為了便于該服務器確定目標屬性信息,該服務器還可以在從該虛擬對象的多個屬性信息中確定目標屬性信息之前,在該虛擬場景的運行過程中,當檢測到該虛擬對象的任一屬性信息發(fā)生變化時,對發(fā)生變化的屬性信息進行標記,得到已標記的屬性信息;相應地,從該虛擬對象的多個屬性信息中確定目標屬性信息的過程包括:從該虛擬對象的多個屬性信息中確定已標記的屬性信息;將該已標記的屬性信息確定為該目標屬性信息;相應地,從該虛擬對象的多個屬性信息中確定目標屬性信息之后還包括:取消對該目標屬性信息的標記。
通過對發(fā)生變化的屬性信息進行標記,可以使得該服務器可以方便地確定哪些屬性信息發(fā)生了變化,而哪些屬性信息未發(fā)生了變化。其中,對發(fā)生變化的屬性信息進行標記的方式可以有多種,本發(fā)明實施例對此不做限定。
在一種可能的實現(xiàn)方式中,對發(fā)生變化的屬性信息進行標記,得到已標記的屬性信息的過程可以包括:將該發(fā)生變化的屬性信息在該虛擬對象的屬性位圖中的標記值從第一預設數(shù)值更改為第二預設數(shù)值,以對該發(fā)生變化的屬性信息進行標記,其中,該屬性位圖用于指示該虛擬對象的多個屬性信息是否發(fā)生改變,該第一預設數(shù)值用于指示屬性信息未發(fā)生改變,該第二預設數(shù)值用于指示屬性信息發(fā)生改變;相應地,該取消對該目標屬性信息的標記,包括:將該目標屬性信息在該虛擬對象的屬性位圖中的標記值從該第二預設數(shù)值更改為該第一預設數(shù)值。
其中,對于每個虛擬對象的屬性信息,該服務器可以建立一個與該虛擬對象對應的屬性位圖,該屬性位圖中包括多個標記值,各個標記值與該虛擬對象的各個屬性信息的標識一一對應,用于指示各個屬性信息是否發(fā)生變化。該屬性位圖可以以數(shù)組、列表等的形式進行存儲,當然也可以以其他形式進行存儲,本發(fā)明實施例對此不做限定。
其中,該第一預設數(shù)值和該第二預設數(shù)值為不同的數(shù)值,具體數(shù)值可以由該服務器默認設置,例如,該服務器可以將該第一預設數(shù)值設置為0,并將該第二預設數(shù)值設置為1,當然也可以設置為其他數(shù)值,本發(fā)明實施例對此不做限定。
進一步,在該虛擬場景的運行過程中,對于該虛擬場景包括的多個虛擬對象中的每個虛擬對象,該服務器還可以每隔預設時長,從該虛擬對象的多個屬性信息中確定目標屬性信息,從而每隔預設時長向該多個用戶終端發(fā)送目標屬性信息。另外,當未檢測到目標屬性信息時,也就無需向該多個用戶終端發(fā)送目標屬性信息。
其中,該預設時長可以由服務器默認設置,也可以由用戶終端與該服務器協(xié)商設置,該預設時長可以為50ms、100ms等,本發(fā)明實施例對此不做限定。
需要說明的是,該預設時長一般為一個較短的時長,一個屬性信息在該預設時長內(nèi)可能會發(fā)生多次變化,但是大部分用戶終端并沒有在極短的時間內(nèi)顯示中間變量的需求,從而該服務器可以每隔預設時長將最終變化的屬性信息同步給該多個用戶端,以減少同步的工作量,進而減少網(wǎng)絡資源。
進一步地,對于那些要求實時同步的屬性信息,該服務器還可以將要求實時同步的屬性信息進行標記,一旦這些屬性信息發(fā)生變化,即將這些屬性信息同步給該多個用戶終端,從而實現(xiàn)實時同步,本發(fā)明實施例對此不做限定。
相應地,該服務器可以每隔預設時長,查詢一次該虛擬場景中各個虛擬對象的屬性位圖,在查詢過程中,對于每個虛擬對象的屬性位圖,該服務器可以確定出標記值為第二預設數(shù)值的目標標記值,并獲取與目標標記值對應的目標屬性信息,以便將該目標屬性信息發(fā)送給該多個用戶終端。
例如,圖2F是本發(fā)明實施例提供的一種虛擬對象的屬性位圖的示意圖,參見圖2F,該屬性位圖為數(shù)組形式,且可以將該屬性位圖稱之為Bit Map,在該Bit Map中,該虛擬對象的每個屬性信息都有一個對應的標記值,也稱Bit位,用于指示該屬性信息是否發(fā)生了變化。其中,Bit位的第一預設數(shù)值為0,表示屬性信息未發(fā)生變化,Bit位的第二預設數(shù)值為1,表示屬性信息發(fā)生了變化。從而,當該虛擬對象的任一屬性信息發(fā)送變化時,該服務器即可在該Bit Map中,將該屬性信息對應的Bit位置為1。在該虛擬場景運行的過程中,該服務器可以每隔50ms輪詢一次該虛擬對象的Bit Map,并把所有Bit位為1的屬性信息和屬性信息的索引發(fā)送給該多個用戶終端,該屬性信息的索引可以包括該虛擬對象的標識和該屬性信息的標識等。
步驟205:將該虛擬對象的標識、該目標數(shù)值屬性信息和該目標數(shù)值屬性信息的標識,通過該第一指定協(xié)議發(fā)送至當前處于該虛擬場景內(nèi)的多個用戶終端,以使該多個用戶終端對當前顯示的該虛擬對象的數(shù)值屬性信息進行更新。
步驟206:將該虛擬對象的標識、該目標字符串屬性信息和該目標字符串屬性信息的標識,通過該第二指定協(xié)議發(fā)送至該多個用戶終端,以使該多個用戶終端對當前顯示的該虛擬對象的字符串屬性信息進行更新。
本發(fā)明實施例中,對于各個虛擬對象的目標屬性信息,可以將該目標屬性信息中的目標數(shù)值屬性信息通過第一指定協(xié)議發(fā)送至該多個用戶端,并將該目標屬性信息中的目標字符串屬性信息通過第二指定協(xié)議發(fā)送至該多個用戶端,從而僅需兩條協(xié)議,即可實現(xiàn)目標屬性信息的同步,大大減少了同步的工作量。
需要說明的是,本發(fā)明實施例僅是以先向該多個用戶終端發(fā)送目標數(shù)值屬性信息,再發(fā)送目標字符串屬性信息為例進行說明,而實際應用中,也可以先發(fā)送目標字符串屬性信息再發(fā)送目標數(shù)值屬性信息,或者將目標數(shù)值屬性信息和目標字符串屬性信息同時發(fā)送,本發(fā)明實施例對此不做限定。
另外,若對目標屬性信息進行了標記,則確定出目標屬性信息,并將目標屬性信息發(fā)送至各個終端后,該目標屬性信息的標記將取消,例如,基于步驟204的舉例,參見圖2G,向各個用戶終端發(fā)送了目標屬性信息后,該屬性位圖中的各個Bit位將均為0。
進一步地,在向多個用戶終端同步屬性信息時,該服務器還可以根據(jù)每個用戶終端登錄的用戶賬號,選擇向該用戶終端是否發(fā)送附加私有屬性信息。具體地,該服務器可以先確定每個附加私有屬性信息對應的用戶賬號,并僅將該附加私有屬性信息發(fā)送至登錄該用戶賬號的用戶終端,而不發(fā)送給其他用戶終端。例如,對于指定終端來說,該附加私有屬性信息可以為該指定終端所擁有的虛擬對象的隱私屬性信息,如該虛擬對象的點券信息、道具信息等,通常來說該隱私屬性信息只能在該指定終端中顯示,而其他用戶終端將不能顯示,因此,只能將該附加私有屬性信息發(fā)送給該指定終端,而不能發(fā)送給其他用戶終端。其中,該指定終端為該多個用戶終端中的任一用戶終端。
進一步地,該服務器還可以對該附件私有屬性信息進行壓縮和加密,從而可以在保護用戶隱私數(shù)據(jù)的同時,節(jié)省網(wǎng)絡資源。
步驟207:當指定終端退出該虛擬場景時,向該指定終端發(fā)送對象銷毀請求,該對象銷毀請求用于指示該指定終端將存儲的該多個虛擬對象的標識和該多個虛擬對象的屬性信息進行刪除。
其中,該對象銷毀請求可以攜帶該虛擬場景中該多個虛擬對象的標識,本發(fā)明實施例對此不做限定。該指定終端為該多個用戶終端中的任一用戶終端。
當該指定終端退出該虛擬場景時,表示該指定終端已無需顯示該虛擬場景的各個虛擬對象,從而該服務器即可向該指定終端發(fā)送對象銷毀請求,以斷開該服務器與該指定終端之間關(guān)于該多個虛擬對象的映射,之后,該服務器也就不會再向該指定終端同步該多個虛擬對象的任何屬性信息。
步驟208:將該虛擬場景中指定虛擬對象的標識和該指定虛擬對象的屬性信息刪除,該指定虛擬對象為該指定終端在該虛擬場景中所擁有的虛擬對象。
當該指定終端退出該虛擬場景時,該虛擬場景中也就不會再顯示該指定終端在該虛擬場景中所擁有的虛擬對象,因此,該服務器還需將該虛擬場景中該指定虛擬對象的標識和該指定虛擬對象的屬性信息進行刪除。
本發(fā)明實施例提供的網(wǎng)絡游戲系統(tǒng),可以將服務器和用戶終端對應各個虛擬對象的屬性信息歸納為數(shù)值屬性信息和字符串屬性信息的集合,然后把這些屬性信息在服務器和用戶終端之間做一對一的映射?;谶@種映射機制,在用戶終端進入虛擬場景時,該服務器可以采用統(tǒng)一通知機制,將該虛擬場景中的各個虛擬對象的所有屬性信息全量同步給該用戶終端,之后在后續(xù)的屬性信息的更新過程中,該服務器可以記錄發(fā)生變化的屬性信息,而且進行兩條協(xié)議即可將發(fā)生變化的屬性信息集中發(fā)送給該用戶終端。在該網(wǎng)絡游戲系統(tǒng)中,可以方便地各個虛擬對象的功能模塊進行擴展,從而極大地簡化對服務器和用戶終端的開發(fā)和同步工作,而且因為是把所有功能模塊的屬性信息一起同步,從而可以方便地對屬性信息進行壓縮和加密等工作,進而節(jié)省了網(wǎng)絡資源,保證了屬性信息的安全性,進一步降低了服務器與用戶終端的同步開銷。
本發(fā)明實施例提供的方法,一方面可以僅向用戶終端同步發(fā)生變化的屬性信息,一方面僅需兩條協(xié)議僅可完成屬性信息的同步工作,和現(xiàn)有基于功能模塊的協(xié)議進行同步的方式相比,本發(fā)明實施例的方法可以避免大量的無效通知協(xié)議,實際應用中,可以減少同步過程中60%以上的網(wǎng)絡資源,并可以減少60%以上的工作量,而且極大了簡化了服務器的后期維護工作,進而極大地節(jié)省了維護費用。
綜上所述,本發(fā)明實施例中,服務器可以對應存儲虛擬場景中各個虛擬對象的多個屬性信息,并可以直接以對象為單位對終端顯示的各個虛擬對象的屬性進行更新,而非以虛擬對象的各個功能模塊為單位進行更新,從而簡化了屬性信息的更新步驟;而且在具體更新過程中,該服務器還可以從該虛擬對象的多個屬性信息中確定目標屬性信息,該目標屬性信息為在該虛擬場景的運行過程中發(fā)生變化的屬性信息,且該目標屬性信息包括目標數(shù)值屬性信息和目標字符串屬性信息,從而該服務器可以將該目標數(shù)值屬性信息通過第一指定協(xié)議發(fā)送至當前處于該虛擬場景內(nèi)的多個用戶終端,并可以將該目標字符串屬性信息通過第二指定協(xié)議發(fā)送至該多個用戶終端,以使該多個用戶終端分別對當前顯示的該虛擬對象的數(shù)值屬性信息和字符串屬性信息進行更新,如此該服務器可以僅向各個終端發(fā)送發(fā)生變化的屬性信息,從而極大地節(jié)省了網(wǎng)絡資源,而且僅需兩條協(xié)議:用于傳輸數(shù)值屬性信息的第一指定協(xié)議和用于發(fā)送字符串屬性信息的第二指定協(xié)議,就可完成各個虛擬對象的屬性信息的同步工作,從而減小了協(xié)議的維護難度,簡化了屬性信息的同步工作。
圖3是本發(fā)明實施例提供的一種屬性信息的更新裝置的結(jié)構(gòu)示意圖,參見圖3,該裝置包括:
確定模塊301,用于對于虛擬場景包括的多個虛擬對象中的每個虛擬對象,從該虛擬對象的多個屬性信息中確定目標屬性信息,該目標屬性信息為在該虛擬場景的運行過程中發(fā)生變化的屬性信息,該目標屬性信息包括目標數(shù)值屬性信息和目標字符串屬性信息;
第一發(fā)送模塊302,用于將該虛擬對象的標識、該目標數(shù)值屬性信息和該目標數(shù)值屬性信息的標識,通過第一指定協(xié)議發(fā)送至當前處于該虛擬場景內(nèi)的多個用戶終端,以使該多個用戶終端對當前顯示的該虛擬對象的數(shù)值屬性信息進行更新,該第一指定協(xié)議用于傳輸數(shù)值屬性信息;
第二發(fā)送模塊303,用于將該虛擬對象的標識、該目標字符串屬性信息和該目標字符串屬性信息的標識,通過第二指定協(xié)議發(fā)送至該多個用戶終端,以使該多個用戶終端對當前顯示的該虛擬對象的字符串屬性信息進行更新,該第二指定協(xié)議用于傳輸字符串屬性信息。
可選地,該裝置還包括:
標記模塊,用于在該虛擬場景的運行過程中,當檢測到該虛擬對象的任一屬性信息發(fā)生變化時,對發(fā)生變化的屬性信息進行標記,得到已標記的屬性信息;
相應地,該確定模塊,包括:
第一確定單元,用于從該虛擬對象的多個屬性信息中確定已標記的屬性信息;
第二確定單元,用于將該已標記的屬性信息確定為該目標屬性信息;
相應地,該裝置還包括:
取消標記模塊,用于取消對該目標屬性信息的標記。
可選地,該標記模塊用于:
將該發(fā)生變化的屬性信息在該虛擬對象的屬性位圖中的標記值從第一預設數(shù)值更改為第二預設數(shù)值,以對該發(fā)生變化的屬性信息進行標記,其中,該屬性位圖用于指示該虛擬對象的多個屬性信息是否發(fā)生改變,該第一預設數(shù)值用于指示屬性信息未發(fā)生改變,該第二預設數(shù)值用于指示屬性信息發(fā)生改變;
相應地,該取消標記模塊用于:
將該目標屬性信息在該虛擬對象的屬性位圖中的標記值從該第二預設數(shù)值更改為該第一預設數(shù)值。
可選地,該裝置還包括:
獲取模塊,用于當接收到指定終端發(fā)送的初始化請求時,基于該指定終端登錄的用戶賬號,獲取該多個虛擬對象中每個虛擬對象的多個屬性信息,每個屬性信息包括數(shù)值屬性信息和字符串屬性信息,該指定終端為該多個用戶終端中的任一終端;
第三發(fā)送模塊,用于對于該多個虛擬對象中的每個虛擬對象,將該虛擬對象的標識、該虛擬對象的多個屬性信息包括的數(shù)值屬性信息以及該數(shù)值屬性信息的標識,通過該第一指定協(xié)議發(fā)送至該指定終端;
第四發(fā)送模塊,用于對于該多個虛擬對象中的每個虛擬對象,將該虛擬對象的標識、該虛擬對象的多個屬性信息包括的字符串屬性信息以及該字符串屬性信息的標識,通過該第二指定協(xié)議發(fā)送至該指定終端。
可選地,該裝置還包括:
第五發(fā)送模塊,用于當指定終端退出該虛擬場景時,向該指定終端發(fā)送對象銷毀請求,該對象銷毀請求用于指示該指定終端將存儲的該多個虛擬對象的標識和該多個虛擬對象的屬性信息進行刪除;
刪除模塊,用于將該虛擬場景中指定虛擬對象的標識和該指定虛擬對象的屬性信息刪除,該指定虛擬對象為該指定終端在該虛擬場景中所擁有的虛擬對象。
本發(fā)明實施例中,服務器可以對應存儲虛擬場景中各個虛擬對象的多個屬性信息,并可以直接以對象為單位對終端顯示的各個虛擬對象的屬性進行更新,而非以虛擬對象的各個功能模塊為單位進行更新,從而簡化了屬性信息的更新步驟;而且在具體更新過程中,該服務器還可以從該虛擬對象的多個屬性信息中確定目標屬性信息,該目標屬性信息為在該虛擬場景的運行過程中發(fā)生變化的屬性信息,且該目標屬性信息包括目標數(shù)值屬性信息和目標字符串屬性信息,從而該服務器可以將該目標數(shù)值屬性信息通過第一指定協(xié)議發(fā)送至當前處于該虛擬場景內(nèi)的多個用戶終端,并可以將該目標字符串屬性信息通過第二指定協(xié)議發(fā)送至該多個用戶終端,以使該多個用戶終端分別對當前顯示的該虛擬對象的數(shù)值屬性信息和字符串屬性信息進行更新,如此該服務器可以僅向各個終端發(fā)送發(fā)生變化的屬性信息,從而極大地節(jié)省了網(wǎng)絡資源,而且僅需兩條協(xié)議:用于傳輸數(shù)值屬性信息的第一指定協(xié)議和用于發(fā)送字符串屬性信息的第二指定協(xié)議,就可完成各個虛擬對象的屬性信息的同步工作,從而減小了協(xié)議的維護難度,簡化了屬性信息的同步工作。
需要說明的是:上述實施例提供的屬性信息的更新裝置在更新屬性信息時,僅以上述各功能模塊的劃分進行舉例說明,實際應用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將設備的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的屬性信息的更新裝置與屬性信息的更新方法實施例屬于同一構(gòu)思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。
圖4是本發(fā)明實施例提供的一種屬性信息的更新裝置的服務器結(jié)構(gòu)示意圖。該服務器可以是后臺服務器集群中的服務器。具體來講:
服務器400包括中央處理單元(CPU)401、包括隨機存取存儲器(RAM)402和只讀存儲器(ROM)403的系統(tǒng)存儲器404,以及連接系統(tǒng)存儲器404和中央處理單元401的系統(tǒng)總線405。服務器400還包括幫助計算機內(nèi)的各個器件之間傳輸信息的基本輸入/輸出系統(tǒng)(I/O系統(tǒng))406,和用于存儲操作系統(tǒng)413、應用程序414和其他程序模塊415的大容量存儲設備407。
基本輸入/輸出系統(tǒng)406包括有用于顯示信息的顯示器408和用于用戶輸入信息的諸如鼠標、鍵盤之類的輸入設備409。其中顯示器408和輸入設備409都通過連接到系統(tǒng)總線405的輸入輸出控制器410連接到中央處理單元401。基本輸入/輸出系統(tǒng)406還可以包括輸入輸出控制器410以用于接收和處理來自鍵盤、鼠標、或電子觸控筆等多個其他設備的輸入。類似地,輸入輸出控制器410還提供輸出到顯示屏、打印機或其他類型的輸出設備。
大容量存儲設備407通過連接到系統(tǒng)總線405的大容量存儲控制器(未示出)連接到中央處理單元401。大容量存儲設備407及其相關(guān)聯(lián)的計算機可讀介質(zhì)為服務器400提供非易失性存儲。也就是說,大容量存儲設備407可以包括諸如硬盤或者CD-ROM驅(qū)動器之類的計算機可讀介質(zhì)(未示出)。
不失一般性,計算機可讀介質(zhì)可以包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括以用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)等信息的任何方法或技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。計算機存儲介質(zhì)包括RAM、ROM、EPROM、EEPROM、閃存或其他固態(tài)存儲其技術(shù),CD-ROM、DVD或其他光學存儲、磁帶盒、磁帶、磁盤存儲或其他磁性存儲設備。當然,本領域技術(shù)人員可知計算機存儲介質(zhì)不局限于上述幾種。上述的系統(tǒng)存儲器404和大容量存儲設備407可以統(tǒng)稱為存儲器。
根據(jù)本發(fā)明的各種實施例,服務器400還可以通過諸如因特網(wǎng)等網(wǎng)絡連接到網(wǎng)絡上的遠程計算機運行。也即服務器400可以通過連接在系統(tǒng)總線405上的網(wǎng)絡接口單元411連接到網(wǎng)絡412,或者說,也可以使用網(wǎng)絡接口單元411來連接到其他類型的網(wǎng)絡或遠程計算機系統(tǒng)(未示出)。
上述存儲器還包括一個或者一個以上的程序,一個或者一個以上程序存儲于存儲器中,被配置由CPU執(zhí)行。所述一個或者一個以上程序包含用于進行本發(fā)明實施例提供的如下所述的屬性信息的更新方法的指令,包括:
對于虛擬場景包括的多個虛擬對象中的每個虛擬對象,從所述虛擬對象的多個屬性信息中確定目標屬性信息,所述目標屬性信息為在所述虛擬場景的運行過程中發(fā)生變化的屬性信息,所述目標屬性信息包括目標數(shù)值屬性信息和目標字符串屬性信息;
將所述虛擬對象的標識、所述目標數(shù)值屬性信息和所述目標數(shù)值屬性信息的標識,通過第一指定協(xié)議發(fā)送至當前處于所述虛擬場景內(nèi)的多個用戶終端,以使所述多個用戶終端對當前顯示的所述虛擬對象的數(shù)值屬性信息進行更新,所述第一指定協(xié)議用于傳輸數(shù)值屬性信息;
將所述虛擬對象的標識、所述目標字符串屬性信息和所述目標字符串屬性信息的標識,通過第二指定協(xié)議發(fā)送至所述多個用戶終端,以使所述多個用戶終端對當前顯示的所述虛擬對象的字符串屬性信息進行更新,所述第二指定協(xié)議用于傳輸字符串屬性信息。
可選地,所述從所述虛擬對象的多個屬性信息中確定目標屬性信息之前,還包括:
在所述虛擬場景的運行過程中,當檢測到所述虛擬對象的任一屬性信息發(fā)生變化時,對發(fā)生變化的屬性信息進行標記,得到已標記的屬性信息;
相應地,所述從所述虛擬對象的多個屬性信息中確定目標屬性信息,包括:
從所述虛擬對象的多個屬性信息中確定已標記的屬性信息;
將所述已標記的屬性信息確定為所述目標屬性信息;
相應地,所述從所述虛擬對象的多個屬性信息中確定目標屬性信息之后,還包括:
取消對所述目標屬性信息的標記。
可選地,所述對發(fā)生變化的屬性信息進行標記,得到已標記的屬性信息,包括:
將所述發(fā)生變化的屬性信息在所述虛擬對象的屬性位圖中的標記值從第一預設數(shù)值更改為第二預設數(shù)值,以對所述發(fā)生變化的屬性信息進行標記,其中,所述屬性位圖用于指示所述虛擬對象的多個屬性信息是否發(fā)生改變,所述第一預設數(shù)值用于指示屬性信息未發(fā)生改變,所述第二預設數(shù)值用于指示屬性信息發(fā)生改變;
相應地,所述取消對所述目標屬性信息的標記,包括:
將所述目標屬性信息在所述虛擬對象的屬性位圖中的標記值從所述第二預設數(shù)值更改為所述第一預設數(shù)值。
可選地,所述對于虛擬場景包括的多個虛擬對象中的每個虛擬對象,從所述虛擬對象的多個屬性信息中確定目標屬性信息之前,還包括:
當接收到指定終端發(fā)送的初始化請求時,基于所述指定終端登錄的用戶賬號,獲取所述多個虛擬對象中每個虛擬對象的多個屬性信息,每個屬性信息包括數(shù)值屬性信息和字符串屬性信息,所述指定終端為所述多個用戶終端中的任一終端;
對于所述多個虛擬對象中的每個虛擬對象,將所述虛擬對象的標識、所述虛擬對象的多個屬性信息包括的數(shù)值屬性信息以及所述數(shù)值屬性信息的標識,通過所述第一指定協(xié)議發(fā)送至所述指定終端;
將所述虛擬對象的標識、所述虛擬對象的多個屬性信息包括的字符串屬性信息以及所述字符串屬性信息的標識,通過所述第二指定協(xié)議發(fā)送至所述指定終端。
可選地,所述方法還包括:
當指定終端退出所述虛擬場景時,向所述指定終端發(fā)送對象銷毀請求,所述對象銷毀請求用于指示所述指定終端將存儲的所述多個虛擬對象的標識和所述多個虛擬對象的屬性信息進行刪除;
將所述虛擬場景中指定虛擬對象的標識和所述指定虛擬對象的屬性信息刪除,所述指定虛擬對象為所述指定終端在所述虛擬場景中所擁有的虛擬對象。
本發(fā)明實施例中,服務器可以對應存儲虛擬場景中各個虛擬對象的多個屬性信息,并可以直接以對象為單位對終端顯示的各個虛擬對象的屬性進行更新,而非以虛擬對象的各個功能模塊為單位進行更新,從而簡化了屬性信息的更新步驟;而且在具體更新過程中,該服務器還可以從該虛擬對象的多個屬性信息中確定目標屬性信息,該目標屬性信息為在該虛擬場景的運行過程中發(fā)生變化的屬性信息,且該目標屬性信息包括目標數(shù)值屬性信息和目標字符串屬性信息,從而該服務器可以將該目標數(shù)值屬性信息通過第一指定協(xié)議發(fā)送至當前處于該虛擬場景內(nèi)的多個用戶終端,并可以將該目標字符串屬性信息通過第二指定協(xié)議發(fā)送至該多個用戶終端,以使該多個用戶終端分別對當前顯示的該虛擬對象的數(shù)值屬性信息和字符串屬性信息進行更新,如此該服務器可以僅向各個終端發(fā)送發(fā)生變化的屬性信息,從而極大地節(jié)省了網(wǎng)絡資源,而且僅需兩條協(xié)議:用于傳輸數(shù)值屬性信息的第一指定協(xié)議和用于發(fā)送字符串屬性信息的第二指定協(xié)議,就可完成各個虛擬對象的屬性信息的同步工作,從而減小了協(xié)議的維護難度,簡化了屬性信息的同步工作。
本領域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。