使用 OpenSim 运行您自己的虚拟现实
上个月,我带您参观了Second Life,并向您展示了除娱乐之外的一些应用。本月,我将解释如何使用 Second Life 客户端和名为 OpenSimulator 的开源 3-D 应用程序服务器软件来运行您自己的虚拟岛屿。OpenSimulator,简称 OpenSim,是一个虚拟世界平台的免费(如言论自由)实现,它利用了 Second Life 协议。从其 FAQ 中可知:“OpenSim 是一个用于运行虚拟世界的平台,支持连接到单个集中式网格的多个独立区域。这有点类似于 Web,人们可以在其中运行自己的 Web 服务器,并通过 Internet 绑定在一起。它也可以用于创建私有网格,类似于私有内联网。” 换句话说,OpenSim 可以像 3-D Apache 服务器一样,在无需使用集中式服务的情况下实现协作、娱乐和商业。
您不需要强大的机器来运行 OpenSim。我曾经使用一台配备 1GB RAM 的奔腾 4 运行一个基本的岛屿一小段时间,并且它支持八个并发登录,没有任何问题。如果您有更现代的机器,您甚至可以在与 Second Life 客户端相同的机器上本地运行 OpenSim。我也在我的配备酷睿 2 双核的笔记本电脑上测试过这种配置,它运行得非常好。
客户端比服务器是一个要求更高的系统。当我在“一体化”模式下运行时,我几乎没有注意到服务器进程。事实上,一台机器可以支持多个模拟区域(也称为区域)。我已经在配备 2GB RAM 的双核机器上测试了多达十个区域。只要其中一个区域没有疯狂的活动,它们都具有可接受的性能。这类似于 Linden Labs 在其数据中心所做的事情——它以每个 CPU 内核四个区域的速度运行其“开放空间”区域。
OpenSim 的工作人员说,获取和运行 OpenSim 的最佳方法是从源代码构建它,尽管他们确实提供每晚构建版本。OpenSim 是用 C# 编写的,并在 Linux 上的 Mono 下运行。由于对 Mono 的高度依赖,我假设您正在运行 Ubuntu 8.04 或 8.10(要在其他发行版上运行 OpenSim,请参阅“资源”部分中的构建说明)。早于 8.04 的 Ubuntu 版本需要将 Mono 至少升级到 1.9.1 版本。(OpenSim 将在 Ubuntu 8.04 附带的 1.2.6 版本下运行,但 1.9.1 版本因其更好的内存管理而更受青睐。)构建过程有详细的文档记录且非常简单,即使对于像我这样笨手笨脚的人来说也是如此。
在您尝试之前,请查看本文“资源”部分中的 OpenSimulator 构建说明链接,但以下是在 Ubuntu 8.04 上构建 OpenSim 的方法。这组命令安装 Mono 和必要的依赖项和库,从 SVN 获取最新源代码并构建它
sudo apt-get install subversion nant mono-gmcs \ libmono-microsoft8.0-cil \ libmono-system-runtime2.0-cil \ libgdiplus libmono-i18n2.0-cil ruby svn co http://opensimulator.org/svn/opensim/trunk opensim cd opensim ./runprebuild.sh nant
一旦 nant 完成运行,就完成了。OpenSim 已准备好配置和启动。OpenSim 可以以两种模式运行:独立模式和网格模式。独立 OpenSim 服务器是独立的岛屿——自包含且不依赖于任何单独的登录管理器或服务。网格模式是更有趣的模式,其中多个岛屿可以链接在一起,形成一个有凝聚力的虚拟世界。Second Life 本身就是以网格模式运行的一堆区域的示例,尽管现在还有其他第三方网格,例如 OSGrid、DeepGrid 和 Openlife Grid。
在配置您的 OpenSim 之前,您需要决定您将运行的模式。我建议您以独立模式运行您的第一个模拟区域,以了解事物的运作方式。一旦您了解了独立模式,您可以设置另一个模拟区域或将您的独立模拟区域转换为基于网格的模拟区域,并构建您自己的模拟区域网络,或将您的模拟区域完全连接到另一个网格,如 OSGrid。配置网格服务器超出了本文的范围,但在 OpenSimulator 网站上有优秀的文档。
配置基本的独立服务器再容易不过了,因为服务器在首次启动时会询问您几个问题,并从中构建 opensim.ini 配置文件。
在配置 OpenSim 之前,您需要做出的另一个决定是您要运行的数据库后端。对于独立模式下的实验和轻度使用,默认的 SQLite 数据库是完美的。无需进行特殊的配置设置,也无需设置外部数据库。但是,当您决定升级到网格模式时,您可能希望在 MySQL 上运行后端。配置 MySQL 后端也超出了本文的范围,但同样,在 OpenSim 网站上有关于此的优秀文档。
让我们启动并运行您的第一个 OpenSim。所有已编译的二进制文件都将在 opensim/bin 目录中。您可以从那里运行 OpenSim,也可以将它们移动到您选择的目录。如果您选择移动它们,请确保您以递归方式移动 opensim/bin 目录下的文件。一旦您将二进制文件放置到位,您可以通过运行以下命令来简单地启动 OpenSimmono ./OpenSim.exe从您放置二进制文件的目录中。一旦执行该命令,OpenSim 就会开始工作,创建一堆标准“资产”并填充 SQLite 数据库。
接下来,您将看到一个提示,询问您关于服务器配置的信息。如果您只是想在与客户端相同的机器上玩 OpenSim,那么接受所有默认值实际上是安全的。请注意,OpenSim 的默认设置是仅侦听环回(即 localhost)。如果您没有将您的机器的 IP 地址放在外部主机名字段中,您将无法从另一台机器连接到您的 OpenSim 实例。如果您希望客户端和服务器在不同的机器上,您肯定需要偏离默认值。您可能还希望将 Master Avatar 的名字和姓氏指定为不同于默认值的内容。这是一个例子
21:45:34 - [CONFIG]: Calling Configuration Load Function... DEFAULT REGION CONFIG: Region Name [OpenSim Test]: Bill's Place DEFAULT REGION CONFIG: Grid Location (X Axis) [1000]: 1000 DEFAULT REGION CONFIG: Grid Location (Y Axis) [1000]: 1000 DEFAULT REGION CONFIG: Internal IP Address for incoming UDP client connections [0.0.0.0]: 0.0.0.0 DEFAULT REGION CONFIG: Internal IP Port for incoming UDP client connections [9000]: 9000 DEFAULT REGION CONFIG: External Host Name [127.0.0.1]: 192.168.1.140 DEFAULT REGION CONFIG: First Name of Master Avatar [Test]: Bill DEFAULT REGION CONFIG: Last Name of Master Avatar [User]: Deere DEFAULT REGION CONFIG: (Sandbox Mode Only)Password for Master Avatar account [test]: password
一旦您回答了这些问题,OpenSim 服务器将完成其启动序列,并在您看到区域 (根) #提示符时,即可供您登录。OpenSim 控制台允许您从此提示符执行服务器的一些基本管理和管理,但真正的乐趣始于您启动 Second Life 查看器时。实际的虚拟世界只能通过 Second Life 查看器访问。假设您已经拥有 Second Life 查看器并已将其解压缩到目录中,您可以通过运行以下命令登录到您的服务器
./secondlife -loginuri http://<server IP>:9000/ \ -loginpage http://<server IP>:9000/?method=login
在我的情况下,我可以使用以下命令登录到我的服务器
./secondlife -loginuri http://192.168.1.140:9000/ \ -loginpage http://192.168.1.140:9000/?method=login
客户端将启动,您将看到一个基本的 HTML 屏幕(图 1)。输入您在配置服务器时指定的 Master Avatar 的名字和姓氏(见上文)以及您指定的密码。
然后客户端将登录到服务器,您将身处您自己的小岛屿上!它看起来并不怎么样,只是一片空旷大海中的一个小土堆,但话又说回来,您的化身也不怎么样。无论您如何设想您的化身,OpenSim 部署中的所有化身都以一个基本形状开始——称为 Ruth 的基本 Linden 形状。这是因为您没有预先填充的库存,因此您会获得通用的男女皆宜的化身,而它恰好看起来像女性。去搞清楚吧。
Ruth 有点模棱两可(图 2),但修复它并不难。通过进入库存窗口,右键单击“身体部位”,然后单击“新建身体部位—新建形状”,您可以创建一个身体形状,然后穿戴它。一旦您穿戴了该形状,您可以右键单击您的化身,然后选择“编辑外观”。然后,将该形状编辑为您喜欢的样子。一旦您调整好您的形状,您可以创建比 Ruth 提供的更好的基本服装,并看起来像我一样时尚(图 3)。
您可能想要对您的岛屿做的另一件事是改造地形。这是通过右键单击地面并选择“编辑地形”来完成的。地形改造对话框会弹出,从那里,您可以使用抬高陆地或降低陆地工具来更改地块某些区域的海拔高度。我在地形改造对话框中花费了大约五分钟,我的岛屿从基本的小圆形土堆变成了有点像吃豆人的东西(图 4)。
如果您是一位经验丰富的 Second Life 用户,一旦您意识到没有预先填充的库存,也没有商店可以在您自己的私人岛屿上购买商品,您可能会经历一段震惊期。就像鲁滨逊·克鲁索一样,您将不得不制作您想要在您自己的岛屿上使用或穿戴的任何东西。如果您确实了解 Second Life 中的 LSL 脚本,您会很高兴知道 OpenSimulator 中也有一个类似物。OpenSim 的工作人员已经在 OpenSim 中实现了大约 85% 的 LSL 脚本语言,并且他们每天都在改进对它的支持。
一旦您的岛屿启动并运行,为了增加挑战,您可能想要尝试将您的私人岛屿连接到虚拟现实爱好者设置的替代网格之一。请参阅“替代网格”边栏以获取有关此的更多信息——这是快速跳入全新虚拟宇宙的好方法。如果您可以设置基础设施,但在创建内容方面遇到困难,您可以选择这条路径。
一旦您将您的岛屿连接到网格,您就可以开始利用之前来过的人的所有共享库存和资产。与 Second Life 非常相似,在替代网格上也有商店,您可以在那里获得衣服、车辆、家具和其他商品——而且替代网格上的大多数商品都是免费的!
这就是您自己的岛屿的基础知识。此时,您可以让朋友或同事使用 Second Life 客户端登录到您的服务器,您可以交谈和协作。探索您可以使用这项技术做什么,并享受制作您自己的虚拟世界的乐趣!
替代网格
如果您喜欢冒险,一些替代网格是非常有趣的地方。我最喜欢的去处之一是 OSGrid。OSGrid 是独立的 OpenSim 运营商的松散联盟,他们已将其模拟区域绑定到一个有凝聚力的网格中。一些运营商是试验虚拟世界的大学,另一些是业余爱好者或 OpenSim 开发人员。进入 OSGrid 很简单;只需访问 OSGrid 站点(请参阅“资源”),并注册一个免费帐户。然后,使用以下命令启动您的 Second Life 客户端
./secondlife -multiple -loginuri http://osgrid.org:8002 \ -loginpage http://osgrid.org/loginscreen.php \ -helperuri http://osgrid.org
登录后,随意四处走走(图 5)。有很多值得一看和做的事情,并且与 Second Life 不同,那里没有经济,因此您要么找到并使用免费物品,要么创建您自己的内容。对于想要在没有上传成本的情况下进行实验的 Second Life 构建者来说,OSGrid 也是一个很棒的沙箱。
如果您想尝试在家中运行您自己的启用 OSGrid 的服务器,您可以在 OSGrid 网站上找到有关如何将您自己的服务器加入 OSGrid 的说明。将您自己的服务器附加到 OSGrid 比运行您自己的私有网格要简单得多,因为集中式登录和资产服务器由 OSGrid 组维护。在 OSGrid 地图上为您的模拟区域预留一个位置并查看一下!这比看起来容易。
获取帮助
您可以通过各种方法获得有关您自己的 OpenSim 部署的帮助。可能最方便的方法是 OpenSim IRC 服务器,您可以登录该服务器以获得有关运行您自己的服务器的帮助。OpenSim 站点上也有一个很棒的 FAQ。其他很棒的资源是 OSGrid 的居民。因为他们都必须自己将他们的模拟区域连接到 OSGrid,所以他们可以是很好的技术资源。
资源
OpenSimulator: www.opensimulator.org
OpenSimulator 构建说明: opensimulator.org/wiki/Build_Instructions
OpenSimulator 配置说明: opensimulator.org/wiki/Configuration
连接到 OpenSim: opensimulator.org/wiki/Connecting
OpenSim 脚本: opensimulator.org/wiki/Scripting_Documentation
OpenSim IRC 频道: irc://irc.freenode.net/opensim" (#opensim on irc.freenode.net)
视频: 如何在 Windows 上运行 OpenSim: blip.tv/file/1421954
Second Life 查看器下载: secondlife.com/support/downloads.php
OSGrid: www.osgrid.org
DeepGrid: www.deepgrid.org
Openlife Grid: openlifegrid.com
Bill Childers 是硅谷的一位 IT 经理,与他的妻子和两个孩子住在一起。他非常喜欢 Linux,可能应该时不时地晒晒太阳。如果他有时间进入 Second Life,他的名字是 Bill Deere。