Project1

标题: 这里是新人一枚,使用rmvx ace一定需要学会ruby吗? [打印本页]

作者: zdw1520366913    时间: 2015-8-18 21:37
标题: 这里是新人一枚,使用rmvx ace一定需要学会ruby吗?
顺便求大触解释一下ruby对rmxv ace的作用,谢谢啦~(⊙ω⊙)
作者: 喵呜喵5    时间: 2015-8-18 22:10
不需要,RM本身就是个不需要代码知识就能制作游戏的软件

但是,
如果你不满足于RM提供的功能,例如,你想要删除菜单中的某个选项你想要更改某个界面各个窗口的位置你想要让自己的游戏脱离RM臭,此时,你就得学习Ruby了,因为,RMVA的一切都是通过一套Ruby语言编写出来的代码(RGSS3)实现的。
作者: q8902295    时间: 2015-8-18 22:13
喵呜喵5 发表于 2015-8-18 22:10
不需要,RM本身就是个不需要代码知识就能制作游戏的软件

但是,

我有两点想请教一下!   那个一个是VA的工具找半天论坛上没有啊0 0!   刚刚针对LZ的问题 像我这样-。-26个英文字母都认不全是不是学习ruby什么是非常困难的说?(=゚ω゚)=
作者: 三途亚梦    时间: 2015-8-19 02:08
并不一定要学ruby,比如海囚的作品就几乎不需要脚本知识。
作者: 墨凌羽    时间: 2015-8-19 03:34
英文苦手就不是问题,至少在写RM脚本的时候(不过如果你是要深入学习ruby以及诸如ROR这类的玩意的话 还是得会些英语,因为这类资料基本都是英文)
我说说我的情况吧,英语从初中起及格的次数屈指可数(万幸高考的时候及格了),所以这个水准可想而知了,然而平时写脚本基本没什么问题,顶多就是变量名命名等等(我一般开个百度翻译。。。另外好多东西都用约定/常用的命名,多看看别人的代码也就知道了)在者大概就是对英文不敏感,比如老是忘掉某个方法/函数名,这种的话就多查查手册什么的F1打开就不要关掉(记得用顶置的汉化版替换掉原版的日文)

英文只是代码表述的手段,关键还是写代码的思想/思路,而且就编程所用的词汇也不是很多,多写写(差不多就是死记硬背)就能搞明白记下。我现在靠翻译什么的勉强也可以看看一些简单的英文编程资料什么的。

另外,ruby学起来也不难,我大概去年六月翻过两周的F1看过几篇教程(更我从头学脚本那个电子书挺不错)什么的,然后就是今年四月多五月的时候开始算是比较认真的学了,大概就是看programming ruby,翻大触们的帖子(喵呜喵呜、td、晴兰、小黄鸡、zh、紫苏、熊猫、余烬之中、夏娜等前辈们),翻技术区的帖子,翻技术提问区的帖子,看大神们的博客(推荐DeathKing大大的博客,学ruby元编程是个很不错的地方)还有百度是个帮助你学习的好东西(来6R发帖提问前先自己思考,查阅资料,然后是问百度,最后再来6R提问),这期间我还去学了php/js/css/html,写了一个失物招领和给个公司写的数据处理的VBA的玩意(实际上当你水平越过最初的层次后,语言对你的限制不大,VBA我基本是翻了几遍手册查了查msdn什么的就写出来了,现在基本的一些操作什么的也没问题)最近再给一家很小的公司用php写公司网站(这是我找的假期兼职)。至于RGSS和ruby的水准,嗯,现在再写个叫RGUI的玩意,算是自己造的一个RM的GUI框架。
由此来看,对于编程的学习,并不是很难,尤其是对于高级语言来说,没有可恶的分号和花括号,没有内存管理和编译,没有太过底层的位运算之类的鬼玩意,其学习难度实在算不上太大。大多数人要么是不努力,要么是自己觉得太难从而造成心理压力(当然,我的付出也不小,从写开代码每晚平均两三点睡,周末都不怎么出门,至于假期,写代码通宵是常有的事,造成伴着鸟叫声入眠什么的)。

对于编程学习,除了看和理解,最重要的是去练习,代码量是个最明显的标志(有个说法是,当你用一个语言写上一万行代码时你就算入门了,当你写上十万行代码时,你就算熟悉了,当你写上百万行代码时,你可能就精通了这门语言)。

当然,我自己也有些特殊的情况,比如在初中那会折腾过VB。以前有用EM写过游戏(EM只提供基本的方法/函数,所有的模块需要自己去写代码),虽然坑了(人生第一坑)。php在去年的时候就有接触过(但都不深,大概就是翻翻w3c的手册之类的)。还有就是自学能力还算不错吧,我个人是那种比较凭喜好去做事的,喜欢的就努力去做,不懂得就自学(高中那会儿,老师讲课基本不听,早上上课的时候全是在睡觉/看书【当然不是课本啦】,下午一热也会睡,大概只有到了晚自习的时候才会去看课本,做习题。完全处于自学的状态【嗯,讲题的时候我会去听一些,如果自己没问题就跳过做自己的事情,有问题就听】,不过这样也是问题蛮大的,高三刷题的时候各种辛苦,第一个学期每天晚上折腾到两点多才去睡)

