遊戲開發中常用哪種腳本語言?
隨著《魔獸世界》(以下簡稱wow)在世界範圍內流行,腳本漸漸被人們所熟知。由於wow強大的自定義界面系統,Lua這壹腳本語言壹舉成名。\x0d\\x0d\其實早在Lua腳本語言被大眾所熟知以前,遊戲業內人士就已經開始使用腳本來開發遊戲了。我們熟悉的很多國內的網絡遊戲大都運用了腳本開發,比如網遊的長青樹“夢幻西遊和《大話西遊2就大量應用了腳本技術。特別是《大話西遊2》,其實現基於Lua腳本遊戲開發的時間要遠早於《魔獸世界》。在腳本技術上,國內與國外其實是站在同壹起跑線上的,並不存在什麽差距,這也為國內遊戲產業趕超國外遊戲產業提供了強有力的技術保證。\x0d\\x0d\在單機遊戲時代,腳本這個詞幾乎很少出現,那麽,為什麽在網絡遊戲時代它卻成了業界的寵兒呢?原因是多方面的。\x0d\\x0d\單機遊戲時代,無論遊戲主機還是PC機,它們的性能都非常低下,從而需要具有較高執行效率的編譯型語言對機器的性能進行“壓榨”。隨著科技發展和硬件性能的不斷提升,腳本逐漸被開發者所接受並利用,但這並不是腳本流行起來的決定性因素,真正的原因還在於遊戲市場有這方面的需求。\x0d\\x0d\網絡遊戲時代的市場競爭激烈、變化莫測,如果延用單機時代壹年半載才出壹個新版本的開發方式,必然會被遊戲行業激烈的市場競爭所淘汰。正是這種遊戲市場需求旺盛和開發工具效率底下之間的矛盾,促使腳本語言迅速地發展起來。腳本的興起使得傳統編譯型語言(asngC/C )的性能優勢在硬件功效大幅攀升的今天已經不復存在。\x0d\\x0d\除了市場和硬件這兩個因素之外,還有壹點我們不能忽略。那就是用C/C 進行遊戲開發的高成本和高項目風險。隨著java/.net逐漸流行,學習C/C 編程語言的人越來越少,而網絡遊戲市場的需求卻越來越龐大,在程序人才大量匱乏的情況下,造成了c,C 人才的高成本。即便是有能力雇傭大量C/C 程序員的公司,在開發遊戲的過程中,也不能無視C/C 的高級特性和高度靈活性帶來的高項目風險。C/C 是易學難精的編程語言,在開發大型項目的時候由於程序員的水平參差不齊,所以極易造成溝通不暢。不僅如此,c,C 濫用的高級特性也容易引入大量bug。正是由於這些原因,遊戲公司開始在遊戲中使用腳本,希望通過腳本來解決這些高成本、高風險的問題。\x0d\\x0d\二.腳本的現狀\x0d\\x0d\腳本不僅解決了c/C 無法解決的開發效率難題,還降低了開發的成本和風險。因此腳本技術在遊戲業內蓬勃發展起來,並且已經成為遊戲業中不可或缺的壹環。縱觀當前腳本技術現狀,形勢壹片大好,不僅語言百家爭鳴,而且書籍種類也越來越多;不僅在遊戲業界開花結果,在web等其它應用領域也大放異彩。\x0d\\x0d\首先,我們來看看目前比較流行的腳本:Python、Lua、ruby和Erlang。Python和Lua是網絡遊戲開發的中堅力量;ruby憑借 rubyonrails的web開發框架的強勁力量,其在遊戲業的發展前途亦不可小視;Erlang在高並發性上的原生優勢吸引了無數追求高性能網遊服務器的開發人員的目光。\x0d\\x0d\其次,我們來看看書籍方面。大家都知道,文字對語言的普及起到了催化劑的作用,甚至可以看作是語言的有機組成部分。Python經過基金會的多年經營而得到NASA、Google重用的原因,就是由於其相關書籍種類比較豐富;Ruby隨著RoR的流行,這兩年行情看好,書籍也出版得越來越多了;Erlang是典型的少眾語言,但隨著多核時代的來臨和高並發網絡應用的需求,Erlang有著光明的發展前景,現在>等書也已經在策劃出版了;反觀Lua,雖然目前越來越流行,但由於它晦澀的接口設計和缺乏大型應用的支持,使得相關書籍寥寥無幾。\x0d\\x0d\最後,我們把焦點重新聚集到遊戲開發行業中,其實不難發現,除了前文提到的《魔獸世界》和網易經典“西遊系列”使用了腳本外,現在大多數比較流行的程序也都使用了腳本,如騰訊的QQgame))和搜狐的《天龍八部》等。不僅如此,現今的遊戲引擎也都提供了腳本接口,無論是商業的unreal引擎還是開源的 OGRE,無壹例外。\x0d\\x0d\三.腳本的優勢\x0d\\x0d\腳本之所以能夠在遊戲業中找到自己的壹席之地,是因為網絡遊戲市場需要壹個快速開發方案來避免C/C 開發帶來的項目高成本和高風險。那麽,腳本相對於C/C 這類編譯型語言到底有什麽優勢呢?\x0d\\x0d\I易於學習,代碼可維護性強\x0d\\x0d\腳本的語法通常都非常簡單,也沒有太多高階的特性,學習的門檻較C/C 低得多,比如Python可能只需要花壹個下午即可學會。這使得遊戲開發公司可以招聘完全沒有腳本、編程經驗的新手,通過低成本的培訓,他們便能迅速地走上工作崗位。除易於學習外,腳本代碼也有較強的可維護陛(盡管寫出沒有人看得懂的Lua代碼也非難事)。因為腳本沒有很多高階特性(如c 裏的模板元編程就是高階特性),所以腳本程序員就有更多的精力去架構、模式、重用和測試等工作,從而提高了代碼的可維護性。相應地,正因為沒有那麽多讓人困惑的高階特性,也使得腳本代碼“簡潔”不少。\x0d\\x0d\2.降低開發成本\x0d\\x0d\如上所言,由於腳本易於學習,遊戲開發公司可以大量起用新手,這正是降低成本的有效手段。那麽如何來確保新手所寫代碼的質量呢?眾所周知,新手無論用什麽語言寫程序肯定會出現bug,但用C/C 和Python做比較,可以看出,壹個新手用C/c 編寫出的程序所出現的bug肯定會比用Python編寫出現的bug要多。由於c程序需要編譯,而腳本程序(大部分)都可以直接解釋執行,所以在排除 bug方面腳本也占有壹定的優勢,這也使腳本在降低成本的同時能夠更好地保證代碼質量。\x0d\\x0d\3.形成人才壁壘\x0d\\x0d\軟件開發行業是壹個頗為動蕩的行業,無數的程序員都在跳槽和謀劃跳槽的狀態中生活,使用腳本開發形成人才壁壘是遊戲業減少人才流動的有效手段。因為現在腳本除了在遊戲業中非常流行外,並沒有在其它行業形成廣泛應用(雖然在web開發方面也有燎原之勢,但終究不如在遊戲業中的地位高)。這就使得遊戲程序員很少會考慮非遊戲行業的職位,但其它行業的程序員卻可能會因為腳本的易學習性而轉投遊戲業。腳本除了能有效形成行業間的人才壁壘外,也能有效地形成企業間的人才壁壘。由於現有的腳本種類繁多,不同公司往往有不同的選擇,甚至有些公司使用自己開發的腳本語言,所以程序員從公司A跳槽到公司B可能要學習使用另壹種腳本,這就提高了跳槽的成本,從而減少了人才的流動。\x0d\\x0d\四.腳本的發展趨勢\x0d\\x0d\依照目前趨勢來看,腳本語言壹定會更加的普及,而且會逐漸滲透到其它行業中。隨著網絡遊戲從業人員數量的增長,腳本程序員也壹直增加,而且Web2、0熱潮引起的網絡需求,也促成了壹批批新腳本程序員的誕生。網絡遊戲市場就像壹個正在滾動的雪球,推動著腳本的普及。\x0d\\x0d\隨著腳本在遊戲業中越來越流行,市場對生產效率的需要也會相應提高。腳本雖然在壹定程度上緩解了生產效率與生產工具之間的矛盾,但仍然不夠完善。由於市場競爭日趨激烈,而網絡遊戲在很多功能上的實現又都相差無幾,如網絡、數據庫、圖形甚至部分邏輯,這必然會引起網絡遊戲生產的組裝化壹壹大量中間件相互組合形成新的網絡遊戲。從目前來看,Bigwofld、PhysX和Unreal等都是比較流行的網絡遊戲中間件。腳本語言則是粘合各個中間件的良好膠水語言,所以隨著網絡遊戲的生產組裝化,腳本將有更大的發展空間。\x0d\\x0d\那麽,當腳本發展到如日中天的時候,可能取代C/C 這些編譯型語言嗎?筆者認為不會。腳本語言和編譯型語言在生產效率和執行效率上各擅勝場,網絡遊戲既需要能快速應變的腳本,也需要能快速執行以提供更絢麗遊戲效果的編譯型語言。未來,它們之間壹定會保持長久的和諧互補關系,相輔相成。\x0d\\x0d\五.結語\x0d\\x0d\綜上所述,網絡遊戲時代是上帝賜予腳本語言發展的絕好時機,腳本語言很快將迎來光芒四射的時代。腳本語言擁有編譯型語言無可比擬的生產效率優勢,所以它們將互補互助並肩奮戰在遊戲的最前線。