没有合适的资源?快使用搜索试试~ 我知道了~
软件影响13(2022)100363原始软件出版物Unity可捕捉网格放大图片作者:Nuno Fachadaa, Rafael C.e Silvab,Diogo de Andradea,Nélio Códicesca葡萄牙里斯本Lusófona大学COPELABSb葡萄牙里斯本Lusófona大学ECATIc葡萄牙里斯本里斯本大学高等技术学院INESC-ID自动清洁装置保留字:程序内容生成(PCG)电脑游戏布局以设计师为中心的方法3D地图Unity游戏引擎A B标准Snappable Meshes算法通过迭代选择和链接预先构建的地图片段,通过设计师指定的连接器,程序化地为计算机游戏生成3D地图。在本文中,我们提出了一个实现介绍了该算法在Unity游戏引擎中的应用,描述了其体系结构,并讨论了核心实现方案。一些例子说明了算法的潜力和软件的能力。我们评估应用程序代码元数据当前代码版本v1.0.0用于此代码版本的代码/存储库的永久链接https://github.com/SoftwareImpacts/SIMPAC-2022-123可复制胶囊法律代码许可证Apache许可证2.0使用Git的代码版本控制系统使用C#的软件代码语言、工具和服务编译要求、运行环境依赖性Unity(跨平台游戏引擎)≥2020.3LTS如果可用,链接到开发人员文档/手册https://github.com/VideojogosLusofona/snappable-meshes-pcg/wiki/User-guide技术支持邮箱nuno. ulusofona.pt1. 介绍本文描述了一个Unity游戏引擎[1]实现可捕捉网格技术,用于程序化地生成计算机游戏的3D地图[2,3]。该技术通过在设计者指定的位置上迭代地选择和连接预先建模的构建块来生成地图,同时提供允许用户操纵所生成的输出的外观和感觉的多个参数。给出了选择下一个积木块的具体方法,作为生成算法的参数,进一步提高了设计者对生成地图的控制能力。可捕捉网格技术能够在毫秒内生成相当大的地图,同时避免大小和布局限制[3]。这里介绍的Unity实现遵循了这些概念性指导原则,但也解决了一些*通讯作者。严格的实施问题,如几何重叠检测,通过路径查找的地图验证,和可重复的大规模实验。本文推广了参考文献。[2,3]通过提供详细描述支持它们的软件,组织如下。第2节描述了可捕捉网格技术的Unity实现,重点介绍了软件为了更好地让读者了解使用该技术生成的输出类型,第3节中提供了一些说明性示例。第4节讨论了Unity实施的影响,第5节讨论了其局限性和可能的改进。电子邮件地址:nuno. ulusofona.pt(N.gmail.com(R.C.e Silva),diogo. ulusofona.pt(D.de Andrade),nelio. tecnico.ulisboa.pt(N.Códices)。https://doi.org/10.1016/j.simpa.2022.100363接收日期:2022年6月29日;接受日期:2022年7月8日2665-9638/©2022作者。由Elsevier B.V.出版。这是一篇开放获取的文章,使用CC BY许可证(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表软件影响杂志 首页:www.journals.elsevier.com/software-impactsN. 法查达e Silva,D.de Andrade等人软件影响13(2022)10036322. 描述本节分为三个不同的小节。我们首先在2.1节中总结设计师软件最后,在2.3节中讨论了如何解决几个有趣的实现问题。2.1. 设计器工作流可捕捉网格技术的Unity实现使用Unity的编辑器工具来处理人类设计师的输入,允许设计师和研究人员测试该方法。该实现包括两个预配置的场景(在第3节中讨论),允许感兴趣的用户立即开始实验。地图生成工作流程分为三个步骤:1. 生成过程的配置,在此过程中,设计者导入用于地图创建的构建块并指定算法的参数。这些构建块或地图片段本质上是生成算法的参数。2. 地图生成和验证评估,在此过程中,将展示创建的地图和相应的路径查找验证结果。3. NPC穿越地图的演示,当进入Unity的游戏模式时自动启动,为设计师提供了生成地图的第一人称感知,如图2所示。2(b)、2(d)、2(f)和2(h)。可以重复此工作流,直到设计师对结果满意为止。2.2. 软件构架图 1提出了一个简化的UML类图的软件的体系结构,突出其主要组成部分。在这里,MonoBehaviour和ScriptableObject是Unity提供的类,在这个游戏引擎中开发项目,并且可以从Unity的编辑器中操作前者MonoBehaviour是每个游戏对象1-attachable脚本派生的基类。后者,ScriptableObject,允许派生类作为持久的面向数据的游戏资产的模板。这些资产也可以处理从编辑器-以及从脚本-虽然它们不能直接附加到游戏对象。GenerationManager类是实现的核心站。它保存生成参数并执行地图生成本身,实现可捕捉网格算法。如可以如图1所示,GenerationManager保存了用于地图生成的MapPiece集合-构建块一个此类的实例通过Unity的编辑器向用户公开图中的GenerationManager。① 的人。如图1,每个MapPiece可以有零个或多个con-set。连接器,尽管没有连接器的构建块将不是非常有用,因为它们不能与现有的地图片段捕捉在一起。在连接器实例可以在地图生成如果是这样,它将与另一个连接器链接。否则,它是空闲的,并且可能在映射生成过程终止之前变为链接的。1游戏对象,在Unity中实现 游戏对象同学们, 是 存在于Unity Scenes中的实体。他们实现了组件设计第 2.3.4 节 分 析 了 绑 定 到 地 图 导 航 和 验 证 的 NavBuilder 和NavScanner类。最后,Experimenter类和IExperiment接口与可重复实验相关,并在第2.3.5节中进一步讨论。2.3. 实现细节在本节中,我们描述了一些实现细节,这些细节可能与研究人员或开发人员更好地理解代码有关,无论是为了改进/构建它,还是为了在另一个框架中重新实现可捕捉网格技术2.3.1. 将建筑砌块作为预制件当设计者创建一个地图块时,有必要指定它的网格、各个连接器(以及它们的连接特性),以及一个或多个碰撞器2(如果块不需要碰撞的话)。人类设计的部分作为预制件添加到生成管道中,这是Unity因此,算法参数化的块是原型,而实际放置在地图上的块是原始块的副本。2.3.2. 避免几何重叠可捕捉网格技术的一个关键方面是创建地图而不重叠构建块的能力。为了保证这一点,当地图块被选择放置在地图上时,在算法参数化期间指定的可选验证重叠验证要求构建块包含一个或多个盒碰撞器,即,矩形长方体形状的包围体积近似镜像块的形状。这允许Unity以相对精确的方式快速检测当前块是否与现有地图块相交。由于Unity中的一般凸网格碰撞器仅限于255个三角形并且可能显示不准确的行为,因此在此实现中使用了框碰撞器。2.3.3. 区组选择方法策略设计模式[4]用于将块选择方法与主可捕捉网格算法解耦。因此,每个选择方法都在从AbstractSM类派生的自己的类中实现,如图所示。1.一、现有的选择方法通过C#的反射系统通过搜索相应的配置类来枚举,扩展了AbstractSM-Config。后者的一个实例随后被GenerationManager用来配置和实例化从AbstractSM派生的具体选择方法。这些关系在图中突出显示。1.一、可捕捉网格的Unity实现与四种块选择方法捆绑在一起-Arena,Corridor,Branch和Star-在参考文献中详细讨论。[2、3]。通过Unity的编辑器向用户显示的GenerationManager实例允许通过一个列表选择所需的选择方法。在实践中,用户选择AbstractSMConfig的一个具体实例,然后暴露其参数以允许他们配置所选择的选择方法。按照这种方法,新选择方法的实现变得非常简单,只需要两个新类:一个用于选择方法本身,另一个用于配置它。图案 [4], 和 之间 不同 类型 的 组件, 他们 可以包含MonoBehaviour-派生脚本。2碰撞器是UnityN. 法查达e Silva,D.de Andrade等人软件影响13(2022)1003633图1.一、可 捕捉网格Unity实现的简化UML类图。阴影块表示Unity类。2.3.4. 地图导航、验证和演示地图验证在生成过程后自动发生,并通过Unity的内置导航网格系统进行navmesh(navigation mesh的缩写)是一种凸多边形网格,用于定义地图上的可导航区域。这些面可视为节点在图中,相邻的多边形形成有效路径,或者在图的术语中,节点之间的链接。因此,可以使用路径查找算法(例如,ADMs)来确定任何两个节点之间是否存在路径。Unity在为生成的地图部署导航网格之后,将预先指定数量的随机导航点放置在导航网格中。然后,Unity的路径查找系统用于确定每对导航点之间是否存在有效路径。如参考文献[3]中所讨论的,可以使用该信息计算几个导航度量。第一人称演示模式使用这些导航点之间的有效路径在地图上移动携带相机的代理这 个 过 程 中 涉 及 到 几 个 类 , 其 中 两 个 , NavBuilder 和NavScanner,如图所示。1.一、前者解决了在生成的地图上运行时创建导航网格的问题,而后者负责部署导航点并计算不同的导航度量。 NavScanner通过Unity的编辑器暴露给用户要部署的导航点、随机数生成策略(对于可重复的实验很重要,下面将讨论)以及许多可视化调试选项。2.3.5. 可重复实验Unity中的Snappable Meshes实现允许用户配置和运行可重复的实验,这在学术和行业环境中都至关重要从研究的角度来看,可重复的实验可以验证技术本身。在行业环境中,特定参数集可被评估为适当(或not)用于在生产环境中部署地图生成器。Ex-perimenter类,如图1所示,负责这个过程.它引用一个实现IExperiment接口的对象,公开参数集列表-通过包含或生成它们-指导要执行的实验Experimenter类通过Unity的编辑器暴露给用户允许他们选择要进行的实验。所选实验中的实验执行后,原始生成和验证时间保存到CSV文件中,然后可以使用标准统计或数据科学技术导入和分析,例如:[5]的第10段。3. 说明性实例Unity 中 的 Snappable Meshes 实 现 捆 绑 了 两 个 预 配 置 的 场 景 ,Benchmark和Artistic,每个场景都有明显不同的构建块。除了允许感兴趣的用户快速入门外,这些场景还可以使用可捕捉网格技术实现一些输出多样性。图图2显示了四个示例,每行一个,其中每列显示不同的视角:左侧显示地图的总体概述,而右侧显示同一地图的第一人称视角 前两行,图。图2(a)- 2(b)和2(c)- 2(d)显示了使用基准场景生成的两个地图。这个场景包含了“乐高”一样的作品与对比的颜色,是适合设计师来理解算法是如何迭代地构建地图的。之所以如此命名,是因为它用于在生成和验证时间以及整体可导航性方面对该技术进行基准测试[3]。下面两行,图。2(e)此场景中包含的地图片段与Benchmark场景中的地图片段有很大不同,生成的地图更清晰,具有无缝连接接口,更接近于会在游戏开发的背景下找到图中的每个示例地图。2是用不同的与实现无关的块选择方法创建的,即分支2(a)有关这些选择方法的更多信息,请参阅参考文献。[2、3]。4. 影响Snappable Meshes算法最初是在Lusó- fona大学视频游戏学士学位的学期项目背景下为多人射击游戏开发的,视频游戏该算法有利于游戏的可重玩性,要求玩家在每场比赛中都适应全新的地图。由于该算法被示出为生成不同的地图类型(即,不特定于游戏在讨论中),在一次研讨会上首次提出了一个初步版本[2]。该技术后来被正式化,彻底评估,并在程序级生成的学术和工业领域中进行了上下文化[3]。独立的Unity实现首次出现在第二次出版物中,因为它支持对SnappableMeshesN. 法查达e Silva,D.de Andrade等人软件影响13(2022)1003634图二. 使用可捕捉网格算法生成的四个示意图。每一行包含一个示例地图的两个透视图;更具体地说,左列中的图显示了相应地图的概述,而右边的图显示了在同一地图上运行的第一人称演示的一个帧。参数化概述:(a)(g)-(h)使用走廊选择方法在艺术场景中生成的技术[3]。最后,应用程序可捕捉网格算法的Unity实现目前正在帮助追求更多的研究问题。特别是,我们正在研究连接器自动生成给定的任意块/地图片,并通过使用层次包围盒树来改进碰撞检测,该包围盒树也是从几何图形自动生成的。虽然该算法允许在完全基于人类的方法的一小部分时间内生成地图,但它仍然需要设计人员进行大量的手动工作,并且我们目前的研究将允许使用单个块设计进行更快的迭代时间。N. 法查达e Silva,D.de Andrade等人软件影响13(2022)1003635还有一些初步的工作是增加对地图循环的支持,并扩展算法以动态更改几何形状来关闭未使用的连接器,而不是像当前实现中那样只退出当前播放区域5. 局限性和可能的改进除了上一节中讨论的局限性,即需要大量的人力劳动和缺乏对地图循环的第一个问题涉及可导航性验证的执行方式,即,通过部署预定义数量的导航点,然后验证它们的连通性。在当前版本中,这些点被随机放置在运行时生成的navmesh中。这些点中的一些因此,如果针对具有中空建筑块的室内地图照原样遵循此方法,那么可产生既定游戏区域外部的无效路径。因此,各个构件块可能需要指定有效移动区域的附加元数据对应用程序的一个有趣的改进是自动生成元数据,尽管目前还没有研究。第二个问题仅仅是依赖于实现,并且也与导航有关。更具体地说,当前版本不支持跳转,需要地图片段被链接以接受它们之间的直接路径。虽然到目前为止,这并没有限制我们对可捕捉网格技术的研究,但它可能会阻碍感兴趣的读者进行实验,因此这是一个可以改进的实现方面。竞合利益作者声明,他们没有已知的竞争性财务利益或个人关系,可能会影响本文报告的工作确认这 项 工 作 得 到 了 科 学 和 技 术 基 金 会 UIDB/04111/2020(COPELABS)赠款的支持。引用[1]Unity Technologies,Unity®,2022,https://unity.com/。[2] R.C. e Silva,N. Fachada,N. Códices,D. de Andrade,通过手工放置的连接器连接几何体来生成程序游戏关卡,在:Videojogos 2020-第12届国际视频游戏科学与艺术会议论文集,SPCV,2020年,pp. 80比93[3] R.C. 席尔瓦,N.Fachada,D.德安德拉德,北Códices,程序生成3D地图 与 可扣 网格, IEEE Access 10 (2022)43093//dx.doi.org/10.1109/ACCESS.2022.3168832网站。[4] R.Nystrom,游戏编程模式,GeneverBenning,2014,gameprogrammingpatterns.com/。[5] N.Fachada,可捕捉网格性能数据集,2022年1月,http://dx.doi.org/10.5281/zenodo.5851209。[6] N. Fachada,N. Códices,计算机游戏BA CS课程的自顶向下设计,在:2020年ACM创新与技术会议论文集在计算机科学教育,ITiCSE '20,ACM,纽约,纽约,美国,2020年,pp. 300http://dx.doi.org/10.1145/3341525.3387378[7] D. de 安德拉德河,加-地 法查达, PyXYZ: 一个 教育3D 线框 发动机Python,在:第26届ACM计算机科学教育创新与技术会议论文集,ITICSE '21,ACM,纽约,纽约,美国,2021年,第101页。519http://dx.doi.org/10.1145/3430665.3456345
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功