游戏循环的实现方式

游戏软件本质上是由一个大循环构成的。本文从最简单的渲染循环开始,讨论各种游戏循环的架构风格,接着针对现代多处理器硬件,简要说明一些让游戏引擎利用多核硬件的常见方法。网络游戏的游戏循环比较特殊,最后也会介绍两种最常见的多人游戏循环架构。

游戏引擎中的资源与文件系统

载入及管理多种媒体,是游戏引擎必须具备的能力。多数引擎会采用某种类型的资源(或资产)管理器,载入并管理游戏所需的资源,并确保在同一时间每个媒体文件只可载入一份。每个资源管理器都会大量使用文件系统。本文将介绍现代三维游戏引擎中的各种文件系统API,再分析典型资源管理器的运作方式。

游戏引擎支持系统(下)

游戏编程中需要使用各种各样的集合型数据结构,称为容器或集合。字符串看似是个简单基本的数据类型,但在游戏引擎中会涉及许多设计问题和限制。此外,游戏引擎总是伴随大量可调校的选项,有的通过游戏中的选项菜单给玩家调校,有的则只为游戏开发团队设置,在正式发行时被隐掉或去除。

本文将接着上一篇,从游戏引擎的角度描述容器、字符串和引擎配置等游戏引擎支持系统。

游戏引擎支持系统(上)

每个游戏都需要一些底层支持系统,以管理一些例行却关键的任务,例如启动及终止引擎、存取文件系统、存取各种不同资产类型(网格、纹理、动画、音频等),以及为游戏团队提供调试工具。

本文(分上下篇)重点讨论多数游戏引擎中都会出现的底层支持系统,为后续探索大型的核心系统做准备。其中上篇将讨论子系统的启动和终止的顺序管理,以及各种动态内存分配器和碎片整理等内存管理问题。

游戏引擎架构总览

游戏引擎通常由运行时组件和工具套件两部分构成。本文先探讨运行时部分的架构,给出了一个不包含工具的极其庞大的总览图(如果时间有限仅看此图即可),并对图中每一组件进行描述,最后再阐述工具方面的内容。如同所有软件系统,游戏引擎也是以软件层构建的,而且通常上层依赖下层,下层不依赖上层。

软件构建(十四)——代码布局与自说明代码

本文关注的是计算机编程的美学话题——程序源代码的布局和自说明性。尽管这些技巧并不影响执行速度、内存使用量等方面的程序性能,但它却会让你日后理解、检查以及修改代码变得更容易,也使其他人在你缺位的时候更容易阅读、理解和修改你的代码。

需要注意的是,形成良好的代码布局,并让代码具备自说明性,需要始终贯穿项目的生命期,晚了就很难做好了。要想完全实现这些细节规定,在最初建构时就要着手去做。如果你干的是合作项目,更是要在开始编码之前统一大家的风格。

软件构建(十二)——软件的规模与管理

软件开发的规模扩大并不是像“拿一个小项目来,然后增大它的每一部分”那样简单。如果要开发大型软件,就必须了解软件规模对构建的影响。此外,本文将记录与构建直接相关的一些特定管理问题。如果你是一名开发人员,本文将帮助你了解管理者需要考虑的一些问题;如果你是一名管理者,本文将帮助你了解开发人员是如何看待管理者的,以及如何才能有效地管理构建。

软件构建(十一)——代码性能的调整

本文首先概述了程序运行性能应该考虑的一些问题,然后从策略上和技术上两个方面来探讨代码性能的调整问题。技术上的代码调整并没有什么万金油的方法,也不是灵丹妙药,唯一可以信赖的法则就是每次都应当在具体的环境下评估代码调整所带来的效果,而本文所列的调整方法则仅供参考。此外,追求性能的背后往往伴随着牺牲程序的可读性和可维护性,而在很多情况下,代码的可读性和可维护性都要比运行速度或资源占用更为重要。因此在调整代码时一定要考虑这样的性能提升是否真的必要。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器