写点什么

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

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

关注

评论

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

Vue组件入门(二)props和emit

Augus

Vue3 10月月更

【网络安全】如何在Apache 安装开源 WAF

网络安全学海

黑客 网络安全 信息安全 渗透测试

《数字经济全景白皮书》中国银行业场景金融生态建设分析2022 发布

易观分析

金融 客户 场景生态建设

Dapr简介-分布式应用运行时

久歌

架构 servicemesh 技术架构 dapr

跟着卷卷龙一起学Camera--RGBNIR sensor 01

卷卷龙

ISP camera 10月月更

Flash软件应用项目(一)

张立梵

设计师 Flash 10月月更

Spring之IOC自动装配

楠羽

笔记 SP【ring 10月月更

【一Go到底】第十一天---流程控制

指剑

Go golang 10月月更

MySQL高级--性能优化之Explain分析SQL

Java学术趴

10月月更

跟着卷卷龙一起学Camera--夜景拍照01

卷卷龙

ISP camera 10月月更

使用 Scrapy 框架来爬取数据

芯动大师

spider scrapy框架 10月月更

Redis 的快速介绍及其基本数据类型和操作

宇宙之一粟

redis 10月月更

MySQL高级--性能优化之索引

Java学术趴

10月月更

MySQL高级--性能优化之索引使用

Java学术趴

10月月更

sql注入--通过修改数据完成注入--一文详细讲解

贤鱼很忙

Web SQL注入 10月月更

基础算法:二分查找 搜索插入位置

芯动大师

Python 二分查找 10月月更

网络异常之后为什么MOA地址列表错乱了?

BUG侦探

TCP Jedis 乱序

Web3雇佣兵的现状,Zebec根本上提高用户黏性

鳄鱼视界

MySQL高级--性能优化开篇

Java学术趴

10月月更

跟着卷卷龙一起学Camera--RGBNIR sensor 02

卷卷龙

ISP camera 10月月更

【网络安全篇】php伪协议-漏洞及其原理

贤鱼很忙

php 网络安全 Web 10月月更

爬虫实例——爬取豆瓣网 top250 电影的信息

芯动大师

Python爬虫 10月月更 爬虫案例

云服务架构设计基础模式

穿过生命散发芬芳

10月月更 云服务架构

2022-10-11:一个整数区间 [a, b] ( a < b ) 代表着从 a 到 b 的所有连续整数,包括 a 和 b。 给你一组整数区间intervals,请找到一个最小的集合 S, 使得

福大大架构师每日一题

算法 rust 福大大

Java文档注释 Intellij IDEA Generate JavaDoc

Yeats_Liao

后端 doc Java core 10月月更

cstdio的源码学习分析09-改变文件流文件流buffer函数setvbuf

桑榆

源码刨析 10月月更 C++

【Java深入学习】Park&Unpark的深入学习讲解

Geek_65222d

10月月更

sql注入--handler语句--一文详细解说其原理和方法

贤鱼很忙

Web SQL注入 10月月更

数据中台4点核心建设内容

阿泽🧸

数据中台 10月月更

Web3雇佣兵的现状,Zebec根本上提高用户黏性

股市老人

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