速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

使用 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:352294
用户头像

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

关注

评论

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

Apipost 6.0.4版本 支持离线使用

Xd

后端 接口测试 API

未来3年,远程办公或成普遍现象,如何提高远程办公效率?

WorkPlus

月薪 30K 以上的程序员都在学啥?附书单合集

C++后台开发

后端开发 Linux服务器开发 C++后台开发 Linux后台开发 后端开发书籍

照亮旷野的,是少年开发者眼中的炬火

脑极体

leetcode 34. Find First and Last Position of Element in Sorted Array 在排序数组中查找元素的第一个和最后一个位置(中等)

okokabcd

LeetCode 查找

Apipost 多人多角色实时协作 爆赞!!!

Xd

数据库 后端 接口测试 API

深度解析:DAO的7种常见投票机制

TinTinLand

网络空间测绘国内外发展及现状

郑州埃文科技

网络安全 IP地址 网络空间测绘技术

在线二进制转文本字符工具

入门小站

工具

EAM与ERP有什么区别?

低代码小观

资产管理 企业管理系统 ERP CRM系统 ERP系统

如何挑选文档管理软件?

小炮

文档管理

分享ApiPost的个人体验感受

Xd

后端 API

你会用Apifox写断言吗?

Liam

测试 Postman 自动化测试 测试工具 测试自动化

直播预告 | PolarDB-X 动手实践系列——基于 Prometheus + Grafana 的 PolarDB-X 监控体系

阿里云数据库开源

数据库 阿里云 开源 PolarDB-X 教学

10分钟弄懂云原生网络功能,快来瞧瞧!

VoltDB

云原生 云原生网络 网络功能

他做了跟世界首富同样的选择|ONES 人物

万事ONES

喜讯|旺链科技成为TBI数字藏品项目组首批成员

旺链科技

区块链 产业区块链 数字藏品

用开源github,还是咱中国自己的代码托管平台云效?

阿里云云效

GitHub 云计算 阿里云 代码管理 代码托管

NVIDIA安培架构下MIG技术分析

天翼云开发者社区

Neo生态| Polaris Launchpad 黑客松评审现已启动

TinTinLand

在RPA立项阶段,银行需要做哪三件事?

易观分析

银行

在线HTML转PHP工具

入门小站

工具

uniapp 和 HTML5 区别

CRMEB

一个关于SDWAN单臂部署方案验证的实验

天翼云开发者社区

网络

一个轻量的数据库数据告警器

山河已无恙

Java 数据监控

linux之xargs使用技巧

入门小站

Linux

两分钟带你体验ApiPost的魅力!

Xd

自动化 接口测试 API

乌卡时代来临,企业供应链管理体系的应对策略

数商云

数字化转型 供应链

LinkedHashMap 源码分析-访问最少删除策略

zarmnosaj

5月月更

PolarDB-X迎来开源后首个重大版本升级,2.1版本新增5大特色功能

阿里云数据库开源

数据库 阿里云 开源 国产数据库 PolarDB-X

阿里云云原生一体化数仓入选 2022数博会“十佳大数据案例”

阿里云大数据AI技术

数据挖掘 大数据 分布式计算 数据处理 MaxCompute

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