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游戲為例,就是想對腳本語言部分的設計作了概念性的介紹