2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

第 09 周作业

Jam

架构师训练营 -week09 学习总结

GunShotPanda

Week 09 学习总结

Jeremy

Week 09 命题作业

Jeremy

换一种方式构建镜像

北漂码农有话说

第9周作业

小胖子

浙江上线市场监管区块链电子取证平台,武汉出台“区块链八条”,

CECBC

区块链 行业资讯 产业落地

架构师培训 -08 总结 JVM、秒杀

刘敏

9-2 秒杀系统的挑战和问题

burner

第九周总结

Jam

学习总结(训练营第九课)

看山是山

产品经理【三句半】,说清你的【酸甜苦辣】

Java_若依框架教程

产品经理 产品设计

《RabbitMQ》如何保证消息不被重复消费

Java旅途

RabbitMQ 消息队列

一文教会你嵌入式网络模块的联网操作

良知犹存

物联网 网络 嵌入式

《深度工作》学习笔记(5)

石云升

读书笔记 专注 深度工作

第九周命题作业

菲尼克斯

8.5小结

朱月俊

第九周学习总结

菲尼克斯

架构师训练营 第九周 总结

CR

获得高手的精英思维,从写作开始。

叶小鍵

高手 万维钢 得到精英日课

JVM系列之:从汇编角度分析NullCheck

程序那些事

Java JVM JIT

「查缺补漏」巩固你的Redis知识体系

Kerwin

Java redis

未来云原生世界的“领头羊”:容器批量计算项目Volcano 1.0版本发布

华为云开发者联盟

Kubernetes 容器 华为云 Volcano 元原生

week09 小结

Geek_196d0f

9-1垃圾回收原理和秒杀系统

burner

架构师训练营-week09 作业

GunShotPanda

week9 学习总结

任小龙

如何保存我们的资产

不在调上

week09总结

Safufu

Week9-课后总结 & 课后作业 JVM垃圾回收机制

Geek_165f3d

JVM 垃圾回收原理及秒杀系统设计思路

Acker飏

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