引擎向左,游戲向右:一、幾個(gè)問題
關(guān)鍵詞:
游戲引擎 ?? ??????????????????????????????????????
身邊的大部分認(rèn)識(shí)我的人都一眼能看出來這小子是個(gè)不知道隱藏自己內(nèi)心世界的人,我確實(shí)不善隱藏,今天心中又有一些事情了,裝也裝不住,干脆拿出來跟大家一起分享。
口水、板磚我想是會(huì)有的,就像一如既往的那樣。但這次我不會(huì)接招,愿打愿挨,因?yàn)檫@篇文章不是為了自己的利益,既然無關(guān)于自己的利益,又何必花那個(gè)時(shí)間跟別人費(fèi)口舌呢?
我只由衷地希望,每個(gè)耐著性子看完這篇文章的人,都能認(rèn)真想想,思考思考,并用理性和安逸的聲音,來進(jìn)行辯論。
廢話就不多說了,先說幾個(gè)最近想到的問題……
最讓人討厭的問題:
游戲引擎是什么?為什么?怎么辦?
按道理說,對(duì)一件事情,最起碼需要明白三個(gè)問題:是什么?為什么?怎么辦?分別是概念性問題、存在性問題和實(shí)踐性問題,也就是我們常說的“馬哲老三段”。但對(duì)于人,恰恰這三個(gè)問題最難定論,不同人對(duì)同一件事物在不同時(shí)刻的認(rèn)識(shí)總是千差萬別。
三年前的我和現(xiàn)在對(duì)引擎的感覺是完全不同的,不知道那些NB公司又當(dāng)如何,也不知道大家如何,但長期泡BBS的我明明顯顯地知道:游戲引擎的概念在程序員群中有多種不同的概念,以至于在概念問題上有不少潛藏的爭端。
大凡如此,游戲引擎在一部分人那里,只是對(duì)各種API集合的再封裝;另一部分人眼里,是場景系統(tǒng)和場景編輯功能;還有一些人則各自關(guān)注著其他一些零碎的方面:比如擴(kuò)展性,可維護(hù)性和安全性。
在游戲引擎的概念上沒有統(tǒng)一的認(rèn)識(shí),不得不說,游戲引擎,要么不能算作一個(gè)專門的學(xué)科,要么就是一個(gè)剛剛出生的學(xué)科,總之,丫就是豬八戒照鏡子——左右不是人。
這世界上是有那種把游戲引擎看作專門學(xué)科的人的,當(dāng)然他們自己往往不這么認(rèn)為。我曾經(jīng)也是受過這些前輩們影響的,所以現(xiàn)在才會(huì)因?yàn)檫@個(gè)問題被搞得精神崩潰。
一個(gè)引擎必須再封裝API,這是常識(shí),但如果一個(gè)引擎只是立足于再封裝API的話,那它就與工具集無二了:當(dāng)開發(fā)人員拿到引擎的時(shí)候,還有很多構(gòu)架的、邏輯的東西要編碼解決,如果是這樣的話,這種引擎對(duì)于這些開發(fā)人員,到底比直接使用API簡單多少呢?如果算上熟悉這種引擎花進(jìn)去的成本和時(shí)間的話……
惱人的問題:我還差多遠(yuǎn)?
從2005年開始,無論是NF3D、腳本編譯還是Python、Lua,每一個(gè)小小的進(jìn)步都會(huì)讓我的大腦充血,血脈泵張,心臟與靈魂一起脈動(dòng)著,幸福的興奮溢于言表。而在這之后的某一天,總會(huì)有一個(gè)聲音,細(xì)微但充滿殺傷力,從我的靈魂深處冒將出來,將我打擊,使得我回到冷靜和現(xiàn)實(shí)之中。
這句話就是:“離一個(gè)真正的游戲,我還差多遠(yuǎn)?”
而每一次的答案都一樣:
“越來越遠(yuǎn)……”
明明我的這些工具集的概念和模塊都在不斷完善,API都在不斷封裝,場景系統(tǒng)也小具規(guī)模,以至于一個(gè)平常數(shù)十句話的代碼現(xiàn)在一兩句就可以搞定,但是為什么我卻打心眼里覺得自己離一個(gè)游戲越差越遠(yuǎn)呢?
最不用懷疑的問題:給你一個(gè)引擎,你能作出你心中的游戲嗎?
如果不假思索就回答“可以”,我勸您再好好想想。想多了,看多了,你就會(huì)發(fā)現(xiàn),任何引擎都只關(guān)注其相關(guān)的領(lǐng)域,這里所說的引擎不包括那些還沒作出游戲來的引擎或者僅做了個(gè)Demo的引擎。
為什么這么說呢?因?yàn)橐姹仨氁械囊稽c(diǎn)是場景的管理,而這部分,大凡是跟場景的需要相關(guān)的。當(dāng)你要做個(gè)RTS,而恰恰拿到的是Unreal Engine,我只能默默為你祝福了。
各行其道,好端端的一個(gè)人,若和非洲綠猴和果子貍“行道”,那么結(jié)果地球人都知道了。世上的道理又何嘗不是相通的呢?不同游戲類型,雖然都披著游戲的外衣,但是其內(nèi)涵和外延均不完全等同,既是如此,又怎么可能在沒有一點(diǎn)技術(shù)積累的情況下,沒有對(duì)每種游戲類型的把握的前提下,誕生出一個(gè)“全能引擎”呢?難上加難。
從這點(diǎn)上看,游戲,是內(nèi)涵,引擎,是外延。說得通俗點(diǎn):沒有引擎,游戲照樣存在;但沒有游戲,引擎?汽車發(fā)動(dòng)機(jī)?飛機(jī)發(fā)動(dòng)機(jī)?還是導(dǎo)彈發(fā)動(dòng)機(jī)?
最富哲學(xué)意味的問題:是先有雞還是先有蛋?
雞蛋問題本身我就不用再介紹了吧,我相信中國像我這種土鱉程序員還是很少的。那么,是先有引擎還是先有游戲呢?
游戲的歷史我不是特別懂,如果從概念上說,我到更加傾向于這個(gè)觀點(diǎn):當(dāng)一個(gè)人用了一個(gè)工具作出了一個(gè)游戲,這個(gè)工具就可以被稱作引擎。因?yàn)橐娴慕K極目標(biāo)是產(chǎn)品,如果一個(gè)引擎連這個(gè)終極目標(biāo)還沒有達(dá)成,我倒寧可認(rèn)為這是一個(gè)半成品或者殘次品。這可能是跟我一向?qū)ο笱浪械睦硇灾髁x者和研究主義者們有著先天的、野蠻的、邪惡的仇恨有關(guān)。但是如果一個(gè)引擎連一個(gè)游戲都沒有做過,它有什么資格讓別人相信和認(rèn)同這個(gè)引擎是一個(gè)可以用來做游戲的引擎呢?
寫到這里,想起了小學(xué)的一篇作文題:
“不會(huì)下地,怎會(huì)種地?VS 不會(huì)種地?怎可下地?”