1995年,Hayden Press出版了《Tricks of the Mac Game Programming Gurus》一书,其中收录了对Bungie Software首席程序员Jason Jones的专访。当时他正负责热门游戏《马拉松》(Marathon)的开发。这本书现已绝版,访谈记录由M-Class整理转录。
《马拉松》的架构:渲染引擎与游戏逻辑分开但不异步
![]()
在采访中,Jason Jones被问到《马拉松》的整体架构,是否像《毁灭战士》(Doom)那样采用渲染引擎和刷新守护进程的异步操作模式。他明确回答:不是。《马拉松》的架构中,游戏模型和渲染引擎是清晰分离的,但所有游戏代码都在帧与帧之间执行。
具体流程是:生成一帧画面,显示给玩家,然后计算在生成这一帧期间世界里发生了什么,更新世界状态,再绘制下一帧。Jones进一步解释,内存中有一大块数据代表任意时刻的世界状态,包括怪物的位置、空中飞行物的位置、所有玩家的位置,以及门是否打开、物体是否在特定位置、是否有东西在爆炸。
世界状态每30分之一秒更新一次
这块数据被交给渲染引擎,引擎根据玩家所在位置和可见范围,把世界状态转换成一张位图,显示给玩家。显示之后,根据渲染这一帧花费的时间长短,需要处理的工作量也不同。如果渲染耗时较长,就有大量更新要处理;如果渲染时间少于30分之一秒,可能就没有工作要做,程序会等待世界状态发生变化。
Jones表示,《马拉松》每秒进行30次更新,也就是说世界每30分之一秒变化一次。程序每30分之一秒监测一次玩家键盘输入,也每30分之一秒检查一次网络,获取其他玩家的指令。然后在帧与帧之间处理上一帧渲染期间发生的所有更新,最后渲染下一帧。
与《毁灭战士》的差异:部分工作仍采用异步处理
Jones强调,这不像《毁灭战士》那样据称采用异步操作。不过他也提到,《马拉松》中确实有大量工作是异步完成的,更新环节的很多处理都采用这种方式,并且使用了中断机制。访谈原文在此处被截断,后续关于中断处理的具体内容未能完整保留。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.