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

Project1

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

[原创发布] 第一印象:ruby -> js 你会有更多的选择

[复制链接]

Lv3.寻梦者

唯一的信徒

梦石
0
星屑
1665
在线时间
1357 小时
注册时间
2013-1-29
帖子
1637
跳转到指定楼层
1
发表于 2015-8-8 11:11:20 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 LBQ 于 2015-8-8 11:14 编辑

看到兰触写了一篇,于是我也稍微写一点我的初步印象好了。

1. 大方向:生态系统开放了,生态系统扩大了
可怕的是Ruby生态环境没法被Rgss利用。Ruby别人写的库因为在Gems生态体系里面所以没法直接用。别人写的Native Extension我们没法直接用。Ruby的标准库我们没法用。RGSS还把数据库保存成了Marshal之后的二进制模式,使得其他语言没法利用,甚至普通的Ruby环境没法对RM数据库进行更改。

这也就代表了Rgss这个生态环境永远都是封闭的。即使无数人尝试开放这个环境(OpenRgss,MKXP)并且都取得了一定程度上的成功,整个生态系统还是没有改变。这次换成Js之后生态系统真的就开放了,别人的库我们可以用了。数据库估计也以类似Json或者Plain Javascript Object的形式保存了。技术上的开放让我们可以用一些世界前端的科技,也为第三方工具提供了很大便利。

同时也意味的生态系统的扩大,毕竟用Js写游戏的人比Ruby写游戏的人是多的,也就意味着我们有更多的物理引擎可以选(比如说Matter.js),更多的渲染引擎可以用(Pixi.js之类的)。生态系统直接从原有的很小的Rgss生态系统直接扩大到整个Js生态系统。

2. 效率提升数倍

仅仅从语言方面来说Js本身就比Ruby快好多倍


再加上我们也许可以成功用asm.js来写某些特别需要效率的代码(asm.js比C慢个3到4倍)。使得以前很多吃效率的算法MV都可以实现,分辨率扩大也不会那么卡了。


3. 也许我们可以调用GPU了

写3D之类的,写Shader之类的快了20倍吧,因为有了WebGL。也就意味着3D可以写的很效率(当然该不该写3D是另一回事),可以玩很多酷炫的画面效果了,所以说我们也许可以用Three.js造一个3d的战斗系统。

4. JS这门语言没有Ruby好用=》你可能需要第三方的库

在Ruby中可能已经习惯了map, each, find_all这些方法的你在Js中不会发现这些方法。更糟糕的是Ruby中的Class在Js中都不直接实现。

但是很幸运的是Underscore, FunctionalJs等库给你提供了这些功能,也就意味着你需要第三方的库来提供一些你在Ruby中习惯的功能。

