如果你想完成一款游戲,你就必須認(rèn)識(shí)到這一點(diǎn)。無論你有多看重自己以及自己的想法,你都要勇于拋棄其中的多數(shù)想法。
在過去三個(gè)月中,我都在致力于開發(fā)一款名為《Lunar Lander 3D》的小游戲。我著手這個(gè)項(xiàng)目的主要原因是希望掌握創(chuàng)造游戲所需了解的知識(shí)。除此之外,我還希望借此轉(zhuǎn)移自己在課業(yè)上的壓力。雖然這款游戲很小很簡單,其開發(fā)過程卻讓我收獲了大量有用的知識(shí)。我將在本文列出自己在開發(fā)游戲過程中學(xué)到的一些重要知識(shí)。
在進(jìn)入正題之前,我想先說明一下,我并不是什么專業(yè)人士。我只是一個(gè)常坐在電腦前的呆子,本文內(nèi)容面向想自己試著創(chuàng)造一款游戲的業(yè)余程序員和愛好者。所以本文的重點(diǎn)是讓你如何完成一款游戲,而非制作一款技術(shù)華麗的半成品游戲。
你的理念并不罕見
如果你想完成一款游戲,你就必須認(rèn)識(shí)到這一點(diǎn)。無論你有多看重自己以及自己的想法,你都要勇于拋棄其中的多數(shù)想法。當(dāng)我開始制作自己的游戲時(shí),滿腦子都是自己想用的理念。我想在游戲世界中加入移動(dòng)的平臺(tái)的障礙,復(fù)雜的攝像系統(tǒng)以及一系列其他元素。但我知道如果我想完成游戲,就得更改自己的多數(shù)理念。要記住當(dāng)你是孤軍奮戰(zhàn)時(shí),你就無法搞定一個(gè)專業(yè)團(tuán)隊(duì)需要用一年以上時(shí)間才能完成的項(xiàng)目。雖然一年以上的時(shí)間對(duì)專業(yè)團(tuán)隊(duì)來說并非很長的時(shí)間,但卻業(yè)余愛好者來說卻是個(gè)大難題。要根據(jù)自己的想法合理安排開發(fā)時(shí)間,例如將其控制在6個(gè)月以內(nèi)。
不要從頭做起
如果你并沒有什么編碼基礎(chǔ),那就無法一開始就編寫出一款游戲。這聽起來難以讓人接受,但如果你確實(shí)沒有一系列持續(xù)使用的代碼,你可能就無法持續(xù)長時(shí)間地編程。如果你沒有那么長久的編程經(jīng)驗(yàn),那么就不能幻想開發(fā)一款游戲。我開始制作自己的游戲時(shí),已經(jīng)有了一個(gè)很大的代碼庫。我針對(duì)一般窗口創(chuàng)造、輸入管理、粒子效果、運(yùn)算以及各類用途的代碼。有了這些現(xiàn)成的代碼,我就能夠快速展開工作,制作與游戲相關(guān)的內(nèi)容。除此之外,我還不需要去測(cè)試這些代碼,因?yàn)槲抑熬帉懙臅r(shí)候就已經(jīng)測(cè)試過了。你在開始創(chuàng)造自己的游戲之前,不需要逐個(gè)編寫每一節(jié)代碼。只要花點(diǎn)時(shí)間先做一點(diǎn)基礎(chǔ)工作即可。如果你覺得自己還是得創(chuàng)建一個(gè)代碼庫,那就先編寫小型用來測(cè)試一下。我處理粒子效果、輸入管理和控制執(zhí)行代碼時(shí)就是這么做的。這可能不像制作游戲一樣令人興奮,但對(duì)你卻有長期的幫助。
借鑒想法
我要再次強(qiáng)調(diào)這個(gè)環(huán)節(jié)的重要性。當(dāng)你開始編寫一款游戲時(shí),不要害怕使用他人的理念,庫或工具?梢员M量借鑒,因?yàn)檫@可以讓你的工作更輕松。我在制作自己的游戲時(shí),借鑒了Conor Stoke的軸線對(duì)齊邊界框樹,Paul Nettle的碰撞檢測(cè)文件,id Software的Q3Radiant關(guān)卡編輯器。為什么我要用其他人的想法和工具來解決自己本可以完成的問題呢?原因就在于,這樣更簡單——我使用這些不同的資源是因?yàn)楣?jié)省時(shí)間。使用現(xiàn)成的方法進(jìn)行碰撞檢測(cè),這樣我就不需要將時(shí)間浪費(fèi)在測(cè)試自己的碰撞系統(tǒng)上了。我根據(jù)自己的需求調(diào)整了id Software的地圖編輯器,就不需要再制作自己的編輯器了。除此之外,id地圖編輯器非常適合我,這又為我節(jié)省了不少功夫。不要執(zhí)拗于自己的游戲一定要有定制工具和解決方案。如果你夠精明,就會(huì)知道何時(shí)要采用新理念,何時(shí)可以使用現(xiàn)成的東西。
避免使用3D地形引擎
如果是為了創(chuàng)造游戲而制作引擎,那就很可能被卡在半途。無論你多努力地嘗試,總會(huì)發(fā)現(xiàn)自己無所進(jìn)展。根據(jù)我制作游戲的經(jīng)驗(yàn),你自己編寫游戲時(shí)并不需要用到引擎。要記住,你是一個(gè)人而不是一家公司在編寫游戲。你不需要一個(gè)反復(fù)重用的引擎。編寫引擎的一個(gè)理由就是代碼重用,但沒有引擎你也照樣可以做到這一點(diǎn)。只要設(shè)計(jì)合理,你就能夠?qū)⒆约浩渌?xiàng)目的元素重用到游戲上。例如,我編寫的游戲所用的新代碼都不是特定的游戲代碼,我可以將其重用于其他項(xiàng)目。編寫引擎以獲得引擎本身的知識(shí)及其背后的設(shè)計(jì)過程當(dāng)然可以,像如果你是要制作一款游戲那就要避免這種情況了。
不要在圖像上畫蛇添足
你制作自己的游戲時(shí),不要添加一些并不會(huì)讓游戲更棒的圖像特點(diǎn)。不要使用GeForce20那種很棒的擴(kuò)展功能,以及其他的逐象素、凹凸貼圖、紋理動(dòng)畫、逐象素深度陰影等元素,因?yàn)槟愀揪筒恍枰。如果你將自己的游戲定義為靠圖像來撐場(chǎng)面的那種,那你可能并不了解游戲。你制作的只是一個(gè)技術(shù)演示樣本。我在自己的游戲中使用的最復(fù)雜的圖像功能就是多重紋理,但如果要游戲正常運(yùn)行也并不需要這種功能。我知道自己并非id Software成員,也并不需要很高端的硬件來支持我這款簡單的游戲。如果你保持簡單性,不但可以擴(kuò)大游戲受眾,還能夠?qū)⒆约旱木杏诟匾沫h(huán)節(jié),例如游戲玩法。
投稿郵箱:chuanbeiol@163.com 詳情請(qǐng)?jiān)L問川北在線:http://m.sanmuled.cn/