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