英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料
使用Cocos2d-x的单源多平台手机游戏开发案例研究
Jinseok Seo, Hun Choi
摘要 : 在本文中,通过介绍在iOS和Android平台上开发的第一人称射击游戏“Biosis”的案例研究,我们提出了使用cocos2d-x游戏引擎开发单源多平台手机游戏的指南。 本文还描述了通过使用哪些游戏规划者可以轻松地将其设计应用于游戏级别,实施的“资源创造”在我们的多目标开发环境和级别引擎中有效地共享和管理游戏资产。 我们预计所提供的指南将有助于游戏开发人员减少手机游戏生态系统中的开发时间和成本,其生命周期很短。
关键词: cocos2d-x,手机游戏,多平台
引言
最近,随着智能手机的移动平台已经取得了普遍的成功,手机游戏市场的规模也在迅速增长[1]。随着市场的增长,越来越多的智能设备已经出现。即使是使用相同操作系统的平台,也有许多具有不同屏幕分辨率的各种类型的设备存在。
因此,为了解决如上所述的各种平台和显示类型的游戏问题,增加成本是不可避免地。此外,由于手机游戏的生命周期与PC和游戏机相比较短,很难被投入大量资金。
由于上述原因,最近许多可以以低成本开发多平台游戏的游戏引擎已经发布。多平台手机游戏引擎允许人们在各种平台上运行开发的游戏,无需任何移植过程,不仅对主要开发公司而且对于具有相对较低预算的独立开发人员而言都是一款十分受欢迎的工具。
在本文中,我们介绍了开发可以在iOS和Android操作系统上运行的称为“Biosis”(见图1)的第一人称射击游戏的案例研究,并提出了我们所经历的高效开发方式方法。
本文的构成如下。
第二章描述绍了目前在多平台上被广泛使用的游戏引擎。
在第三章中,我们将介绍本研究中使用的Cocos2d-x,并介绍如何使用该引擎有效地开发单源多平台游戏。
在第四章中,我们将对本研究中开发的一个单一的多平台游戏“Biosis”进行了介绍,并介绍了开发高效的游戏资源共享和管理的工具“资源管理工具”。 本章还描述了实现能反映游戏设计师意图的层次引擎。
最后,第五章总结了整篇论文。
图 1:rsquo;rsquo;Biosisrsquo;标题屏幕
第二章 多平台的移动游戏引擎
在智能手机还未普及的时候,PDA(个人数字助理)和便携式多媒体播放器(PMP)填充了手机功能的缺乏。在那期间有各种平台和设备,为PMP提供跨平台游戏开发环境,节省开发人员的大量工作。
随着智能手机越来越受欢迎,许多多平台游戏引擎已经被发布。一些众所周知的例子有Unity [3],ShiVa [4],Corona SDK [5],Marmalade [6]和Cocos2d-x [7]。
Unity3D是近年来最流行的游戏引擎之一。 Unity最初是为3D游戏开发的,但最近也开始支持2D游戏。 Unity的最大优势是开发环境非常全面,所以即便是中间开发人员也可以轻松开发高品质的手机游戏。另一方面,它比其他游戏引擎更方便,而较低级别的游戏引擎控制起来是不太方便的。然而,考虑到移动游戏市场中3D游戏份额的近期增长以及移动设备GPU性能的提高速度,作为相对便宜的3D游戏引擎的Unity,预计将成为小型公司、中型发展公司或独立开发商最好用的3D移动游戏引擎。
虽然ShiVa3D并没有像Unity3D一样广泛使用,但在功能和便利性上可以看作几乎相似的ShiVa3D近年来受到很多关注。与Unity3D相比,它缺少用户论坛和文档,但同时也是便宜点,对于习惯了Lua语言的开发人员来说,这是一个很好的工具。
Corona SDK也是一种商业上可以用Lua语言开发的一款比较成功的游戏引擎。 Corona SDK是用OpenGL,OpenAL,Box2D和Lua开发的。相比Unity或ShiVa,虽然它没有提供方便的集成开发环境,但它仍被许多开发人员使用,因为它对系统的性能进行了优化。
上述Unity,ShiVa和Corona SDK使用在预先开发的播放器引擎中执行用户编写的脚本语言(对于Unity,从C#语言编译的中间代码)的方法。近年来,这种类型的游戏引擎已经在包括PC平台的大多数平台上广泛使用。这是因为,如众所周知的“90-10规则(90%的程序执行时间仅运行代码的10%)”所述,在本机代码中仅实现最低性能敏感部分,并使用脚本实现其余部分语言不会影响整体软件性能。然而,使用这种方法的缺点是,只有开发人员才能实现算法的优化,为游戏引擎添加定制功能不方便。
Marmalade是一款标准的基于C 语言的游戏引擎,它没有上述引擎中的任何缺点。而且优化性能比较容易,因为它是使用100%本机代码实现的。由于Marmalade的可以优化性能的特点,使用这种游戏引擎开发出许多商业上成功的游戏,例如“切绳”,“植物大战僵尸”,“使命召唤”,“极品飞车”等等。如果您正在开发仅使用本地代码而不支持脚本语言,则在游戏运行时很难对飞行状态进行测试或调试。然而,在开发移动游戏时,编译的代码不是直接在开发环境中执行,而是在模拟器或设备中远程执行,动态脚本语言的优点并不大。
我们刚刚描述游戏引擎,你应该为引擎支付所有从商店中下载的或直接在设备上运行的游戏费用。因为他们每年都需要支付,是Marmalade和Corona SDK的独立开发商、还有学习游戏的学生的负担。此外,由于源代码不可用,所有上述游戏引擎都无法为开发者提供完全自由。
Cocos2d-x是本研究中使用的游戏引擎,它是一个完全免费的引擎,与上述不同,它的源代码是开源的。因此,开发人员不仅可以直接修改发布的引擎代码,还可以自由添加新的功能。当然,除了Cocos2d-x,还有更多的免费游戏引擎,包括CuvicVR 3D Engine [8],IwGame Engine [9],jumpcore [10]和Mao [11]等开源代码。然而,现在很难找到具有Cocos2d-x开发游戏所需的所有元素(音频,物理引擎,粒子,各种字体渲染,GUI,各种类型的地图等)的引擎。 Cocos2d-x的更详细的描述将在第三章中给出,到目前为止描述的游戏引擎总结在表一中。
第三章 使用COCOS2D-X开发单源多平台游戏
3.1 Cocos2d-x简介
Cocos2d最初被开发为用于各种桌面操作系统(包括Windows,Mac OS和Linux)的游戏引擎。通过非常直观的API可以获得2D游戏的大部分功能,例如场景产生的流程和转换,简单快速的精灵处理,各种动作和平铺图。当时,引擎采用了Python语言,游戏可以更快速轻松地开发,无需编译过程。
然而,Cocos2d在智能手机普及之前并没有得到很多的关注,直到Cocos2d- iPhone被开发出来。 Cocos2d - iPhone在Apple推出iPhone之后发布iPhone的开发游戏,并启动了App Store服务。 Cocos2d采用了基本的引擎架构,但是语言基于Objective-C。经过几年的改进,它成为一个更完整的2D游戏引擎。近年来由于其完整性,人气大量增加,所以它被称为Cocos2d而不是Cocos2d-iPhone。
Cocos2d -iPhone最大的缺点是它只支持iPhone游戏。由于这个问题,Cocos2d-x游戏引擎已经出现。 Cocos2d-x还采用了适用于iPhone的Cocos2d引擎架构,但由于它基于标准C 语言,因此可以移植到各种开发环境和移动平台(包括Android)。此外,对于Android平台,JNI(Java Native Interface)和Android NDK(Native Development Kit)可用于开发游戏。
3.2.开源代码和资源
虽然它取决于人们的目标平台和开发环境,但Ccoos2d-x易用于大多数开发环境和操作系统。虽然,Android的游戏可以在任何开发环境中开发,但iOS的游戏只能在Mac OS中开发。因此,我们在Mac OS上构建一个开发环境,以便在一个源代码中为这两个平台开发游戏。
在Mac OS上开发Cocos2d-x游戏的最常见的开发工具是Xcode和Eclipse。根据开发人员的偏好和偏好,考虑到编辑功能,自动完成和调试C 代码,选择Xcode可能会更方便您的主要开发环境。
尽管你使用Xcode作为主要开发环境,也还需要为Android平台创建一个单独的项目,以构建Android的二进制包。为了有效地共享这两个项目之间的源代码和资源,在一个项目中引用其他项目的源代码和资源是很有必要的。
以下是为iOS和Android项目创建项目和共享源代码和资源的一系列步骤。
1.创建一个Android项目:在安装Cocos2d-x的文件夹中运行脚本“create-android-project.sh”来创建项目。
2.创建Xcode项目:在安装Cocos2d-x的文件夹中运行脚本“install-templates-xcode.sh”,将Cocos2d-x的模板文件复制到Xcode项目。运行Xcode后,创建一个与在步骤A中设置的名称相同的新项目。
3.删除Android项目的源代码和资源:从步骤A中创建的项目文件夹中删除“类”文件夹和“资源”文件夹。
4.共享源代码和资源的设置:在Android项目文件夹中,创建Xcode项目中“Classes”和“Resources”文件夹的符号链接。
完成上述四个步骤后,即使在Xcode中更改或添加了源代码和资源文件,主要的开发环境,Android平台的二进制包将仅在您再次编译时应用。
3.3调试
主要的开发环境Xcode与Eclipse相比,提供了一个非常易于使用的调试环境,通过Instruments工具,我们可以非常直观地检测内存泄漏。此外,iOS模拟器的工作速度非常快,测试和调试比直接在设备上运行快几倍。
大多数时候,当Xcode和iOS 模拟器完美地完成调试时,它在iOS设备和Android设备上都能很好的运行。然而,由于移动设备的多样性,过多的资源使用可能会导致某些Android设备出现问题,因此您应该在主要具有代表性的Android设备上进行测试。
Android设备上的调试可以使用“CCMessageBox”功能在设备上直接弹出一个消息框,但使用“__android_log_write”功能的错误和警告消息更加方便,因为游戏软件的性质是无限循环。 Android系统还允许根据优先级将日志记录分解成不同的阶段,并且过滤也是可行的。您可以使用“adb logcat”命令进行日志过滤和错误转储。
3.4各方面的比例和解决问题
各种Android设备都有自己的屏幕尺寸,屏幕宽高比和分辨率。此外,最近,iOS已经发布了与之前不同比例和分辨率的新设备。
支持所有这些各种显示设备的最佳方法是准备与要支持的所有设备的分辨率和比率匹配的图形图像文件。然而,该方法还具有最终二进制包的大小变得过大的缺点,并且游戏逻辑对于支持各种宽高比和分辨率也是非常复杂的。
为了解决上述问题,我们的研究使用了一种固定长宽比的方法,并为不同分辨率的设备准备了两组或三组图形图像。可以通过使用Cocos2d-x API的“CCEGLView”类提供的“setDesignResolutionSize”成员函数来修复宽高比。 “CCEGLview”对象是通过“CCDirector”的“getOpenGLView”函数获得的,这是一个单例对象。
您应该将水平和垂直分辨率作为此函数的第一个和第二个参数传递,并将选项标志作为第三个参数传递。由于通过该功能发送的分辨率信息不是绝对分辨率,因此通常起到根据要支持的装置中具有最大分辨率的宽高比来确定宽高比的作用。第三个参数通常是“kResolutionAll”的值。如果宽高比与设备的屏幕宽高比不匹配,此值将允许设备在屏幕边缘创建黑色空间,而不会截断渲染的图像。使用此值的原因是剪切渲染的图像可能偶尔丢弃重要的图形用户界面。
宽高比和分辨率问题最初是为Android SDK,iOS SDK和Cocos2d-x提供了单独的解决方案。但是,每次发布新的SDK版本或新设备时,都会再次更改解决方案。
虽然这个问题预计在不久的将来会得到解决,但本研究决定使用一种不依赖于特定SDK的方法。我们为资源文件夹下的每个分辨率创建了一个所需的子文件夹,然后将具有相同名称但不同分辨率的图像放入每个文件夹。然后,我们使用“setResourceDirectory”函数为每个分辨率指定所需的子文件夹,它是“CCFileUtils”类单例对象的成员函数。
第四章 BIOSIS开发案例
4.1生物识别简介
“Biosis”是本研究开发的一款游戏,是一款以触摸为基础的第一人称射击游戏,目标平台为iOS和Android。 大多数智能手机没有应用的硬件按钮,所以游戏玩家使用软件按钮来移动他们的角色并发射武器。 用户可以通过用手指触摸屏幕角落中渲染的图像按钮来玩游戏。 由于这种不直观的界面方法,第一人称射击游戏不如智能手机上的其他游戏类型流行。
在这个游戏中,我们设计了一种不使用上述传统界面方法的系统,但是可以通过触摸或手势直接攻击怪物等怪物。 通过使用这种攻击系统,玩家可以直接将各种武器(手雷,火箭,霰弹枪,激光等)直接投射到目标上。 级别共有18个阶段,其中4个级别产生了BOSS(见
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[26108],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。