题 目 计算机游戏软件工程的实践与技术外文翻译资料

 2022-12-24 17:05:26

Editor: Christof Ebert

SOFTWARE TECHNOLOGY

Vector Consulting Services christof.ebert@vector.com

Practices and Technologies in Computer Game Software Engineering

Walt Scacchi

Computer games are at the forefront of software engineering. Games software engineering, although often neglected in curricula, poses huge challenges such as time to market, complexity, collaborative development, and performance. Game development ranges from entertainment, with games being more sophisticated and complex than movies, to serious games used for education

in universities and industry. Here, Walt Scacchi introduces us to computer game software engineering with technologies and a hands-on case study. I look forward to hearing from both readers and prospective column authors. —Christof Ebert

COMPUTER GAMES ARE RICH, com-

plex, and frequently large-scale soft- ware applications. Theyrsquo;re a signifi- cant, interesting, and often compelling domain for innovative research in soft- ware engineering (SE) techniques and technologies. Computer games are pro- gressively changing the everyday world in many positive ways. Game develop- ers, whether focusing on entertainment market opportunities or game-based ap- plications in nonentertainment domains such as education, healthcare, defense, or scientific research (that is, serious

games), thus share a common interest in how best to engineer game software.

Here, I examine aspects of contempo- rary computer game SE. To supplement this description, the sidebars present a brief look at game development technol- ogies and a case study in applying com- puter game SE techniques.

What Game Developers Should Know

There are many different and distinct types of games, game systems, and gameplay, much like there are many dif-

110 IEEE SOFTWARE | PUBLISHED BY THE IEEE COMPUTER SOCIETY 0740-7459/17/$33.00 copy; 2017 IEEE

SOFTWARE TECHNOLOGY

GAME DEVELOPMENT TECHNOLOGIES

Computer games might well be the quintessential domain for computer science and software engineering Ramp;D. Why? Modern multiplayer online games must address core issues in just about every major area of computer science research and education. Such games entail the development, integration, and balancing of software capabilities drawn from many areas. These areas include algorithm design and complexity, AI, computer graphics, computer-supported cooperative work or play, database man- agement systems, human–computer interaction and interface design, OSs and resource or storage management, networking, programming- or scripting-language design and interpretation, and performance monitoring. Few other software application arenas demand such technical mastery and integration skill. Yet game development is expected to rely on such mastery and provide gameplay that most players find satisfying, fun, and engaging.

Computer games are thus an excellent domain for which to research and develop new ways and means for software engi- neering. Accordingly, there are many kinds of commercial or open source software development kits, engines, services, and approaches for producing, delivering, and evolving computer games of different genres.

Table A provides a small sample of possibilities that serve as a starting point. Interested software professionals and stu- dents should also go online and search for the software technologies that best match their interests in, constraints on, and enthusiasm for developing computer games.

TABLE A

Some technologies for computer game software engineering.*

Game SDK or game engine motif

Commercial examples

Game development features

Open source software alternatives

Development or target platforms

Common game genres

HTML5 or web

Construct 2, GameSalad

Rule-based, UI event processing

EaselJS, GDevelop, Kiwi.js, Phaser

Computers or devices with web browsers

2D web-browser- based games

Game-genre- specific

Adventure Game Studio, Minecraft, RPG Maker, SAGE

Genre-based UI, user experience

Freeciv, Minetest, Renrsquo;Py, Quest, Stratagus

Networked PCs

Adventure and role-playing games, real-time strategy games, visual novels

Library, framework, or runtime environment

GameMaker, libGDX, Microsoft XNA

Game programming primitives, open APIs

ANX, Cocos2d, OGRE

PCs

2D or 3D single- user or multiuser games

Game modding (modifying)

Half-Life, Neverwinter Nights, Unreal

Modification or reuse of working games

Doom, Quake, Quake Arena

Networked PCs

Depends on the originating game

Game IDE

CryEngine, Source, Unity, Unreal Engine, UDK

