本發明涉及游戲配置編輯領域,尤其涉及一種可視化的配置編輯方法及裝置。
背景技術:
為了滿足玩家的娛樂需求,在游戲中會實現大量的玩法模塊,而這些模塊又各有自己的功能。通常,游戲設計人員在設計某一項功能的時候,并不會把功能描述成固定的形式,而會把功能中可變的參數寫到配置文件中。程序人員在實現功能的時候,設計人員可以不斷的調整這些參數,讓功能達到自己期望的程度。
有些功能要求更復雜的配置格式,比如技能系統或是AI系統,它們需要大量的參數和語句來描述一個技能是怎么執行的。這通常是設計成一種約定好格式的配置文件,比如用Json設計好技能的配置格式,程序人員再依據這些格式去實現。但設計人員怎么編輯這些配置成為了一個重要的問題。
在現有技術中,通常有下面幾種方法去編輯比較復雜的配置:1、使用Excel來編輯配置,用表格的形式描述功能;2、讓程序人員專門為每種配置編寫可視化的編輯器,比如針對技能配置,設計人員給出一份規格說明書,程序使用一種通用的編程語言,比如C++,Python之類的,實現出設計要求的可視化界面,然后設計人員使用這個界面去編輯技能。3、直接編輯文本格式。例如使用一種支持Json的文本編輯器,設計人員直接在上面編輯。
技術實現要素:
上述的方法1對于簡單的配置是個不錯的選擇,但有些功能配置,例如技能配置是非常復雜的,用表格很難直觀的描述期望的行為,且通過表格進行描述往往會顯得很復雜。而方法2的缺點在于,由于游戲有許多像技能這樣復雜的配置格式,如果需要對每個功能專門編寫編輯器,需要耗費大量的人力資源在編輯器的制作上的。另一方面,如果設計人員對配置格式進行修改,則程序人員必須同步的修改編輯器以達到最新的需求,這大大增加了程序人員的個工作負擔。對于方法3,如果對配置格式了然于胸,編輯起來確實是最直接最快速的,但是文本編輯器只會依據Json的規范檢查語法錯誤,而不會告訴你哪個參數寫錯了,哪些值超出范圍了,設計人員需要花費很多精力用于檢查輸入的參數是否正確,從而造成了時間的浪費,并影響了設計人員對真正邏輯的思考,降低了工作效率。
針對上述問題,本發明的目的在于提供一種可視化的配置編輯方法及裝置,可實現方便快捷的配置編輯,滿足設計人員的需求。
本發明提供了一種可視化的配置編輯方法,包括:
讀取基于Json Schema描述的原始配置文件,生成具有預定格式規范的可視化編輯界面;
監聽在所述可視化編輯界面的輸入欄中輸入的參數;
根據所述格式規范對輸入到所述輸入欄內的參數進行檢查;
當輸入的所述參數符合與其對應的輸入欄定義的格式規范時,根據輸入的參數生成Json配置文件。
上述技術方案中,通過讀取基于Json Schema描述的原始配置文件,生成具有預定格式規范的可視化編輯界面,并基于所述格式規范對設計人員輸入的參數進行自動檢查,從而保證設計人員輸入的參數是符合格式規范要求,設計人員僅需簡單進行數據填寫,而無需花費太多精力用于人工檢查填寫的數據的格式、類型或者數值范圍是否出現錯誤,節省了檢查的時間,提升了工作的效率。此外,可視化的編輯界面還進一步提升了設計人員的使用體驗和友好度。
優選地,在所述當輸入的所述參數符合與其對應的輸入欄定義的格式規范時,根據輸入的參數生成Json配置文件之后,還包括:
將所述Json配置文件轉換成與應用開發語言對應的腳本文件。
上述技術方案中,為了提高游戲加載速度,還將Json配置文件轉換成與應用開發語言對應的腳本文件。例如,用python腳本開發的游戲需要把Json配置文件轉換成python腳本,從而提高游戲加載速度。
優選地,在所述將所述Json配置文件轉換成與應用開發語言對應的腳本文件之后,還包括:
在所述可視化編輯界面上顯示所述腳本文件中的代碼。
本優選方案還同時集成了即時的腳本文件的代碼顯示,設計人員在進行編輯時,可視化編輯界面會對設計人員的編輯內容進行實時顯示,對于熟悉腳本的設計人員,實時看見編輯結果可以有效提高工作效率。
優選地,所述將所述Json配置文件轉換成與應用開發語言對應的腳本文件具體為:
將所述Json配置文件按照轉換規則轉換成與應用開發語言對應的初始腳本文件;
查找所述初始腳本文件中的自定義關鍵字及與所述自定義關鍵字對應的數據結構;
從預先配置的自定義解析器中獲取與查找到的所述自定義關鍵字對應的變換方法,根據所述變換方法對與所述自定義關鍵字對應的數據結構進行變換并刪除所述自定義關鍵字,生成腳本文件;其中,所述變換方法包括變換所述數據結構的類型。
優選地,還包括:
獲取所述原始配置文件中的不可變數組;
當所述不可變數組內的元素的個數小于預設的閾值時,通過CSS樣式表控制將所述不可變數組內的各個元素顯示在所述可視化編輯界面的同一顯示欄。
本發明還提供了一種可視化的配置編輯裝置,包括:
可視化界面生成單元,用于讀取基于Json Schema描述的原始配置文件,生成具有預定格式規范的可視化編輯界面;
參數監聽單元,用于監聽在所述可視化編輯界面的輸入欄中輸入的參數;
檢查單元,用于根據所述格式規范對輸入到所述輸入欄內的參數進行檢查;
配置文件生成單元,用于當輸入的所述參數符合與其對應的輸入欄定義的格式規范時,根據輸入的參數生成Json配置文件。
優選地,還包括:
文件轉換單元,用于將所述Json配置文件轉換成與應用開發語言對應的腳本文件。
優選地,還包括:
代碼顯示單元,用于在所述可視化編輯界面上顯示所述腳本文件中的代碼。
優選地,所述文件轉換單元具體包括:
初始轉換模塊,用于將所述Json配置文件按照轉換規則轉換成與應用開發語言對應的初始腳本文件;
關鍵字查找模塊,用于查找所述初始腳本文件中的自定義關鍵字及與所述自定義關鍵字對應的數據結構;
變換模塊,用于從預先配置的自定義解析器中獲取與查找到的所述自定義關鍵字對應的變換方法,根據所述變換方法對與所述自定義關鍵字對應的數據結構進行變換并刪除所述自定義關鍵字,生成腳本文件;其中,所述變換方法包括變換所述數據結構的類型。
優選地,還包括:
不可變數組獲取單元,用于獲取所述原始配置文件中的不可變數組;
顯示控制單元,用于當所述不可變數組內的元素的個數小于預設的閾值時,通過CSS樣式表控制將所述不可變數組內的各個元素顯示在所述可視化編輯界面的同一顯示欄。
附圖說明
為了更清楚地說明本發明的技術方案,下面將對實施方式中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施方式,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是本發明實施例提供的一種可視化的配置編輯方法的流程示意圖。
圖2是本發明實施例提供的一種原始配置文件的示意圖。
圖3是本發明實施例提供的一種可視化編輯界面的示意圖。
圖4是本發明實施例提供的一種原始配置文件中的不可變列表的表示示意圖。
圖5是本發明實施例提供的另一種原始配置文件中的不可變列表的表示示意圖。
圖6是本發明實施例提供的原始配置文件中的元組的定義示意圖。
圖7是本發明實施例提供的原始配置文件中的可變字典的定義示意圖。
圖8是圖7轉換為腳本文件后的示意圖。
圖9是本發明實施例提供的可視化的配置編輯裝置的結構示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
請參閱圖1,本發明實施例提供了一種可視化的配置編輯方法,其可由可視化的配置編輯裝置(以下簡稱配置編輯裝置)來執行,并包括如下步驟:
S101,讀取基于Json Schema描述的原始配置文件,生成具有預定格式規范的可視化編輯界面。
在本發明實施例中,由于目前大多數的配置文件都是采用Json格式,因此這里的原始配置文件采用Json Schema這種描述語言來描述。其中,Json Schema也是一種Json格式,它用于描述Json文件的正確格式,并驗證其正確性。
例如,如圖2所示,圖2中的基于Json Schema的原始配置文件描述了一個人的基本屬性,包括名字、年齡和性別。對于各個屬性,可以用Json Schema定義其數據類型、描述屬性的信息以及設定屬性的默認值等。例如設定名字的數據類型為字符型,最小長度為4;年齡的數據類型為整型,范圍是18~99,性別的數據類型為字符型,并且只能選擇male或者female兩個選項。
請參閱圖3,圖3是所述配置編輯裝置讀取原始配置文件后生成的一種具有格式規范的可視化編輯界面的示意圖。
S102,監聽在所述可視化編輯界面的輸入欄中輸入的參數。
S103,根據所述格式規范對輸入到所述輸入欄內的參數進行檢查。
S104,當輸入的所述參數符合與其對應的輸入欄定義的格式規范時,根據輸入的參數生成Json配置文件。
如圖3所示,設計人員可以在可視化編輯界面的輸入欄中輸入參數(可以是用戶自行輸入參數,也可以是可視化編輯界面提供選項供用戶選擇,具體由原始配置文件決定)。其中,在設計人員自行輸入參數后,所述配置編輯裝置會監聽用戶在所述可視化編輯界面的輸入欄中輸入的參數,并檢查該輸入的參數是否符合該輸入欄的格式規范。例如,如果一個輸入欄的格式規范(由原始配置文件的定義決定)是輸入的參數的數據類型為字符型(string),而設計人員輸入的參數的數據類型為整型(integer),則所述配置編輯裝置在進行檢查時就會發出錯誤提醒。再例如,一個輸入欄的格式規范是輸入的參數的數據類型為整型,而設計人員輸入的參數的類型為浮點型(float),則所述配置編輯裝置在進行檢查時就會發出錯誤提醒。再例如,一個輸入欄的格式規范是輸入的參數的數據類型為整型,且其范圍為18~50,而設計人員輸入的參數為15,則所述配置編輯裝置在進行檢查時就會發出錯誤提醒。
綜上所述,本發明實施例提供的可視化的配置編輯方法,通過讀取基于Json Schema描述的原始配置文件,生成具有預定格式規范的可視化編輯界面,并基于所述格式規范對設計人員輸入的參數進行自動檢查,從而保證設計人員輸入的參數符合預先設置的格式規范要求,設計人員僅需進行參數填寫,如果填寫錯誤會自動生成錯誤提醒,因而無需花費太多精力用于人工檢查填寫的參數的格式、類型或者數值范圍是否出現錯誤,節省了檢查的時間,提升了工作的效率。此外,可視化的編輯界面還進一步提升了設計人員的使用體驗和友好度。
為了便于對本發明的理解,下面將對本發明的一些優選實施例做更進一步的描述。
第一個優選實施例:
優選地,在步驟S104之后,好包括:
S105,將所述Json配置文件轉換成與應用開發語言對應的腳本文件。
在本發明實施例中,當設計人員完成配置的編輯后,會得到相應的Json配置文件,表示該配置的內容。為了提高游戲加載速度,所述配置編輯裝置還對Json配置文件進行格式轉換,轉換成與應用開發語言對應的腳本文件。例如,用python腳本開發的游戲需要把Json配置文件轉換成python腳本,從而提高游戲加載速度。
在本發明實施例中,以python腳本為例,由于Json和Python的字典比較相像,通過現有技術可以很容易將Json配置文件轉換成Python代碼的腳本文件。而如果需要轉換為其他語言的腳本,只需要根據其與Json的差別進行轉換即可,本發明在此不做贅述。
第二個優選實施例:
優選地,在步驟S105之后,還包括:
S106,在所述可視化編輯界面上顯示所述腳本文件中的代碼。
如圖3所示,本優選實施例還同時集成了即時的腳本文件的代碼顯示,設計人員在進行編輯時,所述配置編輯裝置會將轉換的腳本文件的代碼實時顯示在可視化編輯界面上,對于熟悉腳本的設計人員,實時看見腳本文件可以有效提高工作效率,并減小bug的出現。
第三個優選實施例:
優選地,還包括:
S107,獲取所述原始配置文件中的不可變數組。
S108,當所述不可變數組內的元素的個數小于預設的閾值時,通過CSS樣式表控制將所述不可變數組內的各個元素顯示在所述可視化編輯界面的同一顯示欄。
目前Json Schema支持的數據類型有string,numberic,object,array,boolean,null。但是在游戲開發中,一方面,復雜的配置往往需要復雜的數據結構進行表示;另一方面為,為了優化效率,有時需要用列表或者元組替代字典(object),因此有時原始配置文件中還包含了對目前的Json Schema進行擴展的數據結構。則在讀取時,所述配置編輯裝置還需要考慮對拓展的數據結構的處理,其中,增加的數據結構可包括不可變列表,元組和可變字典等。
以不可變列表為例,不可變列表用于描述簡單的屬性集合。例如技能節點的執行參數由動作名和動作類型ID組成:'args':['attack_0',111]。Json Schema中的array可以表示列表,但是array是可變的,并且array默認其中的每個元素的類型都是一樣的,難以滿足需求。在此提供兩種不可變列表的表示方法。
第一種方法如圖4所示,array作為基本類型,但是其items是數組而不是對象,items中包含的每個object則是對應不可變列表中的每個元素,minItems規定該列表的元素個數,最后在options中設定該數組不可增加元素,這樣就可以得到一個不可變列表,并且其中每個元素的類型可以根據需求設定。
第二種方法如圖5所示,以object作為基本類型,然后對于每個不可變列表中的元素,用一個object的屬性(properties)表示。屬性的鍵(key)為$i$(1<=i<=n,n為列表元素的個數),屬性的值(value)是元素的具體描述,如類型說明等。因為是不可變列表,因此通過設定Json Schema的disable_properties阻止屬性的增加。如果需要控制每個列表的元素是否是必須的,可以通過Json Schema的required屬性進行設定。
在本發明實施例中,所述配置編輯裝置可對其可視化編輯界面的顯示樣式進行控制,使其更緊湊,提高界面的利用效率,從而更適合用戶的編輯習慣,提高編輯效率。
具體地,例如,一般情況下,數組是一行一行分開顯示的,而對應本發明實施例中,由于大多數組設置為不可變數組,其內的元素數量很少且不需要在擴展增加,所以可通過CSS樣式表控制這些元素在一行顯示欄中顯示即可,這可以使得所述可視化編輯界面的外觀更加緊湊一致,避免了在一些情況下需要對可視化編輯界面的大小進行調整才能看到全部的內容。
第四個優選實施例:
優選地,步驟S105具體包括:
S1051,將所述Json配置文件按照轉換規則轉換成與應用開發語言對應的初始腳本文件。
S1052,查找所述初始腳本文件中的自定義關鍵字及與所述自定義關鍵字對應的數據結構。
S1053,從預先配置的自定義解析器中獲取與查找到的所述自定義關鍵字對應的變換方法,根據所述變換方法對與所述自定義關鍵字對應的數據結構進行變換并刪除所述自定義關鍵字,生成腳本文件;其中,所述變換方法包括變換所述數據結構的類型。
例如,如果需要在最終生成的python腳本文件中生成元組這種數據類型(元組與不可變列表相似,區別是元組用圓括號表示,而不可變列表則用方括號表示),但是元組是python的特有數據類型,Json Schema本身并不支持。為了兼容python腳本,可以在原始配置文件中用不可變列表來表示元組,如圖6所示,通過設定了一個自定義關鍵字$tuple$來對不可變列表和元組進行區分。
在進行轉換時,首先,將所述Json配置文件按照轉換規則轉換成與應用開發語言對應的初始腳本文件。這個初始腳本文件中會包括自定義關鍵字,然后,查找所述初始腳本文件中的自定義關鍵字及與所述自定義關鍵字對應的數據結構。最后,從預先配置的自定義解析器中獲取與查找到的所述自定義關鍵字對應的變換方法,根據所述變換方法對與所述自定義關鍵字對應的數據結構進行變換并刪除所述自定義關鍵字,生成腳本文件。
以圖6為例,在轉換成初始腳本文件后,仍然包含有$tuple$這個自定義關鍵字,其在自定義解析器中的變換方法是將與其對應的不可變列表轉換成元組。這樣,當在初始腳本文件中查找到自定義關鍵字$tuple$后,就查找與$tuple$對應的不可變列表,然后在最終顯示的腳本文件中將這個不可變列表變換為元組,并刪除$tuple$這個自定義關鍵字。
再例如,可變字典是配置中常用的數據結構。圖7所示為當關鍵幀到達時觸發對應的一系列技能節點,用戶增加數據時需要同時編輯關鍵幀名字(key)和觸發的技能列表(value)。在Json Schema中,object用于表示字典,但是當需要往object中增加屬性(key)時,難以對key進行規范說明,容易導致用戶輸入不符合規范的數據,因此,可設計了一個新的可變字典表示方式,使用Json Schema中的array描述可變字典,對于字典中的每個元素,增加了$key$和$value$兩個自定義關鍵字來進行描述。此時,轉換后的初始腳本文件如圖8所示,包含了$key$和$value$兩個自定義關鍵字,在將初始腳本文件轉換為最終的腳本文件后,則如圖8所示,將字典變為可變字典,并刪除這兩個自定義關鍵字。
綜上所述,本優選實施例實現了對原始配置文件的擴展的數據結構的支持和變換,并可將擴展的數據結構轉換為符合腳本文件格式的數據結構,使得配置的編輯方式更靈活,適用范圍更廣。
請一并參閱圖9,本發明還提供了一種可視化的配置編輯裝置100,包括:
可視化界面生成單元10,用于讀取基于Json Schema描述的原始配置文件,生成具有預定格式規范的可視化編輯界面。
參數監聽單元20,用于監聽在所述可視化編輯界面的輸入欄中輸入的參數。
檢查單元30,用于根據所述格式規范對輸入到所述輸入欄內的參數進行檢查。
配置文件生成單元40,用于當輸入的所述參數符合與其對應的輸入欄定義的格式規范時,根據輸入的參數生成Json配置文件。
本發明實施例提供的可視化的配置編輯裝置100,通過讀取基于Json Schema描述的原始配置文件,生成具有預定格式規范的可視化編輯界面,并基于所述格式規范對設計人員輸入的參數進行自動檢查,從而保證設計人員輸入的參數是符合格式規范要求,設計人員僅需簡單進行數據填寫,而無需花費太多精力用于人工檢查填寫的數據的格式、類型或者數值范圍是否出現錯誤,節省了檢查的時間,提升了工作的效率。此外,可視化的編輯界面還進一步提升了設計人員的使用體驗和友好度。
優選地,還包括:
文件轉換單元50,用于將所述Json配置文件轉換成與應用開發語言對應的腳本文件。
優選地,還包括:
代碼顯示單元60,用于在所述可視化編輯界面上顯示所述腳本文件中的代碼。
優選地,所述文件轉換單元50具體包括:
初始轉換模塊51,用于將所述Json配置文件按照轉換規則轉換成與應用開發語言對應的初始腳本文件。
關鍵字查找模塊52,用于查找所述初始腳本文件中的自定義關鍵字及與所述自定義關鍵字對應的數據結構。
變換模塊53,用于從預先配置的自定義解析器中獲取與查找到的所述自定義關鍵字對應的變換方法,根據所述變換方法對與所述自定義關鍵字對應的數據結構進行變換并刪除所述自定義關鍵字,生成腳本文件;其中,所述變換方法包括變換所述數據結構的類型。
本優選實施例實現了對原始配置文件的擴展的數據結構的支持和變換,并可將擴展的數據結構轉換為符合腳本文件格式的數據結構,使得配置的編輯方式更靈活,適用范圍更廣。
優選地,還包括:
不可變數組獲取單元70,用于獲取所述原始配置文件中的不可變數組;
顯示控制單元80,用于當所述不可變數組內的元素的個數小于預設的閾值時,通過CSS樣式表控制將所述不可變數組內的各個元素顯示在所述可視化編輯界面的同一顯示欄。
以上所揭露的僅為本發明一種較佳實施例而已,當然不能以此來限定本發明之權利范圍,本領域普通技術人員可以理解實現上述實施例的全部或部分流程,并依本發明權利要求所作的等同變化,仍屬于發明所涵蓋的范圍。
本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質中,該程序在執行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機存儲記憶體(Random Access Memory,RAM)等。