本系列文章目錄
章節 | 标題 | 連接配接 |
---|---|---|
序 | 遊戲腳本簡介 | http://blog.csdn.net/lufy_legend/article/details/8888787 |
第一章 基本功能 | ||
1.1 | 讀取和解析一個腳本檔案 | http://blog.csdn.net/lufy_legend/article/details/8919823 |
1.2 | 文字顯示[Hello world] | http://blog.csdn.net/lufy_legend/article/details/8948585 |
1.3 | 基礎文法(注釋,變量,函數,條件語句) | http://blog.csdn.net/lufy_legend/article/details/8978154 |
1.4 | 圖檔的讀取顯示 | http://blog.csdn.net/lufy_legend/article/details/9019695 |
1.5 | 顯示層,繪圖 | http://blog.csdn.net/lufy_legend/article/details/9069425 |
1.6 | 按鈕,腳本的暫停和标簽 | http://blog.csdn.net/lufy_legend/article/details/9110513 |
第一章總結 | 文字腳本的功能擴充和一個遊戲測試 | http://blog.csdn.net/lufy_legend/article/details/9160841 |
第二章 戰棋類遊戲 | ||
2.1 | 快速顯示一張戰場地圖 | http://blog.csdn.net/lufy_legend/article/details/9210753 |
2.2 | 軍隊降臨戰場 | http://blog.csdn.net/lufy_legend/article/details/9267599 |
2.3 | 戰場上的尋路和移動 | http://blog.csdn.net/lufy_legend/article/details/9404147 |
2.4 | 實體攻擊 | http://blog.csdn.net/lufy_legend/article/details/9918169 |
第三章 RPG類遊戲 | ||
3.1 | RPG地圖到底怎麼做? | http://blog.csdn.net/lufy_legend/article/details/17417085 |
3.2 | 地圖遮擋和人物行走 | http://blog.csdn.net/lufy_legend/article/details/17748629 |
3.3 | 加入多個人物以及對話實作 | http://blog.csdn.net/lufy_legend/article/details/18184629 |
3.4 | 地圖跳轉 | http://blog.csdn.net/lufy_legend/article/details/21322783 |
3.5 | 遊戲背包和任務系統 | http://blog.csdn.net/lufy_legend/article/details/21942227 |
3.6 | 隊員清單和人物屬性 | http://blog.csdn.net/lufy_legend/article/details/22661047 |
3.7 | 戰鬥系統之自動戰鬥(一) | http://blog.csdn.net/lufy_legend/article/details/23744323 |
3.8 | 通過腳本來自由控制遊戲(一) | http://blog.csdn.net/lufy_legend/article/details/39011709 |
第四章 待定 |
該項目github位址如下:
https://github.com/lufylegend/lsharp
序
從現在開始,我将通過一系列的文章,來講解一下遊戲腳本的設計和開發,這是一個比較大的話題,并不是一兩篇就能講完的,是以這可能是一個大坑,如果你不小心掉了進來,那就跟着我一點點的來了解一下吧。
一,什麼是遊戲腳本
簡單說,遊戲腳本就是依據一定的格式編寫的可執行檔案,遊戲可以通過腳本中自定義的語句來執行相應的邏輯。
舉個例子,舞蹈演員随着音樂翩翩起舞,其實音樂在這裡就擔當了腳本的角色,音樂裡記錄了每一個舞蹈動作,舞蹈演員根據自己的專業知識,将這些音樂轉換為優美的舞姿。
遊戲也一樣,遊戲腳本裡記錄了遊戲的控制語句,遊戲引擎将這些控制語句進行解析,轉換為生動的遊戲畫面。
二,為什麼要将遊戲腳本化
遊戲腳本,可以令我們的遊戲動态化,比如當我們開發了一款rpg遊戲,裡面的劇情,事件以及地圖等,我們如果将這些全部寫程序式裡,當然是可以的,但是一旦出現問題,哪怕幾個錯别字,我們需要先将這幾個錯别字改正,并且将整個程式重新編譯釋出一遍,這個過程是相當令人反感的,因為如果遊戲的程式跟着遊戲的内容不斷進行修改的話,那隻會使你的程式越來越複雜。但是如果我們将這些可重複的資料,都定義到遊戲程式之外的檔案裡面,當遊戲引擎開發完畢,我們的遊戲通過讀取這些外部檔案,來執行相應的劇情和事件,那麼,像上述當我們的遊戲出現了問題,我們隻需要改動這些外部檔案就可以了,并不需要重新編譯整個程式,這樣便使得我們的遊戲開發,變得便利簡潔。(熟悉我部落格的朋友們是不是看着這段話眼熟?我直接拷貝了《html5遊戲開發-零基礎開發RPG遊戲-開源講座》系列文章中的解釋)
遊戲腳本化的另一個好處,就是将遊戲引擎和遊戲内容分離。遊戲的腳本語言,最大的有點就是簡單易懂,如果再為這個腳本語言提供了編輯器的話,就算是不會程式設計的人也能很容易上手使用。
三,遊戲腳本能夠實作哪些功能
一個優秀的遊戲腳本,通常能控制遊戲中的一切。遊戲中所有可變的資料,都應該通過腳本來控制,例如RPG遊戲中的劇情任務,人物對話,不同角色的成長,道具的屬性,甚至遊戲中的按鈕等等。
四,我要設計一款什麼樣的遊戲腳本
既然是自定義腳本,你可以任意絕對腳本的格式,比如我曾看到過下面一種腳本。
@@message 你好,歡迎來到腳本測試
@@drawgraph 50 100 human.png
上面的腳本第一行是一個打字機效果的對話内容的顯示,第二行是在坐标50,100的位置上顯示了一張圖檔,腳本中利用空格将每一行的腳本語句進行分割,然後通過分割後的第一個字元串作為指令的種類,不同的指令再進行不同的解析,最後通過畫面顯示出來。
我在開發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引擎的官方網址
http://lufylegend.com/lufylegend
2,一個本地的伺服器
因為涉及到腳本檔案的讀取,是以如果你也是跟着我用HTML5來實作這一過程的話,為了實作ajax讀取檔案,你需要在自己的電腦上安裝一個本地伺服器。我推薦你安裝xmapp,這個工具非常友善,安裝這個工具很簡單,你可以百度一下,或者到我的這個文章裡,下載下傳《HTML5 Canvas遊戲開發實戰》一書中的試讀章節,裡面第一章裡面有xmapp的安裝介紹。
http://blog.csdn.net/lufy_legend/article/details/8813053
這樣準備就緒之後,就可以開始腳本開發之旅了,下一篇中,我将介紹如何來讀取和解析一個腳本檔案,敬請期待。
轉載請注明:轉自lufy_legend的部落格
歡迎繼續關注我的部落格
http://blog.csdn.net/lufy_legend