Production quality workflow

Blender, Torque 3D

PCs

Mass-market games, 3D first- person action and shooter games

Cloud-based or MMOG service

Amazon Lumberyard, Facebook, Steam, Twitch

Scalable services and secure

e-commerce

OpenSimulator, Worldforge

PCs, consoles, Internet- connected smartphones

eSports, free- to-play games, MMOGs

*SDK stands for software development kit; MMOG stands for massively multiplayer online game.

THE BEAM GAME 剩余内容已隐藏,支付完成后下载完整资料


外文翻译

题 目 计算机游戏软件工程的实践与技术

作 者 Walt Scacchi

发表时间_____2017年_______

摘要: 计算机游戏处于软件工程的前沿。游戏软件工程虽然在课程中经常被忽视,但它也带来了巨大的挑战,如上市时间、复杂性、协作开发和性能。游戏开发的范围从娱乐(游戏比电影更复杂)到用于教育的严肃游戏在大学和工业界。在这里,沃尔特用技术和实际案例研究向我们介绍了计算机游戏软件工程。

关键词:游戏,软件,工程

1.前言

计算机游戏很可能是计算机科学和软件工程研发的典型领域。为什么?现代多人在线游戏必须解决几乎所有计算机科学研究和教育领域的核心问题。这类游戏需要开发、集成和平衡来自许多领域的软件功能。这些领域包括算法设计和复杂性、人工智能、计算机图形学、计算机支持的协作工作或游戏、数据库管理系统、人机交互和界面设计、OSS和资源或存储管理、网络、编程或脚本语言设计和解释以及性能监控。很少有其他软件应用领域需要这样的技术掌握和集成技能。然而,游戏开发需要依赖于这种掌控力,并提供大多数玩家都觉得满意、有趣和吸引人的游戏玩法。

因此,计算机游戏是研究和开发软件工程新方法和手段的一个很好的领域。因此,有许多种类的商业或开源软件开发工具包、引擎、服务,以及用于生产、交付和发展不同类型的计算机游戏的方法。感兴趣的软件专业人士和学生也应该上网搜索最符合他们兴趣、限制和开发计算机游戏的热情的软件技术。

案例研究有助于阐明如何在计算机游戏软件工程(SE)中应用当前的实践和技术。在之前的五个案例研究中,我主要关注软件重用和游戏重用。在这里,我将重点放在一项研究上,即一个痴迷于游戏的高中学生是否能够学习基本的SE概念和实践。STEM代表科学、技术、工程和数学。

首先,我让学生马克·亚姆波斯基(Mark Yampolsky)确定一个他将开发的新游戏,并演示这个游戏可以帮助他的同学学习具有挑战性的STEM主题光束物理学。光束物理学是其中的核心现代物理学——例如,在设计中提出的简单光学作为先进粒子加速器和量子隐形传态设备的基础。研究以一种敏捷的增量方式进行,通过这种方式,学生可以确定功能性或非功能性的需求,这些需求可以转换为游戏机制,这些机制可以使用事件驱动的、基于规则的系统架构框架来实现。例如,Construct 2和GameSalad(请参阅侧栏“游戏开发技术”)等2D软件开发工具包支持这样的框架,它们支持交互式媒体或游戏的快速原型化,以便使用web浏览器进行部署。通过从架构框架和软件开发工具包(而不是编程语言)开始,学生可以专注于识别游戏输入和显示输出事件和事件类型(鼠标单击、对象拖放、游戏开始和结束,等等)。这些事件和事件类型可以触发反应性规则,从而更新游戏玩法(显示)空间和赢得(或失去)的点数。图A显示了最终的Beam游戏的截图。Beam的多级目标需要找到最短路径或路由路径来实现特定的结果。一个结果可能是尽量减少放置的位置和如何定位(旋转)光学器件,如镜子和透镜,以确保光束从源到目标的路由。

