Lukas Vogel 在一篇长篇博客文章中解释了他如何通过 SQL 数据库渲染《Doom》。SQLDoom 项目使用一个小型 Python 客户端处理输入和输出,驱动游戏计时,并显示每一帧。背后,一系列 Cedar DB 表追踪游戏几何和状态,而约 1300 行 SQL 查询(分布在 89 个公共表表达式)实现游戏逻辑,每秒生成 35 个位图帧缓冲区。
SQLDoom 相比 Vogel 之前的 Doom QL 项目有重大改进,后者构建了“完全用 SQL 实现的多玩家类似《Doom》的射击游戏”,但最终只有灰度 ASCII 图形。新的 SQLDoom 生成全彩 640×480 帧,类似于原始《Doom》可执行文件。
Vogel 说,将《Doom》经典的 WAD 文件转换为关系数据库很简单,因为游戏将关卡分解为顶点、线和扇区。《Doom》的二叉空间分割树可以通过为每个位置预计算的 sort_key 分解为 SQL。这样,简单的“ORDER BY”语句就能决定每帧显示墙壁的哪些部分。
关键实体:公司:Ars Technica | 人物:Lukas Vogel
FAQ:SQLDoom 如何使用数据库渲染帧?
SQLDoom 使用 Python 客户端进行输入和显示,而 Cedar DB 表存储几何和状态。约 1300 行 SQL 查询(分布在 89 个 CTE)每秒生成 35 个位图帧缓冲区,利用预计算的 sort_key 通过 ORDER BY 实现高效渲染。
来源: Ars Technica · 由HeadlinesBriefing整理摘要