Professional Documents
Culture Documents
简介
Terrarium 是微软公司开发的示例程序,它是一款向软件开发人员全面展示.NET 框
架应用开发技术的游戏。在 Terrarium 游戏中,开发人员可以创建草食动物、肉食动物或植
物,并将它们放到一个基于“适者生存”模型和对等网络结构的生态系统中。游戏既提供了
一个可以测试开发人员的软件开发与策略设计水平的竞争环境,也提供了一个近乎真实的
进化生物学和人工智能模型,以检验具有不同行为和属性的生物在生存斗争中的适应能力。
Terrarium 也展示了.NET 框架中的一些重要特性,如:使用与 DirectX 集成的 Windows
Forms 技术创建强大的用户界面(UI);XML Web Services 技术;支持对等的网络结
构(Peer-to-peer networking);支持多种编程语言;通过远程 Web 服务器升级智能
客户端,即基于 Windows 的应用程序的能力;使用包括凭据验证(evidence-based)
和代码访问(Code access)的安全架构来保护参与游戏的,运行着移动代码(Mobile
code)的计算机。本说明文档主要从技术角度概要介绍了.NET 框架的上述特性是如何在
Terrarium 游戏中发挥价值的。
游戏 概述
在进入技术细节之前,让我们大致浏览一下游戏运行时的实际流程。游戏可以在两种
模式中运行:
◆ 饲养场模式(Terrarium Mode):这种模式给用户提供了两种选择。用户可以独
立运行,无须与其他节点连接。在这种情况下,屏幕上显示的生态系统就代表了整个生态环
境。这种模式最适合于对你开发出来的生物进行测试。用户也可以选择加入到一组特定的节
点环境中,所有连入此环境的计算机共同组成一个小型生态系统。加入特定节点组的方法非
常简单,每个用户选择一个特定的专网,并在 Terrarium 控制台的“Channel”一项中输
入一个事先约定好的字串,就可以加入该网络了。输入字串后,用户的计算机只与那些输入
了相同字串的计算机构成一个独立的对等网络,并一同组建生态系统。
◆ 生物圈模式(Ecosystem Mode):这是游戏的标准模式。全世界所有连入游戏的
计算机共同构成一个完整的生态系统。每个参与者的计算机只是该生态系统的一个片断。
在上述两种模式下,开发者都可以使用 Terrarium 类库、.NET 框架开发包和 Visual
Studio .NET 工具随意创建他们自己的生物。或者,他们可以简单地把 Terrarium 当作一
个独立运行的应用程序或是屏幕保护程序运行,并通过 Terrarium 观看其他开发者创建的
生物在生态系统中为生存而战。
在创建生物时,开发者可以自行决定生物的每一种基本属性(如眼睛的颜色、运动速
度、防卫能力、攻击能力等),行为方式(寻找食物、活动和进攻的算法等)以及繁殖能力
(每隔多长时间繁殖一次,把哪些基本信息遗传给后代)。开发好一个生物的所有代码之后,
开发者将代码编译成.NET 程序集(Assembly,以 DLL 动态链接库的方式存放)。本地的
生态系统片断可以调入和运行该程序集,并在 Terrarium 控制台上显示出这一生物。在生
物圈模式中,新的生物种类被引入后,系统会自动在本地生态系统的不同位置创建该生物
的 10 个个体。在这种生物的所有个体都死亡之前,用户和网络上的其他人都不能再创建该
生物的新个体了。相反,如果该生物生活在饲养场模式中,用户可以在生态系统中创建任意
多个该生物的个体。
生物被载入 Terrarium 系统后,它就会按照自己的代码逻辑生活。每个生物的每一个
动作可以延续 2 到 5 毫秒(取决于计算机的运行速度),如果动作超时,该生物就会被强
制摧毁。这一规则可以防止任何生物浪费计算机时间或使游戏瘫痪(例如代码中的死循环)。
在网络每一个节点计算机的生态系统中,都有一个蓝色的“超时空球(Teleporter
ball)”在不停地随机滚动。如果用户在其登录的活动节点上执行程序(不论是在生物圈模
式中还是在加入了独立节点组的的饲养场模式中),每当蓝色的“超时空球”滚过某个生
物时,该生物就会被随机地传送到另一个节点计算机的生态系统中。
系统中有一个中央“主”服务器负责对等节点的搜寻和状态报告。
用户 界面
IP 地址 验证
注册 和节 点搜 寻
当开发者将他们开发出的生物代码编译成.NET 程序集之后,他们就可以使用“载入
动物(Introduce Animal)”按钮,将生物载入到生态系统中。这时,Terrarium 程序在
后台迅速扫描该程序集,以确认该程序集中实现了所有必需的方法,并确保该程序集中不
包含任何可用于作弊的功能。如果程序集通过了这些测试,节点计算机就调用主服务器上的
另一个 XML Web Service,注册这个新的生物,同时把一份程序集的拷贝送到主服务器
上保存起来(一旦该生物灭绝,用户可以使用主服务器上存储的拷贝重新把该生物载入到
生态系统中)。只有以上工作都完成以后,本地的 Terrarium 生态系统片断中才会创建出
10 个该生物的个体。
Terrarium 生态系统载入生物的程序集之后,将使用.NET 框架提供的,基于凭据验
证和代码访问的安全架构来保证其安全性。这包括阻止生物代码访问或潜在地破坏本地计算
机上的任何资源。有关安全性的更多信息请见下面“凭据验证和代码访问安全性”一节。
节点 状态 报告
大约每隔 6 分钟,每一台节点计算机将自己的生态系统中存活的生物数量和种类等信
息整理成一个数据集,发送给中央服务器。中央服务器将所有参与游戏的节点计算机发来的
信息整合在一起,并将统计报表发布到一个公共网站上。
对等 网络
支持 多种 编程 语言
通过 远程 Web 服务 器更 新版 本
凭据 验证 和代 码访 问安 全性
结论