当学生开发Beam时,关于如何最好地构造和重构不同规则集的问题或权衡浮出水面。总的来说,这个版本的Beam使用了7个规则集,涉及180多个事件更新规则。使用基于规则的系统(如Beam的系统)开发一款新游戏呈现了一个经典的软件工程问题:细化和评估架构替换项。Beam案例研究说明了SE概念如何协调计算机游戏开发。

电脑游戏内容丰富、复杂,而且常常是大规模的软件应用。对于软件工程(SE)技术和技术的创新研究来说,它们是一个重要的、不可思议的、有趣的并且常常引人注目的领域。电脑游戏正以许多积极的方式逐步改变着我们的日常生活。游戏开发人员,无论是专注于娱乐市场机会还是基于游戏的应用,如教育、医疗、国防或科学研究等非娱乐领域(即严肃),因此在如何最好地设计游戏软件方面有着共同的兴趣。在这里,我研究了藐视rary电脑游戏SE的各个方面。为了补充这一描述,侧栏简要介绍了游戏开发技术和应用计算机游戏SE技术的案例研究。

2. 游戏开发者应该知道些什么

有许多不同类型的游戏、游戏系统和游戏玩法,就像有许多不同类型的软件应用程序、信息系统和业务系统一样。了解如何为特定平台开发游戏需要识别哪些类型(类型)的游戏具有商业价值。流行的游戏类型包括动作游戏、第一人称射击游戏、冒险游戏、角色扮演游戏、格斗游戏、赛车游戏、模拟游戏、体育游戏、策略和实时策略游戏、音乐和节奏游戏、室内游戏(棋牌游戏)、拼图游戏、教育或培训游戏,以及大型多人在线游戏(mmog)。

这意味着关于一种游戏类型的知识(例如角色扮演类游戏,如《敦geons amp; Dragons》)并不包含、包含或提供其他类型游戏中的游戏体验、用户界面、游戏场景或玩家动作。因此,精通一种类型游戏的软件开发(例如角色扮演游戏)并不完全具备开发另一种类型游戏(例如连续游戏或动作游戏)软件的能力。(Twitch游戏测试玩家的反应时间。)这类似于说,仅仅因为开发人员精通工资和会计软件并不意味着他们精通企业数据库管理或电子商务系统。差异可能是巨大的,而且开发人员的技能和专业知识可以是狭义的专门化。

相反,常见的游戏就是这样。由于纸牌游戏或棋类游戏提高了开发一个游戏引擎的明显可能性,该引擎可以共享或重用,以支持单个a类游戏产品线的多个游戏。例如,跳棋和国际象棋在8times;8棋盘上进行游戏,两款游戏中的玩家动作基本相同(捡起一块棋子并将其移动到游戏规则允许的方块上),尽管棋子、规则和游戏玩法不同。

因此,熟练地开发跳棋游戏意味着拥有开发类似游戏的技能,比如象棋,特别是如果两款游戏都使用相同的游戏引擎(游戏的运行时环境1)。然而,只有当游戏引擎允许不同的游戏规则集和不同的游戏片段时,才有可能出现这种情况。也就是说,游戏引擎必须被设计成可重复使用或可扩展的,而这并不总是一个显而易见的工程选择,这也增加了游戏引擎开发的初始成本。因此,为相同类型或使用相同游戏引擎的不同类型的游戏开发软件需要比设计给定类型的单个游戏更高的技术技能和能力。

了解游戏软件如何在游戏平台上运行需要了解游戏玩法和玩家动作。了解一个游戏平台需要了解一个具体的游戏设备(例如,苹果的iPhone、微软的Xbox One或任天堂的game Boy游戏机)和内部软件运行时环境,以实现其预期的操作和数据通信。开发者还必须了解游戏的建筑结构,如何将游戏功能,玩家控制的游戏设备如何通过其接口(键-板、按钮、手写笔,等等)和视频和音频输出,数据传输和接口和输出如何影响游戏和土耳其,在一个多人在线游戏网络。

