50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

再谈BOM和DOM(1):BOM与DOM概述

zhoulujun

JavaScript DOM BOM 对象模型 文档模型

熵核科技,自主研发虚拟机赋能安全操作系统

熵核科技

支付安全 安全操作系统 物联网安全 eSIM安全

重温历史 致敬百年 “复兴大道100号”线上VR展馆正式开馆

百度大脑

百度 虚拟现实

拥抱云原生,腾讯发布TCSS容器安全服务!

腾讯安全云鼎实验室

容器 云原生

字节取消“大小周”,管理者与员工的“灵魂争夺战"从未停歇

神来之笔,2021CTF内核漏洞精选解析

网络安全学海

网络安全 信息安全 CTF 安全漏洞 渗透测试·

架构实战营模块八作业

竹林七贤

架构实战营1期第二模块作业

五只羊

架构实战营

fil矿机怎么选择?用什么fil矿机比较好?

FIL矿机怎么买 fil挖矿

攒塑料袋,究竟是如何刻进中国人DNA的?

脑极体

没想到我也可以入职阿里!二本毕业、两年crud经验,侥幸通过面试定级P6

Java架构师迁哥

再谈BOM和DOM(2):DOM节点层次/属性/选择器/节点关系/操作详解

zhoulujun

JavaScript DOM BOM 对象模型 文档模型

数据仓库的基本概念

大数据技术指南

7月日更

我乃平常客,本持平常心| 2021 年中总结

编程三昧

程序人生 大前端 代码人生

算法大赛报名 | OMG!这些名企的真实数据竟用来battle

工赋开发者社区

算法 工业互联网

性能测试软启动初探

FunTester

性能测试 接口测试 测试框架 压力测试 测试开发

7.24 杭州站 | 阿里云 Serverless Developer Meetup 开放报名!

Serverless Devs

云计算 阿里云 Serverless 云原生

【redis前传】自己手写一个LRU策略

zxhtom

Java redis 原理 造轮子 jdk运用

物联网安全难题还需行业标杆来解

熵核科技

物联网安全

保洁阿姨分享:腾讯架构师JDK源码笔记,13万字,带你飙向实战

Java架构师迁哥

医美行业哪个环节最赚钱?

石云升

行业分析 7月日更

Vue进阶(幺叁捌):vue路由传参的几种基本方式

No Silver Bullet

Vue 路由 7月日更

Ta想做一粒智慧的种子

脑极体

火爆 GitHub!这个图像分割神器开源了

百度大脑

百度 算法

JVM锁bug导致G1 GC挂起问题分析和解决

毕昇JDK社区

5分钟速读之Rust权威指南(四十一)高级类型

wzx

rust

三年开发经验,字节跳动抖音组离职后,一口气拿到15家公司Offer

Java架构师迁哥

再谈BOM和DOM(4):DOM0/DOM2事件处理分析

zhoulujun

DOM DOM事件 DOM0 DOM2

再谈BOM和DOM(5):各个大流浪器DOM和BOM里面的那些坑—兼容性

zhoulujun

DOM事件兼容性

hadoop 1.0 和 hadoop 2.0 的区别

五分钟学大数据

hadoop 7月日更

再谈BOM和DOM(3):DOM节点操作-元素样式修改及DOM内容增删改查

zhoulujun

DOM BOM 文档对象 DOM结点操作 DOM增删改查

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