设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 8476|回复: 44
打印 上一主题 下一主题

[随意闲聊] 说说Lua与Ruby并回复猫君的疑问

  [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
327 小时
注册时间
2011-3-2
帖子
287
跳转到指定楼层
1
发表于 2012-2-16 17:09:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
猫君说Lua和Ruby没有半毛钱关系是非常正确的,没有用过Lua的人或许还不清楚,Lua和Ruby的差别那是非常之大,大到让人想哭。用惯了Ruby的人看到Lua简直就是看天书一样。

Ruby的语法丰富,内置类型多样,连基本类型都是面向对象的,入门非常容易。Lua一切从简洁高效出发,辅以强大的元编程,闭包与协程的支持,与C语言的结合非常容易,是游戏开发首选的脚本语言。但是正因为Lua的语法太简单了,很多时候需要复杂的语句实现简单的功能,如果说Ruby是七种武器,你可以随意拿出一件耍的得心应手,那lua就是一颗定时炸弹了,内部精巧却威力无穷,当然,绝对不适合新人和业余人士。。。。

XiGN为什么选Lua,Rpg Maker为什么没有手机版?唯一的一个原因 -- Ruby!对,就是因为Ruby,首要原因是iPhone明确表示不支持Ruby作为脚本语言。次要是Ruby的效率实在太让人无语,请看http://www.cnblogs.com/miloyip/archive/2010/07/07/languages_brawl_GI.html提供的一个测试

“512x512像素,每像素10000个采样,Intel C++ OpenMP版本渲染时间为18分36秒。估计Ruby版本約需351天。”

这个例子有点极端了么?Lua和Ruby的对比大致如下:

Test                  Time(sec)            Relative time 
IC++_OpenMP              2.861                             0.15x
Lua                       1,227.656                           62.96x
Ruby             77,859.653                      3,992.80x

说了半天其实还没有回答猫君的疑问,为什么我老是在说XiGN的时候提到Ruby,那么先请看一段代码

local c = class(Game_Battler)
Game_Actor = c
...
  function c:skills()
    local result = Array.new()
    for i in self.skills_id do
      result:push(data_skills)
    end
    return result
  end
...

用过Lua的人都知道,这段代码中的class,Array是用户自己的定义的。如果你对RGSS熟悉的话,还记得这段代码对应的Ruby代码么?


class Game_Actor < Game_Battler
...

  def skills
    result = []
    for i in @skills
      result.push($data_skills)
    end
    return result
  end
...

是不是很像呢?

那么如果没有定义class和Array,这段Lua代码会是什么样子?学习过Lua的人可以脑补一下,没学过的人我可以告诉你,差别非常大。所以,猫君的疑问可以解答了,XiGN尽量让Lua的写法向Ruby靠拢,为了让开发效率更高,为了更符合用户的习惯。

所以,别犹豫了,手机是2D游戏的未来(趁着3D的时代还没有到来),如果你没有超凡的创意,别在PC上制作2D游戏了。关注XiGN吧,说不定那就是你的未来。
手机版RPG Maker EB官方火热测评中~~~

猛击观看视频

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

2
发表于 2012-2-16 18:52:08 | 只看该作者
Rpg Maker为什么没有手机版?

早就有了,请您多看看度娘之后再来吧

点评

欢迎链接,任何可用的手机版都行,包括几乎没人用的j2me  发表于 2012-2-16 21:56
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
56
在线时间
14 小时
注册时间
2010-6-16
帖子
43

开拓者

3
发表于 2012-2-16 19:12:51 | 只看该作者
这年头广告原来可以随意过审核么
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
163 小时
注册时间
2012-1-1
帖子
788
4
发表于 2012-2-16 19:18:09 | 只看该作者
有手机版的!

点评

貌似没有哦,如果你认为有,那就贴一个出来,别是我做的就行,嘿嘿  发表于 2012-2-16 22:09
图片不见了
回复 支持 反对

使用道具 举报

Lv2.观梦者

铃铃塔的守护者

梦石
0
星屑
626
在线时间
961 小时
注册时间
2010-10-24
帖子
2768

贵宾

5
发表于 2012-2-16 20:09:16 | 只看该作者
于是乎我记得有手机版吧...在6R都看到过发布帖呢。
另,为了证明这个东西不是高技术广告,请至少把猫君那个疑问的帖子或者聊天记录摆出来吧...

点评

为什么这么多似乎啊,貌似有啊,可是你们谁真正看到了呢?谁真正用上了呢?  发表于 2012-2-16 22:09

魔法麻将独立游戏制作中,欢迎热情的测试员与UI设计师合作开发~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
145
在线时间
698 小时
注册时间
2009-11-15
帖子
538
6
发表于 2012-2-16 20:44:03 | 只看该作者
本帖最后由 2719358 于 2012-2-16 20:54 编辑
  1. local c = class(Game_Battler)
  2. Game_Actor = c
  3. ...
  4.   function c:skills()
  5.     local result = Array.new()
  6.     for i in self.skills_id do
  7.       result:push(data_skills)
  8.     end
  9.     return result
  10.   end
复制代码
这么写很好玩吗= =把class那个函数最下面加上self=class_type
弄个函数叫class_end()把self弄成nil= =

  1. Game_Actor =  class(Game_Battler)
  2. ...
  3.   function self:skills()
  4.     local result = Array.new()
  5.     for i in self.skills_id do
  6.       result:push(data_skills)
  7.     end
  8.     return result
  9.   end
  10. class_end()
复制代码
===============================
好吧一激动忘了是RM论坛了= =无视好了= =

点评

SLEF在lua里确实不是关键字= = 用this me that什么都行= =  发表于 2012-2-19 11:01
说的好像Ruby中self不是关键字似的。  发表于 2012-2-19 10:47
别忘了self是lua的关键字。。。  发表于 2012-2-16 22:08
考上三级了!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
327 小时
注册时间
2011-3-2
帖子
287
7
 楼主| 发表于 2012-2-16 21:57:01 | 只看该作者
所有认为rm有手机版的,欢迎贴出链接~~~~

点评

没纠结,已经实现这种写法了= =  发表于 2012-2-17 18:33
这个写法也是历史遗留问题了,就别纠结了,哈哈。  发表于 2012-2-17 15:30
其实稍作修改可以达到这种效果: class "actor" ~(类内容)~ 因为lua中所有的全局变量都是存放在_G这个表中的.这样的话语法效果比较接近ruby一些  发表于 2012-2-17 14:16
的确,关键字的表述不准确,在遇到:调用的时候,lua会插入self变量,所以也不能随便用。不过用不用self不是问题的关键。用c是为了书写简单而已。  发表于 2012-2-17 08:28
self是lua的关键字= =你从哪听说的?= =不过是 obj:func这种调用方法是的语法糖罢了,我这样写没有任何问题  发表于 2012-2-17 07:21
手机版RPG Maker EB官方火热测评中~~~

猛击观看视频
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

8
发表于 2012-2-17 03:21:29 | 只看该作者
老邢 发表于 2012-2-16 21:57
所有认为rm有手机版的,欢迎贴出链接~~~~

我貼出來,你刪號麼?
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv2.观梦者

(?????)

梦石
0
星屑
728
在线时间
1327 小时
注册时间
2011-7-18
帖子
3184

贵宾

9
发表于 2012-2-17 03:51:11 | 只看该作者
① 上面的代码来看 Lua 和 Ruby 哪个更简洁一目了然……

所以,别犹豫了,手机是2D游戏的未来(趁着3D的时代还没有到来),如果你没有超凡的创意,别在PC上制作2D游戏了。关注XiGN吧,说不定那就是你的未来。
  你前面用一个3D渲染的效率测试,后面又来推销一款2D制作软件
  我怎么觉得这么别扭呢……

③ 目测你不懂RM。RGSS的核心是Ruby没错,但RM的核心部分可是C++。

④ 我贴出来你删号么 +1
回复 支持 反对

使用道具 举报

乌有君
10
乌有君  发表于 2012-2-17 08:21:13
本帖最后由 匿名 于 2012-2-17 08:22 编辑

偶只是来路过顺便捏所有人滴(大雾)
用户才不会管你用的是神马语言呢……
当然,计算机底层其实也不会管……
顺便捏,3D游戏全面攻入手机只是时间问题

点评

创意游戏,3D游戏(rpg,act),网络游戏(2d休闲,3dmmo),这三个应该是今后几年的主流  发表于 2012-2-17 08:39
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-20 00:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表