了解如何最好地引出和设计计算机游戏需求对于计算机游戏SE的研究和实践来说是一个非常丰富的领域,就像主流SE一样。然而,相对较少的游戏开发方法使用SE需求开发方法,例如用例和基于场景的设计。

许多业内的游戏开发者都回顾了非正式的游戏后测,这些非正式的游戏后测最早出现在90年代的游戏开发商maga- zine上,目前出现在Gamasutra.com的ap- pear上。Austin Grossman编辑了50个左右的验尸报告,揭示了游戏开发过程中的常见问题。这些问题集中在项目软件和内容开发调度、预算转移(通常是预算削减)以及其他在游戏开发项目中重要性漂移或转移的非功能性需求上。对于资深的SE实践者或项目经理来说,这些都不足为奇,尽管对于SE学生和自学成才的游戏开发者来说,这些都是新知识。

同样,计算机游戏的软件功能需求也往往来自于游戏专业人员或开发人员,而不是游戏玩家。然而,非功能性需求(例如,游戏应该是有趣的玩,但很难掌握,它应该运行在移动设备和网络)多米-计算机游戏开发,从而边缘化了系统工程的功能游戏需求。尽管如此,公开发表和分享项目后描述和事后合理化的实践,可能被证明是另一种值得进一步研究的实证SE数据,以及在SE教育项目课程中可以教授和实践的东西。

3.体系结构设计

计算机游戏通常表示多个软件组件、库和网络服务的配置。因此,计算机游戏软件必须有一个基本结构,理想情况下,这种结构被明确地表示出来并记录下来。这种架构可能是专有的,因此它的开发人员将其作为英特尔的知识产权加以保护,包括商业机密和用户许可协议。然而,作为一种快速掌握关键系统设计决策和参与游戏事件处理的模块的方法,访问这样的建筑效果图具有重要的教育价值。这就是为什么在开放给mod - ding(修改)或免费或开源软件扩展的游戏中会出现inter- est。

但是也存在其他的架构问题。例如,网络多玩家游戏至少使用四种软件或信息架构:游戏引擎的静态和动态运行时架构,游戏开发框架或软件开发工具包的架构,其中嵌入了游戏的开发框架和游戏引擎,游戏软件功能和数据处理服务的架构分布,以及游戏关卡作为设计的游戏空间的信息和地理结构。游戏系统架构可以有不同的配置。在软件功能和数据处理服务的架构上,共有五种系统配置:为多个代理或轮流的玩家提供一个服务器;同行一一对等网络;为用户客户端和游戏空间数据交换服务器建立客户端-服务器网络;通过分片为分段的用户游戏会话提供分布式、复制的服务器;和基于云计算的游戏内容设计、游戏事件或分数da - tabase、游戏论坛和聊天或语音服务、分析和商务服务。

与此相反,将电脑游戏作为互动媒体的关注,往往只看到很少或根本没有与游戏设计相关的软件架构。这一点在游戏设计中表现得尤为明显,游戏的设计假定是单服务器架构或PC游戏运行时环境,而不是在必须提供分布式服务且系统架构至关重要的游戏系统中。我在这里的观点并不是要讨论游戏设计和游戏软件(架构)设计之间的差距,即由不同的观点组成,而是要让人们注意到电脑游戏SE需要找到方法来跨越这一差距。

游戏性测试那些潜在地吸引数百万玩家的电脑游戏将会很有规律地发现漏洞。同样,这也是任何复杂SE工作的一部分;游戏也不例外。然而,用户体验以及用户满意度可能是推动病毒式社交的关键帮助促进游戏销售和采用的媒体。因此,密切关注游戏开发和可用性中的bug和特性可能是游戏开发工作室经济可行性的关键。

