簡體   English   中英

生成代碼與文件格式

[英]Generating code vs file format

所以我和我的朋友有一個爭論,我們無法解決。 他正在編寫通用網絡游戲庫和地圖編輯器。 地圖編輯器將地圖另存為XML,但是地圖編輯器也可以加載Lua腳本,該腳本會將地圖的詳細信息導出到看起來像這樣的Javascript文件中(他不想發布代碼,因此這只是一個名稱已更改的代碼段):

// This probably isn't valid code, but this is the idea of the code generator
(function() {
Game.Level1 = function (state) {
    GameEngine.Group.call(this);
            var Object0 = new Game.Lo(new GameEngine.Point(654 , 975.13), 15, state);
            var slot123 = new GameEngine.TimeSlot(123);        //Start
            slot123.addEvent(new GameEngine.Event(Object0, "x", "current", 15, 200));
...

這個想法是,游戲庫將只運行此代碼,而不必解析地圖文件並即時生成對象。 想要以不同語言為不同庫輸出代碼的任何人都可以修改在地圖編輯器中生成代碼的Lua腳本。 (不限於腳本語言)。

我從未聽說過這個主意,通常我希望地圖數據采用JSON或XML之類的標准格式,並讓游戲庫對其進行解析。

因此,假設他的庫是用javascript編寫的,並且他的地圖可以生成javascript以加載文件,那么在運行生成的代碼與解析JSON / XML和從中生成對象之間的權衡是什么?

從一般意義上來說,從另一個腳本加載元數據可以使腳本生成器在數據發送,顯示等方面具有更大的靈活性。例如,可以將完整的數學表達式,條件等作為加載腳本的一部分,將由腳本解析器(解釋器)無縫解析和加載。 使用XML或JSON來做同樣的事情可能會更困難(想象一下,通過XML發送一個表達式來執行Miller圓柱投影 )。

我已經看到許多情況下,應用程序會創建自己的腳本語言(MAXscript,Maya的MEL)來為用戶提供靈活性。 這些可能與您朋友使用Java腳本加載元數據不相似。 但是恕我直言,這是一個連續的過程,從元數據文本文件開始,到XML,JSON,表達式解析,再到完整的腳本解析。

另一方面,發送復雜的腳本意味着要公開部分代碼庫。 而且每個人都知道XML的功能,並且您可以期望非程序員使用/修改XML文件。 他們這樣做很自在。 他們甚至可能不習慣閱讀他們認為的“程序”或“腳本”。 我在公司里親眼目睹了這首手,在那兒,藝術家們不安地修改Lua文件。 如果它是一個簡單的文本文件,則他們很樂意修改相同的信息。 可能還存在一些安全問題,但是我實際上並不那么熟悉,因此我無法發表評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM