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