Ren'Py引擎在文字冒险游戏开发上的应用
作者:王逸勉 翟军
来源:《电脑知识与技术》2016年第10
        摘要:电脑以及手机上的单机游戏已经成为中国年轻人近年来消遣娱乐的重要途径之一,选择一个高效率、多平台、易使用的游戏引擎是绝大多数游戏开发商要面临的首要难题。该文通过案例,给出利用多平台游戏引擎Ren’Py将游戏从设计、制作、到发布的一套相对完整的方案,以此为游戏开发者提供参考。
        关键词: 游戏开发;安卓;跨平台;Ren’Py;游戏引擎
        中图分类号:TP319 文献标识码:A 文章编号:1009-3044201610-0224-03
        Abstract Nowadaysthe single-player games on computer and mobile phone have become one of the entertainment way for most of the young people in China.Choosing a high efficiencymultiple-platform and easy to use game engine become the primary issue that most game developers have to face.Given in this paperthrough a caseis a relatively com
plete solution from game designing to game development and release using Ren’Py game engineto provide reference for game developers.
        Key words game development android multiple-platform Ren’Py game engine
        电子游戏作为一种文化和产业,并非是在2011年美国国家艺术基金会宣布其第九艺术的身份之后才被人们熟知,早在本世纪初,全球游戏产业产值就已达到94亿美元,超越了电影工业89亿美元的产值,电子游戏相关产品的推出带动了新的服务产业,为社会提供了大量的就业岗位[1]。在我国,文化部在2015年发布《2015年扶持成长型小微文化企业工作方案》明确了动漫、游戏产业等成长型小微文化企业扶持成长政策;此外,国务院在推广上海自贸区经验时,指出允许内外资企业从事游戏游艺设备生产和销售,电视游戏在被政策冷冻数年之后,终于迎来解封时期。电视游戏、移动游戏、电子竞技、视频直播、虚拟现实这些将有望一起共同带动中国游戏产业的新规模增长[2]
        与游戏产业一同迅猛发展的还有形形的游戏引擎,其作用是提供各种编写游戏时所需的各种工具,协助开发者在开发游戏的过程中节约成本、缩短周期和降低风险,使其无需
关心底层的显示细节。现在全世界已经有了各种比较成熟的引擎,在3D游戏方面有Unity3DUnrealFrostbite,在2D游戏方面则有Cocos2DCycclone2DKRKR等,本文介绍的引擎则是2D游戏开发领域中的引擎Ren’Py
        1 REN’PY引擎概述
        Ren’Py是一款基于Python语言、擅长制作文字冒险游戏的2D游戏引擎,能相对减少开发者在制作这类游戏时的工作量。其具有良好的跨平台性,使其能够同时在Mac OSXLinuxWindowsAndroid系统中运行,并且其良好的开源性允许开发者自由拓展其他功能进一步完善和丰富游戏。使用此引擎制作比较成熟的商业游戏,例如DisChan公司制作的《Juniper’s Knot》、ALICE IN DISSONANCE工作室开发的《fault milestone one》,前者在苹果商城中的1270条评价中获得了1177条五星评价,后者在STEAM平台中有着95%的好评率。在中国,也有使用本引擎制作的文字冒险游戏,例如Magenta Factory独立游戏工作室制作的《山桂》,其已于2014年在STEAM平台发行,并且获得了用户83%好评率的成绩。
        2 文字冒险游戏
        文字冒险游戏(Text Adventure Game)是以文字输入输出为主的一类冒险游戏,此类型游戏以软件模拟情境,令玩家使用文字指令控制角,以影响周边的情境。其运作方式可以理解成是用计算机游戏来做文学叙事。在亚洲,尤其在日本,文字游戏通常被称为视觉小说或交互式小说,以文字和图片以及音效的输出来展示游戏中的信息,玩家通过选择与点击等方式进行输入与游戏进行交互,玩家借由上述方式获得游戏体验。
        3 游戏开发上的应用
        在完成必要的游戏设定的前提下,利用Ren’Py制作一个游戏的过程包括界面设计、数据初始化、定义人物、编写剧本等,以下将给出示例择其相对较必要的步骤进行讲解。
        3.1 界面设计
        游戏中的很多操作是通过游戏界面来展示和运用的,好的游戏界面能够帮助玩家快速上手,营造出美观、操作简单并且具有引导功能的人机环境。游戏界面包括游戏主界面、二级界面和弹出界面等[4]
        Ren’Py引擎中,游戏界面主要靠Screen进行实现,每一个Screen都是一UI元件在
屏幕上的排列组合,其源代码一般储存在game文件夹中的screen.rpy中。
        如图2所示,图中的代码演示了如何通过Ren’PyScreen实现一个简单的游戏提示功能。首先代码定义了一个字体的样式和两个动画变化语言(ATL),两个变换语言写入提示框的出现和消失的位置与时间从而控制其变化轨迹。而Screen Tips则需在调用时接受两个变量,TipsName是显示在提示框中的文字,而status决定了Screen Tips是对对话框进行显示还是进行隐藏。在实际剧本编写中,则可以用以下的一行代码来调用这个Screen
        show screen Tips"增加新人物说明""show"
        开发者可以通过丰富的UI命令对Screen进行操作,并且可以在官方文档里[10]查询到完整的UI命令列表。
        3.2 对话及控制流
        在书写人物对话之前,开发者需要新建一个角对象,以便简化随后的剧本编写。以这段人物定义代码为例:
        define DMF = Character'端木斐'python能在手机上运行吗 color="#FFFFFF"image="duanmu"voice_tag="duanmu"what_prefix="“"what_suffix="”"
        代码定义了一个名为端木斐的人物,缩写是DMF,在随后的对话中仅需要使用DMF便可以被程序识别。color决定了人物名称的颜,它应该传入以RGB彩模式表示的字符串。image指定与该角对象关联的图像标记的字符串。voice_tag将允许在设置界面调整该角的语音音量,what_prefixwhat_suffix分别决定了添加到对话内容之前和之后的内容。
        在书写对话时,以前面定义的角为例,只要在脚本中以如下格式书写即可:
        DMF smile “ 你好,我叫端木斐。
        在游戏剧本中,可以使用标签与控制流灵活改变剧情的走向。label命令可以给脚本的某个位置起一个名称,它们是配合jump或者call命令使用的。jump命令与C语言中的goto语句类似,它用于将脚本执行器跳转到指定的标签。call命令与jump类似,只不过它会将下一个命令压入call栈中,在被调用的标签结束后可以返回call命令被执行的地方。return命令将会返回调用call命令的标签中,如果call栈为空,程序则会重启。
        3.3 图像
        在游戏剧本中使用如下命令就可以控制游戏中图片的显示与隐藏:
        image - 定义一个新的图像

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。