游戏引擎架构1:游戏性系统

  游戏性就是基于一定规则进行的人机或人人博弈。原谅这是我能想到最简略的话。战斗你可以以射击为乐趣,以Melee Attack为乐趣,行走可以以跳跃和攀爬为乐趣。

  游戏性的展开往往会有一个舞台环境,AAA游戏就是关卡世界了,在这个世界中可以放置StaticMesh或是Emitter或是DynamicActor。你的世界里面有地形,房间,天空球等,能捡到的物品,光源等。我们对这些东西进行一个分界便是静态元素和动态元素:前者如不动的墙壁,后者如云梯.

  从CPU效率上来说静态元素肯定更省性能,因为静态mesh的渲染将他的顶点按照世界坐标去计算即可。而动态的则不然,你需要让他的局部坐标乘以矩阵转换成世界坐标如果这个云梯不断在动就是实时Tick了。粒子当然都是这样去执行的。

  模型实例是一种节省内存的好方法,你可以设计3把椅子在世界中放置100把,而系统将会开销一个实例内存去进行渲染变换。同样你可以使用BSP笔刷来构建游戏世界。

  为什么要将游戏世界切分成关卡?1.因为游戏机的内存有限 2.方便不同的小组进行工作。但不局限于线性游戏,可以使用LevelStream来模拟沙盒世界。

  游戏中的动态元素,游戏中有敌人,玩家,炸药桶和血瓶等,这简直就是OOP编程语言最喜欢的模型。对象即是属性和行为的集合。例如你有一个普通敌人类,将他们放置在舞台中便是他们的实例。你也可以将这些敌人拓展继承。

  这里提一个开发方面的重要规律data-Driven,工程方面的人力资源往往是游戏开发的水桶短板,因为一方面工程人员的代价极为昂贵。另一方面工程师的制作速度往往比美术人员要慢,因为计算机编程的复杂性。所以AAA级别游戏的开发,美术规模往往大于技术规模。你知道《刺客信条4》的团队规模大约有500人,想想其中美术团队占据了多少人口数量呢。

  另一点,一个游戏项目最重要的高度输出是游戏制作人。为什么这么说,因为制作人表征了这个游戏开发完毕后会是什么样子,这个游戏的品位和手感。如果你还是不服,告诉我《孤岛危机》系列为什么不是一款足够吸引你的游戏?而相比之下《战争机器》能让你欢乐不断---我不是说《战争机器》画面不好,CliffyB的品味和游戏设计让这款游戏颠覆了你,没有了CliffyB的《审判》是不是让你非常失望嘞。

  前面提到的数据驱动是游戏的重心我还希望能进一步进行讨论,通常任天堂开发游戏是遵循这种开发方式的,类似于Prada制作服装,顶级设计师设计了10套他们只会选出最优秀的1套然后将其余9套设计卖给H&M之类的二线服装公司。任天堂有很多的关卡设计师,这些人就是数据驱动者,可以相对于工程师在短期之内给游戏带来巨大的改观,很少或者甚至于不需要工程师便可以使游戏打磨到很高的级别。

  谈到了数据驱动的好处,我们就得谈到其代价,数据驱动需要工程师为其制作开发工具,而工具的开发和维护充满了难度。一般情况我们不能仅为了满足个别成员的需求而随意进行扩充,这样提高了工作的难度。keep it simple.不管是对于游戏实现还是引擎构建都应该满足这种原则。

  我们来谈一谈引擎对美术人员的讲求,图层在游戏引擎中的作用非常之大,例如可以让灯光设计师单独的在一个图层打光,模型师在这里填充场景细节,就可以很容易的让艺术家协同工作。

  前面说过的数据驱动需要解决的问题是你需要将你的模型导入到引擎中,这时候你需要一些导入工具插件例如虚幻的ActorX,导入插件不仅仅是导入还会进行优化工作,例如导入的maya文件本身会记录你雕刻这个模型的步骤数据,而你的游戏中根本不需要就会将其过滤掉。虚幻在导入模型的时候这些模型是平台无关的,也就是说这些模型也可以给别的平台继续使用,直到烘培的时候才会成为虚幻数据。

  完~

  

  

原文地址:https://www.cnblogs.com/NEOCSL/p/3590739.html