《遊戲指令碼的設計與開發》-目錄&序
本系列文章目錄
該專案github地址如下:
序
從現在開始,我將通過一系列的文章,來講解一下游戲指令碼的設計和開發,這是一個比較大的話題,並不是一兩篇就能講完的,所以這可能是一個大坑,如果你不小心掉了進來,那就跟著我一點點的來了解一下吧。
一,什麼是遊戲指令碼
簡單說,遊戲指令碼就是依據一定的格式編寫的可執行檔案,遊戲可以通過指令碼中自定義的語句來執行相應的邏輯。舉個例子,舞蹈演員隨著音樂翩翩起舞,其實音樂在這裡就擔當了指令碼的角色,音樂裡記錄了每一個舞蹈動作,舞蹈演員根據自己的專業知識,將這些音樂轉換為優美的舞姿。
遊戲也一樣,遊戲腳本里記錄了遊戲的控制語句,遊戲引擎將這些控制語句進行解析,轉換為生動的遊戲畫面。
二,為什麼要將遊戲指令碼化
遊戲指令碼,可以令我們的遊戲動態化,比如當我們開發了一款rpg遊戲,裡面的劇情,事件以及地圖等,我們如果將這些全部寫程序序裡,當然是可以的,但是一旦出現問題,哪怕幾個錯別字,我們需要先將這幾個錯別字改正,並且將整個程式重新編譯釋出一遍,這個過程是相當令人反感的,因為如果遊戲的程式跟著遊戲的內容不斷進行修改的話,那隻會使你的程式越來越複雜。但是如果我們將這些可重複的資料,都定義到遊戲程式之外的檔案裡面,當遊戲引擎開發完畢,我們的遊戲通過讀取這些外部檔案,來執行相應的劇情和事件,那麼,像上述當我們的遊戲出現了問題,我們只需要改動這些外部檔案就可以了,並不需要重新編譯整個程式,這樣便使得我們的遊戲開發,變得便利簡潔。(熟悉我部落格的朋友們是不是看著這段話眼熟?我直接拷貝了遊戲指令碼化的另一個好處,就是將遊戲引擎和遊戲內容分離。遊戲的指令碼語言,最大的有點就是簡單易懂,如果再為這個指令碼語言提供了編輯器的話,就算是不會程式設計的人也能很容易上手使用。
三,遊戲指令碼能夠實現哪些功能
一個優秀的遊戲指令碼,通常能控制遊戲中的一切。遊戲中所有可變的資料,都應該通過指令碼來控制,例如RPG遊戲中的劇情任務,人物對話,不同角色的成長,道具的屬性,甚至遊戲中的按鈕等等。四,我要設計一款什麼樣的遊戲指令碼
既然是自定義指令碼,你可以任意絕對指令碼的格式,比如我曾看到過下面一種指令碼。
上面的指令碼第一行是一個打字機效果的對話內容的顯示,第二行是在座標50,100的位置上顯示了一張圖片,指令碼中利用空格將每一行的指令碼語句進行分割,然後通過分割後的第一個字串作為命令的種類,不同的命令再進行不同的解析,最後通過畫面顯示出來。@@message 你好,歡迎來到指令碼測試 @@drawgraph 50 100 human.png
我在開發flash遊戲引擎的時候,設計了一款指令碼引擎,叫做L#,併成功使用這個指令碼開發了《三國記》系列遊戲,《三國記-亂世群雄》和《三國記-經典戰役版》。下面是遊戲中的兩個畫面
L#除了預計提供的RPG,SLG兩大功能外,開發一些小應用也是很方便的,例如在L#中顯示一行文字只需要下面一行指令碼
Text.label(-,txt,Hello World !,280,230,30,#000000);
為了提高flash端引擎的效率,最近打算使用Starling將flash端的L#指令碼進行優化重構,順便打算在HTML5中實現一下L#指令碼的開發。於是接下來我會把這一過程中的HTML5部分記錄下來,來說明一下如何具體來開發一款遊戲指令碼,大家可以從中瞭解到如何開發一款大型的SLG遊戲和RPG遊戲。
五,準備工作
1,lufylegend.js引擎下載
我在下面的開發過程是建立在HTML5遊戲引擎lufylegend.js的基礎上的,當然你用其他語言,如C,C#,java等也是一樣的,只要瞭解了原理,實現過程都不是問題。
下面是lufylegend.js引擎的官方網址
2,一個本地的伺服器
因為涉及到指令碼檔案的讀取,所以如果你也是跟著我用HTML5來實現這一過程的話,為了實現ajax讀取檔案,你需要在自己的電腦上安裝一個本地伺服器。我推薦你安裝xmapp,這個工具非常方便,安裝這個工具很簡單,你可以百度一下,或者到我的這個帖子裡,下載《HTML5 Canvas遊戲開發實戰》一書中的試讀章節,裡面第一章裡面有xmapp的安裝介紹。
這樣準備就緒之後,就可以開始指令碼開發之旅了,下一篇中,我將介紹如何來讀取和解析一個指令碼檔案,敬請期待。
歡迎繼續關注我的部落格