2月20日,我们的正式发布会首次为广大公众打开了大门,让他们体验了虚拟世界的所有荣耀。我们长期服务和最丰富的场景创作者为这些成千上万的新玩家提供了对Metaverse的第一印象。我们将在一系列博客文章中介绍他们的工作、技术和秘密。在第一篇文章中,我们来看看作者Bence Varga创作的The Infinity Engine。Infinity Engine本质上是两件事情:Decentraland内部的可许可游戏引擎及其自己的第一个演示应用程序。玩家必须在地下挖掘战利品,然后乘火车穿越沙漠出售战利品-同时还要保护火车免受马背上的土匪侵害。
Bence创建了一个充当模拟器的引擎。地产的全部内容可以在任何方向上移动,从而可以在边界内无限移动。他的计划是向其他创作者提供Infinity Engine技术,以换取MANA,为此Bence会根据他们的需求定制引擎。
在与Decentraland的Nico Earnshaw和Sam Hamilton的讨论中,Bence与我们说明了Infinity Engine的开发,特别是他在场景中使用对象的方法以及最优化点。
您如何存储有关播放器不可见的地形的信息,然后确定他们可以看到哪些物体?还是这是随机产生的?
我已经在场景中设置了程序对象和“世界固定”对象,因为我的计划是包括并存储一开始就完全不在现场的整个村庄。为了存储场景外的对象,我定义了一个“ shapeManager”实体类型,该实体类型具有一个存储该对象类型(本质上是GLTF参考)和大世界位置的组件。这些形状管理器实体每帧更新大世界的位置-对象是否可见-并检查此位置是否在场景边界内(具有某些对象半径阈值)。如果大世界的位置在边界内,则在该位置生成特定的对象类型,然后从该位置还将其复制到生成的实体。相反,当位置到达场景边界时,“托管”形状将被删除。一个例子就是楼上矿井入口的部分,每次火车返回时,这些部分显然必须位于完全相同的位置。对于程序式物品,我也有两种方法。首先是沿火车行驶方向沿边缘在区域中生成物品。性能更高的版本是我不需要生成任何新东西的版本,只需将离开场景的物品移动到场景中更远的新位置。我遇到的最大问题是避免在火车轨道上产生任何东西,因为距离测量可能会对性能造成很大的负担。
您的游戏已经过优化,并且运行非常流畅。哪些优化技术对性能影响最大?
我的两个最大优化目标是:1. 降低多边形的计数(也是因为黑色轮廓实际上使计数增加了一倍)。整个场景只有4MB的模型2. 最小化纹理分辨率3. 我的整个纹理文件夹小于0.6MB!4. 我主要使用256×256和128×128纹理5. 我关闭了纹理采样(可惜在部署的场景中无法使用)除了这些,我会说优化更多是关于导航当前SDK和平台的功能。在Beta测试期间,我最大的挑战是涉及移动平台和移动播放器的任何事情。我很幸运能看到这个场景,因为播放器和火车实际上并没有移动,所以播放器掉落或摄像机锯齿运动的机会要少得多。我还避免了跟随玩家的物品。当前使用它们会导致巨大的延迟,并使场景几乎无法使用。我很早就换了屏幕空间武器。我当时打算将枪支图像从空闲状态更改为射击状态(使用喷嘴闪光灯),但是当我在速度较慢的笔记本电脑上测试游戏时,很明显我应该最小化UI更新使用率。当我单击过多时,游戏速度基本停下来。对于强盗模型,我使用了一个永久播放的动画循环,而不是添加动画师和动画切换。我知道屏幕上可能同时有很多敌人,所以我不得不对其进行优化。一种强盗+马模型大约为900 tris(带有黑色轮廓的1800 tris)。最重要的优化建议实际上来自我的妻子。当玩家在楼上时,我将所有东西都移到楼下。当玩家在地下采矿时,所有楼上的沙漠和系统都被拆除了。这使我获得了显着的性能提升。请与Decentraland的更多场景明星保持联系,以留意未来的信息,包括在幕后查看诸如Block Runner、Dragon Race、Salmonomicon等项目。
选择您常用的频道加入与我们联系,关注Decentraland(MANA)的最新动态
官方中文社区:官网电报微博视频QQ群:817651399官方全球社区:Official WebsiteTelegramMediumTwitterDiscordGlobal DevelopersGet Started with SDK
官方微信群
官方公众号