欢迎来到我们系列中有关创作者的作品、技巧和秘密的第二篇文章,我们积极制作使Decentraland栩栩如生的游戏和体验。
在这篇文章中,我们来看看游戏Salmonomicon。尽管该游戏在Decentraland发行活动中引起了人们的广泛关注,但实际上是在去年9月创建的(在Decentraland的时间就像一年前一样)。它是由Decentraland开发人员团队(Pravus、Mauricio和Nico)作为内部黑客马拉松的一部分而构建的,并利用了一些我们想分享的巧妙技巧。您可以在我们的公共GitHub存储库中找到该场景的完整代码。随意接受想法并将其用于您自己的项目:https://github.com/pravusjif/salmonomicon如果您不熟悉该场景,则也可以跳入世界并进行游戏:play.decentraland.org/?position=-56,1或观看此演示视频:https://www.youtube.com/watch?v=H78Mv_u-wJk但是,关于我们如何构建Salmonomicon的细节!
射线广播
光线投射是游戏开发中的常用工具。它基本上包括在空间(“射线”)中追踪线并检查该线是否与任何其他对象相交。通常用于模拟AI的视野或计算子弹的轨迹。在开发Salmonomicon时,仅在Decentraland SDK中添加了射线广播,因此我们围绕着开发利用此功能的游戏的想法开始了集思广益。在游戏中,怪物经历两个不同的阶段。在每个阶段中,它以不同的方式使用射线广播。在这些阶段的第一个阶段,怪物出没了你,并一直朝着玩家缓慢移动。如果玩家注视着怪物,那么它移动的速度甚至更快。击败怪物的方法是始终远离它-这与我们的本能背道而驰,使我们感到不安,不知道我们处于何种危险之中。这是制作恐怖游戏体验的完美要素!为了使这个机制参与我们的游戏,我们做了以下工作:?在每一帧中,我们在两点之间绘制了一条光线:玩家的位置和怪物的位置,然后检查该线是否击中了其他任何物体?如果玩家和怪物之间有东西,例如树或墙,我们认为玩家不在怪物的视野内并且安全?我们还计算了所追踪的光线与玩家观看方向之间的角度。当玩家面对更接近怪物的方向时,角度变得更小。因此,发生这种情况时,怪物开始移动得更快。
在游戏的第二阶段,一旦收集了所有页面,怪物就旋转到位,从其眼睛射出激光(当然!)。在这里,我们以不同的方式使用光线投射。我们想检测玩家是否被激光击中,但是不幸的是,我们没有一个可以被射线击中的“玩家”物体(目前还没有……有趣的项目需要继续研究)。因此,解决此问题的方法是跟踪两条不同的光线:
?玩家的位置和怪物的位置之间有一束光线。在每一帧上,我们检查它们之间是否有任何物体,如果有,则将播放器屏蔽激光。?第二缕朝着怪物看的方向走去。如果在怪物旋转时射线碰到任何障碍物,那么我们会缩短发光的红色光束以使其匹配,以使激光看起来不会刺穿树木。
我们最终比较了这两条射线的方向。它们很难完全相等,因为一帧必须完全正确地着陆才能发生,因此我们测量了两条射线之间的角度并考虑了误差范围。如果它们之间的角度足够小,则可以确定怪物正面对玩家。一旦我们确认怪物正面对玩家,并且中间没有障碍物,那么可以肯定地说玩家被激光击中了。是否想在自己的项目中使用光线投射?在我们的文档中了解有关如何使用它的更多信息:https://docs.decentraland.org/development-guide/raycasting/
UI手
在玩游戏时,您会带着Mika的断头随身携带;米卡(Mika)是布宜诺斯艾利斯Decentraland总部的厨师。他很友善,不知道我们将这些图片用于什么奇怪的事情,因此可以为他拍照。我们选择在UI上将他的头部显示为2D图像,而不是3D对象。 3D对象与播放器一起移动看起来不那么顺畅,因为对象的位置调整不完全与每一帧保持同步,从而导致分散注意力。 2D还使我们能够纪念《毁灭战士》等经典游戏的遗产。当您寻找书中丢失的页面时,Mika的眼睛会引导您朝着最近的页面方向前进。为此,我们使用了Mika朝不同方向看的几张不同图片。我们没有将所有这些图片都使用单独的图像,而是将它们全部放置在一张Sprite表中。我们一次只显示图像的一部分,而只是从一个图像映射切换到另一个。事实证明,这比拥有单独的图像要有效得多,因为我们不必在播放过程中将图像加载和卸载到内存中。一件奇怪而出乎意料的事情:在制作游戏时,迪森特拉兰没有第三人称摄影机。当我们稍后使用第三人称摄影机测试游戏时,看起来就像是在追逐自己。
在我们的文档中了解有关如何在场景中使用UI的更多信息:https://docs.decentraland.org/development-guide/onscreen-ui/
天空盒
我们团队中的画家Mauricio尝试了一个非常不错的技巧,为我们的游戏增添了怪异的另一面。天空环绕着场景,增添了夜空和幽灵般的森林背景。这样做的创新之处在于,模型的法线有意只面向内,这意味着,如果从外部观看场景,则只会看到背景,而没有任何东西挡住场景内部的视野。进入屋内后,您将完全沉浸在森林中。这个Skybox网格还包括仅具有法线朝内的对撞机,因此,您可以轻松地走进去,但是那样就不能离开……直到击败Salmonomicon的诅咒。赢得比赛后,天空盒将被移除,您可以自由走开。移开天空盒也使其恢复了白天,这对场景的外观和完美地伴随着胜利的音乐产生了戏剧性的影响。在文档中阅读有关Decentraland的3D建模的更多信息:https://docs.decentraland.org/3d-modeling/3d-models/请与Decentraland的更多现场明星保持联系,以留意未来的帖子,其中包括幕后观看诸如Block Runner,Dragon Race等项目。您也可以查看我们在The Infinity Engine的文章。
选择您常用的频道加入与我们联系,关注Decentraland(MANA)的最新动态
官方中文社区:
官网
电报
微博
视频
QQ群:817651399
官方全球社区:
Official Website
Telegram
Medium
Discord
Global Developers
Get Started with SDK
官方微信群
官方公众号
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。