除了最基本的编程语言,实际游戏开发涉及到的其它知识比较多:数据结构算法、设计模式、性能优化、多线程安全、网络同步与优化、数据存储、游戏AI、计算机图形渲染等,如果需要参与美术人员的工作还要掌握一定的美术创作能力如原画设计、3D建模、CG动画制作、游戏贴图设计等。
我计划尽可能地将自己在这些领域已掌握和即将学习的知识总结或者读书笔记以专栏或者视频的形式分享出来。本专栏将会总结《游戏编程模式》一书中介绍的一些设计模式,所以会更像是我自己的学习笔记。这本书的主要内容,说是设计模式,不如说是编程模式或者设计套路。我们一般所说的设计模式会指著作《设计模式:可复用面向对象软件要素》(以下简称GoF)中介绍的23种设计模式,但在游戏开发中常用的也许就那么几种,更多地是一些提高代码灵活性、降低耦合性、利于代码重构迭代的设计套路。书中对设计模式的表达使用C++,所以我会沿用书中的形式。
解耦
当一块代码有改动时,没必要修改另一块的代码。肯定需要修改一些东西,但耦合程度越小,改动会波及的范围就越小。解耦当然有代价,需要花费功夫去管理代码,并且经常会损伤性能,特别是在游戏开发中。许多设计模式会依靠接口、指针、消息、虚拟调度或其它机制,都会加大运行时开销,在此处做出权衡需要靠经验。
GoF中介绍的一些设计模式会被常用在游戏设计中:
命令模式
享元模式
观察者模式
原型模式
单例模式
状态模式
本专栏前面章节会着重总结这六种设计模式,大概计划每一章讨论一到两个设计模式,而后面的章节则讨论游戏开发中常见的一些设计套路,按照书中的说法,把它们分为
「艾尔登法环」梅琳娜手办开订 立体手办▪
万代「艾尔登法环」白狼战鬼手办开订 立体手办▪
「夏目友人帐」猫咪老师粘土人开订 立体手办▪
「五等分的新娘∬」中野三玖·白无垢版手办开订 立体手办▪
「海贼王」乌索普Q版手办开订 立体手办▪
良笑社「初音未来」新手办开订 立体手办▪
「黑岩射手DAWN FALL」死亡主宰手办开订 立体手办▪
「盾之勇者成名录」菲洛手办登场 立体手办▪
「魔法少女小圆」美树沙耶香手办开订 立体手办▪
「咒术回战」七海建人粘土人登场 立体手办▪
「五等分的新娘」中野二乃白无垢手办开订 立体手办▪
「为美好的世界献上祝福!」芸芸粘土人开订 立体手办▪
「公主连结 与你重逢」六星可可萝手办开订 立体手办▪
「女神异闻录5」Joker雨宫莲手办开订 立体手办▪
「间谍过家家」约尔・福杰粘土人登场 立体手办▪
「街角魔族 2丁目」吉田优子手办开订 立体手办▪
「火影忍者 疾风传」旗木卡卡西·暗部版粘土人登场 立体手办▪
「佐佐木与宫野」宫野由美粘土人开订 立体手办▪
「盾之勇者成名录」第2季拉芙塔莉雅手办开订 立体手办▪
「咒术回战」两面宿傩Q版坐姿手办开订 立体手办▪
「DATE·A·BULLET」时崎狂三手办开订 立体手办▪
「狂赌之渊××」早乙女芽亚里粘土人开订 立体手办▪
「魔道祖师」魏无羨粘土人开订 立体手办▪
「新·奥特曼」奥特曼手办现已开订 立体手办▪