模型驱动的游戏开发:文献综述
孟柱和阿尔夫·英格·王,挪威科技大学,挪威
模型驱动的游戏开发(MDGD)将模型驱动方法论引入计算机游戏领域,使游戏开发的重点从编码 转向建模,从而让游戏开发变得更快速、更简便。关于MDGD的研究既关注通用的模型驱动软件开 发方法论,也关注游戏开发的特定特征。在过去几十年中,MDGD社区提出了多种方法,针对 MDGD背景下的技术和开发流程进行了探讨。本文基于对该领域26种方法的文献综述,展示了 MDGD研究的最新进展。该综述围绕五个视角展开:目标游戏领域、领域框架、建模语言、工具支 持和评估方法。本文还包括对MDGD内部挑战的反思与讨论。
CCS概念:
•软件及其工程 →领域特定语言;特定应用开发环境;
•应用计算→计算机游戏;
模型驱动的软件开发,游戏开发
ACM参考格式:
孟柱和阿尔夫·英格·王。2019年。模型驱动的游戏开发:文献综述。ACM计算调查52,6,文章123( 2019年11月),32页。
https://doi.org/10.1145/3365000
1引言
游戏开发从最初起步到现在已经在许多方面取得了巨大进展。然而,由于以下原因,游戏开发 仍然十分复杂[1]:
•计算机游戏的需求在整个开发过程中不断演变:尽管游戏开发的总体目标“娱乐性” 或“趣味性”是不变的,但具体的功能需求和游戏设计在整个开发生命周期中始终可 能发生变化。这是由于预期的游戏体验与实际的游戏体验之间存在差距,即使是最有 经验的游戏设计师也无法保证两者完全一致。
•游戏必须通过创造性过程进行开发,这使得直接遵循通用的软件工程实践变得具有挑 战性:就其艺术特性而言,开发团队主要由具有非技术背景的人员组成。艺术家通过 创造性过程开展工作,而这些过程很难与结构化和定义明确的
工程过程。参考[2],卡勒等人认为,“对创造性过程施加过多结构可能会造成严重 损害——限制表达、降低创造力,并削弱为客户创造愉悦体验的无形因素。”
•沟通在游戏开发中至关重要,但却充满挑战:成功开发计算机游戏需要跨学科开发团 队内部进行有效的沟通。一些著名的游戏设计师可能对底层技术有很好的理解,甚至 能够亲自编写部分代码,但这种情况通常并不常见。在实践中,游戏设计师必须通过 口头交流或书面文档向程序员描述和解释大多数游戏玩法创意。参考文献中强烈推荐 使用文档,[3, 4],但创建有用的文档十分困难,因为游戏的技术规格文档很容易达到 50页[5],,而且一些设计师坚持认为,游戏设计是无法用纸笔完全表达出来的[3]。此 外,游戏设计师和游戏程序员并不总是“使用相同的语言”。
•工具和工作流程方面存在挑战[1]:当前的商业游戏是复杂的软件,从零开始开发非 常困难。20世纪90年代出现的游戏引擎使游戏开发变得更加便捷,并解决了部分问题。
然而,正如参考文献中指出的那样,[6],随着技术发展,对软件的要求也在不断提高。
由于游戏开发具有较高的挑战性,因此其失败概率也较高。此外,还需考虑资本投资 问题,AAA级游戏的投入可能高达一部好莱坞电影的水平。这意味着大规模现代游戏的开 发财务风险很高。一款高预算游戏的失败,在最坏情况下甚至可能导致大型游戏公司倒闭。
上述挑战以及游戏产业的财务风险,促使人们开展对新技术和方法论的研究,以减轻游戏 开发难度并降低游戏制作的风险。模型驱动开发(MDD)是一个颇具前景的方向,已在多 个软件领域中展现出提升软件生产率的效果。沃尔特·斯卡奇在参考文献[7]中还指出,允 许设计者发挥创造力和表现力的领域特定语言对未来游戏开发至关重要。此外,游戏作为 一种软件特别适合采用MDD,因为:
•模型驱动开发使设计想法的原型制作变得更加容易:计算机游戏的需求来源于游戏设 计。游戏设计是一个创造性过程,在此过程中会产生大量想法,这些想法经过测试、 演化,可能被舍弃,最终只有少数会被实现在成品中。游戏设计过程是迭代的,或称 为循环的[4],,而迭代设计强调可玩性测试和原型制作[10]。人们也提倡在添加详细人 工制品之前先对游戏玩法进行原型制作,这是一种良好的实践[3]。然而,为验证设计 师想法而实现原型对于程序员来说是一个压力大、重复且令人沮丧的过程,因为他们 必须在紧张的时间表内实现不断变化的想法,如果这些想法最终被认为缺乏娱乐性, 整个代码可能就会被废弃。程序员必须持续地实现可运行的原型,直到游戏设计趋于
稳定,这一过程极其耗时,因此在游戏开发过程中引入了一个专门的阶段,即预生产
[5]阶段。模型驱动开发可以缓解预生产阶段的压力,原因有两点:第一,它允许游戏 设计师在无需经历加重工作流程负担的设计‐程序员‐设计循环的情况下建模并评估他们 的想法;第二,它可以节省手动编码原型所需的时间。
•模型驱动开发降低了对开发者知识和经验的要求:导致游戏开发困难的一个因素是,计算机游 戏具有一些高度领域专用的特性
需求,这涉及大量的领域特定知识[1],从而产生了对有经验的程序员的巨大需求。
当应用模型驱动开发时,熟练的开发者可以专注于技术基础设施,如领域特定语言 和工具,而初级开发者和游戏设计师则可以专注于可转换为可执行游戏代码的游戏 模型。工作分解粒度更细的另一个优势是,开发者可以专注于特定的开发领域,从 而在该领域更加专业。
•模型驱动开发实现更高效的通信:模型驱动开发的机遇在于,模型(尤其是使用领 域特定语言创建的模型)是对想法的形式化规范。由于这种形式化特性,通过模型进 行沟通可以消除自然语言中的一些误解。此外,领域特定模型(DSMs)能够促进软件 开发者与领域专家之间的沟通[8],这一点在一般情况下成立,我们也认为其在游戏开 发领域同样适用。
当模型驱动开发(MDD)被引入游戏开发时,模型驱动的游戏开发(MDGD)成为
一个新的研究领域。在过去十五年中,该领域已发表了大量学术研究,例如参考文献[11–
14]。本文对截至2018年发表的MDGD方法进行了文献综述,并从五个视角对这些方法进 行分析:(1)目标游戏领域[45],(2)领域框架与目标环境[48],(3)建模语言[6],(4) 工具支持[60],以及(5)评估方法。本综述概述了在游戏开发中使用了哪些MDD技术以及 如何使用这些技术,而无需深入探讨每种MDGD方法的技术细节。
由于MDGD领域相对较新,该领域的相关工作并不多。参考文献[70]是对教育游戏的 MDGD方法的一项调查。我们的文章在至少三个方面不同于参考文献[70]:
•我们的综述面向的是广义的游戏,而参考文献[70]专注于教育游戏领域;
•我们采用了与参考文献不同的综述框架[70],,因此我们为MDGD提供了不同的视角;
•我们的综述包含了更新的研究,因为参考文献[70]发表于2011年。
参考文献[16]是另一项相关工作。它讨论了参考文献[70],中一个子领域——教育冒险游戏 的建模方法。由于所关注的游戏领域较窄,仅回顾了三种方法。对这三种方法的分析和讨 论主要集中在建模语言方面。与参考文献[16],相比,我们的综述范围更广,并采用了一个 更系统的框架。我们综述中的来源也更新。
本文其余部分组织如下:第2节介绍综述的方法论;第3节概述所回顾的方法;第4至 8节分别从上述五个视角对MDGD方法进行分析;第9节总结全文。
2研究方法
本文所呈现的研究对参考文献[15],中提出的系统综述方法进行了调整,该方法使用五个阶 段来组织文献综述:(1)“制定综述方案”,(2)“确定纳入和排除标准”,(3)“检 索相关研究”,(4)“质量评价”,(5)“数据提取”和(6)“综合分析”。由于在 文献中找到的相关来源数量有限,且我们决定纳入所有符合条件的来源,因此跳过了第4阶 段“质量评价”。
2.1审查协议
制定了审查协议以实现以下目标:
•以最大化文献覆盖;
•以识别并包含在开发过程中模型作为核心工件的相关工作;
•以找到合适的视角,从来源中收集和综合有意义的数据。
为了实现第一个目标,我们采用两轮搜索来查找相关来源。在第一轮中,我们通过搜 索在线数据库找到一组初始来源;在第二轮中,我们查阅已找到来源的参考文献,并手动 查找未包含在初始集合中的相关来源。
我们意识到在建模领域对“模型驱动”存在不同的理解,在本研究中,我们仅考虑了 模型作为开发核心工件的工作,这意味着模型是可执行的,或者可以转换为可执行代码。
这一审查原则体现在纳入和排除标准中,以满足审查协议的第二个目标。
MDGD方法可以从多个视角进行研究。为了实现审查协议的第三个目标,我们选择了 构成框架的五个视角来组织本次综述(详见第2.4节)。
2.2纳入与排除标准
我们的主要目的是分析现有的MDGD方法并揭示未来的研究方向,因此所纳入的来源必须 至少记录一种具有足够细节的MDGD方法以供研究。此外,该方法应在游戏开发中使用模 型作为核心工件,并且模型必须用一种形式化建模语言描述,其语法和语义需明确定义。
该语言不仅用于游戏设计规范,还应是可执行的(或经过转换后可执行),并且必须有工 具链支持。所纳入的来源不必涵盖全部五个视角的详细信息,但必须至少覆盖其中一个视 角的足够细节。本次综述包含截至2018年的文章。仅纳入以英语撰写的作品。
如果方法中的模型既无法执行,也不能转换为可执行游戏代码,则排除该来源。为了 保持综述的聚焦性,我们排除了一些关于概念模型的研究,这些模型并非用于执行。例如, 参考文献[71]提出了一种用于创建教育游戏游戏设计文档的概念框架和图形用户界面工具。
由于该研究不涉及可执行模型,因此被排除,尽管它是一种有前景的游戏建模方法。此外, 本综述关注的是游戏开发方法论,因此如果所记录的方法缺乏面向游戏的特性,即该方法 并未主要针对游戏领域,则该来源被排除。一种常见现象是,某一方法在多篇出版物中分 别从不同角度进行阐述。在这种情况下,所有相关来源均被纳入,并在综述中整合为一种 方法。
2.3检索相关研究
检索相关研究分为两个阶段进行。在第一阶段,作者检索了电子数据库,并找到了一组初 始来源。在第二阶段,作者查阅了该初始来源集的参考文献,并确定了第二组来源。在第 一阶段,检索了以下三个电子数据库:
• ACM(计算机协会)数字图书馆
• Compendex
• IEEEXplore
我们使用了以下关键词:(Game ORGaming)ANDModel。
关键词的选择是一个棘手的问题:由于MDGD是一个新兴领域,尚未形成普遍采用的 术语来准确指代相关研究。为了避免遗漏来源,我们使用了上述通用关键词进行检索。缺 点是产生了大量检索结果,其中许多需要手动筛选剔除,因为它们并不相关。检索结果中 相关研究的比例为0.59%。由于我们的检索产生了大量的检索结果,因此没有进一步搜索 诸如“gamification”和“entertainment”等其他通用术语,以使结果集的规模可控。
然而,这种权衡可能会降低本综述的文献覆盖。为了弥补这一点,我们引入了第二轮检索 (通过参考文献)。
关键词被用于在数据库中检索文档的标题、摘要和索引,共找到5,933条“检索结果”。
随后,作者通过查阅出版物的摘要及其他属性,手动排除了不相关和重复的结果。在此步 骤中,大部分结果被排除,仅有47篇出版物被认为与本研究相关。作者阅读了这47篇出版 物的全文,并根据纳入和排除标准进一步剔除文章。最终,在第一轮搜索阶段确定了20篇 出版物纳入综述。在第二阶段,作者查阅了第一阶段收集的出版物的参考文献,又识别出 另外15篇相关出版物。
两阶段搜索最终获得了35篇出版物,代表了26种独立的MDGD方法,随后作者阅读并 分析了所有来源的全文。1展示了文献检索的过程。
2.4数据提取与综合分析
我们调查了所有来源,并针对五个评审视角提取了数据:
•目标游戏领域[45]:目标领域描述了MDD方法旨在支持的软件类型。计算机游戏作 为一个软件领域对于MDD方法而言范围太广。所有被评审的MDGD方法都选择了更窄 的范围作为其目标领域,例如冒险游戏或角色扮演游戏。第4节讨论了MDGD方法如 何定义其目标领域以及这些领域具体是什么。
•领域框架与目标环境[48]:在MDD中,模型应是可执行的,要么通过模型解释器直 接执行,要么通过转换为目标环境的可执行格式间接执行。在这两种情况下,都有一 个底层的执行框架。第5节讨论了被评审方法所选择作为执行框架的软件。
•建模语言[6]:建模语言是MDGD方法的核心和基本人工制品。第6节讨论了 MDGD方法发明或采用的建模语言的重要属性,例如语言的语法和语义。
•工具支持[60]:建模语言需要由一系列工具提供支持,例如模型编辑器和代码生成器。这些工具使 MDGD在实践中得以实现。第7节分析了MDGD方法所提供的工具以及这些工具所基于的技术。
•评估:所有回顾的MDGD方法都以某种方式进行了评估。评估的目的包括实用性、 可用性和生产率提升。不同的MDGD方法选择了不同的评估方法,例如实验,
原型和案例研究。第8节讨论了各方法所使用的评估方法,以及评估的相应目的。
此外,我们根据各综述部分摘要中呈现的提取数据,识别出了一些差距并总结了我们的思考。
3文献中发现的MDGD方法概述
游戏产业在使用模型方面有着悠久的传统。一个例子是使用关卡编辑器创建的关卡模型, 它为游戏世界建模提供了可视化交互环境。然而,引擎工具能够建模的游戏元素仅限于游 戏软件的一个狭小范围,主要是诸如游戏世界布局和美术数据之类的资源。其他元素如人 工智能、控制和游戏流程仍然需要手工编码,要么使用C++或C#等原生编程语言,要么使 用专用游戏脚本语言。一些最先进的游戏引擎确实提供了用于生成脚本代码的可视化建模 工具,例如虚幻游戏引擎中的可视化脚本工具。然而,这些工具并未充分利用现代MDD的 优势,例如元模型和语言工作台的使用,这使得它们难以适应新的游戏领域。此外, MDGD研究社区多年来一直在探索现代MDD在游戏领域的应用,且研究成果令人期待。
MDGD研究社区的贡献主要分为两类:MDGD技术和开发过程。表格1根据这两类对 文献中发现的MDGD方法进行了概述。每个MDGD方法还提供了结构化描述,包括以下方 面:
表1.文献中发现的MDGD方法
| 类别|描述|来源|
| —|—|—|
| |||
| MDGD 技术|作者:Sánchezetal. 主要贡献:一种领域特定语言及工具 游戏类型:塔防游戏
技术基础:XText 亮点:游戏模型可以被转换为一种中间语言,然后 转换为多种编程语言的代码
作者:普拉多和卢克雷迪奥 主要贡献:一组领域特定语言和工具 游戏类型:3D游戏
技术基础:XML 亮点:(1)各种游戏元素可以使用专用的领域特定语言进行建模; (2)生成的代码可以与手动编写的代码集成 作者:雷诺等人 主要贡献:UML工具 游戏类型:2D平台游戏
技术基础:统一建模语言,MOFscript 亮点:(1)使用标准化的统一建模语言技术;(2)生成的C++代码可以运行 与手动编写的代码结合
作者:瓜纳等人 主要贡献:一种领域特定语言(PhyDSL‐2)和工具 游戏类型:基于2D物理的游戏 技术基础:Eclipse、Atlas转换语言(ATL)和Acceleo 亮点:(1)代码生成器可为安卓生成代码;(2)领域特定语言支持 各种游戏元素,如游戏对象、场景布局和规则。
作者:蒂拉伊纳坦等人 主要贡献:一种领域特定语言(GliSMo)和工具 游戏类型:严肃游戏 ,点击式冒险 技术基础:Unity 亮点:(1)工具与游戏引擎Unity集成;(2)领域特定语言可以建模 包括结构和行为方面;(3)工具包含一个模型验证器
作者:范·霍克等人 主要贡献:一种领域特定语言(ATTAC‐L)和工具 游戏类型:严肃游戏 技术基础:XML 亮点:引入模型解释器以使模型可执行 作者:库图米苏等人 主要贡献:一种可视化编程工具 游戏类型:角色扮演游戏(RPG) 技术基础:Java,无冬之夜(NWN)引擎 亮点:该工具已发布给NWN社区,并被下载了6,000次 6个月内出现了数次。社区的反应是积极的。
作者:瓦尔加斯等人 主要贡献:一种领域特定语言及工具 游戏类型:迷宫游戏 技术基础:模型驱动架构(MDA),XML 亮点:它使用了对象管理组织(OMG)标准的模型驱动 架构(MDA)
作者:米诺维奇等人 主要贡献:一种领域特定语言及工具 游戏类型:教育游戏
技术基础:XML,MDA 亮点:它使用模型驱动架构,且仅支持用户界面的建模 作者:马塔拉oui等人 主要贡献:一种领域特定语言(GaML)和工具 游戏类型:严肃游戏 技术基础:Unit y ,XText|[17]
[18]
[19, 20]
[21, 22]
[23, 24]
[25–27]
[28, 29]
[30]
[31]
[32]|
亮点:它支持一款流行的游戏引擎:Unity
(续) ACM计算调查,第52卷,第6期,文章123。出版日期:2019年11月。
123:8 朱某and王AI
表1.续
| 类别|描述|来源|
| —|—|—|
| |||
| |作者:Pleussetal. 主要贡献:一组领域特定语言(MML)和工具 游戏类型:Flash游戏 技术基础:Eclipse建模框架(EMF) 亮点:它支持使用专用的领域特定语言对游戏进行行为方面和结构建模,
专用的领域特定语言 作者:Marquesetal. 主要贡献:一种领域特定语言及工具 游戏类型:移动角色扮演游戏 技术基础:Eclipse建模框架(EMF) 亮点:(1)代码生成通过包含以下两个步骤的过程实现: 模型到模型转换,以及基于模板的模型到代码生成; (2) ALPiNA[35]的基于语义验证也已实现
作者:施特尔纳和布鲁内 主要贡献:一种领域特定语言及工具 游戏类型:虚拟世界
技术基础:EMF 亮点:它可以为网页浏览器生成JavaScript代码 作者:马尔基奥里等人 主要贡献:一种领域特定语言及工具 游戏类型:教育游戏 技术基础:米利有限状态机 亮点:该领域特定语言具有正式的理论基础,并支持领域特定的 功能
作者:瓦尔德斯等人 主要贡献:一个图形化建模工具集(Gade4all) 游戏类型:各种类型,如解谜、平台游戏。
技术基础:XML 亮点:工具集支持多种游戏类型,并能为各种 iOS、安卓、HTML5等平台 作者:莫拉莱斯等人 主要贡献:模型转换链(MTC) 游戏类型:迷宫游戏
技术基础:模型驱动架构和Eclipse建模框架 亮点:所提出的MTC包含三个步骤:(1)从游戏的转换 平台无关模型(PIMs)到架构PIMs;(2)转换从
将架构PIMs转换为游戏平台特定模型(PSMs);以及(3)从游戏PSMs生成代码 (JavaSE或Torque2D) 作者:Funk和Rauterberg 主要贡献:一种领域特定语言(PULP)和工具
游戏类型:HTML5游戏 技术基础:XText 亮点:PULP支持游戏的结构建模和行为方面建模 游戏 作者:Furtado和Santos 主要贡献:两种领域特定语言(SLGML和Head‐UpDisplayCreationDSL)以及 工具 游戏类型:2D冒险游戏 技术基础:MicrosoftVisualStudioDSL工具 亮点:该方法遵循软件工厂工程方法
作者:埃尔南德斯和奥尔特加 主要贡献:一种领域特定语言(EberosGML2D)及工具 游戏类型:2D游戏 技术基础:MicrosoftVisualStudioDSL工具 亮点:EberosGML2D支持结构与行为建模|[33, 34]
[36]
[37]
[38]
[39]
[40]
[41]
[42]
[43]|
游戏
(续)
ACM计算调查,第52卷第6期,文章123。出版日期:2019年11月。
模型驱动的游戏开发:文献综述 123:9
表1.续
| 类别|描述|来源|
| —|—|—|
| |||
| |作者:Zhuetal. 主要贡献:一种建模方法(ECGM)和一种领域特定语言(RAIL) 游戏类型:动作/冒险游戏
技术基础:Eclipse建模框架和Acceleo 亮点:ECGM方法弥合了基于引擎的游戏开发与 模型驱动的游戏开发,实现这两个领域的工具之间的协作 开发方法。 作者:费雷拉等人 主要贡献:一种基于XML的DSL(LEGaL),用于创建基于位置的 游游戏戏类型:基于位置的游戏 技术基础:XML和嵌套上下文语言(NCL) 亮点:NCL是一种用于超媒体 文档创作的声明式语言,而LEGaL扩展了NCL以支持建模和生成 基于位置的游戏。
作者:阿瓦迪等人 主要贡献:一种领域特定语言及工具,用于创建严肃游戏 游戏类型:严肃游戏 技术基础:MDA和EMF 亮点:它实现了一种遵循MDA标准的领域特定语言及工具,可以 为Unity引擎生成严肃游戏代码。
作者:迈尔和福尔克 主要贡献:一种MDGD过程 游戏类型:类似吃豆人游戏
技术基础:EMF 亮点:该过程遵循软件工厂工程方法论 强调使用语言工作台 作者:瓦尔特和马舒赫 主要贡献:一种MDGD过程 游戏类型:2D点击式冒险游戏 技术基础:XPand和XText 亮点:该过程采用自下而上的方法,从语言 需求到参考工件,再到语言定义,最后到 领域特定程序 作者:Furtado等人 主要贡献:一种MDGD过程 游戏类型:2D街机游戏 技术基础:MicrosoftVisualStudioDSL工具 亮点:该过程是迭代的,并且结合了自上而下和自下而上的方法 方法,其中对问题域和解决方案域的阐述是 交替完成|[72, 73]
[74]
[75]
[44]
[14]
[45, 46]|
| 开发 过程|作者:Zhuetal. 主要贡献:一种建模方法(ECGM)和一种领域特定语言(RAIL) 游戏类型:动作/冒险游戏
技术基础:Eclipse建模框架和Acceleo 亮点:ECGM方法弥合了基于引擎的游戏开发与 模型驱动的游戏开发,实现这两个领域的工具之间的协作 开发方法。 作者:费雷拉等人 主要贡献:一种基于XML的DSL(LEGaL),用于创建基于位置的 游游戏戏类型:基于位置的游戏 技术基础:XML和嵌套上下文语言(NCL) 亮点:NCL是一种用于超媒体 文档创作的声明式语言,而LEGaL扩展了NCL以支持建模和生成 基于位置的游戏。
作者:阿瓦迪等人 主要贡献:一种领域特定语言及工具,用于创建严肃游戏 游戏类型:严肃游戏 技术基础:MDA和EMF 亮点:它实现了一种遵循MDA标准的领域特定语言及工具,可以 为Unity引擎生成严肃游戏代码。
作者:迈尔和福尔克 主要贡献:一种MDGD过程 游戏类型:类似吃豆人游戏
技术基础:EMF 亮点:该过程遵循软件工厂工程方法论 强调使用语言工作台 作者:瓦尔特和马舒赫 主要贡献:一种MDGD过程 游戏类型:2D点击式冒险游戏 技术基础:XPand和XText 亮点:该过程采用自下而上的方法,从语言 需求到参考工件,再到语言定义,最后到 领域特定程序 作者:Furtado等人 主要贡献:一种MDGD过程 游戏类型:2D街机游戏 技术基础:MicrosoftVisualStudioDSL工具 亮点:该过程是迭代的,并且结合了自上而下和自下而上的方法 方法,其中对问题域和解决方案域的阐述是 交替完成|[72, 73]
[74]
[75]
[44]
[14]
[45, 46]|
| Both 技术 和过程|作者:Guo etal. 主要贡献:一种MDGD过程,一种领域特定语言及工具 游戏类型:泛在游戏
技术基础:EMF 亮点:(1)它采用基于本体的领域分析和迭代过程来确保 高效的模型驱动开发工作流;(2)提出了一种用于建模泛在游戏的文本型领域特定语言|[47]|
•提出并发表该方法的作者; MDGD方法的主要贡献; 该方法针对的游戏类型,或用于验证的游戏类型;
•技术基础是所基于的技术标准或框架的方法; 该方法的显著特征。
请注意,某些方法有多篇出版物,因此为了区分每种方法,我们在本文中将其引用格式化
为[数字,数字…]。
表格1可用作本文中感兴趣信息的查找入口:读者可首先选择其感兴趣的现有研究类 别(技术或过程),然后浏览表格1中该类别,通过结构化描述快速了解相关方法。如果 读者需要更详细的信息:
•特定方法,那么他或她可以在表格1中找到该方法的来源;或者
• MDGD的一个特定方面,那么他或她可以前往第4–8节中的相应综述部分,以获取 该方面的详细信息以及各方法之间的比较结果。
4目标游戏领域
MDD的一个重要价值是提高抽象层次,从而可以使用问题域概念来指定解决方案,使解决 方案更加直接和易于理解。为此,建模语言和代码生成器都应该是领域专用的[48]。选择 合适的目标领域对于MDGD方法的成功至关重要。如果目标领域过于狭窄,则该方法的应 用将受到限制,因此很难收回初期投资。然而,如果目标领域过于宽泛,则会导致其他问 题,例如:
•难以管理的语言构造数量:目标领域越广泛,建模语言需要支持的概念就越多。过 多的概念可能使建模语言变得过于复杂,难以开发和维护。
•低抽象层次:为了控制面向过于宽泛领域的建模语言的复杂性,可能不得不牺牲语 言的抽象层次;因此,该语言的实用性会降低。在极端情况下,抽象层次可能低至第 三代编程语言(如C或C++),这将消除模型驱动开发的优势。
•描述性差:如果面向过于宽泛领域的建模语言需要保持高抽象级别和可控的复杂性, 那么它必须通过仅支持领域中的一小部分基本概念来牺牲描述性。因此,该语言的能 力受到限制,并且可能需要持续更新。
本节其余部分介绍了所综述的MDGD方法如何定义其目标领域,以及对剩余挑战的讨论。
4.1基于类型领域
所回顾的MDGD方法在定义目标领域时采用了不同的方法,其中基于游戏类型来定义领域 是最常见的选择。游戏类型是根据游戏玩法特征对游戏进行的分类。需要注意的是,“类 型”是一种非正式分类,且不同类型可能存在模糊定义。
参考文献[19, 20]针对“2D平台游戏(平台类游戏)”,这是一种动作游戏,其特点是玩 家角色在各个平台之间跳跃。参考文献[72, 73]针对“动作/冒险游戏”,这也属于动作游戏, 但相比平台游戏能支持更复杂的玩家和人工智能行为。参考文献[17]支持“塔防游戏”,其 游戏玩法是建造静态防御单位,以保护基地不被来袭的敌人攻占。有两种MDGD方法针对“角 色扮演游戏(RPG)”:参考文献[28, 29]和[36]。角色扮演游戏是一种流行的游戏类型,玩
家在其中扮演虚拟世界中的一个角色,通常具有引人入胜的背景故事。参考文献[28, 29]
支持针对《无冬之夜》1引擎的RPG,参考文献[36]则针对移动平台上的RPG。迷宫游戏是一 种在网格地图上进行的俯视2D游戏。地图中的每个格子可以是障碍物或空地。敌人和玩家角色 在地图上移动,并可能发生冲突。参考文献[30]和[40]均以迷宫游戏类型为目标领域。参考 文献[14]以“点击式冒险游戏(ADVs)”作为目标领域,这类游戏的特点是在静态背景上渲染 图形化对象,玩家通过指向并点击这些对象,并与非玩家角色(NPCs)互动来收集线索,推动 故事发展。参考文献[23, 24]支持ADVs,但仅关注用于教育目的的ADVs。参考文献[21,22]支 持“基于2D物理的游戏”,这是一种围绕物理模拟构建游戏玩法的2D动作游戏。参考文献 [39]不同于上述方法,它提供了一个集成化工具环境Gade4all,以支持多种类型,例如平台游 戏和解谜游戏。Gade4all还可扩展至其他游戏类型。
“教育游戏”是指为教学或学习目的而创建的游戏。作为一类游戏类型,“教育游戏”存 在争议,因为其游戏玩法很难与其他类型区分开来。例如,一款教育游戏可以是角色扮演游戏、 冒险游戏(ADV)或解谜游戏。“严肃游戏”是教育游戏的超集,不仅包括教育游戏,还包括 其他具有严肃目的的游戏,例如用于体育锻炼和健康促进的游戏。目前已有不少针对严肃游戏 或教育游戏的MDGD方法,如参考文献[23, 24],[25–27],[31],[32],[38],和[75]。
选择现有的游戏类型可以轻松重用共享的领域知识,并使领域定义直观且简单。然而, 游戏类型并没有正式的定义。因此,它们无法精确界定MDGD方法的应用范围。但是,明 确定义的应用范围对于开发和应用此类方法至关重要。基于类型领域的缺点在第4.5节中进 行了详细讨论。
4.2系统化定义的领域
多种MDGD方法采用系统化方法来定义目标领域。参考文献[42]将目标领域界定为“冒险 游戏”,并从对应于游戏领域的九个关键特征的九个视角提供了详细描述。类似地,参考 文献[45, 46],中的ArcadEx进一步通过使用一个特征模型以及关键词“2D街机游戏”来刻 画目标领域。该模型包含150个特征,用于描述该领域的共性与可变性。同样,参考文献 [47]以“泛在游戏”为目标,这是一种将虚拟与现实世界相融合的游戏类型。参考文献 [47]使用泛在游戏本体“PerGO”[49],对目标领域的共性和差异进行系统性分析。基于 位置的游戏是泛在游戏的一个子类型,其特点是利用玩家的物理位置来创造游戏玩法。在 参考文献[74],中,通过对文献中15款基于位置的游戏进行调查与分析,总结了该类游戏的 特征及四种主要游戏玩法模式,构成了其领域定义。
这些系统化方法能够产生更加正式和有用的领域定义,为MDGD方法的开发提供明确 定义的目标,并帮助用户更容易地理解这些方法。
1《无冬之夜》最初是由BioWare发布的一款角色扮演游戏,由于其具有可扩展性,因此产生了许多模组。如今,一个活跃的 社区已为《无冬之夜》创建了超过4000个模组,使其成为一个自定义角色扮演游戏的开发平台。社区网站: www.neverwinternights.info。
4.3单一游戏领域
两种方法定义了极其狭窄的目标领域:单个游戏或由几个非常相似的游戏组成的游戏系列。
参考文献[44]提出了针对类似吃豆人游戏的模型驱动开发,该方法遵循“一次一个游戏” 的原则:针对特定游戏或游戏系列创建完整的MDD工具集,该工具集针对该项目的开发进 行了优化,但在其他项目中若无重大修改则难以重用。为单个游戏创建领域特定语言和工 具可能在经济上不可行,因此推荐使用语言工作台作为该方法的核心,这可以显著降低 MDGD工具支持的成本。参考文献[
在游戏开发中,模型驱动的游戏开发(MDGD)已成为一个新兴的研究领域,旨在通过将模型驱动开发(MDD)方法论引入游戏开发,使开发过程更高效、更简便。MDGD的核心思想是从编码转向建模,从而提升开发效率、降低对开发者经验的要求,并改善跨学科团队间的沟通。本文综述了截至2018年发表的26种MDGD方法,围绕五个关键视角进行分析:目标游戏领域、领域框架与目标环境、建模语言、工具支持以及评估方法。
4.4 其他领域
一些MDGD方法选择的领域比基于类型领域的更广泛。参考文献[37]旨在通过可视化场景和角色的构建来促进“虚拟世界”的开发。虚拟世界包含游戏,但不仅限于游戏,因此该领域的范围非常广泛。参考文献[41]声称支持“交互式HTML5应用”,这也是一个非常广泛的概念。同样,参考文献[33, 34]针对Adobe Flash游戏,这是HTML5的一项竞争技术。这些领域过于宽泛,几乎涵盖了所有游戏类型,其领域概念几乎无法被封装到单一的领域特定语言中。实际上,这些方法仅支持目标领域的一个子集。
埃尔南德斯和奥尔特加认为,2D游戏领域足够狭窄,适合采用MDGD,他们参考[43]文献开发了Eberos GML2D,以支持所有类型的2D游戏开发。该领域特定语言包含了2D游戏的通用概念,例如精灵、实体、动画、状态机和消息。他们还通过建模并生成两款游戏来验证该方法。然而,所展示的两款游戏均为平台游戏。该方法是否能够扩展到2D游戏的巨大多样性仍值得怀疑。类似地,参考文献[18]将“3D游戏”作为目标领域,并提出了一组领域特定语言,以支持三个子领域,即摄像机、角色和场景(游戏场景)。参考文献[43]和[18]的主要局限性在于领域特定语言的表达能力:2D/3D游戏包括从棋盘游戏到大型多人在线角色扮演游戏等多种类型,涵盖大量不同的领域概念,而这些领域特定语言仅支持其中有限的子集。我们必须牢记,“开发者常常为其领域创建一种过于通用的语言,其概念和语义要么过少,要么过于泛化,或两者兼有”,这是最糟糕的模型驱动开发实践之一[50]。
4.5 目标游戏领域总结
表格2总结了我们综述中MDGD方法的目标游戏领域:大多数方法(26种中的15种)选择基于游戏类型进行领域定义;四种方法采用更系统化的方法来定义其目标领域;两种方法将单个游戏或游戏系列作为目标领域;另有五种方法声称支持比单一游戏类型更广泛的领域。
我们想指出基于类型领域的两个重要问题:
-
声称支持的游戏类型与实际支持的游戏领域之间存在差距
:游戏类型是对游戏的非正式分类,定义并不精确,因此MDGD作者对游戏类型的理解可能与使用其方法的开发者不一致。此外,一种游戏类型可以有许多变体,这些变体通常超出了MDGD方法在实践中的可行范围。
-
MDGD方法的原型实现并未完全支持领域概念
:MDGD方法在具有有限资源的研究环境中开发,这限制了语言和工具的原型实现的复杂性和成熟度。
上述差距使得评估特定游戏项目的MDGD方法的适用性变得困难,从而威胁到MDGD方法的实用性。使用单一游戏领域可通过将MDGD的范围缩小到单个游戏或更容易定义和支持的游戏系列来解决这些问题。系统化定义的领域提供了对目标领域的最精确的定义,使得MDGD开发者更容易理解需求,用户也更容易评估语言和工具的适用性。
5 领域框架与目标环境
在模型驱动开发中,模型要么是可直接执行的,要么可以被转换为可执行代码。对于前者,需要模型解释器来处理模型语义;对于后者,通常需要在生成的代码与底层目标环境之间添加一个软件层[48]。中间的解释器和软件层被称为MDGD中的领域框架。例如,游戏引擎就是一种典型的领域框架。表格3展示了所综述的MDGD方法的领域框架。
所审阅的MDGD方法所使用的领域框架主要分为四类:
1.
通用计算平台
:如操作系统、网页浏览器和Java平台。
2.
游戏引擎或等效软件
:如Unity、jMonkeyEngine、无冬之夜等。
3.
修改的游戏引擎
:对现有引擎进行修改以提升抽象层次,缩小语义鸿沟。
4.
模型解释器
:使用特定语义引擎在运行时解释模型。
综述表明,选择领域框架取决于项目背景:对于教育游戏和原型等简单游戏,操作系统和网页浏览器是合适的选择;对于商业游戏,游戏引擎无疑是主流选择。此外,模型解释器避免了代码生成和编译,简化了工作流程,并支持模型的运行时更新。
6 建模语言
建模语言是MDGD的核心。“一种语言为开发提供了抽象,因此对开发者来说是最显而易见的部分”[48]。本节讨论MDGD方法提出或使用的建模语言。
6.1 支持的领域概念
语言设计中的首要活动之一是分析该语言的目标。我们在此不讨论语言的用途,因为本节重点在于MDGD方法如何在语言设计中识别相关领域概念。目前有五种常用的方法用于确定建模语言的相关领域概念:
- 物理产品结构
- 系统的外观与感觉
- 可变性空间
- 领域专家概念
- 生成输出
大多数MDGD方法将其作为语言的主要来源概念。
6.2 语言内容
语言元素可分为三大类:
1.
结构元素
:用于支持游戏的结构方面建模,如程序静态结构、场景结构、游戏实体结构。
2.
行为元素
:用于支持游戏的行为方面建模,如玩家角色控制、游戏对象行为、游戏流程。
3.
混合元素
:用于同时支持结构与行为建模,如用户界面相关元素。
6.3 具体语法
具体语法决定了语言给人的第一印象。表格6展示了MDGD方法所采用的具体语法形式:
- 图形化
- 文本式
- 树状视图
- 基于表单的视图
最常用的是图形化与文本形式。图形化表示通常更加直观,而文本语言则因传统编程习惯而被广泛接受。
6.4 抽象语法
抽象语法定义了语言中可用的概念、关系和完整性约束。建模语言的抽象语法通常通过元建模来定义,而每个由该建模语言创建的模型都是语言元模型的一个实例。
表7中列出的抽象语法类别包括:
- 类代码模型
- 游戏对象规范
- 有向图
- 状态机模型
- 产生式规则系统
- 决策树
- 图变换
每种抽象语法具有不同的领域适用性,因此一种建模语言可能会使用多种抽象语法来适当地支持建模各种游戏方面。
7 工具及工具环境
没有工具支持,模型驱动的软件开发就没有意义[52]。Kent在参考文献[60]中也主张:“工具支持对于最大化建模带来的好处以及最小化维护模型所需的工作量至关重要。”
7.1 模型驱动游戏开发方法的工具支持
表格8展示了所回顾的MDGD方法提供的工具:
- 代码生成器
- 模型编辑器和代码生成器
- 模型编辑器和解释器
- 模型编辑器、代码生成器和语义验证器
所有提供工具支持信息的MDGD方法都提供了某种形式的模型执行工具。大多数方法提供了代码生成器,少数方法实现了模型解释器。
7.2 工具环境
表格10列出了所评审的MDGD方法的工具环境,分为四类:
- 集成语言工作台(如Eclipse建模工具、Microsoft Visual Studio工具)
- 独立语言工具(如Freemarker, MOFscript, XSLT)
- 游戏引擎(如Unity, jMonkeyEngine)
- 通用编程工具(如Java)
Eclipse建模工具是最流行的集成语言工作台,因其开源性和丰富的插件生态系统而被广泛采用。
7.3 MDGD工具支持总结
成功的模型驱动开发可能需要更多当前MDGD方法中所缺乏的工具,如模型验证工具、模型实例管理工具、模型映射工具、模型驱动测试工具、仪表板应用、版本控制和分布式建模工具以及软件过程管理工具。
8 评估方法
大多数MDGD研究遵循设计科学研究(DSR)范式,评估是其中的核心活动。评估的目的主要包括实用性、生产力和可用性。
8.1 原型
所有被综述的MDGD方法都实现了一些技术原型,作为概念验证和其他评估的基础。
8.2 示例场景
示例场景被频繁使用,其中16种方法或多或少地采用了该方法。在最简单的情况下,仅描述了该方法如何与通用迷宫游戏概念结合使用;而其他方法则创建了一个或多个游戏原型来展示其能力。
8.3 基于受试者的实验
基于受试者的实验是一种通过受试者来评估某个断言是否成立的实验方法。在26种MDGD方法中,有五种采用了基于受试者的实验,主要用于量化应用MDGD所带来的生产力提升。
8.4 案例研究
案例研究方法将来自设计科学研究(DSR)的人工制品应用于真实世界情境,并评估其对真实世界情境的影响。在26种MDGD方法中,有6种使用了该方法,主要目的是评估可用性。
8.5 评估方法总结
MDGD方法所使用的评估方法在表格11中进行了总结,并对每种MDGD方法如何使用以及其目的进行了简要描述。需要注意的是,示例场景方法是描述性和定性的,无法产生定量结果。实验方法可以生成定量且相对可推广的结果,但样本量小和变量控制松散是其局限性。
9 结论
模型驱动的游戏开发(MDGD)将通用的模型驱动开发方法论引入游戏开发领域,有望使游戏开发变得更加快捷和简便。除了在通用软件开发中应用模型驱动开发的优势外,模型驱动开发对游戏开发尤其有用,因为很大一部分游戏开发者是非程序员,这意味着使用建模而非编写代码不仅能让他们的工作更容易上手,还能节省沟通成本。
然而,作为一个新兴的研究领域,模型驱动的游戏开发在商业游戏开发中的应用仍有很长的路要走。本文回顾了26种方法,但其中只有一种[39]被应用于商业游戏开发。
所回顾的MDGD方法仍存在挑战与差距。例如,实际支持的领域通常比声称支持的领域更窄,缺少模型级调试器等关键工具,并且MDGD方法的评估也可以通过更好的过程和设计加以改进。
进一步的工作包括在文献综述的启发下,探索更多MDGD的机会,以及提出解决方案来应对所面临的挑战,从而有可能提高MDGD在实践中的实用性。
838

被折叠的 条评论
为什么被折叠?



