限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

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

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

关注

评论

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

HashiCorp白皮书:平台团队最佳实践

杨振涛

DevOps 平台 平台工程 内部开发者平台 PECommunity

RocketMQ 如何保证消息不丢失

是月月啊2023

RocketMQ

《钢岚》今日首发,成为首款基于HarmonyOS NEXT开发的战棋新游

最新动态

Rusty Tuesday :Rust 基金会一行来访 Databend Labs,共话技术创新!

Databend

巧用静默,原来真的可以告警零误报!

观测云

监控告警 静默规则

CAS原理,看这一篇就够了!

是月月啊2023

CAS Java 面试题

程序员职业规划-实践篇

吳先森321

程序人生 职业规划 求职

麒麟云K8s调度优化之错误重调度

麒麟云

Kubernetes 云原生 容器云 银河麒麟 银河麒麟云原生操作系统

WorkPlus企业数字化转型的超级APP,All in one完美解决方案

BeeWorks

智能工厂关键技术应用(第一、二、三讲)

工赋开发者社区

实用编程技巧:MybatisPlus结合groupby实现分组和sum求和

知识浅谈

MyBatisPlus Mybatis-Plus

用html+css+js做canvas烟花模拟网页动画代码

小齐写代码

NFT 市场开发:洞察、功能和成本综合指南

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

2023年 - 我的程序员之旅和成长故事

Leo

#技术人的2023总结

亚信安慧AntDB数据库中级培训ACP上线,中国移动总部首批客户认证通过

亚信AntDB数据库

数据库 AntDB AntDB数据库

2023工作总结怎么写?保姆级的年终总结万能公式来了,助你一臂之力!

彭宏豪95

互联网 职场 年终总结 在线白板 工作总结

IT外包驻场加速企业IT创新

Ogcloud

外包 IT 外包公司 外包项目 IT 运维

燃!中国电信天翼云黑科技为智慧海关建设插上云翅膀!

天翼云开发者社区

人工智能 云计算 海关科技装备博览会

世界第一!

天翼云开发者社区

云计算 性能测试

平台工程动态 Monthly News 2023-11

杨振涛

平台 平台工程 平台工程社区 PECommunity 内部开发者社区

喜讯!云起无垠上榜《成长型初创企业推荐10强》

云起无垠

实时3D渲染-定义、原理及应用

3DCAT实时渲染

实时渲染 实时云渲染

跨境代买淘宝系统,跨境代采系统,淘宝代购系统,淘宝代购集运系统

tbapi

淘宝代购系统 淘宝代购 淘宝代购集运系统 淘宝代采系统

软件测试/测试开发/人工智能丨利用ChatGPT编写测试用例

测试人

不同类型的IT外包服务分别适合什么企业?

Ogcloud

外包 IT 外包公司 外包项目 IT 运维

奇点云2023数智科技大会来了,“双12”直播见!

奇点云

操作系统 发布会 奇点云

浅谈 SpringMVC 执行过程

是月月啊2023

Spring 配置解析

SQL FOREIGN KEY 约束- 保障表之间关系完整性的关键规则

小万哥

MySQL 数据库 sql 程序员 后端开发

搜狐智能媒体基于腾讯云大数据 EMR 的降本增效之路

腾讯云大数据

EMR

搭乘“低代码”快车,引领食品行业数字化转型全新升级

优秀

低代码 数字化转型

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