写点什么

使用 Ruby 开发 iOS 游戏

  • 2013-10-08
  • 本文字数:1260 字

    阅读完需:约 4 分钟

Integrallis 网站的创始人 Brian Sam-Bodden Barcelona Ruby 大会上演示了在没有任何 Object-C 知识的情况下,如何使用普通的 Ruby 语言利用 RubyMotion 和开源的 2D 图形类库快速地创建 iOS 平台上的 2D 游戏。

Ruby Motion 是 iOS 和 OS X 平台上的 Ruby 实现,构建在 Objective-C 运行时基础框架之上。它使用的图形类库是 Cocos2D 游戏引擎,并使用 Box2D 向游戏中的对象应用物理定律。 Joybox 则封装了这两个类库并通过一个干净的 Ruby API 将它们暴露了出来。这样避免了安装的麻烦,并且能够使用纯的 Ruby 环境进行开发。

Brian 给出的第一个例子是使用 Ruby 编写的一个 iOS 平台上的俄罗斯方块,它仅通过Ruby 使用了Apple 的核心动画( CoreAnimation )类库。

复制代码
class TetrisController < UIViewController

通过上面这行代码控制器就能够使用由核心动画类库所提供的 2D 视图动画了,例如翻转(flip)游戏视图:

复制代码
def flip(view)
UIView.transitionWithView(view,
duration: 0.5,
options: UIViewAnimationOptionTransitionFlipFromBottom,
animations: proc {
# any other code that we want to run!
},
completion:nil)
end

第二个更加复杂一点的例子是使用 Joybox 实现的一个类似于超级玛丽(Super Mario Brothers)的游戏:

复制代码
@director = Joybox::Configuration.setup do
director display_stats: true
end

上面的代码会返回一个使用默认配置集合的 director 实例。该对象本质上控制了游戏的流程。在这个例子中,设置游戏活动的时候不再需要直接操作核心动画视图。与俄罗斯方块的例子相比,这个示例需要更多的协作和图形化的动画代码。另外,这个示例还使用了Joybox 的图层( Layer )类,它处理了绘图画布和所有的用户交互。然后有一个拥有多个孩子的游戏层关注游戏的不同方面:

复制代码
@blue_sky = LayerColor.new color: "#6365fc".to_color
self << @blue_sky

事实上,Director、Layers 和 Sprites (可以在动画中使用的 2D 图片,它们是游戏中的动态元素)都是从 Cocos2D 类库继承而来的概念,但是 Joybox API 对它们做了封装,所以开发人员才能够使用纯 Ruby 语言进行游戏开发,但是底层还是使用 Objective-C 类库实现。

最后,通过使用 Box2D 的物理引擎和 Joybox 物理 Sprite 类所封装的内容,Brian 展示了如何容易地向被创建的游戏世界应用物理定律:

复制代码
@world = World.new(gravity: [0, -9.8])

在游戏世界中创建一个主体还需要为其指定一些特征:

复制代码
@player_body = @world.new_body(
position: [16*1, 16*9],
type: Body::Dynamic,
fixed_rotation: true
)

其他的功能,例如音频效果在Joybox 中也有。

Brian 还强调了使用 RubyMotion 进行 iOS 游戏开发时还能够使用常见的 Ruby 测试框架,例如不需要 UI 操作的 RSpec。

Brian 的演讲好像在听众里引起了不小的兴趣,因为一些与会者在 Twitter 上盛赞了 Brian

查看英文原文 Developing iOS Games on Ruby

2013-10-08 06:352287
用户头像

发布了 321 篇内容, 共 119.2 次阅读, 收获喜欢 19 次。

关注

评论

发布
暂无评论
发现更多内容

将 Python 和 Rust 融合在一起,为 pyQuil® 4.0 带来和谐

Swift社区

rust Python Monad

软件开发

Geek_8da502

Amazon Q | 融会贯通的 AI 开发助手来了!

亚马逊云科技 (Amazon Web Services)

人工智能 re:Invent 生成式人工智能 Amazon Q Amazon CodeCatalyst

WAVE SUMMIT+ 2023 今日开场!奉上完整预告和参会指南,今天见!

飞桨PaddlePaddle

人工智能 深度学习 开发者 WAVE SUMMIT

场外白名单达到1200U?Solana 生态铭文跨链桥 Sobit 是何神圣?

大瞿科技

知识图谱技术在金融领域的分析和应用

悦数图数据库

图数据库 知识图谱

IPQ6000 IPQ6010 VS IPQ5018|A Comprehensive Comparison: Evaluating Wallys' WiFi 6 SoCs Offering

wallyslilly

IPQ6010 IPQ6000 ipq5018

火山引擎边缘云获“2023边缘计算年度领航企业”及“最佳CDN创新企业”等多项荣誉

火山引擎边缘云

CDN 边缘计算 边缘云 CDN技术

赛博威新一代TPM营销费用管理指南——费用管理类型篇

赛博威科技

数字化转型 营销费用管理 赛博威 销售费用管理 费用管理类型

TI 专访 Merlin Protocol:构建在比特币网络上的资产适配协议

TerpLayer

Solana 生态铭文跨链桥 Sobit 是何神圣?其场外白名单已达到1200U

西柚子

RWKV: 轻松实现大模型本地私有化部署

百度开发者中心

人工智能 深度学习 大模型

BERT实现多标签文本分类:强大模型的应用与展望

百度开发者中心

自然语言处理 大模型 LLM

【Linux】硬件性能测试工具安装。

百度搜索:蓝易云

云计算 Linux 运维 服务器 云服务器

mac电脑强大电脑风扇转速管理:Macs Fan Control Pro激活码中文版

胖墩儿不胖y

Mac软件 电脑风扇软件 风扇转速软件

在Mac上,按Command-X键无法剪切怎么办?

mac大玩家j

Mac软件教程 好用的软件分享

MAMP PRO for Mac v6.8.1永久激活版 专业的Web开发环境

iMac小白

做好数据管理体系 发挥企业数据乘数效应

用友BIP

数据

ubuntu20.4服务器安装mysql社区版并开放3306端口

百度搜索:蓝易云

MySQL 云计算 Linux ubuntu 运维

语音数据集:推动智能语音技术发展的关键驱动力

来自四九城儿

ABBYY FineReader PDF 15 for Mac(ocr文字识别软件)v15.2.13中文激活版

iMac小白

Radio Silence for mac(简单好用的防火墙)v3.2激活版

iMac小白

如何在敏捷项目中实现高效测试?

敏捷开发

项目管理 敏捷开发 测试左移 测试自动化 bug管理

Topaz Video AI for mac(视频增强和修复工具) 4.0.8完整激活版

mac

苹果mac Windows软件 Topaz Video AI

软件测试/测试开发丨SQL多表查询 学习笔记

测试人

sql 软件测试 测试开发

ETLCloud X 明道云实现无缝数据连接

RestCloud

数据同步 ETL 明道云

创新驱动数字经济发展,融云获评「2023 数字经济隐形独角兽」

融云 RongCloud

数字化转型 数字经济 办公 融云 政企

软通咨询助力某新能源头部企业迈向高效数智化时代,塑造行业新典范

软通咨询

数据智能 数字化咨询

使用Ruby开发iOS游戏_Ruby_Manuel Pais_InfoQ精选文章