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

Project1

 找回密码
 注册会员
搜索
查看: 1578|回复: 2

[随意闲聊] 某搞笑而高效的优化方法..Ruby翻·译

[复制链接]

Lv4.逐梦者

梦石
0
星屑
13559
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

发表于 2018-2-19 22:44:11 | 显示全部楼层 |阅读模式

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

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

x
简单说 就是把 ruby 代码翻译成 c 然后编译...乍看很诡异对吧
这个思路其实很早很早就有了,不过比较懒,一直拖着没什么实际行动 当然现在也不算有什么实质的行动..
操作起来还是蛮简单的
ruby 是拿 c 写的,ruby 原生的类/模块以及 RGSS 都是拿 c 写的然后编译的。游戏的本体代码也完全可以这样。(取关键部分翻译)
只需要反汇编取得关键函数的地址就能在此基础上进行翻译
翻译好再一番编译变 dll 然后进脚本去调用初始化一下就成了
搞笑就在于 直接写 c 作为拓展库也就算了 从 ruby 写回 c ?你在搞笑吗
高效在于省去了解释的过程 直接运行编译好的机器码 速度飞快
测试了一下效率起码是几倍 乃至十几倍 真的..
我就测试了一些 一个用 c 写 一个用 ruby 写 然后重复调用比较
方法越是复杂效率提升就越多
其余的没测试 因为 翻译还是 比较烦

高效一是在于编译好了
二是在于可以省略一些 ruby 的操作方式反之用 c 的方式取代
三是在于真·多线程

毕竟翻译不可能是一模一样来的

缺点一是烦
二是这种做法没啥必要 本来也够快了

单纯为了好玩吧

一直在用XP,XP的 ruby 版本是 1.8.1
下面一份是 RGSS103J 的大部分翻译所需的函数地址
一份是我翻译的这版本 ruby 源码的 README.EXT
翻译了绝大部分,其余对翻译没啥帮助 假如觉得我翻译的很怪请参考原文本
里面有基础知识啊操作全局实例变量常量啊定义函数类模块啊 c 和 ruby 之间的数据交流转换啊等等翻译所需要的东西
另外随时可以翻翻源码

函数地址
README.EXT.zh


假如有人成功把整个游戏的代码全翻译成 c 然后编译成 dll 了
脚本主体就只有两句
Win32API.new('s','Init','v','v').call
main
不知所以的人看到肯定是崩溃的
知道的人肯定更崩溃 什么人这么无聊...

Lv1.梦旅人

梦石
0
星屑
163
在线时间
249 小时
注册时间
2014-7-18
帖子
44
发表于 2018-2-20 00:29:54 | 显示全部楼层
还是 Rubinius 实在点 (x
https://github.com/rubinius/rubinius

点评

win上明明暂时不实在 ( º﹃º ) 不过我真不知道它 学到了 :-)  发表于 2018-2-20 10:56
Role Play Games had saved me, but I can never save them.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 14:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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