【ZT】3D游戲引擎FAQ
1. 3D引擎(3D engine)、3D編程語(yǔ)言(3D language)和3D創(chuàng)作系統(tǒng)(3D authoring system)的區(qū)別是什么?
3D編程語(yǔ)言提供了一種更加容易的編寫(xiě)3D應(yīng)用程序的方法,因?yàn)槟闶褂玫氖且环N專(zhuān)門(mén)為3D游戲設(shè)計(jì)的腳本語(yǔ)言來(lái)編寫(xiě)DirectX界面。這種語(yǔ)言不受3D引擎速度和自由度的影響,并且避免了使用“真正”編程語(yǔ)言帶來(lái)的問(wèn)題。很多3D編程語(yǔ)言使用Basic——一種比較容易學(xué)習(xí)的語(yǔ)言,但由于其落后的語(yǔ)言結(jié)果,所以并不適合于編寫(xiě)大而復(fù)雜的游戲。比較適合于當(dāng)前游戲開(kāi)發(fā)需要的是基于C或者JavaScript的語(yǔ)言。
創(chuàng)作游戲最簡(jiǎn)單的方法是使用3D創(chuàng)作系統(tǒng)——它們有自己的3D引擎,并且具備可視化編輯器,可以很快地創(chuàng)作一個(gè)游戲原型。當(dāng)然了,只有很簡(jiǎn)單的游戲才可能繞開(kāi)編程,創(chuàng)作系統(tǒng)一般都提供腳本語(yǔ)言來(lái)進(jìn)行編程或定制游戲。利用創(chuàng)作系統(tǒng),再加上對(duì)獨(dú)立3D引擎的編程,可以在很短的時(shí)間內(nèi)創(chuàng)作一款游戲,很多大的游戲公司都開(kāi)始使用創(chuàng)作系統(tǒng)來(lái)開(kāi)發(fā)游戲了。
一些簡(jiǎn)單的創(chuàng)作系統(tǒng)針對(duì)FPS(First or third Person Shooters),不提供或者只提供有限的腳本編程。盡管利用他們開(kāi)發(fā)的FPS游戲并沒(méi)有什么市場(chǎng),但如果你不希望使用腳本或者不想讓你的游戲商業(yè)化的話,也可以使用他們來(lái)開(kāi)發(fā)游戲。而多數(shù)的創(chuàng)作系統(tǒng)可以用來(lái)開(kāi)發(fā)任何種類(lèi)的游戲或者3D應(yīng)用程序。下面是一個(gè)當(dāng)下流行的系統(tǒng)和引擎的對(duì)比表:
**代表可以被顯示,但需要第三方工具來(lái)創(chuàng)建。
$$$表示發(fā)行或者銷(xiāo)售游戲需要額外收費(fèi)或履行特定的條件。
該表格基于2005年秋的各廠家說(shuō)明書(shū),不保證所有數(shù)據(jù)的正確性。如果有多種許可版本,選擇價(jià)格適中的版本列出。列出的Gamestudio/A6屬性基于Gamestudio網(wǎng)站最新的更新版本。
|
FPS |
Authoring
Systems |
3D
Languages |
3D
Engines |
|||||||||||||||
|
3DGM |
Quest |
Radish |
Virtools |
A6std |
A6ext |
A6com |
A6Pro |
DB |
DBPRO |
Blitz |
TV3D |
Irrlicht |
Torque |
Nebula |
|
Cipher |
PR |
Jupiter |
Price (US
$) |
$49 |
$749 |
$2495 |
$5000 |
€49 |
€89 |
€199 |
€899 |
$49 |
$99 |
$100 |
$500 |
— |
$100 |
— |
— |
$100 |
$1500 |
$$$ |
Publish |
$$$ |
no |
no |
no |
Splash |
Splash |
Splash |
no |
no |
no |
no |
no |
no |
$$$ |
no |
LGPL |
no |
$$$ |
$$$ |
Renderer |
DX6 |
DX8 |
DX8 |
|
DX9 |
DX9 |
DX9 |
DX9 |
DX6 |
DX9 |
DX7 |
DX8 |
|
|
DX8 |
OG |
DX8 |
DX9 |
|
Software
T&L |
yes |
— |
— |
yes |
yes |
yes |
yes |
yes |
yes |
— |
— |
— |
yes |
— |
— |
— |
— |
yes |
yes |
Hardware
T&L |
— |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
— |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
Culling
system |
— |
|
|
Portal |
BSP |
BSP |
BSP |
BSP |
— |
BSP |
— |
BSP |
|
|
|
Portal |
BSP |
BSP |
BSP |
LOD
system |
— |
yes |
yes |
yes |
— |
yes |
yes |
yes |
— |
yes |
yes |
— |
— |
yes |
yes |
yes |
yes |
yes |
yes |
Terrain |
yes |
— |
yes |
yes |
— |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
Shadow
mapping |
— |
— |
— |
yes |
yes |
yes |
yes |
yes |
— |
** |
yes |
yes |
** |
yes |
— |
yes |
yes |
yes |
yes |
Dynamic
shadows |
— |
$59 |
yes |
yes |
— |
— |
yes |
yes |
— |
yes |
— |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
Shader |
— |
yes |
yes |
— |
— |
— |
yes |
yes |
— |
yes |
— |
yes |
— |
— |
yes |
yes |
yes |
yes |
yes |
Particle
generator |
— |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
— |
yes |
— |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
Beam
generator |
— |
— |
— |
— |
— |
— |
yes |
yes |
— |
— |
— |
— |
— |
— |
yes |
yes |
— |
— |
— |
Template
system |
yes |
— |
— |
yes |
yes |
yes |
yes |
yes |
— |
— |
— |
— |
— |
— |
— |
— |
— |
— |
— |
Bones
animation |
— |
yes |
yes |
yes |
— |
— |
yes |
yes |
— |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
Save/Load
System |
— |
— |
— |
yes |
yes |
yes |
yes |
yes |
— |
— |
— |
— |
— |
— |
— |
— |
— |
— |
yes |
Expandable |
— |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
— |
yes |
yes |
— |
— |
— |
yes |
yes |
— |
— |
yes |
Network
system |
— |
$799 |
zone |
zone |
— |
— |
c/s |
zone |
p-p |
c/s |
c/s |
— |
c/s |
zone |
c/s |
c/s |
c/s |
c/s |
zone |
Physics
engine |
— |
yes |
yes |
$5000 |
— |
— |
1
obj |
yes |
— |
— |
— |
— |
— |
— |
— |
— |
— |
— |
yes |
Level
editor |
— |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
— |
$99 |
yes |
— |
— |
yes |
— |
— |
— |
yes |
yes |
Model
editor |
— |
yes |
— |
yes |
yes |
yes |
yes |
yes |
— |
— |
— |
— |
— |
— |
— |
— |
— |
— |
— |
Script
editor |
— |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
yes |
— |
— |
— |
— |
— |
— |
— |
— |
Script
compiler |
— |
— |
— |
— |
yes |
yes |
yes |
yes |
— |
yes |
yes |
— |
— |
— |
— |
— |
— |
— |
— |
Script
debugger |
— |
— |
— |
— |
yes |
yes |
yes |
yes |
— |
yes |
— |
— |
— |
yes |
yes |
— |
— |
— |
— |
Script
syntax |
— |
Chart |
Lisp |
Chart |
C |
C |
C |
C |
Basic |
Basic |
Basic |
— |
— |
C |
TCL |
|
— |
— |
C |
上表并不是要說(shuō)明哪個(gè)系統(tǒng)更好。即使功能很相似,各系統(tǒng)之間在速度或穩(wěn)定性方面也會(huì)有差距。對(duì)于你來(lái)說(shuō)哪個(gè)系統(tǒng)更加出色主要取決于你的工程、目標(biāo)、個(gè)人傾向,當(dāng)然還有你的預(yù)算。你可以通過(guò)分析屏幕截圖、演示和使用試用版來(lái)決定你使用哪個(gè)系統(tǒng)。
2. 什么是渲染器(Renderer),什么是頂點(diǎn)變換和光照(T&L)?
渲染器是3D引擎的核心部分,它完成將3D物體繪制到屏幕上的任務(wù)。根據(jù)3D硬件使用方法的不同,可以分為DirectX和OpenGL兩種渲染器。OpenGL渲染器通過(guò)OpenGL圖形庫(kù)來(lái)使用3D硬件,多數(shù)3D卡支持這種方法。而DirectX渲染器使用微軟的DirectX庫(kù)——?dú)w并到Windows操作系統(tǒng)中。在老的3D卡上面,OpenGL一般繪制速度較快一些,而在現(xiàn)代的3D卡上面,DirectX表現(xiàn)則更加出色。現(xiàn)在的OpenGL版本只有一個(gè),而DirectX版本有很多:
DX6 |
基本的3D支持,沒(méi)有硬件T&L,整合于Windows95中 |
DX7 |
與DX6相似,但具有硬件T&L,整合于Windows98中 |
DX8 |
有了重大改進(jìn),支持著色器,整合于Windows2000、ME、XP中 |
DX9 |
和DX8類(lèi)似,具有類(lèi)C的著色器語(yǔ)言,整合于WindowsXP SP2中 |
在一個(gè)物體被繪制到屏幕之前,必須先計(jì)算它的光照,并且將它從3D世界轉(zhuǎn)換到屏幕二維坐標(biāo)系中(這兩個(gè)過(guò)程稱(chēng)為光照和頂點(diǎn)變換,也就是T&L,Transformation & Lighting)。渲染器可以使用自己的算法(軟件T&L),也可以使用3D硬件(硬件T&L,OpenGL和DirectX7或以上版本)來(lái)完成這個(gè)任務(wù)。在老的系統(tǒng)上,必須模擬硬件T&L,所以運(yùn)行速度很慢;而在新一代的3D卡(GeForce和Radeon)上面,硬件T&L運(yùn)行十分快,并且比軟件T&L光照效果要好。一些渲染器對(duì)兩種方法都支持,這樣可以讓硬件發(fā)揮最大的效果。
3. 什么是剔除(culling)系統(tǒng)和LOD系統(tǒng)?
剔除系統(tǒng)可以只繪制出游戲場(chǎng)景中未被墻及其他物體遮擋的部分。一般的剔除系統(tǒng)是基于BSP樹(shù)或者入口(Portal)的。BSP樹(shù)系統(tǒng)是最快和最有效的場(chǎng)景組織結(jié)構(gòu),特別是對(duì)于室內(nèi)場(chǎng)景來(lái)說(shuō),但是BSP樹(shù)必須在場(chǎng)景編輯器中預(yù)計(jì)算。渲染器不支持使用八叉樹(shù)(Octree)來(lái)組織場(chǎng)景的剔除。多數(shù)商業(yè)化3D引擎使用基于BSP樹(shù)的剔除系統(tǒng)。如果使用BSP樹(shù)的剔除系統(tǒng)的話,室內(nèi)渲染速度和場(chǎng)景大小、對(duì)象數(shù)目無(wú)關(guān),甚至在老的PC上都可以使游戲以正常的幀率運(yùn)行。
LOD系統(tǒng)可以增加室外場(chǎng)景的幀率。如果攝像機(jī)離物體比較遠(yuǎn)的話,它可以自動(dòng)將物體轉(zhuǎn)換為“簡(jiǎn)單”形體,這樣就減少了每幀要繪制的多邊形數(shù)目。
4. 什么是陰影貼圖(Shadow Mapping)?
也叫做光照貼圖(Light Mapping)——這是一種可以在不減少幀率的情況下達(dá)到真實(shí)感光照和陰影效果的方法。陰影貼圖編輯器允許在場(chǎng)景中放置任意數(shù)目的靜態(tài)光源,它會(huì)為每個(gè)面預(yù)計(jì)算光流量(light flow)和靜態(tài)陰影。現(xiàn)代商業(yè)3D游戲中多數(shù)都會(huì)使用到陰影貼圖。如下圖所示,平滑的光照和陰影極大地提升了游戲的氛圍。
具有陰影貼圖的場(chǎng)景 不具有陰影貼圖的場(chǎng)景
5. 什么是粒子系統(tǒng)
粒 子系統(tǒng)是一種特效發(fā)生器,它可以制造大量的小粒子來(lái)達(dá)到某種特殊的效果,比如煙霧、火焰或者爆炸。好的粒子效果甚至比渲染好的動(dòng)畫(huà)都出色,正因?yàn)槿绱耍?dāng) 前幾乎所有的游戲中都使用了粒子系統(tǒng)。為了制造真實(shí)的粒子效果,粒子發(fā)生器必須在不影響幀率的情況下控制成千上萬(wàn)的粒子運(yùn)動(dòng)。簡(jiǎn)單的粒子系統(tǒng)只允許設(shè)置粒 子的一些屬性,比如生存時(shí)間、重力或者顏色;復(fù)雜的粒子系統(tǒng)允許為每個(gè)粒子的運(yùn)動(dòng)函數(shù)編寫(xiě)代碼。一些粒子系統(tǒng)也包含了光線生成器來(lái)創(chuàng)建光線或者軌跡。
6. 什么是著色器(shader)?
著色器為圖形渲染增加了新的方案,它允許頂點(diǎn)和像素級(jí)別的變換(transform)、光照(lighting), 以及在運(yùn)行時(shí)間渲染方式的修改。一個(gè)著色器是一段小腳本,運(yùn)行在圖形硬件上,為渲染到屏幕上的每個(gè)頂點(diǎn)或像素提供渲染方式。這就為用戶(hù)提供了一種新的靈活 的像素渲染的方法。頂點(diǎn)和像素著色器可以用來(lái)生成真實(shí)感水波、卡通風(fēng)格、為模型覆蓋毛發(fā)或者控制火山的熔巖等。很多新的游戲引擎都支持著色器。
法線映射著色器 熔巖著色器
7. 什么是骨骼動(dòng)畫(huà)(bones animation)
當(dāng)前有兩種模型動(dòng)畫(huà)的方式:頂點(diǎn)動(dòng)畫(huà)和骨骼動(dòng)畫(huà)。頂點(diǎn)動(dòng)畫(huà)中,每幀動(dòng)畫(huà)其實(shí)就是模型特定姿態(tài)的一個(gè)“快照”。通過(guò)在幀之間插值的方法,引擎可以得到平滑的動(dòng)畫(huà)效果。在骨骼動(dòng)畫(huà)中,模型具有互相連接的“骨骼”組成的骨架結(jié)構(gòu),通過(guò)改變骨骼的朝向和位置來(lái)為模型生成動(dòng)畫(huà)。
骨 骼動(dòng)畫(huà)比頂點(diǎn)動(dòng)畫(huà)要求更高的處理器性能,但同時(shí)它也具有更多的有點(diǎn),骨骼動(dòng)畫(huà)可以更容易、更快捷地創(chuàng)建。不同的骨骼動(dòng)畫(huà)可以被結(jié)合到一起——比如,模型可 以轉(zhuǎn)動(dòng)頭部、射擊并且同時(shí)也在走路。一些引擎可以實(shí)時(shí)操縱單個(gè)骨骼,這樣就可以和環(huán)境更加準(zhǔn)確地進(jìn)行交互——模型可以俯身并向某個(gè)方向觀察或射擊,或者從 地上的某個(gè)地方撿起一個(gè)東西。多數(shù)引擎支持頂點(diǎn)動(dòng)畫(huà),但不是所有的引擎都支持骨骼動(dòng)畫(huà)。
一些引擎包含面部動(dòng)畫(huà)系統(tǒng),這種系統(tǒng)使用通過(guò)音位(phoneme)和情緒修改面部骨骼集合來(lái)表達(dá)面部表情和嘴部動(dòng)作。
8. 什么是保存/讀取系統(tǒng)(save/load system)?
這 種系統(tǒng)允許終端用戶(hù)保存整個(gè)游戲狀態(tài),它自動(dòng)“凍結(jié)”所有正在運(yùn)行的腳本和對(duì)象以及游戲變量,將它們寫(xiě)到一個(gè)文件中,有時(shí)候也有一張屏幕截圖。如果要在以 后的某個(gè)時(shí)間繼續(xù)游戲或者在任意點(diǎn)離開(kāi)和進(jìn)入游戲場(chǎng)景的話,這種功能就十分必要。存儲(chǔ)整個(gè)游戲狀態(tài)看起來(lái)并沒(méi)有什么難度,但在實(shí)際開(kāi)發(fā)的時(shí)候卻并不簡(jiǎn)單, 它必須在游戲引擎的核心代碼中實(shí)現(xiàn)。如果沒(méi)有這個(gè)系統(tǒng),為了保存游戲,就必須寫(xiě)一個(gè)腳本來(lái)存儲(chǔ)每個(gè)變量和對(duì)象的狀態(tài)——十分難使用,只有可能應(yīng)用在簡(jiǎn)單的 游戲中。所以說(shuō)來(lái),多數(shù)商業(yè)化高端引擎都包括存取系統(tǒng)。
9. 什么是物理引擎?
物 理引擎通過(guò)為剛性物體賦予真實(shí)的物理屬性的方式來(lái)計(jì)算它們的運(yùn)動(dòng)、旋轉(zhuǎn)和碰撞反映。為每個(gè)游戲使用物理引擎并不是完全必要的——簡(jiǎn)單的“牛頓”物理(比如 加速和減速)也可以在一定程度上通過(guò)編程或編寫(xiě)腳本來(lái)實(shí)現(xiàn)。然而,當(dāng)游戲需要比較復(fù)雜的物體碰撞、滾動(dòng)、滑動(dòng)或者彈跳的時(shí)候(比如賽車(chē)類(lèi)游戲或者保齡球游 戲),通過(guò)編程的方法就比較困難了。物理引擎使用對(duì)象屬性(動(dòng)量、扭矩或者彈性)來(lái)模擬剛體行為,這不僅可以得到更加真實(shí)的結(jié)果,對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)也比編 寫(xiě)行為腳本要更加容易掌握。
好的物理引擎允許有復(fù)雜的機(jī)械裝置,像球形關(guān)節(jié)、輪子、氣缸或者鉸鏈。有些也支持非剛性體的物理屬性,比如流體。
輪形發(fā)動(dòng)機(jī)(wheel motor) 流體物理
物理引擎可以從另外的廠商購(gòu)買(mǎi),而一些游戲開(kāi)發(fā)系統(tǒng)具備完整的物理引擎。但是要注意,雖然有的系統(tǒng)在其特性列表中說(shuō)他們有物理引擎,但其實(shí)是一些簡(jiǎn)單的加速和碰撞檢測(cè)屬性而已。
10. 什么是客戶(hù)端/服務(wù)器(client/server)網(wǎng)絡(luò)系統(tǒng)?
現(xiàn)在的多人游戲存在兩種基本的網(wǎng)絡(luò)系統(tǒng)類(lèi)型:點(diǎn)對(duì)點(diǎn)(peer-to-peer)和客戶(hù)端/服務(wù)器。在點(diǎn)對(duì)點(diǎn)系統(tǒng)中,所有連接起來(lái)的PC地位都是平等的,每個(gè)PC獨(dú)立運(yùn)行游戲,并且同其他PC都進(jìn)行更新信息的傳輸。而在客戶(hù)端/服務(wù)器系統(tǒng)中,其中的一個(gè)PC是掌管和運(yùn)行游戲的服務(wù)器,其他所有的PC都是客戶(hù)端,只進(jìn)行玩家屬性的更新和從服務(wù)器接收信息。為了不另外增加PC,一般情況下,一個(gè)PC在作為服務(wù)器的同時(shí)也是客戶(hù)端。
點(diǎn)對(duì)點(diǎn)系統(tǒng)在最初的多人游戲中使用,但在現(xiàn)在的游戲中很少使用這種網(wǎng)絡(luò)系統(tǒng),因?yàn)樗泻芏嗳毕荨|c(diǎn)對(duì)點(diǎn)游戲不能保證同步運(yùn)行,比如一個(gè)子彈在一臺(tái)PC上擊中了一個(gè)目標(biāo),但可能在另一臺(tái)PC上卻沒(méi)有(這是一致性問(wèn)題)。另外,由于連接起來(lái)的PC通信經(jīng)常沖突,所以連接到一起的玩家數(shù)目不可能太多。超過(guò)4個(gè)玩家數(shù)目的聯(lián)網(wǎng)游戲一般就要使用客戶(hù)端/服務(wù)器系統(tǒng)。區(qū)域系統(tǒng)(zone system)是改進(jìn)的客戶(hù)端/服務(wù)器系統(tǒng),它可以有多個(gè)服務(wù)器,游戲世界可以分割為由不同服務(wù)器控制的多個(gè)場(chǎng)景(區(qū)域)。區(qū)域系統(tǒng)用在玩家數(shù)量無(wú)限的大型多人在線游戲中。
客戶(hù)端/服務(wù)器系統(tǒng)中允許的玩家數(shù)量多少主要取決于多玩家通信時(shí)所需帶寬的大小。如果玩家移動(dòng)很快而可預(yù)知的移動(dòng)很少的話,需要的帶寬就大。在最壞的情況下(單服務(wù)器在線空中格斗游戲),利用modem連接的玩家數(shù)量一般要低于25個(gè)。如果游戲世界被分成多個(gè)區(qū)域,并且玩家僅僅是走路或者交談的話,即使1000個(gè)玩家也是可以同時(shí)在線的。
Peer-to-Peer |
最多4-5個(gè)玩家 |
Client/Server |
最多25-50個(gè)玩家 |
Zone |
人數(shù)不限,取決于服務(wù)器數(shù)目 |
11. 什么是腳本編譯器(script compiler)?
多數(shù)的3D游戲系統(tǒng)包含腳本語(yǔ)言,可以用來(lái)控制物體或角色。每秒運(yùn)動(dòng)的物體越多,需要用到的腳本指令就越多。一般的腳本語(yǔ)言都是解釋型的,也就是說(shuō)腳本指令首先被轉(zhuǎn)換為中介(intermediate)二進(jìn)制代碼,然后在游戲運(yùn)行時(shí)由引擎執(zhí)行。由于處理器需要逐字節(jié)地解釋代碼,所以解釋型腳本語(yǔ)言運(yùn)行很慢,會(huì)極大影響幀率,在基于解釋型腳本語(yǔ)言的游戲中,一個(gè)場(chǎng)景包含的角色或物體數(shù)量不能太多,并且行為也不能太復(fù)雜。
而腳本編譯器不是僅僅將腳本語(yǔ)言轉(zhuǎn)換為二進(jìn)制代碼,而是將它轉(zhuǎn)換為真正的機(jī)器代碼(machine code)——也就是處理器的本機(jī)語(yǔ)言。編譯好的腳本語(yǔ)言比解釋型腳本語(yǔ)言的運(yùn)行速度要快10倍左右,并且即使在同時(shí)有成千上萬(wàn)移動(dòng)對(duì)象的游戲中,也不會(huì)影響幀率。
注意:有些系統(tǒng)在他們的特性列表中宣揚(yáng)具有編譯器,但他們所謂的編譯僅僅是編譯為中介二進(jìn)制代碼,也就是說(shuō)使用的仍然是解釋型腳本。
12. C-Script腳本語(yǔ)言和“真正”的C/C++有什么區(qū)別?
C-Script和C/C++的語(yǔ)法類(lèi)似,但前者對(duì)于初學(xué)者來(lái)說(shuō)更容易掌握。主要的區(qū)別有:
l 在C/C++中,你可以定義結(jié)構(gòu)體或者類(lèi),而C-Script僅支持預(yù)定義對(duì)象的結(jié)構(gòu)體,比如entity或者panel等。在C-Script中是不能自定義結(jié)構(gòu)體和類(lèi)的。
l C/C++有很多表示數(shù)字的類(lèi)型,而在C-Script中只有一種數(shù)字變量類(lèi)型,對(duì)float和integer類(lèi)型都是通用的。
l C/C++中,如果有錯(cuò)誤發(fā)生的話,整個(gè)程序都會(huì)中止。而C-Script會(huì)給出一個(gè)準(zhǔn)確的出錯(cuò)消息,減少錯(cuò)誤發(fā)生的可能性。比如,在C-Script中你不可能對(duì)字符串或者數(shù)組越界訪問(wèn),而且你不用擔(dān)心什么情況下使用“.”、“->”還是“&”來(lái)存取對(duì)象的成員。
13. 哪種方法更好:使用C-Script編寫(xiě)游戲,還是使用DLL插件在“真實(shí)”的C++中編寫(xiě)?
這是不是一個(gè)絕對(duì)的問(wèn)題。C-Script比C++容易學(xué)習(xí)和使用,并且出錯(cuò)幾率少,代碼長(zhǎng)度短。它不需要面對(duì)編程中出現(xiàn)的很多復(fù)雜問(wèn)題,因?yàn)槌跏蓟⒍嗳蝿?wù)處理、對(duì)象之間交互和游戲循環(huán)等都是由引擎控制的。這樣說(shuō)來(lái),C-Script對(duì)于初學(xué)者是最好的選擇。而另一方面,真實(shí)的C++編程確可以給你更大的編程自由度,可以允許你為引擎添加特定的功能模塊,這是腳本語(yǔ)言所不能做到的,比如為一種新的3D對(duì)象添加特殊的渲染器,這取決于你編程能力的大小。
posted on 2007-05-10 01:59 lovedday 閱讀(3421) 評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi): ■ 3D Game Program