当然这也意味着你有更多的语言特性的选择,比如说:monet.js(https://cwmyers.github.io/monet.js/)提供了Haskell引以为傲的Monad。https://github.com/jlongster/transducers.js 提供clojure的transducer。

还有比如说React.js或者Riot.js这些UI的库也许也可以用于RM的GUI编写中。

5. 干脆换一门语言好了

Javascript被普遍认为不适合写任何超过1000行的程序。所以说也许你可以去换一门语言:

https://github.com/jashkenas/cof ... -that-compile-to-JS 有一列能编译成Js的语言,其实总结下来就是:几乎所有主流语言都可以编译成Javascript

当然现实没有这么理想,最后你可能会去用那么几个主流的语言:coffeescript(更为简洁的js写法,更像Ruby),typescript(提供静态类型支持), livescript(更加函数化的写法),clojurescript(clojure的js版本,也许可以用来写一整个游戏用)。并且如果想要挑战的话可以用c, scala, java, ruby, ocaml, purescript(haskell般的语言), jsfuck, brainfuck等你能想到的几乎所有语言来写MV游戏。


6. 脚本门槛高了

Js语言没有Ruby那么容易写好,同时内置编辑器没了之后还得自开编辑器打代码,同时估计大家一上场就会用coffeescript, livescript之类的写东西。所以说也许改脚本不好改了(因为不一定是单纯的用js写的),写脚本门槛高了(因为js没有那么好学)。

7. 后话

我还记得我在某群里面说过我想重写一遍RM引擎,然后当时我就说了我也许会去用Js写,然后发现MV用Javascript了也是很欣喜。于是这次终于有一个技术上不是那么封闭的RM可以用了,技术上的革新势必可以带动整个生态链的发展,HTML5是已经被证明是有未来的技术,希望能以此重振RM。

并且这不仅影响新系统的产生,同时也意味着也许更多的工具可以被写出来(比如说更好的地图编辑器,数据库编辑器之类的)。底层技术换了一个档次之后生态系统肯定也会随之优化。





『我只是一个正在潜心修炼的渣乐师罢了』
Dear Time\(^o^)/~


假如上面的图片挂了的话麻烦各位去发个帖 @ 一下 orzFly 让他修复 deartime

Lv1.梦旅人

梦石
0
星屑
66
在线时间
1641 小时
注册时间
2011-9-26
帖子
313
26
发表于 2015-8-24 20:55:04 | 只看该作者
IamI 发表于 2015-8-8 23:36
一等公民和一等公民是不一样的。
想从 ruby 转过来的话,有无数个思想上的转变,和无数多的坑要踩。

用 coffee 的话,我觉得转变其实没多大难度,只要不去碰 class
这个脚本,完全可以用 coffee 无痛改写。

Ruby 强势的地方在于 DSL 造轮子的能力,RGSS 发展这么久了,其实还是最初的老一套,换用 JS 未必是件坏事。以 RMer 的创造力,加上 coffee 珠玉在前,我估计不久应该会有用 JS 实现的 Ruby 子集,我们可以好好期待一下。

愿善用者善用之
https://github.com/Shy07/SINRGE2
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
75
在线时间
14 小时
注册时间
2015-8-19
帖子
11
25
发表于 2015-8-23 23:50:26 | 只看该作者
gonglinyuan 发表于 2015-8-8 15:14
不过难度提升、代码可读性下降的代价也是很大的,毕竟JS长代码几乎不可阅读。。 ...

CoffeeScript (借鉴 Python 和  Ruby)的 JavaScript
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
70 小时
注册时间
2015-7-17
帖子
75
24
发表于 2015-8-9 22:09:57 | 只看该作者
没准MV出了之后,可以跨平台运行了,可以用手机玩了,AppStore 里会出现 RM游戏。

点评

在AppStore里设置收费,就涉及到了“禁止用于商业用途”。有关脚本和素材的转载和使用权方面可能会引起争端,希望论坛加强管理。 希望论坛能加强...  发表于 2015-8-9 22:17
不是没准,是确定,看预告内容  发表于 2015-8-9 22:11

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
10
星屑
1496
在线时间
1086 小时
注册时间
2013-9-4
帖子
1313
23
发表于 2015-8-9 21:13:41 | 只看该作者
LBQ 发表于 2015-8-8 16:21
稍微想了一下...

感觉貌似js有的东西ruby大部分也有,ruby还有更多的选择。

恩恩 ruby的教程我看的也晕。还说从是零开始学的。啥是0?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
10
星屑
1496
在线时间
1086 小时
注册时间
2013-9-4
帖子
1313
22
发表于 2015-8-9 21:09:19 | 只看该作者
MeowSnow 发表于 2015-8-8 11:38
外行不太懂,HTML5是说可以直接输出网页游戏吗?

可以建个离线服务器【自己电脑】,通过WiFi就可以在自己手机上调试预览游戏。

点评

(๑′ฅωฅ‵๑)大触好棒  发表于 2015-8-9 22:06
我不是在VA里面就实现过吗  发表于 2015-8-9 22:03
(๑´ㅂ`๑)HTML5是直接可以在手机上运行的游戏吗?  发表于 2015-8-9 21:29
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5513
在线时间
2566 小时
注册时间
2011-9-27
帖子
1120

极短23参与开拓者

21
发表于 2015-8-8 23:54:11 | 只看该作者
会不会放弃ruby之后,直接遭到老玩家抵制,以失败告终!?

点评

你们都默认玩家要写脚本了么  发表于 2015-8-9 07:25
不得不说新玩家对于老玩家可能有压倒性的数量优势。如果老玩家的定义是ruby  发表于 2015-8-9 00:15
从平淡走向更平淡。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3137
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

20
发表于 2015-8-8 23:36:43 | 只看该作者
一等公民和一等公民是不一样的。
想从 ruby 转过来的话,有无数个思想上的转变,和无数多的坑要踩。

可以说这种设计是时代的趋势,是没有问题的。
可惜 js 从设计时起,就注定无法是一门好语言。

点评

是的。coffee 是我看到过的最具有形式美的语言。可惜没有一个好爹。  发表于 2015-8-9 23:23
论js基础上的语言  发表于 2015-8-9 00:16
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

19
发表于 2015-8-8 20:48:14 | 只看该作者
本帖最后由 taroxd 于 2015-8-8 20:54 编辑
LBQ 发表于 2015-8-8 20:39
@冷俊逸
你说的估计是HTML,js我记得没有的


就是一个 function 解决一切,所以 Array.prototype.forEach 不能在中途中断啊。你看 ruby 的 each,一个 return 就能跳出来了,区分 Proc 和 Lambda 有什么不好的。

拿一个 Function 当类用好理解个球啦!!!prototype 和乱七八糟的 this 好理解个球啦!!!

js 里也是
  1. function Player() {
  2.   this.x = 1;
  3.   this.y = 1;
  4. }
  5. var player = new Player();
复制代码
这样的吧。单纯用一个 Object 不是很容易 OOP。再说了 Ruby 也基本兼容了 json 代码了,不过出来的是 Hash 而已。



另外我不是在黑js。我承认js的优点,并且觉得EB这么做是没错的只不过心里还是很不爽

点评

LBQ
我知道的...我个人当然是觉得js比ruby难...但是acn说感觉js比ruby容易的时候我就在想到底哪里可能容易,于是就想到这里了  发表于 2015-8-9 09:22
写网页里的js没OOP就算了,不过MV的代码摆明了是要 OOP 的 可以看看 http://rm.66rpg.com/thread-382080-1-1.html 这里的示例代码  发表于 2015-8-9 09:01
LBQ
所以说其实纯粹只是在那里瞎想为啥会有人觉得js更好学所以想到了那里..毕竟当时我一想javascript的object也许可以跳过oop中类的概念为新手提供便利  发表于 2015-8-9 08:47
LBQ
我不是说这些之间哪个好...我当时只是在考虑到底哪里js比ruby好学..当然this绝对是问题当时我只是很困惑为啥会觉得js比ruby好学于是想到了那两个点  发表于 2015-8-9 08:45
回复 支持 反对

使用道具 举报

Lv3.寻梦者

唯一的信徒

梦石
0
星屑
1665
在线时间
1357 小时
注册时间
2013-1-29
帖子
1637
18
 楼主| 发表于 2015-8-8 20:39:08 | 只看该作者
@冷俊逸
你说的估计是HTML,js我记得没有<>的

@fux2
貌似是的...并且opengl也受限也会很慢。不过这也不是RM的问题而是所有做到手机上游戏的问题了(手机就是慢OTL)

@taroxd
其实我的意思不是功能上的问题...更多的其实是比如说js中对于player这个对象的表达可以是
  1. player = {};
  2. player.x = 1;
  3. player.y = 1;
复制代码
而Ruby中一般的方法就是class Player然后生成Player对象。(OpenStruct也行,但是貌似不是解决这个问题比较Ruby的方法)

所以说当时我想的其实是也许是没有Javascript的这种纯对象导致很快就要接触面向对象的类所以可能说js更容易理解一些。

而对于function来讲我当时不是以可读性来想的,因为我认为Ruby中区分了Block和Proc和Lambda之类的可能导致初学者迷惑,而Js中直接一个Function解决一切我觉得还是更好理解的。

(不过好像当时假如表示的清楚一些就好多了
『我只是一个正在潜心修炼的渣乐师罢了』
Dear Time\(^o^)/~


假如上面的图片挂了的话麻烦各位去发个帖 @ 一下 orzFly 让他修复 deartime
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-21 14:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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