此外,几十年的大规模软件应用开发经验表明,大多数用户不能预先清楚地表达他们的需求或要求,但可以评估提供的内容是否满足他们的需求。早期和正在进行的游戏测试很可能会成为计算机游戏SE的一个核心方面,同时也会成为收集、分析和可视化游戏测试数据的工具和技术。这是电脑游戏SE可能与早期电脑游戏开发方法有本质区别的一个领域,就像敏捷方法经常取代传统方法一样。因此,计算机游戏开发人员,就像主流软件工程师一样,正在转向增量开发、快速发布和用户游戏测试,以推动新产品版本的开发。

对于单个游戏或游戏产品线,可以在多个SE活动(需求、体系结构、设计、代码、构建和发布,以及测试用例)中考虑重用和重新利用系统软件重用。例如,许多成功的游戏成为特许经营的生产和发布扩展包(内容或提供新的游戏水平)或续集(例如,地震地震II和III)。无论如何使用软件产品线共同接受和方法广泛的电脑游戏的商业模式还不清楚和勘探。一种新的成功的电脑游戏产品可能已经被开发出来,并以某种方式重新出租,以使软件生产成本最小化。通过这种方式,软件公司可以避免投入必要的资金,使软件核心结构可重用和扩展,组件模块可替换或升级,而不必丢弃到那时为止开发的大部分软件。这意味着SE ap-宣传到电脑游戏产品线后,可能会发现错过了机会,至少对于一个给定的游戏特许经营权。

重用可以减少开发降低成本,提高产品质量和生产效率,这在主流企业中很常见。商业电脑游戏开发通常依赖于第三方软件组件(例如,游戏引擎)或中间件产品(例如,用于非玩家角色的AI库),这可能是其最明显的软件重用形式。游戏软件开发工具包、游戏插件、程序游戏内容生成工具和游戏中间件服务都在业界和学术界进行着积极的研发。(有关更多细节,请参见侧栏“游戏开发技术”)游戏引擎可能是计算机游戏软件重用的最佳成功案例。然而,社交游戏开发工作室和独立游戏开发者有时会避免商业化可用的游戏引擎,因为他们相信引擎的角色特征模式或机制会过度限制他们的游戏开发模式或游戏机制。如果发生这种情况,玩家可能会觉得这类游戏提供的是一种衍生的游戏体验,而不是原创的游戏体验。

4.电脑游戏和SE教育

SE教授以项目为导向的SE课程的教师越来越多地寻求通过游戏软件开发项目更好地激励和吸引学生,因为大多数CS学生都熟悉电脑游戏和游戏玩法。应用博弈论开发项目来开发项目课程是目前普遍存在的。

教育者教学软件工程教育(见)项目课程,这可能是有价值的学生成为与电脑游戏本身通过接触电脑游戏的历史软制品开发或通过回顾最近的进步电脑游戏SE基本面和SEE.5考试——比如,肖恩·朗斯特里特肯德拉·库珀,阿尔夫王和布莱恩·吴,还有一些人在基于游戏的SE项目课程中加入了临时SE实践,如软件架构和模型驱动开发。此外,微软的谢涛和他的同事们以及其他一些人已经开发了基于游戏的软件测试竞赛。同样,无论是将项目结构为大规模开放的在线课程还是竞争性的,团队间的游戏jam也值得考虑。这样的竞赛可以成为实证研究的试验田——例如,当项目团队由扮演不同开发角色的学生组成时,每个团队由具有共同角色和经验的成员组成。

计算机游戏SE是一个面向成长的软件前沿领域工程。新一代的软件工程师将承担技术上的挑战,促进电脑游戏的开发、部署和演变,使之成为支持全球文化媒体实践的复杂软件系统。

参考文献

[1]《游戏引擎架构》,J. Gregory, K Peters / CRC出版社,2009。

[2]《游戏开发者的反思:来自虚幻锦标赛开发者的见解》,《黑白战争》,《帝国时代》等畅销游戏,Focal Press, 2003。

[3]《游戏设计的艺术:镜头之书》,华润出版社,2008年。

[4]《游戏分析:最大化玩家数据的价值》,施普林格,2013。 剩余内容已隐藏,支付完成后下载完整资料


资料编号:[20713],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。