深度分析游戲開發(fā)編程語言優(yōu)缺點(2)
在上一篇文章 深度分析游戲開發(fā)編程語言優(yōu)缺點(1)中,我們已經(jīng)列舉了游戲開發(fā)中幾種編程語言的介紹及其優(yōu)缺點,這篇文章我們繼續(xù)列舉Pascal、Visual Basic、Java以及創(chuàng)作工具的介紹及其優(yōu)缺點。
5、Pascal語言
Pascal語言是由Nicolas Wirth在七十年代早期設計的,因為他對于FORTRAN和COBOL沒有強制訓練學生的結構化編程感到很失望,“空心粉式代碼”變成了規(guī)范,而當時的語言又不反對它。Pascal被設計來強行使用結構化編程。最初的Pascal被嚴格設計成教學之用,最終,大量的擁護者促使它闖入了商業(yè)編程中。當Borland發(fā)布IBM PC上的 Turbo Pascal時,Pascal輝煌一時。集成的編輯器,閃電般的編譯器加上低廉的價格使之變得不可抵抗,Pascal編程了為MS-DOS編寫小程序的首選語言。
然而時日不久,C編譯器變得更快,并具有優(yōu)秀的內置編輯器和調試器。Pascal在1990年Windows開始流行時走到了盡頭,Borland放棄了Pascal而把目光轉向了為Windows 編寫程序的C++。Turbo Pascal很快被人遺忘。
最后,在1996年,Borland發(fā)布了它的“Visual Basic殺手”— Delphi。它是一種快速的帶華麗用戶界面的 Pascal編譯器。由于不懈努力,它很快贏得了一大群愛好者。
基本上,Pascal比C簡單。雖然語法類似,它缺乏很多C有的簡潔操作符。這既是好事又是壞事。雖然很難寫出難以理解的“聰明”代碼,它同時也使得一些低級操作,如位操作變得困難起來。
優(yōu)點:易學、平臺相關的運行(Dephi)非常好。
缺點:“世界潮流”面向對象的Pascal繼承者(Modula、Oberon)尚未成功。語言標準不被編譯器開發(fā)者認同。專利權。
移植性:很差。語言的功能由于平臺的轉變而轉變,沒有移植性工具包來處理平臺相關的功能。
使用Pascal編寫的游戲:幾個。DirectX的Delphi組件使得游戲場所變大了。
資料:查找跟Delphi有關的資料,請訪問:Inprise Delphi page。
6、Visual Basic
哈,BASIC?;氐桨耸甏氖鲿r代,它是程序初學者的第一個語言。最初的BASIC形式,雖然易于學習,卻是可怕的無組織化,它義無返顧的使用了GOTO充斥的“空心粉式代碼”。當回憶起B(yǎng)ASIC的行號和GOSUB命令,沒有幾個人能止住眼角的淚水。
快速前進到九十年代早期,雖然不是蘋果公司所希望的巨人,HyperCard仍然是一個在Windows下無法比擬的吸引人的小型編程環(huán)境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂貴。為了與HyperCard一決高下,微軟取得了一個小巧的名為Thunder編程環(huán)境的許可權,并把它作為Visual Basci 1.0發(fā)布,其用戶界面在當時非常具有新意。這門語言雖然還叫做Basic(不再是全部大寫),但更加結構化了,行號也被去除。實際上,這門語言與那些內置于TRS-80、Apple II及Atari里的舊的ROM BASIC相比,更像是帶Basic風格動詞的Pascal。
經(jīng)過六個版本,Visual Basic變得非常漂亮。用戶界面發(fā)生了許多變化,但依然保留著“把代碼關聯(lián)到用戶界面”的主旨。這使得它在與即時編譯結合時變成了一個快速原型的優(yōu)異環(huán)境。
優(yōu)點:整潔的編輯環(huán)境。易學、即時編譯導致簡單、迅速的原型。大量可用的插件。雖然有第三方的DirectX插件,DirectX 7已準備提供Visual Basic的支持。
缺點:程序很大,而且運行時需要幾個巨大的運行時動態(tài)連接庫。雖然表單型和對話框型的程序很容易完成,要編寫好的圖形程序卻比較難。調用Windows的API程序非常笨拙,因為VB的數(shù)據(jù)結構沒能很好的映射到C中。有OO功能,但卻不是完全的面向對象。專利權。
移植性:非常差。因為Visual Basic是微軟的產品,你自然就被局限在他們實現(xiàn)它的平臺上。也就是說,你能得到的選擇是:Windows,Windows或Widnows。當然,有一些工具能將VB程序轉變成Java。
使用Visual Basic編寫的游戲:一些。有很多使用VB編寫的共享游戲,還有一些是商業(yè)性的。
資料:微軟的VB頁面有一些信息。
7、Java
Java是由Sun最初設計用于嵌入程序的可移植性“小C++”。在網(wǎng)頁上運行小程序的想法著實吸引了不少人的目光,于是,這門語言迅速崛起。事實證明,Java不僅僅適于在網(wǎng)頁上內嵌動畫 — 它是一門極好的完全的軟件編程的小語言。“虛擬機”機制、垃圾回收以及沒有指針等使它很容易實現(xiàn)不易崩潰且不會泄漏資源的可靠程序。
雖然不是C++的正式續(xù)篇,Java從C++ 中借用了大量的語法。它丟棄了很多C++的復雜功能,從而形成一門緊湊而易學的語言。不像C++,Java強制面向對象編程,要在Java里寫非面向對象的程序就像要在Pascal里寫“空心粉式代碼”一樣困難。
優(yōu)點:二進制碼可移植到其他平臺。程序可以在網(wǎng)頁中運行。內含的類庫非常標準且極其健壯。自動分配合垃圾回收避免程序中資源泄漏。網(wǎng)上數(shù)量巨大的代碼例程。
缺點:使用一個“虛擬機”來運行可移植的字節(jié)碼而非本地機器碼,程序將比真正編譯器慢。有很多技術(例如“即時”編譯器)很大的提高了Java的速度,不過速度永遠比不過機器碼方案。早期的功能,如AWT沒經(jīng)過慎重考慮,雖然被正式廢除,但為了保持向后兼容不得不保留。越高級的技術,造成處理低級的機器功能越困難,Sun為這門語言增加新的“受祝福”功能的速度實在太慢。
移植性:最好的,但仍未達到它本應達到的水平。低級代碼具有非常高的可移植性,但是,很多UI及新功能在某些平臺上不穩(wěn)定。
使用Java編寫的游戲:網(wǎng)頁上有大量小的Applet,但僅有一些是商業(yè)性的。有幾個商業(yè)游戲使用Java作為內部腳本語言。
資料:Sun的官方Java頁面有一些好的信息。IBM也有一個非常好的Java頁面。JavaLobby是一個關于Java新聞的最好去處。
8、創(chuàng)作工具
上面所提及的編程語言涵蓋了大多數(shù)的商業(yè)游戲。但是也有一個例外,這個大游戲由于它的缺席而變得突出。
“神秘島”。沒錯,賣得最好的商業(yè)游戲不是使用以上任何一門語言編的,雖然有人說“神秘島”99%是使用 3D建模工具制作的,其根本的編程邏輯是在HyperCard里完成的。
多數(shù)創(chuàng)作工具有點像Visual Basic,只是它們工作在更高的層次上。大多數(shù)工具使用一些拖拉式的流程圖來模擬流程控制。很多內置解釋的程序語言,但是這些語言都無法像上面所說的單獨的語言那樣健壯。
優(yōu)點:快速原型 — 如果你的游戲符合工具制作的主旨,你或許能使你的游戲跑得比使用其他語言快。在很多情況下,你可以創(chuàng)造一個不需要任何代碼的簡單游戲。使用插件程序,如Shockware及IconAuthor播放器,你可以在網(wǎng)頁上發(fā)布很多創(chuàng)作工具生成的程序。
缺點:專利權,至于將增加什么功能,你將受到工具制造者的支配。你必須考慮這些工具是否能滿足你游戲的需要,因為有很多事情是那些創(chuàng)作工具無法完成的。某些工具會產生臃腫得可怕的程序。
移植性:因為創(chuàng)作工具是具有專利權的,你的移植性以他們提供的功能息息相關。有些系統(tǒng),如Director可以在幾種平臺上創(chuàng)作和運行,有些工具則在某一平臺上創(chuàng)作,在多種平臺上運行,還有的是僅能在單一平臺上創(chuàng)作和運行。
使用創(chuàng)作工具編寫的游戲:“神秘島”和其他一些同類型的探險游戲。所有的Shockwave游戲都在網(wǎng)絡上。
資料:Director、HyperCard、SuperCard、IconAuthor、Authorware。
9、結論(Conclusion)
你可能希望得到一個關于“我該使用哪種語言”這個問題的更標準的結論。非常不幸,沒有一個對所有應用程序都最佳的解決方案。C適于快而小的程序,但不支持面向對象的編程。C++完全支持面向對象,但是非常復雜。Visual Basic與Delphi易學,但不可移植且有專利權。Java有很多簡潔的功能,但是慢。創(chuàng)作工具可以以最快的速度產生你的程序,但是僅對某一些類型的程序起作用。最好的方法是決定你要寫什么樣的游戲,并選擇對你的游戲支持最好的語言。“試用三十天”的做法成為工業(yè)標準是件好事情。
【編輯推薦】