跨平台移动游戏开发:Marmalade C++解决方案

移动游戏开发领域,开发者面临着各种挑战,其中之一便是如何高效地将游戏适配到不同的平台和设备上。不同的平台使用不同的编程语言、框架和API,这给开发者带来了不小的困难。例如,iOS平台使用Objective-C,Android平台使用Java,Windows Phone 8使用C#,而BlackBerry则使用C++。此外,每个平台都有自己独特的服务实现方式,如应用内购买,以及制造商对这些服务的实现方式也各不相同。性能优化、开发设备的选择、测试和维护也是跨平台开发中需要考虑的问题。

跨平台开发中的挑战

跨平台开发的主要挑战包括:

  • 编程语言:不同平台使用不同的编程语言。
  • 框架:每个平台都有其自己的框架和API集。
  • 服务:每个平台都有自己独特的服务实现方式。
  • 性能:为了在每个平台上获得最佳性能,需要深入了解这些平台。
  • 开发设备:大多数平台的开发可以在Mac和PC上进行,但iOS开发只能使用Mac。
  • 测试:虽然模拟器可以方便地测试不同的设备和屏幕分辨率,但有些模拟器速度慢且响应不灵敏,这使得测试变得困难。
  • 维护:在多个平台上推出应用更新是一项艰巨的任务,尤其是当项目已经很久没有被查看时。

上述因素代表了风险和成本的增加,这是移动游戏开发者需要避免的。

Marmalade C++:跨平台开发解决方案

为了解决上述问题,开发者可以转向跨平台开发系统。Marmalade C++是MarmaladeSDK的核心,它直面并解决了上述所有问题:

  • 统一语言:MarmaladeC++使用C/C++作为所有平台的首选语言。
  • 统一框架:Marmalade是一个单一的SDK,它封装了对子系统如图形、音频、输入、网络服务等的访问。
  • 统一中间件:如应用内购买等服务使用跨所有平台的统一API。
  • 原生性能:代码编译为ARM、x86和MIPS处理器的原生代码。
  • 桌面/IDE不可知:开发者可以在Windows或Mac上为大多数平台开发,包括iOS。
  • 简化测试:Marmalade模拟器提供了指标,并支持快速测试不同屏幕尺寸和各种输入设备。
  • 简化维护:使用单一语言、单一框架和统一的测试和部署,推出更新变得更加容易和快速。

Marmalade C++支持的平台

Marmalade C++已经发展成为一个可靠、稳定且用户友好的产品,支持包括:

  • Android (ARM, MIPS和x86)
  • iOS (iPhone, iPad, iPod)
  • BlackBerry (PlayBook, BB10)
  • Windows Phone 8
  • Windows Store 8/8.1
  • Windows Desktop
  • Mac OS X
  • Tizen
  • Smart TV (LG / ROKU)

统一框架节省时间

MarmaladeC++框架完全基于C/C++,并通过各个API提供对设备子系统的访问。以下是一些示例:

示例1 - 加载图像文件并绘制2D精灵:

CIw2DImage* image = Iw2DCreateImage("candy_gem.png"); Iw2DDrawImage(image, CIwFVec2(x, y), CIwFVec2(width, height));

Marmalade可以直接从存储中加载多种不同的图像格式。

示例2 - 加载3D模型、材质和纹理并渲染:

CIwResGroup* group = IwGetResManager()->LoadGroup("my_model.group"); CIwModel* my_model = (CIwModel*)group->GetResNamed("my_model", IW_GRAPHICS_RESTYPE_MODEL); CIwFMat transform; transform.SetRotY(rotation.y); transform.ScaleRot(scale); transform.SetTrans(position); IwGxSetModelMatrix(&transform); my_model->Render();

Marmalade将3D模型及其相关数据存储在方便的资源组中,允许相关资源一起加载和卸载。

示例3 - 播放流媒体音乐:

if(s3eAudioIsCodecSupported(S3E_AUDIO_CODEC_MP3)) s3eAudioPlay("background_music.mp3");

Marmalade支持播放多种不同的音频和视频格式。

示例4 - 读取加速度计:

int x = s3eAccelerometerGetX(); int y = s3eAccelerometerGetY(); int z = s3eAccelerometerGetZ();

Marmalade支持多种输入设备,包括加速度计、指南针、触摸、键盘等。

示例5 - 进行应用内购买:

IwBilling::Init("public_key", IwBilling::BILLING_VENDOR_GOOGLE_PLAY); IwBilling::PurchaseProduct("product_id");

Marmalade支持包括苹果应用商店、谷歌Play、亚马逊应用商店、三星应用商店、黑莓应用世界等在内的多种应用商店。

集中式开发中心

Marmalade Hub是一个工具,它以平台独立的方式集中了以下功能:

  • 项目创建
  • 项目编译和测试
  • 项目部署到设备和应用商店

这消除了使用makefiles和构建脚本以及跨不同工具集工作的需求。Marmalade Hub还检查用户系统上的依赖关系,以确保一切都已安装并运行。

模拟测试简化

Marmalade模拟器是一个工具,它使开发者能够在桌面上直接以全速测试他们的创作,提供了一个可以大大加快开发速度的快速测试环境。

模拟器具有许多有助于开发和测试的功能,包括模拟各种输入设备、屏幕分辨率/方向、内存大小、音频等。模拟器还支持指标,使开发者能够看到内存分配/释放、API调用和GL调用等事件的发生频率。

性能优化

MarmaladeSDK不使用任何解释器或VM,所有代码都编译并针对目标处理器(ARM、x86和MIPS)进行优化,为2D和3D游戏提供超快速的每秒60帧的游戏体验。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485