2006-01-04 21:15:12Kato
游戲設計理論6:游戲的腳本語言
今天,我想先以一套游戲使用的技術為藍本,導入實務設計的范疇。你聽過“ZZT”這套共享游戲嗎。
如果沒有,別太在意,這是91年發行的文字模式角色扮演游 戲。我
們不談游戲本身,而把焦點放在游戲的開發系統當中。ZZ T雖然老,所引用的“物件導向”設計概念可是一點都不含糊。
為什么需要額外設計一套游戲專屬的程序開發系統?利用現有的程序語言難到不可以嗎?首先,現今常見的程序語言中,大 多半都是通用語言,當然也有不少專用語言,嚴格說來,沒有一 套游戲設計的專用語言。(不過,早在八位電腦時代,已有一套 名為“游戲制作者”的軟件,它允許使用內建的語言來開發游戲 )就目前游戲主要使用的C語言以及匯編語言來說,程序員必須 從無到有,制作出游戲的引擎系統。
如果有一套游戲開發系統,制作游戲(特別是續集)會大幅 度降低程序設計制作游戲所花費的時間與精力。讓我們來看看幾個實際的例子:Origin的創世紀系列(人物行程管理、對話皆有 專屬系統)等。只要游戲開發系統規劃得適宜,一旦制作完成, 對日后制作的游戲程序,絕對有大補益。
我不想在這里就編輯器、編譯器之間的差異以及設計的詳細原理做討論。雖然這些都與設計一套游戲開發系統有密切關系, 但這些都屬于“系統程序”課程的范疇,我們只需了解就行了。 將程序與游戲資料獨立安排有許多好處。你不會因為僅需要修改 游戲資料,就必須重新進行“修改代碼、編譯、連接”等繁瑣的 過程。讓我們來看一段ZZT游戲中,某商店老板的“控制”程序
@Vendor
#end
:touch “事件”觸發(接觸該“物體”)
"Hello, you must be new to town!
If you want to be successful 訊息顯示
around here, you’ll need to buy
some supplies!" /
!ba;Ammunition, 3 shots.........1 gem
!bt;Torch.......................1 gem 選項控制
!bx;Advice......................Free /
#end
:b 選擇第一項:購買彈藥
#take gems 1 ca
#give ammo 3
"Here’s your ammo... Happy hunting!"
#end
:bt 選擇第二項:購買火把
#take gems 1 ca
#give torches 1
"Here’s your torch..."
#end
:bx 選擇第三項:提出忠告
"It is whispered that soon
if we all call the tune,
then the piper will lead us to reason.
"And a new day will dawn
for those who stand long
and the forests will echo with laughter."
-Led Zeppelin
#end
:ca 錯誤處理(無力購買)
"You can’t afford it!"
#end
以上是ZZT程序片段
你是否了解上面的程序,這類經過大量簡化后的控制程序,我們把它稱做腳本語言。腳本語言除了接近口語化的設計外,另 加上簡化后的語法。(除了內建的命令外,通常僅需簡單的邏輯 判斷與數值計算即可勝任)因此用腳本語言制作游戲,不在是再 是非程序員不可的工作(除了系統本身的修訂),企畫人員也可 以很快地進入狀態。另外,如果將來需要將游戲移植到其他平臺 時,比起程序與資料的盤根錯節的設計,利用腳本語言來開發的 游戲,只需要修改系統本身,腳本語言部分本身毋須更動,相形 之下出現問題的機會與范圍就縮小了很多。
這次以ZZT游戲為例,就是想對腳本語言部分的設計作了概念性的介紹
如果沒有,別太在意,這是91年發行的文字模式角色扮演游 戲。我
們不談游戲本身,而把焦點放在游戲的開發系統當中。ZZ T雖然老,所引用的“物件導向”設計概念可是一點都不含糊。
為什么需要額外設計一套游戲專屬的程序開發系統?利用現有的程序語言難到不可以嗎?首先,現今常見的程序語言中,大 多半都是通用語言,當然也有不少專用語言,嚴格說來,沒有一 套游戲設計的專用語言。(不過,早在八位電腦時代,已有一套 名為“游戲制作者”的軟件,它允許使用內建的語言來開發游戲 )就目前游戲主要使用的C語言以及匯編語言來說,程序員必須 從無到有,制作出游戲的引擎系統。
如果有一套游戲開發系統,制作游戲(特別是續集)會大幅 度降低程序設計制作游戲所花費的時間與精力。讓我們來看看幾個實際的例子:Origin的創世紀系列(人物行程管理、對話皆有 專屬系統)等。只要游戲開發系統規劃得適宜,一旦制作完成, 對日后制作的游戲程序,絕對有大補益。
我不想在這里就編輯器、編譯器之間的差異以及設計的詳細原理做討論。雖然這些都與設計一套游戲開發系統有密切關系, 但這些都屬于“系統程序”課程的范疇,我們只需了解就行了。 將程序與游戲資料獨立安排有許多好處。你不會因為僅需要修改 游戲資料,就必須重新進行“修改代碼、編譯、連接”等繁瑣的 過程。讓我們來看一段ZZT游戲中,某商店老板的“控制”程序
@Vendor
#end
:touch “事件”觸發(接觸該“物體”)
"Hello, you must be new to town!
If you want to be successful 訊息顯示
around here, you’ll need to buy
some supplies!" /
!ba;Ammunition, 3 shots.........1 gem
!bt;Torch.......................1 gem 選項控制
!bx;Advice......................Free /
#end
:b 選擇第一項:購買彈藥
#take gems 1 ca
#give ammo 3
"Here’s your ammo... Happy hunting!"
#end
:bt 選擇第二項:購買火把
#take gems 1 ca
#give torches 1
"Here’s your torch..."
#end
:bx 選擇第三項:提出忠告
"It is whispered that soon
if we all call the tune,
then the piper will lead us to reason.
"And a new day will dawn
for those who stand long
and the forests will echo with laughter."
-Led Zeppelin
#end
:ca 錯誤處理(無力購買)
"You can’t afford it!"
#end
以上是ZZT程序片段
你是否了解上面的程序,這類經過大量簡化后的控制程序,我們把它稱做腳本語言。腳本語言除了接近口語化的設計外,另 加上簡化后的語法。(除了內建的命令外,通常僅需簡單的邏輯 判斷與數值計算即可勝任)因此用腳本語言制作游戲,不在是再 是非程序員不可的工作(除了系統本身的修訂),企畫人員也可 以很快地進入狀態。另外,如果將來需要將游戲移植到其他平臺 時,比起程序與資料的盤根錯節的設計,利用腳本語言來開發的 游戲,只需要修改系統本身,腳本語言部分本身毋須更動,相形 之下出現問題的機會與范圍就縮小了很多。
這次以ZZT游戲為例,就是想對腳本語言部分的設計作了概念性的介紹