如何提高Second Life Region的性能
2007年12月14日 10:51 发表者: Ken
赵珂(islab.org/cn), 易思社区
内容由Second Life Wiki的Region Performance Improvement Guide翻译而来.
首先, 什么是Region? 我们来看”Second Life术语词汇表(见下面链接)”中的定义:
http://islab.org/blog/cn/28.html
词汇22. Region 区域
Second Life在线世界中的一个区域的名字, 比如”Orientation Island”或者”Ahern”. 一个区域可以由任何的模拟器进程来运行. 如果某个主机因故障临时停止运行, 区域可以从一个sim移到另一个sim上.
本文主要解释如何检查您的Second Life区域的性能和提高性能的具体步骤. 主要针对的读者是小岛(Island, 也叫做Estates)的拥有者, 但对于大陆(Mainland)上土地拥有者来说也是有帮助的.
1. 检查您的区域性能
你可以通过检查区域的每秒钟帧数(FPS, Frames Per Second)来查看您的区域性能. 状态的详细信息可以查看统计条说明. 在您的土地上选择 View Menu(查看菜单) > View Statistics Bar(查看统计条). 注意, Sim是指Simulator, 区域的同意词. 下面图片我们用红线圈住了”Sim FPS”, 也就是您的区域的每秒钟帧数. 注: FPS每秒钟帧数愈多, 所显示的动作就会愈流畅.
Sim FPS的详细说明:
45 FPS: 最好的性能. 不用调节.
35 - 44 FPS: 非常好, 数值在35 FPS以下是不用调节的.
20 - 35 FPS: 动作会比较慢, 需要调节.
10 - 20 FPS: 非常糟糕, 问题严重.
0 - 10 FPS: 极度糟糕. 马上向官方发提交ticket支持.
如果您的区域的性能数值一般都在35 FPS以上, 您可以不用往下阅读了. 一般来说, 区域的FPS数值大多时候都在35FPS以上. 例如, 在2007年10月份, Second Life区域的FPS在35以下的时间少于2%.
在上面的截图中, 您注意到了SIM FPS是21, 这意味着您的区域运行的非常慢. Main Agents(主代理)显示为96, 您区域现在有96个Agents(也叫Avatars, 虚拟化身, 即SL用户). Agents的数值非常高, 这是导致FPS性能降低的主要原因. Child Agent(子代理)数是临近区域的用户, 他们能看到您的区域, 对您的区域的性能也是有影响的.
查看更多有关降低区域性能的详细信息, 您可以通过使用您的鼠标点击最后一行的”Time(ms)”来查看更多的区域统计信息.
“Total Frame Time”的意思系统显示每一帧使用的毫秒(ms)数. 数值大于22.2 ms, 您的区域的每秒钟帧数将会低于45 FPS. 更多状态的详细信息可以查看知识库中的统计条说明和选择跟Time有关的内容. 接下来我们会详细介绍提高性能的具体步骤.
2. 提高您的区域的性能
下面有几个步骤可以用于提高您的区域的性能. 我们按照对性能影响最到到最小的顺序来排列.
2.1 减少您小岛的最大同时在线的用户数
区域上同时存在的用户数是影响区域性能的最主要的因素,这也是造成低FPS区域的最大的贡献者. 如果您的区域的最大能支持的同时上线人数大于缺省设置, 区域的性能会受到同时上线的用户数影响. 减少您区域最大能支持的同时上线人数会提高您区域的FPS性能. 操作办法是选择World Menu(世界菜单) > Region/Estate (区域/小岛)菜单条. 然后在您的屏幕上会出现Region/Estate窗口, 您可以修改Agent Limit(代理限制), 也就是您区域最大能支持的同时上线人数.
对于一个小岛来说, Agent Limit的缺省设置是40. 如果您是小岛的拥有者, 您可以修改该数值. 当然您可以在您的区域里看到其他的30个在线用户. 推荐您在区域繁忙时查看统计条上Agent Time(与用户有关的更新和传输物体数据上使用的时间)信息来了解区域的性能. 区域繁忙时Agent Time最好保持在9 ms.
2.2 移去最耗资源的脚本
效率低或者非常耗资源的脚本会降低您区域的性能. 在统计条中, Script Time(执行脚本用的时间)显示了每一个脚本运行所占用的平均时间. 如果数值大于5ms, 你需要采取采取行动来减少该数值, 查看最消耗资源的脚本, 在您的小岛上, 打开Region/Estate窗口, 点击Debug条, 如下图显示:
然后点击Get Top Scripts, 看下图:

