立即领取|华润集团、宁德核电、东风岚图等 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:352260
用户头像

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

关注

评论

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

Java面试宝典(2020版)

Java 程序员 后端

Java高并发编程课后总结

Java 程序员 后端

JDK8-Object源码

Java 程序员 后端

JAVA面试核心教程|Java面试基础知识点总结

Java 程序员 后端

Java面试题超详细整理《JVM篇》(1)

Java 程序员 后端

Java程序员:面试字节跳动被问算法 多亏我扛下来了

Java 程序员 后端

Java虚拟机内存结构及编码实战

Java 程序员 后端

Java面试中最常问的JVM问题大全,附答案

Java 程序员 后端

Java黄金五年——1~5年一个Java程序员从入行到大牛的晋升之路

Java 程序员 后端

JetBrains 又出了一款新神器,一套代码适应多端!

Java 程序员 后端

Java程序员:终于,在一个艰难而又轻松的工作日之后,我被辞退了

Java 程序员 后端

Java程序设计(基础)- 数据类型

Java 程序员 后端

Java经典算法题(二)

Java 程序员 后端

Java编程配置思路详解

Java 程序员 后端

Java编程配置思路详解(1)

Java 程序员 后端

Jsoup解析html

Java 程序员 后端

Java程序员经典面试题集大全 (六)

Java 程序员 后端

Java程序员经典面试题集大全(二十五)

Java 程序员 后端

Java笔记 —— Set集合的排序原理(源码分析)

Java 程序员 后端

Java线程状态以及 sheep()、wait()、yield() 的区别

Java 程序员 后端

Java程序员(阿里、京东、携程)面试归来

Java 程序员 后端

Java集合容器面试题(2020最新版)

Java 程序员 后端

Java面试之EJB & Spring

Java 程序员 后端

Java面试题超详细整理《JVM篇》

Java 程序员 后端

Java详解:如何实现一个-redis-缓存服务

Java 程序员 后端

Java进阶:什么是TCP-IP?如何运用!(1)

Java 程序员 后端

Java进阶:什么是TCP-IP?如何运用!

Java 程序员 后端

Java面试通关要点汇总集

Java 程序员 后端

Java面试题大全(持续更新中)

Java 程序员 后端

Java高级特性之多线程

Java 程序员 后端

Jenkins部署springboot项目

Java 程序员 后端

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