写点什么

视频游戏《光环 4》的 Actor 模型设计和实现

  • 2015-03-18
  • 本文字数:1257 字

    阅读完需:约 4 分钟

在开始设计光环(Halo)系列视频游戏的下一代——光环4 的时候,现有的游戏引擎与可用的服务已经无法满足游戏的需求了,因此开发者基于 Actor 模型设计了一套全新的解决方案,并使用 Orleans 框架完成了这套模型的实现。在 QCon 伦敦大会上, Caitie McCaffrey 在演讲中为听众介绍了他们设计与创建这个新游戏背后的服务的过程。

McCaffrey 原本在微软游戏工作室就职,目前则在 Twitter 担任分布式系统工程师的职位。他提到了在游戏开发过程中所遇到的一个架构上的挑战,是如何设计该游戏将要面对的海量访问的负载。在光环 4 上线当天,共有 100 万独立在线用户参与了游戏,这个数字在一周之内就上升到了 400 位,游戏时间总和超过了 3000 万小时。为了应对如此庞大的负载,该项目选择了在云端进行托管,更具体地说是托管在 Azure 上,毕竟光环 4 是微软所推出的游戏。其它的挑战还包括如何保证游戏能够始终在线运行,这就要求服务器永远保持可用状态,还要尽量降低延迟,并且提高并发能力。

在寻找能够满足该项目需求的解决方案过程中,项目组的目光投向了 Actor 模型。从本质上说,Actor(角色)是并发的基础,该模型的核心概念在于:作为并发计算的基元,每个 Actor 将通过异步消息发送的方式与另一个 Actor 进行通信。当某个 Actor 收到一条消息之后,它可以选择将消息发送给其它 Actor,或是创建一个新的 Actor,也可以修改它的内部状态。这样一来,就能够高效地将某个 Actor 的所有数据保存在同一个地方,因此 McCaffrey 和他的团队通过实现这些保持状态的服务,创建了一套能够保持状态的中间层,它一方面具有缓存的高性能优点,另一方面也不会产生由于并发造成的问题。

项目组在微软内部四处寻找可行的方案,他们最终发现了 Orleans 框架,这是一个用于创建基于 Actor 模型的分布式系统的运行时与编程模型。Orleans 框架与其它 Actor 模型框架最重要的不同之处在于它所独有的概念:虚拟 Actor。这个虚拟 Actor 永远不会被创建或是销毁,从逻辑上来说它是永远存在的。虚拟 Actor 所具有的关键思想,一是地址的透明性,即发送给某个 Actor 的消息会被自动路由至该 Actor,无论该 Actor 的地址在哪里;二是能够在不重新进行部署的情况下进行自动横向扩展。

McCaffrey 声称,在使用了新技术的全新架构中,服务器的 CPU 利用率能够持续稳定在 90% 的水平上,并且能够实现接近线性增长的可扩展性,能够轻易地应对负载的变量,这一点在访问量突发性增长的时刻相当实用,例如当游戏刚刚上线的时候。

McCaffrey 相信,如果没有 Orleans 这个框架,光环 4 的项目就不可能获得成功。由于 Orleans 能够为开发者编写在分布式环境中运行的代码提供极大的帮助,因此寻找合适的开发者也变得简单了许多。并且由于它提高了开发者的生产力,因此开发者能够专注于提高游戏的用户体验,让它的表现更加出色。

McCaffrey 在一篇较早的博客帖子中,曾经介绍了使用 Orleans创建RESTful 服务的过程。

对于实现Actor 模型的不同途径,InfoQ 之前曾经专门进行过讨论和报告

查看英文原文: Building Halo 4, a Video Game, Using Actor Model

2015-03-18 06:123014
用户头像

发布了 428 篇内容, 共 182.3 次阅读, 收获喜欢 39 次。

关注

评论

发布
暂无评论
发现更多内容

图片批量处理软件XnConvert for Mac(图像格式转换软件)

Mac相关知识分享

行云堡垒V7.5新特性

行云管家

网络安全 堡垒机

数据驱动增长四阶段:从TLG到ALG的全面解析|StartDT Talk

奇点云

用TPCCRuner测试TiDB v7.5.4

TiDB 社区干货传送门

性能测评 数据库连接

KWDB 亮相 COSCon′24 第九届中国开源年会

KaiwuDB

数据库 开源 kaiwudb开源

EndNote 21授权密钥2024最新 附EndNote 21详细图文安装教程

Rose

DaVinci Resolve v19.0.3激活版 达芬奇mac版安装教程

Rose

Axure RP 8 破解版下载-附axure rp 8 注册码,可永久汉化激活

Rose

Dual-Band WiFi Excellence with Wallystech’s QCN9274, QCN6274, QCN9224, QCN6224, and MT7915 Network Cards

wallyslilly

qcn9274

Steinberg Cubase Pro 14 for Mac(多功能音乐制作软件)

Mac相关知识分享

Media Encoder 2025 for Mac(me2025中文版)

Mac相关知识分享

Smooze Pro for Mac v2.1.11激活版 鼠标增强工具专业版

Rose

【论文速读】| RePD:通过基于检索的提示分解过程防御越狱攻击

云起无垠

项目管理工具评测:如何选择最适合的工具

爱吃小舅的鱼

项目管理工具

一键蓝牙设备连接切换 ToothFairy for Mac v2.8.4中文版 兼容M/intel

Rose

TiDB 新朋友 DBdoctor

TiDB 社区干货传送门

监控 管理与运维 故障排查/诊断

“多快好省”:TiDB 在现代金融系统中的应用与实践

TiDB 社区干货传送门

实践案例

升级就是最好的调优:TiDB 用户收益与实践总结报告

TiDB 社区干货传送门

版本升级 7.x 实践 8.x 实践 TiDB Vector

测试人生 | 90后斩获多家名企offer的小哥哥,做对了什么?

测试人

软件测试

深入了解堡垒机的四个作用-行云软件

行云管家

网络安全 数据安全 堡垒机 企业安全

ScheduledThreadPool线程池设计/场景案例/性能调优/场景适配(架构篇)

肖哥弹架构

Java 并发编程 高并发

Screaming Frog SEO Spider:网站爬虫及SEO审计工具

Rose

适合局域网的项目管控工具有哪些?9款对比

爱吃小舅的鱼

项目管控软件

测试人生 | 90后斩获多家名企offer的小哥哥,做对了什么?

测吧(北京)科技有限公司

测试

变更管理的关键策略:确保软件项目成功

爱吃小舅的鱼

变更管理

亚马逊商品API接口:运用及收益的深度探讨

科普小能手

API 接口 API 测试 亚马逊API 亚马逊商品详情API 亚马逊API接口

CST软件如何添加和管理自定义的材料

思茂信息

教程 仿真软件 CST软件

Axure RP 10 及Axure RP 10破解教程 附安装包 Mac/win

Rose

实时创作和视觉编程软件 TouchDesigner Pro

Rose

TiDB 字符集原理和最佳实践

TiDB 社区干货传送门

管理与运维

2024牛客网更新的1000多道java后端面试题,花点耐心看完offer拿到手软

架构师之道

java面试

视频游戏《光环4》的Actor模型设计和实现_DevOps & 平台工程_Jan Stenberg_InfoQ精选文章