写点什么

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

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

关注

评论

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

Java面试八股文的天花板,能解决互联网大厂90%的面试题

采菊东篱下

Java 编程 面试

人工智能基础软件助力交通运输智慧执法

九章云极DataCanvas

基于WebGL智慧储能电站三维管理平台

2D3D前端可视化开发

物联网 数字孪生 智慧储能电站 微电网

软件测试 | 编写单元测试用例

测吧(北京)科技有限公司

测试

软件测试 | Django客户端测试

测吧(北京)科技有限公司

测试

INFINI Labs 产品更新 | 重磅推出 Easysearch 一个分布式的近实时搜索与分析引擎

极限实验室

elasticsearch console Gateway agent easysearch

火热报名!2023开放原子全球开源峰会报名通道正式开启

开放原子开源基金会

小程序技术助力智慧家居生态互联

FinFish

智慧城市 小程序容器 智慧家居 小程序化 小程序技术

「AI之劫」:当机器超越人类底线,正在侵犯我们的创造力和道德

加入高科技仿生人

人工智能 低代码 AIGC

软件测试 | unittest单元测试框架

测吧(北京)科技有限公司

测试

FCPX插件-手势点击滑动视频转场 Hand Gesture Transitions

真大的脸盆

Mac Mac 软件 fcpx插件 视频特效插件 转场效果插件

使用 Easysearch,日志存储少一半

极限实验室

elasticsearch zstd easysearch

API Mock 教程, 简单易懂。

Apifox

前端 开发工具 API Mock Mock 服务

大数据如何助力营销(3)产品定位

MobTech袤博科技

AI数据采集标注类型:揭秘数据采集与标注的关键环节

来自四九城儿

最新出炉!2023年金三银四Java面试1306问

架构师之道

Java 编程

PAG动效框架源码笔记 (二)层级视图

olinone

ios 动效 andiod 特效

腾讯云2023年最新分享Redis深度笔记(毕业版)PDF,全程精点无废话

开心学Java

Java redis 腾讯云 源码

直播预告 | 博睿学院:智能告警与AIOps融合探索

博睿数据

根因分析 智能运维 智能告警 博睿数据 博睿学院

AREX Agent 源码解读之全链路跟踪和 Mock 数据读写

AREX 中文社区

Java 测试

AI女友同时和1000人谈恋爱,狂赚500万

引迈信息

人工智能 AI 低代码 JNPF

MegEngine 使用小技巧:用 mperf 进行安卓 opencl 算子的 roofline 分析

MegEngineBot

深度学习 开源 MegEngine roofline

开源赋能 普惠未来|京东集团寄语2023开放原子全球开源峰会

开放原子开源基金会

APP和小程序共同塑造现代化政务服务

FinFish

小程序 小程序容器 小程序化 小程序技术 政务服务

如何从命令行启动 CST 软件?

思茂信息

数据标注类相关文章:揭秘数据标注的奥秘

来自四九城儿

镭速传输:安全文件传输的意义

镭速

IPP SWAP算力LP挖矿系统搭建开发技术

薇電13242772558

智能合约

互联网用户之间如何传输大文件

镭速

浪潮海岳低代码平台inBuilder开源社区版特性推荐系列-第二期

inBuilder低代码平台

开源 低代码

2023年5月中国数据库排行榜:OTO组合回归育新机,华为高斯蓄势待发展雄心

墨天轮

数据库 opengauss TiDB oceanbase 国产数据库

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