通过点击Time两次将会排列出最耗资源的脚本列表. 点击Refresh(刷新)多次将会更好的了解实际的情况. 一旦您知道哪些脚本最消耗您区域的资源, 你可以移去, 替换或者优化. 另外, 减少区域上的脚本数会提高区域的性能.
存在问题脚本的例子包括: 脚本一直总在运行, 无休眠时间. 例如, sensor(传感器)脚本的休眠间隔时间是非常短的. 另外例子是temp-rezzer(临时放出, 实际再运行)允许临时使用更多的物体数(超过了实际土地允许的物体数限制), 这也会对区域的性能造成影响.
2.3 移去最耗资源的碰撞物体
最耗资源的碰撞物体会降低您区域的性能. 物体的经常移动会明显增多您区域在物理计算上的所使用的时间. 统计条上的Physics Time(物理时间, 也叫Sim Time)显示了进行物理模拟所使用的时间. 如果该数值超过4 ms的话, 您需要调节. 你需要采取行动来减少该数值, 查看最消耗资源的碰撞物体, 在您的小岛上, 打开Region/Estate窗口, 点击Debug条, 如下图显示:
然后点击Get Top Colliders, 看下图:
通过点击Time两次将会排列出最耗资源的碰撞物体列表. 点击Refresh(刷新)多次将会更好的了解实际的情况. 一旦您知道哪些碰撞物体最消耗您区域的资源, 你可以移去, 替换或者优化. 另外, 减少区域上的移动物体总数会提高区域的性能.
2.4 移去大的材质
过多使用大的材质(textures)会降低您区域的性能. 通常, 最好的办法是避免使用大小超过512×512象素的材质. 在统计条上, Images Time显示了您区域上图片处理所使用时间. 如果数值超过2 ms, 你需要采取采取行动来减少该数值. 当一位用户进入到您去的区域, 第一时间查看了一幅大的图片或者多个小一些的图, 这些图片会自动在用户的客户端中显示. 如果很多用户都同时上线, 您区域的负载会明显增大. FPS数值会减少. 如果您不移去这些大的材质, 你可以减少区域中使用的材质数量, 材质的大小或者分辨率会影响到您区域的性能.
2.5 优化添加了脚本的材质更新物体
带有脚本的物体更换表面的材质会降低您区域的性能.每一次显示新的材质,材质都会自动下载到每一个能看到该物体的所有用户. 如果您不移去这些物体, 你可以减少材质数量, 材质的大小, 这样可以提高您区域的性能.
2.6 减少物体数的使用
减少物体数的使用将会提高您区域的性能. 一个区域最多能放15000个物体.
2.7 减少物体数
比如说移动的, 旋转的, 刷新的, 带有脚本的和外形不断改变的sculpties(雕朔)物体会降低您区域的性能.
2.8 减少用户身上带的物体
这件事情执行起来比较困难, 减少用户身上带的物体, 特别是很多物体数或者负载重的脚本物体.
2.9 通过优化区域来提高用户客户端的体验
下面区域上的物体会降低用户客户端的体验:
.超大的物体比如大于10m x 10m会降低用户客户端的FPS数值.
.用户传送到区域某个地方, 存在很大的或者很多的材质.
.过度使用sculpties(雕朔)物体, twisted tori或者其它复杂的几何体.
.粒子效果(包括闪烁和烛光).
记住一些来访用户的显卡相对会比较差或者PC较慢.
3.0 升级到快速的区域
现在有其它性能非常好的区域. 最新class 5(5类)区域, 最初是在2006年11月上线, 有兴趣朋友可以阅读Ian的博文. 所有2006年11月后增加的区域都已经是5类区域. 5类区域比3类区域能处理更多的同时上线人数, 更多的脚本, 更多的物体, 更多的物体数和更多的材质. 3类区域的小岛拥有者可以升级到5类. 我们在提供给您小岛的时候已经注明了是哪一类.
3.1 更多信息
你可以通过知识库中跟Region/Esate窗口有关的链接了解如何管理其它跟小岛管理有关的任务.
3.2 结论
在很少的时间里, 您的区域的FPS数值在35以下, 我们知道了在这种情况下区域的性能会逐步恶化. 对于这样的区域和区域的拥有者, 我们已经提供在繁忙时候通过使用统计条, 调节用户数量, 脚本, 材质和移动物体来获得更好的性能. 我们希望本文对平衡您区域的修饰和性能有所帮助.