如果你自学能力和罗辑思维还算不错,且愿意付出,有时间,那么就去放心学ruby吧,成为大触什么的都不是梦想。即使没有前边说的这些,你如果愿意花些时间,那么也去学学吧,至少很多简单的脚本修改,解决脚本冲突等问题都可以自己动手来了,而不用靠别人。
作者: 冷峻逸    时间: 2015-8-19 07:37
提示: 作者被禁止或删除 内容自动屏蔽
作者: zdw1520366913    时间: 2015-8-19 10:41
三途亚梦 发表于 2015-8-19 02:08
并不一定要学ruby,比如海囚的作品就几乎不需要脚本知识。

阿里阿多
作者: zdw1520366913    时间: 2015-8-19 10:42
喵呜喵5 发表于 2015-8-18 22:10
不需要,RM本身就是个不需要代码知识就能制作游戏的软件

但是,

阿里阿多
作者: zdw1520366913    时间: 2015-8-19 10:45
三途亚梦 发表于 2015-8-19 02:08
并不一定要学ruby,比如海囚的作品就几乎不需要脚本知识。

呼呼呼~
作者: LHY4118    时间: 2015-8-19 18:33
如果不需要改脚本的话,ruby不学也没关系,当然学了也不是不行
还是很好学的
作者: 寒冷魔王    时间: 2015-8-21 13:20
本帖最后由 寒冷魔王 于 2015-8-21 13:42 编辑

首先,对于是否必须需要学习Ruby,回答当然是“否”。
楼上的观点本人基本赞同,但是,楼上有一些没有解释到位的地方,这里用我的个人观点来阐述。

个人认为,Ruby有两个发展方向——
一个是Depth(深度),一个是Breadth(广度)。

怎么区分呢?
Depth表示学的深入,Breadth表示用途广泛。

首先,作为一门程序设计语言,Ruby是繁杂、丰富而强大的语言。Ruby具有繁杂的语法,丰富的表达方式,以及伴随着的强大的特性。
学得深意味着,你将了解更多的语言特性,更深入地理解语言层次、语法结构,掌握更多的用法和不为人知的表达方式。
举个例子来说,Ruby有个黑魔法,名字叫做“元编程”。元编程可以轻松改变Ruby的面貌。如同C++各种奇葩的模板泛型编程,在可以达到目的的同时,让你如同置身云间。
如上所说,Depth可以让你达到用Ruby玩Ruby的地步。

然而,与此同时,正因为Ruby是一门程序设计语言,它的用途是程序设计。这就是Breadth所涉及的了。
Breadth的目的在于用Ruby玩别人。——而这正是RM脚本所需要的。
程序设计,诸如制作战斗系统、绘制窗口、修改脚本等RM所常用的、有用的地方,都属于Breadth的范畴。
RM所需要的Ruby功底不深,翻一下预置脚本,就可以大致了解。

Ruby学习就像一个圆锥,最初身在锥顶,什么都不会,只能往深走。然而随着深入,可以进行的广度也就愈来愈大。Depth和Breath是相互关联的,二者相互统一。
除了喜欢用Ruby玩Ruby的兴趣爱好者外,学习Ruby的目的就是Breadth。如前所述,RM不需要太深的功力,在一定水平就可以进行Breadth。但是走Depth路线仍是不错的选择。如下是个人看法:
一、精简
我们想要构建一个Point类表示点,有x和y两个成员变量。类似C的结构体。
按照RM内置的脚本构成方式,可以这样写
  1. class Point
  2.   attr_accessor :x
  3.   attr_accessor :y
  4.   def initialize(x, y)
  5.     @x = x
  6.     @y = y
  7.   end
  8. end
复制代码
当我们知道了','的作用,以及attr_accessor的传递方式,完全可以这样写:
  1. class Point
  2.   attr_accessor :x, :y
  3.   def initialize(x, y)
  4.     @x, @y = x, y
  5.   end
  6. end
复制代码
然而实际上,如果知道Struct,这样写是最好的:
  1. Point = Struct.new(:x,:y)
复制代码
二、正确
Ruby的参数传递采取的是引用。这一点非常重要。
如果我们不清楚这一点,可能会写出如下代码:
  1. a = Array.new(10,0)
  2. b = Array.new(10,a)
复制代码
我们想要建立一个10*10的二维数组,每个元素都是0。
因为查了手册,所以我们很高兴能够看到一个简单的数组构建方法Array.new,于是我们迫不及待地采用了。
然而实际上,这个地方是有问题的。
  1. a[0]=1
  2. p b
复制代码
我们可以看到,b中所有子数组都变更了。这是为什么呢?
实际上,b包含的并不是10个数组,而是10个数组的引用。
由于构建对象时,Array.new传入参数是引用,而其并不采取clone方法,这使得每个引用都指向a。因此改变了a就会改变b。
正确的表达方式应该是:
  1. a = Array.new(10,0)
  2. b = Array.new(10) { a }
复制代码
三、效率
对程序而言,对效率影响最大的就是算法。——这属于Breadth的范畴。
同时具有影响的,还有数据结构、程序的构建方式等。
代码示例


如上,Depth对于Breadth的作用不可忽视,深入学习Ruby对于RM脚本的掌握具有很大作用。

P.S.我才不是被茵蒂克丝吸引来的呢!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1