游戲編程模式(一):概述
除了最基本的編程語言,實(shí)際游戲開發(fā)涉及到的其它知識比較多:數(shù)據(jù)結(jié)構(gòu)算法、設(shè)計(jì)模式、性能優(yōu)化、多線程安全、網(wǎng)絡(luò)同步與優(yōu)化、數(shù)據(jù)存儲、游戲AI、計(jì)算機(jī)圖形渲染等,如果需要參與美術(shù)人員的工作還要掌握一定的美術(shù)創(chuàng)作能力如原畫設(shè)計(jì)、3D建模、CG動畫制作、游戲貼圖設(shè)計(jì)等。
我計(jì)劃盡可能地將自己在這些領(lǐng)域已掌握和即將學(xué)習(xí)的知識總結(jié)或者讀書筆記以專欄或者視頻的形式分享出來。本專欄將會總結(jié)《游戲編程模式》一書中介紹的一些設(shè)計(jì)模式,所以會更像是我自己的學(xué)習(xí)筆記。這本書的主要內(nèi)容,說是設(shè)計(jì)模式,不如說是編程模式或者設(shè)計(jì)套路。我們一般所說的設(shè)計(jì)模式可能會指著作《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖亍罚ㄒ韵潞喎QGoF)中介紹的23種設(shè)計(jì)模式,但在游戲開發(fā)中常用的可能就那么幾種,更多地是一些提高代碼靈活性、降低耦合性、利于代碼重構(gòu)迭代的設(shè)計(jì)套路。書中對設(shè)計(jì)模式的表達(dá)使用C++,所以我會沿用書中的形式。
解耦
當(dāng)一塊代碼有改動時(shí),沒必要修改另一塊的代碼??隙ㄐ枰薷囊恍〇|西,但耦合程度越小,改動會波及的范圍就越小。解耦當(dāng)然有代價(jià),需要花費(fèi)功夫去管理代碼,并且經(jīng)常會因?yàn)閾p傷性能而被批評,特別是在游戲開發(fā)中。許多設(shè)計(jì)模式會依靠接口、指針、消息、虛擬調(diào)度或其它機(jī)制,都會加大運(yùn)行時(shí)開銷,在此處做出權(quán)衡需要靠經(jīng)驗(yàn)。
GoF中介紹的一些設(shè)計(jì)模式會被常用在游戲設(shè)計(jì)中:
命令模式
享元模式
觀察者模式
原型模式
單例模式
狀態(tài)模式
本專欄前面章節(jié)會著重總結(jié)這六種設(shè)計(jì)模式,大概計(jì)劃每一章討論兩到三個設(shè)計(jì)模式,而后面的章節(jié)則討論游戲開發(fā)中常見的一些設(shè)計(jì)套路,按照書中的說法,把它們分為