本發(fā)明涉及游戲開發(fā)技術(shù)領(lǐng)域,尤其涉及基于unity3d的游戲資源離散加載方法及系統(tǒng)。
背景技術(shù):
隨著媒體互聯(lián)網(wǎng)的迅速發(fā)展,數(shù)字互動娛樂延伸到新的領(lǐng)域,網(wǎng)絡游戲是近年來得到廣泛關(guān)注并且發(fā)展極為迅速的一個產(chǎn)業(yè),如今我國網(wǎng)絡游戲業(yè)的巨大市場使得游戲從業(yè)人員不斷發(fā)展軟件技術(shù)以提升玩家的游戲體驗。
現(xiàn)有的游戲客戶端通常包括游戲運行時所需的所有游戲資源,例如,圖片、音頻和視頻等資源。而對于一個在線游戲,其運行所需的游戲資源的數(shù)量非常龐大,導致現(xiàn)有的游戲客戶端整體容量比較龐大,增加了游戲客戶端分發(fā)部署的難度,導致游戲資源不易管理,且易造成重復加載。
因此,現(xiàn)有技術(shù)中的缺陷是,游戲運行時,所需要的游戲資源數(shù)量過于龐大,導致游戲資源不易管理,且易造成重復加載。
技術(shù)實現(xiàn)要素:
針對上述技術(shù)問題,本發(fā)明提供一種基于unity3d的游戲資源離散加載方法及系統(tǒng),采用了將游戲資源分成多個預制件,為每個預制件對應設置版本號及下載地址,生成assetbundle資源包,通過所需游戲資源對應的版本號查找對應的assetbundle資源包,即可實現(xiàn)游戲資源的實時加載,使游戲資源便于管理,由于版本號是唯一的,因此不會出現(xiàn)重復加載的現(xiàn)象。
為解決上述技術(shù)問題,本發(fā)明提供的技術(shù)方案是:
第一方面,本發(fā)明提供一種基于unity3d的游戲資源離散加載方法,包括:
步驟s1,創(chuàng)建微端引擎,所述微端引擎包括微端客戶端和微端服務器;所述微端客戶端和所述微端服務器通過網(wǎng)絡連接,所述微端服務器中存儲游戲資源,且所述微端服務器定時對所述游戲資源進行更新操作;
步驟s2,對所述游戲資源進行處理,得到多個預制件,每個預制件對應生成一個版本號,并為每個版本號對應設置一個下載地址;
步驟s3,將所述多個預制件生成一個assetbundle資源包,所述asset-bundle資源包存儲在本地或服務器中;
步驟s4,獲得初始游戲資源的請求消息,進行游戲進程啟動;
步驟s5,在所述游戲進程啟動成功后,所述游戲進程根據(jù)當前時刻的游戲場景,推算出距離當前時刻一定時間間隔內(nèi)所需的游戲資源,向所述微端客戶端發(fā)送預下載所述所需的游戲資源的請求消息;
步驟s6,根據(jù)所述微端客戶端接收到的所述請求消息,得到所述所需的游戲資源對應的版本號及對應的下載地址;
步驟s7,根據(jù)所述版本號及下載地址在所述assetbundle資源包中查找游戲資源,查找得到的游戲資源為所述所需的游戲資源,完成對所需的游戲資源進行加載的過程。
本發(fā)明提供的基于unity3d的游戲資源離散加載方法,其技術(shù)方案為:創(chuàng)建微端引擎,所述微端引擎包括微端客戶端和微端服務器;所述微端客戶端和所述微端服務器通過網(wǎng)絡連接,所述微端服務器中存儲游戲資源,且所述微端服務器定時對所述游戲資源進行更新操作;
對所述游戲資源進行處理,得到多個預制件,每個預制件對應生成一個版本號,并為每個版本號對應設置一個下載地址;將所述多個預制件生成一個assetbundle資源包,所述assetbundle資源包存儲在本地或服務器中;獲得初始游戲資源的請求消息,進行游戲進程啟動;
在所述游戲進程啟動成功后,所述游戲進程根據(jù)當前時刻的游戲場景,推算出距離當前時刻一定時間間隔內(nèi)所需的游戲資源,向所述微端客戶端發(fā)送預下載所述所需的游戲資源的請求消息;根據(jù)所述微端客戶端接收到的所述請求消息,得到所述所需的游戲資源對應的版本號及對應的下載地址;根據(jù)所述版本號及下載地址在所述assetbundle資源包中查找游戲資源,查找得到的游戲資源為所述所需的游戲資源,完成對所需的游戲資源進行加載的過程。
本發(fā)明提供的基于unity3d的游戲資源離散加載方法,采用了將游戲資源分成多個預制件,為每個預制件對應設置版本號及下載地址,生成assetbundle資源包,通過所需游戲資源對應的版本號查找對應的assetbundle資源包,即可實現(xiàn)游戲資源的實時加載,使游戲資源便于管理,由于版本號是唯一的,因此不會出現(xiàn)重復加載的現(xiàn)象。
進一步地,所述步驟s2中,對所述游戲資源進行處理,具體為:
對所述游戲資源進行類別判斷,將相同類別的游戲資源存入到同一個預制件中,將不同類別的游戲資源存入到不同的預制件中。
將相同類別的游戲資源存入到一個預制件中,不同類別的游戲資源存入到不同的預制件中,可將游戲資源進行合理的分配,在加載過程中,提高加載速度,且相同類別的游戲資源存入到一個預制件中,可節(jié)約存儲空間。
進一步地,所述步驟s7中,根據(jù)所述版本號及下載地址在所述assetbundle資源包中查找游戲資源,具體為:
在所述本地存儲的assetbundle資源包中查找所述版本號對應的預制件,如果存在,則直接返回所述預制件對應的游戲資源,進行加載;
如果不存在,根據(jù)所述版本號重新從所述服務器存儲的assetbundle資源包中查找所述版本號對應的預制件;
根據(jù)所述版本號對應的下載地址,對所述預制件進行下載,實現(xiàn)對所述預制件對應游戲資源的加載。
如果assetbundle資源包存在本地,可直接根據(jù)版本號進行查找調(diào)用,實現(xiàn)加載,如果assetbundle資源包存在服務器中,找到對應的游戲資源后,先要根據(jù)下載地址將找到的游戲資源下載到本地,再實現(xiàn)加載。根據(jù)assetbundle資源包存儲的地方不同,進行不同的處理,使該方法的兼容性更好。
進一步地,所述步驟s1中,還包括對顯示在所述微端引擎頁面中的游戲資源進行處理:
獲取用戶改變游戲資源存儲位置的請求,所述用戶改變游戲資源存儲位置的請求包括添加新的游戲資源的請求和整理游戲資源請求;
根據(jù)所述用戶改變游戲資源存儲位置的請求,獲得預先保存的操作區(qū)域設置信息,所述操作區(qū)域設置信息用于標識所述操作區(qū)域?qū)儆诳刹僮鲄^(qū)域或者禁止操作區(qū)域;
根據(jù)所述操作區(qū)域設置信息,在可操作區(qū)域中響應所述用戶的請求改變游戲資源的存儲位置。
通過對游戲資源的進一步處理,游戲資源顯示在微端引擎頁面,用戶可進行操作處理的,通過上述處理,可以由用戶自行設置可操作區(qū)域和/或禁止操作區(qū)域,使得禁止操作區(qū)域內(nèi)的游戲資源不受特定改變游戲資源存儲位置請求的影響,因此,無需用戶反復對存儲空間中的資源物品進行整理或者排序,減少了用戶的繁瑣操作,從而顯著地降低了客戶端與服務器的交互,并且減少了服務器的負載,提高了服務器性能,為用戶帶來了更好的體驗。
進一步地,當所述用戶改變游戲資源存儲位置的請求為添加新的游戲資源的請求時,所述根據(jù)所述操作區(qū)域設置信息,在可操作區(qū)域中響應所述用戶的請求改變游戲資源的存儲位置,具體為:
根據(jù)所述操作區(qū)域設置信息,獲得可操作區(qū)域的坐標范圍;
在所述坐標范圍內(nèi)檢索空閑存儲區(qū)域,將所述新的游戲資源存儲在所述空閑存儲區(qū)域內(nèi),建立所述新的游戲資源與所述空閑存儲區(qū)域的對應關(guān)系。
根據(jù)用戶的不同請求,對應進行不同的處理,滿足不同用戶的需求。
進一步地,當所述用戶改變游戲資源存儲位置的請求為整理游戲資源請求時,所述根據(jù)所述操作區(qū)域設置信息,在可操作區(qū)域中響應所述用戶的請求改變游戲資源的存儲位置,具體為:
根據(jù)所述操作區(qū)域設置信息,獲得可操作區(qū)域的坐標范圍;
對所述可操作區(qū)域的坐標范圍內(nèi)的游戲資源進行位置調(diào)整,將調(diào)整后的游戲資源存儲在所述可操作區(qū)域中的對應存儲位置,并建立調(diào)整后的游戲資源與其對應的存儲位置的對應關(guān)系。
根據(jù)用戶的不同請求,對應進行不同的處理,滿足不同用戶的需求。
第二方面,本發(fā)明提供了一種基于unity3d的游戲資源離散加載系統(tǒng),包括:
微端引擎創(chuàng)建模塊,用于創(chuàng)建微端引擎,所述微端引擎包括微端客戶端和微端服務器;所述微端客戶端和所述微端服務器通過網(wǎng)絡連接,所述微端服務器中存儲游戲資源,且所述微端服務器定時對所述游戲資源進行更新操作;
游戲資源處理模塊,用于對所述游戲資源進行處理,得到多個預制件,每個預制件對應生成一個版本號,并為每個版本號對應設置一個下載地址;
assetbundle生成模塊,用于將所述多個預制件生成一個assetbundle資源包,所述assetbundle資源包存儲在本地或服務器中;
游戲進程啟動模塊,用于獲得初始游戲資源的請求消息,進行游戲進程啟動;
所需的游戲資源獲取模塊,用于在所述游戲進程啟動成功后,所述游戲進程根據(jù)當前時刻的游戲場景,推算出距離當前時刻一定時間間隔內(nèi)所需的游戲資源,向所述微端客戶端發(fā)送預下載所述所需的游戲資源的請求消息;
版本號及下載地址獲取模塊,用于根據(jù)所述微端客戶端接收到的所述請求消息,得到所述所需的游戲資源對應的版本號及對應的下載地址;
游戲資源加載模塊,用于根據(jù)所述版本號及下載地址在所述assetbundle資源包中查找游戲資源,查找得到的游戲資源為所述所需的游戲資源,完成對所需的游戲資源進行加載的過程。
本發(fā)明提供的基于unity3d的游戲資源離散加載系統(tǒng),其技術(shù)方案為:微端引擎創(chuàng)建模塊,用于創(chuàng)建微端引擎,所述微端引擎包括微端客戶端和微端服務器;所述微端客戶端和所述微端服務器通過網(wǎng)絡連接,所述微端服務器中存儲游戲資源,且所述微端服務器定時對所述游戲資源進行更新操作;
游戲資源處理模塊,用于對所述游戲資源進行處理,得到多個預制件,每個預制件對應生成一個版本號,并為每個版本號對應設置一個下載地址;
assetbundle生成模塊,用于將所述多個預制件生成一個assetbundle資源包,所述assetbundle資源包存儲在本地或服務器中;游戲進程啟動模塊,用于獲得初始游戲資源的請求消息,進行游戲進程啟動;所需的游戲資源獲取模塊,用于在所述游戲進程啟動成功后,所述游戲進程根據(jù)當前時刻的游戲場景,推算出距離當前時刻一定時間間隔內(nèi)所需的游戲資源,向所述微端客戶端發(fā)送預下載所述所需的游戲資源的請求消息;
版本號及下載地址獲取模塊,用于根據(jù)所述微端客戶端接收到的所述請求消息,得到所述所需的游戲資源對應的版本號及對應的下載地址;游戲資源加載模塊,用于根據(jù)所述版本號及下載地址在所述assetbundle資源包中查找游戲資源,查找得到的游戲資源為所述所需的游戲資源,完成對所需的游戲資源進行加載的過程。
本發(fā)明提供的基于unity3d的游戲資源離散加載系統(tǒng),采用了將游戲資源分成多個預制件,為每個預制件對應設置版本號及下載地址,生成assetbundle資源包,通過所需游戲資源對應的版本號查找對應的assetbundle資源包,即可實現(xiàn)游戲資源的實時加載,使游戲資源便于管理,由于版本號是唯一的,因此不會出現(xiàn)重復加載的現(xiàn)象。
進一步地,所述游戲資源處理模塊,用于對所述游戲資源進行處理:
對所述游戲資源進行類別判斷,將相同類別的游戲資源存入到同一個預制件中,將不同類別的游戲資源存入到不同的預制件中。
將相同類別的游戲資源存入到一個預制件中,不同類別的游戲資源存入到不同的預制件中,可將游戲資源進行合理的分配,在加載過程中,提高加載速度,且相同類別的游戲資源存入到一個預制件中,可節(jié)約存儲空間。
進一步地,所述游戲資源加載模塊,用于根據(jù)所述版本號及下載地址在所述assetbundle資源包中查找游戲資源:
在所述本地存儲的assetbundle資源包中查找所述版本號對應的預制件,如果存在,則直接返回所述預制件對應的游戲資源,進行加載;
如果不存在,根據(jù)所述版本號重新從所述服務器存儲的assetbundle資源包中查找所述版本號對應的預制件;
根據(jù)所述版本號對應的下載地址,對所述預制件進行下載,實現(xiàn)對所述預制件對應游戲資源的加載。
在所述本地存儲的assetbundle資源包中查找所述版本號對應的預制件,如果存在,則直接返回所述預制件對應的游戲資源,進行加載;
如果不存在,根據(jù)所述版本號重新從所述服務器存儲的assetbundle資源包中查找所述版本號對應的預制件;
根據(jù)所述版本號對應的下載地址,對所述預制件進行下載,實現(xiàn)對所述預制件對應游戲資源的加載。
如果assetbundle資源包存在本地,可直接根據(jù)版本號進行查找調(diào)用,實現(xiàn)加載,如果assetbundle資源包存在服務器中,找到對應的游戲資源后,先要根據(jù)下載地址將找到的游戲資源下載到本地,再實現(xiàn)加載。根據(jù)assetbundle資源包存儲的地方不同,進行不同的處理,使該方法的兼容性更好。
進一步地,所述微端引擎創(chuàng)建模塊,用于對顯示在所述微端引擎頁面中的游戲資源進行處理:
獲取用戶改變游戲資源存儲位置的請求,所述用戶改變游戲資源存儲位置的請求包括添加新的游戲資源的請求和整理游戲資源請求;
根據(jù)所述用戶改變游戲資源存儲位置的請求,獲得預先保存的操作區(qū)域設置信息,所述操作區(qū)域設置信息用于標識所述操作區(qū)域?qū)儆诳刹僮鲄^(qū)域或者禁止操作區(qū)域;
根據(jù)所述操作區(qū)域設置信息,在可操作區(qū)域中響應所述用戶的請求改變游戲資源的存儲位置。
通過對游戲資源的進一步處理,游戲資源顯示在微端引擎頁面,用戶可進行操作處理的,通過上述處理,可以由用戶自行設置可操作區(qū)域和/或禁止操作區(qū)域,使得禁止操作區(qū)域內(nèi)的游戲資源不受特定改變游戲資源存儲位置請求的影響,因此,無需用戶反復對存儲空間中的資源物品進行整理或者排序,減少了用戶的繁瑣操作,從而顯著地降低了客戶端與服務器的交互,并且減少了服務器的負載,提高了服務器性能,為用戶帶來了更好的體驗。
附圖說明
為了更清楚地說明本發(fā)明具體實施方式或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對具體實施方式或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹。
圖1示出了本發(fā)明實施例所提供的一種基于unity3d的游戲資源離散加載方法的流程圖;
圖2示出了本發(fā)明實施例所提供的一種基于unity3d的游戲資源離散加載系統(tǒng)的示意圖;
圖3示出了本發(fā)明本發(fā)明實施例所提供的一種基于unity3d的游戲資源離散加載方法及系統(tǒng)中的應用場景示意圖;
圖4示出了本發(fā)明實施例所提供的一種基于unity3d的游戲資源離散加載方法及系統(tǒng)中現(xiàn)有技術(shù)游戲資源處理方法效果示意圖;
圖5示出了本發(fā)明實施例所提供的一種基于unity3d的游戲資源離散加載方法及系統(tǒng)中的微端引擎頁面中的游戲資源處理效果示意圖。
具體實施方式
下面將結(jié)合附圖對本發(fā)明技術(shù)方案的實施例進行詳細的描述。以下實施例僅用于更加清楚地說明本發(fā)明的技術(shù)方案,因此只是作為示例,而不能以此來限制本發(fā)明的保護范圍。
實施例一
第一方面,圖1示出了本發(fā)明實施例所提供的一種基于unity3d的游戲資源離散加載方法的流程圖;如圖1所示,實施例一提供了一種基于unity3d的游戲資源離散加載方法,包括:
步驟s1,創(chuàng)建微端引擎,微端引擎包括微端客戶端和微端服務器;微端客戶端和微端服務器通過網(wǎng)絡連接,微端服務器中存儲游戲資源,且微端服務器定時對游戲資源進行更新操作;
其中,游戲資源中包括游戲模型資源和ui資源。
其中,微端引擎為unity3d游戲引擎。
步驟s2,對游戲資源進行處理,得到多個預制件,每個預制件對應生成一個版本號,并為每個版本號對應設置一個下載地址;
步驟s3,將多個預制件生成一個assetbundle資源包,assetbundle資源包存儲在本地或服務器中;
步驟s4,獲得初始游戲資源的請求消息,進行游戲進程啟動;
步驟s5,在游戲進程啟動成功后,游戲進程根據(jù)當前時刻的游戲場景,推算出距離當前時刻一定時間間隔內(nèi)所需的游戲資源,向微端客戶端發(fā)送預下載所需的游戲資源的請求消息;
步驟s6,根據(jù)微端客戶端接收到的請求消息,得到所需的游戲資源對應的版本號及對應的下載地址;
步驟s7,根據(jù)版本號及下載地址在assetbundle資源包中查找游戲資源,查找得到的游戲資源為所需的游戲資源,完成對所需的游戲資源進行加載的過程。
本發(fā)明提供的基于unity3d的游戲資源離散加載方法,其技術(shù)方案為:創(chuàng)建微端引擎,微端引擎包括微端客戶端和微端服務器;微端客戶端和微端服務器通過網(wǎng)絡連接,微端服務器中存儲游戲資源,且微端服務器定時對游戲資源進行更新操作;
對游戲資源進行處理,得到多個預制件,每個預制件對應生成一個版本號,并為每個版本號對應設置一個下載地址;將多個預制件生成一個assetbundle資源包,assetbundle資源包存儲在本地或服務器中;獲得初始游戲資源的請求消息,進行游戲進程啟動;
在游戲進程啟動成功后,游戲進程根據(jù)當前時刻的游戲場景,推算出距離當前時刻一定時間間隔內(nèi)所需的游戲資源,向微端客戶端發(fā)送預下載所需的游戲資源的請求消息;根據(jù)微端客戶端接收到的請求消息,得到所需的游戲資源對應的版本號及對應的下載地址;根據(jù)版本號及下載地址在assetbundle資源包中查找游戲資源,查找得到的游戲資源為所需的游戲資源,完成對所需的游戲資源進行加載的過程。
本發(fā)明提供的基于unity3d的游戲資源離散加載方法,采用了將游戲資源分成多個預制件,為每個預制件對應設置版本號及下載地址,生成assetbundle資源包,通過所需游戲資源對應的版本號查找對應的assetbundle資源包,即可實現(xiàn)游戲資源的實時加載,使游戲資源便于管理,由于版本號是唯一的,因此不會出現(xiàn)重復加載的現(xiàn)象。
具體地,步驟s2中,對游戲資源進行處理,具體為:
對游戲資源進行類別判斷,將相同類別的游戲資源存入到同一個預制件中,將不同類別的游戲資源存入到不同的預制件中。
將相同類別的游戲資源存入到一個預制件中,不同類別的游戲資源存入到不同的預制件中,可將游戲資源進行合理的分配,在加載過程中,提高加載速度,且相同類別的游戲資源存入到一個預制件中,可節(jié)約存儲空間。
具體地,步驟s7中,根據(jù)版本號及下載地址在assetbundle資源包中查找游戲資源,具體為:
在本地存儲的assetbundle資源包中查找版本號對應的預制件,如果存在,則直接返回預制件對應的游戲資源,進行加載;
如果不存在,根據(jù)版本號重新從服務器存儲的assetbundle資源包中查找版本號對應的預制件;
根據(jù)版本號對應的下載地址,對預制件進行下載,實現(xiàn)對預制件對應游戲資源的加載。
如果assetbundle資源包存在本地,可直接根據(jù)版本號進行查找調(diào)用,實現(xiàn)加載,如果assetbundle資源包存在服務器中,找到對應的游戲資源后,先要根據(jù)下載地址將找到的游戲資源下載到本地,再實現(xiàn)加載。根據(jù)assetbundle資源包存儲的地方不同,進行不同的處理,使該方法的兼容性更好。
優(yōu)選地,在assetbundle資源包中,還存儲游戲資源版本號和最新的校驗碼的對應關(guān)系,微端服務器通過以下方式計算得到并維護校驗碼:
初始時,微端服務器查找游戲資源,得到與游戲資源版本號對應的游戲資源;
微端服務器計算所得到的游戲資源的校驗碼;
微端服務器存儲游戲資源版本號和校驗碼的對應關(guān)系;
每當游戲資源所存儲的游戲資源進行更新時,微端服務器重新計算該游戲資源的校驗碼,得到最新的校驗碼,并更新assetbundle資源包,使游戲資源所存儲的校驗碼均為最新的校驗碼;
本發(fā)明中,assetbundle資源包的主要作用為:保證微端客戶端從微端服務器所下載得到的游戲資源的完整性,以及,如果微端客戶端的緩存中存在所需的游戲資源,能夠基于assetbundle資源包中的校驗碼,而驗證緩存中存在的游戲資源是否為最新的文件。
因此,每當游戲資源所存儲的某個游戲資源進行更新時,微端服務器即更新包含更新資源版本號的assetbundle資源包中的對應的校驗碼,例如,以校驗碼為md5碼為例,對于游戲資源中的某個游戲畫面資源a,原游戲畫面資源a的內(nèi)容包括2015.02.11的日期信息;則:微端服務器使用openssh開源庫計算得到原游戲畫面資源a的md5值為100;則:原assetbundle資源包存儲游戲畫面資源a與100的對應關(guān)系;當游戲資源中的原游戲畫面資源a的日期由2015.02.11更新為2015.02.13時,微端服務器使用openssh開源庫重新計算得到新的md5值,設為200;則:微端服務器需要將assetbundle資源包更新為:游戲畫面資源a與200的對應關(guān)系;通過此種方式,可基于md5值,實現(xiàn)對游戲資源的校驗。
第二方面,參見圖2,本實施例提供了一種基于unity3d的游戲資源離散加載系統(tǒng)10,包括:
微端引擎創(chuàng)建模塊101,用于創(chuàng)建微端引擎,微端引擎包括微端客戶端和微端服務器;微端客戶端和微端服務器通過網(wǎng)絡連接,微端服務器中存儲游戲資源,且微端服務器定時對游戲資源進行更新操作;
游戲資源處理模塊102,用于對游戲資源進行處理,得到多個預制件,每個預制件對應生成一個版本號,并為每個版本號對應設置一個下載地址;
assetbundle生成模塊103,用于將多個預制件生成一個assetbundle資源包,assetbundle資源包存儲在本地或服務器中;
游戲進程啟動模塊104,用于獲得初始游戲資源的請求消息,進行游戲進程啟動;
所需的游戲資源獲取模塊105,用于在游戲進程啟動成功后,游戲進程根據(jù)當前時刻的游戲場景,推算出距離當前時刻一定時間間隔內(nèi)所需的游戲資源,向微端客戶端發(fā)送預下載所需的游戲資源的請求消息;
版本號及下載地址獲取模塊106,用于根據(jù)微端客戶端接收到的請求消息,得到所需的游戲資源對應的版本號及對應的下載地址;
游戲資源加載模塊107,用于根據(jù)版本號及下載地址在assetbundle資源包中查找游戲資源,查找得到的游戲資源為所需的游戲資源,完成對所需的游戲資源進行加載的過程。
本發(fā)明提供的基于unity3d的游戲資源離散加載系統(tǒng)10,其技術(shù)方案為:通過微端引擎創(chuàng)建模塊101,創(chuàng)建微端引擎,微端引擎包括微端客戶端和微端服務器;微端客戶端和微端服務器通過網(wǎng)絡連接,微端服務器中存儲游戲資源,且微端服務器定時對游戲資源進行更新操作;
通過游戲資源處理模塊102,對游戲資源進行處理,得到多個預制件,每個預制件對應生成一個版本號,并為每個版本號對應設置一個下載地址;
通過assetbundle生成模塊103,將多個預制件生成一個assetbundle資源包,assetbundle資源包存儲在本地或服務器中;通過游戲進程啟動模塊104,獲得初始游戲資源的請求消息,進行游戲進程啟動;通過所需的游戲資源獲取模塊105,用于在游戲進程啟動成功后,游戲進程根據(jù)當前時刻的游戲場景,推算出距離當前時刻一定時間間隔內(nèi)所需的游戲資源,向微端客戶端發(fā)送預下載所需的游戲資源的請求消息;
通過版本號及下載地址獲取模塊106,根據(jù)微端客戶端接收到的請求消息,得到所需的游戲資源對應的版本號及對應的下載地址;通過游戲資源加載模塊107,根據(jù)版本號及下載地址在assetbundle資源包中查找游戲資源,查找得到的游戲資源為所需的游戲資源,完成對所需的游戲資源進行加載的過程。
本發(fā)明提供的基于unity3d的游戲資源離散加載系統(tǒng)10,采用了將游戲資源分成多個預制件,為每個預制件對應設置版本號及下載地址,生成assetbundle資源包,通過所需游戲資源對應的版本號查找對應的assetbundle資源包,即可實現(xiàn)游戲資源的實時加載,使游戲資源便于管理,由于版本號是唯一的,因此不會出現(xiàn)重復加載的現(xiàn)象。
具體地,游戲資源處理模塊102,用于對游戲資源進行處理:
對游戲資源進行類別判斷,將相同類別的游戲資源存入到同一個預制件中,將不同類別的游戲資源存入到不同的預制件中。
將相同類別的游戲資源存入到一個預制件中,不同類別的游戲資源存入到不同的預制件中,可將游戲資源進行合理的分配,在加載過程中,提高加載速度,且相同類別的游戲資源存入到一個預制件中,可節(jié)約存儲空間。
具體地,游戲資源加載模塊107,用于根據(jù)版本號及下載地址在asset-bundle資源包中查找游戲資源:
在本地存儲的assetbundle資源包中查找版本號對應的預制件,如果存在,則直接返回預制件對應的游戲資源,進行加載;
如果不存在,根據(jù)版本號重新從服務器存儲的assetbundle資源包中查找版本號對應的預制件;
根據(jù)版本號對應的下載地址,對預制件進行下載,實現(xiàn)對預制件對應游戲資源的加載。
在本地存儲的assetbundle資源包中查找版本號對應的預制件,如果存在,則直接返回預制件對應的游戲資源,進行加載;
如果不存在,根據(jù)版本號重新從服務器存儲的assetbundle資源包中查找版本號對應的預制件;
根據(jù)版本號對應的下載地址,對預制件進行下載,實現(xiàn)對預制件對應游戲資源的加載。
如果assetbundle資源包存在本地,可直接根據(jù)版本號進行查找調(diào)用,實現(xiàn)加載,如果assetbundle資源包存在服務器中,找到對應的游戲資源后,先要根據(jù)下載地址將找到的游戲資源下載到本地,再實現(xiàn)加載。根據(jù)assetbundle資源包存儲的地方不同,進行不同的處理,使該方法的兼容性更好。
實施例二
游戲資源包括游戲模型資源和ui資源,對應的微端引擎頁面中的游戲資源通常由游戲玩家進行控制,在實際應用中,玩家往往會按照自己的操作習慣擺放存儲空間中的資源物品,當獲得新道具或者發(fā)起整理存儲空間的請求時,現(xiàn)有技術(shù)中系統(tǒng)自定義的擺放或者排序方法往往會影響或者改變玩家業(yè)已存在的資源物品擺放順序,造成玩家操作和道具使用上的不便。玩家在資源物品的擺放順序被改變后,需要重新對存儲空間中的資源物品進行整理或者排序,當玩家擁有的資源物品較多時,上述操作是非常繁瑣的過程,服務器也需要頻繁響應玩家的請求,造成服務器的負載加重。
基于此,本發(fā)明對微端引擎頁面中的游戲資源進行了處理上的改進,具體方案如下:
首先,本發(fā)明提供的方法主要應用在客戶端設備中,即微端客戶端,客戶端設備可以應用到電子設備中,電子設備可以是現(xiàn)有的、正在研發(fā)的或?qū)硌邪l(fā)的任何電子設備,包括但不限于:現(xiàn)有的、正在研發(fā)的或?qū)硌邪l(fā)的、臺式計算機、膝上型計算機、移動終端(包括智能手機、非智能手機、各種平板電腦)等。另外,本發(fā)明的應用場景中,雖然此處和下面將本發(fā)明實施方式的動作描述為由客戶端設備執(zhí)行,但是這些動作也可以由服務器設備執(zhí)行,即微端服務器,當然也可以部分由客戶端設備執(zhí)行、部分由服務器設備執(zhí)行。本發(fā)明在執(zhí)行主體方面不受限制,只要執(zhí)行了本發(fā)明實施方式所公開的動作即可。
對顯示在微端引擎頁面中的游戲資源進行處理的具體方案為:
獲取用戶改變游戲資源存儲位置的請求,用戶改變游戲資源存儲位置的請求包括添加新的游戲資源的請求和整理游戲資源請求;
根據(jù)用戶改變游戲資源存儲位置的請求,獲得預先保存的操作區(qū)域設置信息,操作區(qū)域設置信息用于標識操作區(qū)域?qū)儆诳刹僮鲄^(qū)域或者禁止操作區(qū)域;
根據(jù)操作區(qū)域設置信息,在可操作區(qū)域中響應用戶的請求改變游戲資源的存儲位置。
通過對游戲資源的進一步處理,游戲資源顯示在微端引擎頁面,用戶可進行操作處理的,通過上述處理,可以由用戶自行設置可操作區(qū)域和/或禁止操作區(qū)域,使得禁止操作區(qū)域內(nèi)的游戲資源不受特定改變游戲資源存儲位置請求的影響,因此,無需用戶反復對存儲空間中的資源物品進行整理或者排序,減少了用戶的繁瑣操作,從而顯著地降低了客戶端與服務器的交互,并且減少了服務器的負載,提高了服務器性能,為用戶帶來了更好的體驗。
其中,操作區(qū)域設置信息可以由用戶預先設定??蛻舳丝梢越邮沼脩舨僮鲄^(qū)域設置請求,獲得與操作區(qū)域設置請求對應的操作區(qū)域設置信息。
其中,操作區(qū)域設置信息包括禁止操作區(qū)域的開始位置信息和結(jié)束位置信息。用戶設置操作區(qū)域的方式可以是靈活多樣的。
其中,操作區(qū)域設置信息保存在客戶端和/或服務器中。
下面以操作區(qū)域劃分為多個游戲資源格為例進行說明。例如,對應鼠標輸入,可以將用戶按住某一特定按鍵的同時先后選取了兩個游戲資源格的操作作為操作區(qū)域設置操作,將用戶先選取的游戲資源格作為禁止操作區(qū)域的開始位置,將用戶后選取的游戲資源格作為禁止操作區(qū)域的結(jié)束位置,反之亦可。這樣,就可以通過兩個游戲資源格的位置信息獲取禁止操作區(qū)域的位置信息。一般地,只需要記錄禁止操作區(qū)域?qū)钠鹗挤秶纯?,例如開始位置對應的坐標以及結(jié)束位置對應的坐標。又如,在一些實現(xiàn)方式中,當操作區(qū)域劃分為多個游戲資源格時,也可以通過記錄開始資源格和結(jié)束資源格標號的方式作為禁止操作區(qū)域的開始位置信息和結(jié)束位置信息??傊?,具體的實現(xiàn)方式是靈活多樣的,本發(fā)明對此不進行限制。
在另外一種可能的實現(xiàn)方式中,用戶進行操作區(qū)域設置的操作可以是用戶點擊鼠標按鍵連續(xù)劃過多個游戲資源格或者連續(xù)游戲區(qū)域的操作,可以將用戶按下鼠標按鍵的位置作為禁止操作區(qū)域的開始位置,將用戶松開鼠標按鍵的位置作為禁止操作區(qū)域的結(jié)束位置。
需要說明的是,以上以鼠標輸入為例進行說明。對應用戶在具有觸摸屏的終端所對應的手勢輸入操作,亦可通過檢測用戶的手勢輸入的方式確定禁止操作區(qū)域的設置范圍。例如,用戶可以在終端或電子設備上提供的用戶界面上點擊相應區(qū)域或者菜單觸發(fā)操作區(qū)域設置,然后通過兩次觸摸點擊操作設置禁止操作區(qū)域,將第一次觸摸點擊作為禁止操作區(qū)域的開始位置,將第二次觸摸點擊作為禁止操作區(qū)域的結(jié)束位置。當然,用戶可以同時點擊操作區(qū)域的不同位置,將兩個觸摸點之間的區(qū)域作為禁止操作區(qū)域的范圍。
以上對幾種可能的確定操作區(qū)域設置操作的方式進行了說明,需要說明的是,以上均是示例性說明,本領(lǐng)域技術(shù)人員在不付出創(chuàng)造性勞動下獲取的其他實現(xiàn)方式均屬于本發(fā)明的保護范圍。
需要說明的是,當用戶進行了操作區(qū)域設置后,即可以保存操作區(qū)域設置信息,操作區(qū)域設置信息用于標識操作區(qū)域?qū)儆诳刹僮鲄^(qū)域或者禁止操作區(qū)域。操作區(qū)域設置信息還可以包括可操作區(qū)域的起始位置信息和/或禁止操作區(qū)域的起始位置信息。操作區(qū)域設置信息既可以保存在客戶端設備中,也可以保存在服務器設備中,也可以二者都保存。在一種可能的實現(xiàn)方式中,客戶端設備在接收用戶操作區(qū)域設置請求,獲得與操作區(qū)域設置請求對應的操作區(qū)域設置信息后,即將操作區(qū)域設置信息發(fā)送給服務器設備,由服務器設備存儲信息??蛻舳嗽O備在每次啟動游戲的時候或者在接收到用戶改變游戲資源存儲位置的請求時,向服務器設備請求操作區(qū)域設置信息。
優(yōu)選地,在獲得預先保存的操作區(qū)域設置信息之前,客戶端設備還可以先判斷用戶改變游戲資源存儲位置的請求是否為預設的請求類型;如果是,則執(zhí)行獲得預先保存的操作區(qū)域設置信息。例如,客戶端設備可以預先設置只有接收到預設類型的請求時,才觸發(fā)獲得操作區(qū)域設置信息的操作。預設的請求類型可以由系統(tǒng)或者用戶預先設定。例如,預設的請求類型包括添加新的游戲資源的請求和整理游戲資源請求時,那么接收到其他改變游戲資源存儲位置的請求時,則不會觸發(fā)獲得操作區(qū)域設置信息的操作。例如,當改變游戲資源存儲位置的請求為移動游戲資源的請求或者使用游戲資源的請求時,則不會觸發(fā)獲得操作區(qū)域設置信息的操作。
具體實現(xiàn)時,用戶改變游戲資源存儲位置的請求具體可以是:添加新的游戲資源的請求。用戶改變游戲資源存儲位置的請求還可以是整理游戲資源請求。對應不同的改變游戲資源存儲位置的請求類型,具有不同的實現(xiàn)方式。下面以兩種典型的實現(xiàn)方式為例進行說明。
當用戶改變游戲資源存儲位置的請求為添加新的游戲資源的請求時,根據(jù)操作區(qū)域設置信息,在可操作區(qū)域中響應用戶的請求改變游戲資源的存儲位置,具體為:
根據(jù)操作區(qū)域設置信息,獲得可操作區(qū)域的坐標范圍;
在坐標范圍內(nèi)檢索空閑存儲區(qū)域,將新的游戲資源存儲在空閑存儲區(qū)域內(nèi),建立新的游戲資源與空閑存儲區(qū)域的對應關(guān)系。
在這一種實現(xiàn)方式中,客戶端設備根據(jù)獲得的操作區(qū)域設置信息,獲得可以用于存儲新的游戲資源的范圍,即可操作區(qū)域的坐標范圍,在坐標范圍內(nèi)檢索空閑的存儲區(qū)域,將新的游戲資源存儲在空閑存儲區(qū)域內(nèi)。這樣,用戶預先設置的禁止操作區(qū)域內(nèi)的游戲資源的存儲位置將不會由于其他操作而被改變,用戶無需重新對存儲空間內(nèi)的游戲資源進行位置調(diào)整,由此減少了客戶端和服務器設備之間的交互,降低了服務器的負載。
當用戶改變游戲資源存儲位置的請求為整理游戲資源請求時,根據(jù)操作區(qū)域設置信息,在可操作區(qū)域中響應用戶的請求改變游戲資源的存儲位置,具體為:
根據(jù)操作區(qū)域設置信息,獲得可操作區(qū)域的坐標范圍;
對可操作區(qū)域的坐標范圍內(nèi)的游戲資源進行位置調(diào)整,將調(diào)整后的游戲資源存儲在可操作區(qū)域中的對應存儲位置,并建立調(diào)整后的游戲資源與其對應的存儲位置的對應關(guān)系。
在本實現(xiàn)方式中,客戶端設備根據(jù)獲得的操作區(qū)域設置信息,獲得可以進行游戲資源位置調(diào)整的區(qū)域范圍,用即可操作區(qū)域的坐標范圍,對坐標范圍內(nèi)的游戲資源進行調(diào)整。這樣,用戶預先設置的禁止操作區(qū)域內(nèi)的游戲資源的存儲位置將不會進行調(diào)整,而保持其原有的存儲位置,只有可操作區(qū)域內(nèi)的游戲資源才作為調(diào)整的對象進行調(diào)整。
具體實現(xiàn)時,對可操作區(qū)域的坐標范圍內(nèi)的游戲資源進行位置調(diào)整可以根據(jù)預設的方式或策略執(zhí)行。例如,可以根據(jù)可操作區(qū)域的坐標范圍內(nèi)的游戲資源的優(yōu)先級、類型進行調(diào)整,在此不進行限定。由于客戶端設備對游戲資源進行位置調(diào)整時,不會改變禁止操作區(qū)域的游戲資源的存儲位置,用戶無需重新對存儲空間內(nèi)的游戲資源進行位置調(diào)整,由此減少了客戶端和服務器設備之間的交互,降低了服務器的負載。
需要說明的是,以上以用戶改變游戲資源存儲位置的請求為添加新的游戲資源的請求或者整理游戲資源請求為例進行說明,本發(fā)明的方法對其他改變游戲資源存儲位置的請求也適用。本發(fā)明的方法還可以應用到其他應用場景中,在此不進行限定。
在本實施例中,可以由用戶自行設置可操作區(qū)域和/或禁止操作區(qū)域,使得禁止操作區(qū)域內(nèi)的游戲資源不受特定改變游戲資源存儲位置請求的影響,因此,無需用戶反復對存儲空間中的資源物品進行整理或者排序,減少了用戶的繁瑣操作,從而顯著地降低了客戶端與服務器的交互,并且減少了服務器的負載,提高了服務器性能,為用戶帶來了更好的體驗。
參見圖3至圖5來對本發(fā)明的這種實現(xiàn)方式進行說明。其中,參見圖3示意性地示出了本發(fā)明一應用場景示意圖。在圖3中,存儲空間被劃分為多個游戲資源格,每個游戲資源格可以用坐標或者編號來標識自己所在的位置,例如,其橫坐標可以用資源格所在的列來表示,其縱坐標可以用資源格所在的行來表示。其中,游戲資源a所在的存儲區(qū)域?qū)挠螒蛸Y源格可以表示為a1。游戲資源b所在的存儲區(qū)域?qū)挠螒蛸Y源格可以表示為b1。其中,可以用一個數(shù)組對來標識游戲資源,例如,游戲資源a對應的數(shù)組對為(a1,1)。當然,也可以用一個數(shù)組對來標識游戲資源格,例如(a1,1),表明其位置為第a列,第1行,1代表其被游戲資源占用,0可以表示其為空閑資源格。或者,當一個游戲資源格被表示為(a1,a)時,表明其位置為第a列,第1行,被游戲資源a占用。又如,當一個游戲資源格被表示為(d1,0)時,表明其位置為第d列,第1行,未被任何游戲資源占用。具體的實現(xiàn)方式可以是多樣的,在此不進行限定。
參見圖4,示意性地示出了現(xiàn)有技術(shù)游戲資源處理方法效果示意圖。在現(xiàn)有技術(shù)中,當添加新的游戲資源d、g、o、p時,新的游戲資源會被擺放在全部存儲位置范圍內(nèi)的空閑存儲位置,如圖4所示。這樣,就會破壞用戶業(yè)已存在游戲資源擺放順序,造成玩家操作和道具使用上的不便。玩家在游戲資源的擺放順序被改變后,需要重新對存儲空間中的游戲資源進行整理或者排序,當玩家擁有的游戲資源較多時,上述操作是非常繁瑣的過程,服務器也需要頻繁響應玩家的請求,造成服務器的負載加重。
參見圖5,示意性地示出了本發(fā)明的游戲資源處理方法效果示意圖。在本發(fā)明中,在用戶設置第1行為禁止操作區(qū)域的情況下,當添加新的游戲資源d、g、o、p時,則會跳過用戶設置的禁止操作區(qū)域,而是在可操作區(qū)域內(nèi)檢索空閑區(qū)域,例如在(a2,i)到(h8,0)的范圍內(nèi)檢索空閑區(qū)域,其中,0表示空閑資源格。這時只需要在可操作區(qū)域范圍內(nèi)檢索表示為(*,0)的數(shù)組對即可。這時,新的游戲資源d、g、o、p的存儲位置如圖5所示,禁止操作區(qū)域內(nèi)的游戲資源的存儲位置和擺放順序則不會被打亂,且禁止操作區(qū)域內(nèi)的空閑存儲位置不會被占用。本發(fā)明提供的方法對于用戶的游戲資源較多或者存儲空間連續(xù)的游戲應用特別適用,可以提高用戶的體驗,并降低服務器設備的負載。
對應的對顯示在微端引擎頁面中的游戲資源進行處理在微端引擎創(chuàng)建模塊中執(zhí)行,微端引擎創(chuàng)建模塊101還用于:
獲取用戶改變游戲資源存儲位置的請求,用戶改變游戲資源存儲位置的請求包括添加新的游戲資源的請求和整理游戲資源請求;
根據(jù)用戶改變游戲資源存儲位置的請求,獲得預先保存的操作區(qū)域設置信息,操作區(qū)域設置信息用于標識操作區(qū)域?qū)儆诳刹僮鲄^(qū)域或者禁止操作區(qū)域;
根據(jù)操作區(qū)域設置信息,在可操作區(qū)域中響應用戶的請求改變游戲資源的存儲位置。
通過對游戲資源的進一步處理,游戲資源顯示在微端引擎頁面,用戶可進行操作處理的,通過上述處理,可以由用戶自行設置可操作區(qū)域和/或禁止操作區(qū)域,使得禁止操作區(qū)域內(nèi)的游戲資源不受特定改變游戲資源存儲位置請求的影響,因此,無需用戶反復對存儲空間中的資源物品進行整理或者排序,減少了用戶的繁瑣操作,從而顯著地降低了客戶端與服務器的交互,并且減少了服務器的負載,提高了服務器性能,為用戶帶來了更好的體驗。
最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍,其均應涵蓋在本發(fā)明的權(quán)利要求和說明書的范圍當中。