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

Project1

 找回密码
 注册会员
搜索
查看: 3068|回复: 6

[讨论] SRPG on Map 地图处理代码测试

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1024
在线时间
1389 小时
注册时间
2010-8-9
帖子
3471
发表于 2014-11-28 16:54:05 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 寒冷魔王 于 2014-11-28 17:05 编辑

SRPG on Map
地图处理,用于角色在面向多位元素的路线巡查。
经过一个多月的编写和算法优化,目前发布V2版的公测版。
我是使用的多维数组来处理和保存数据。
数据输出基元数组【【点】,【路线】,【可否放置】】
其中路线用1234来表示,转化RM请自行Input::。
由于Ruby对数组的处理极度低效,Path类的get_path仅仅多循环10次(扩大移动10)。为了弥补这一问题,我将相同的算法用Java实现(= =可怜我这个菜鸟不知道要怎么调用)
这不是一个长距离寻路的算法,仅仅提供在密集位置的移动的可能性。刚好看见R君写的Dijkstra算法RM寻路程序,就用他的吧~
目前只是测试版,由于长时间的开发及频繁地变更,程序内部可能会出现一定的错误。还望大家指出。
另外,本版本是V2的完结版,不会考虑算法的变更。如果涉及程序数据结构的大幅度变更还请跳过该版本。
另外我只学了几天的Java,请不要对Java版提出高级的问题。。


Ruby版

Java版


呼叫:
T君   R君      

评分

参与人数 1星屑 +200 收起 理由
恐惧剑刃 + 200 精品文章

查看全部评分

SRPG on RM 项目研发组 正式成立。目前SRPG·RMVA系统进度88.8%。SMRC Kernel 进度90%
↖(^ω^)↗热烈庆祝~SMRC Ver5.1 SRPG战棋地图移动范围生成脚本正式发布~~
-----------------------------------------------------------------------------------------
SMRC具有高性能、高兼容、定制自由、使用方便的特点。
1.性能,100移动力轻松算出,无压力;
2.兼容,RGSS1-3通吃,效率保证;
3.支持移动形状定制,支持4方位、6方位、正方形或其他任意有移动规律的形状;
4.可以充当高性能寻路来使用。
【链接点此】
-----------------------------------------------------------------------------------------
【2016/01/06更新 | 改版】RM脚本编辑器Gemini
-----------------------------------------------------------------------------------------

Lv3.寻梦者 (版主)

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

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

开拓者贵宾

发表于 2014-11-28 17:14:53 | 显示全部楼层
寻路现成脚本无数,何必自己写= =

点评

回复 寒冷魔王:完善一个比较满意的不就够用了吗···比如横版我现在就是在完善SideView这个好用的···  发表于 2014-11-29 09:36
+10086  发表于 2014-11-28 21:39
Σ( ゚д゚)你是这么想的吗  发表于 2014-11-28 17:16
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

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

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

开拓者贵宾

发表于 2014-11-28 17:19:47 | 显示全部楼层
本帖最后由 taroxd 于 2014-11-28 17:23 编辑

To 楼上点评

如果你写这个的目的是为了锻炼你的脚本水平,那我完全支持你自己写一遍。

但如果你的目的是自己写一个 SRPG 系统,不重用现有的代码还是很浪费时间的不是吗?

另外,我的建议是,既然你没有用到 RM 的地图系统,不妨用 “图” 来表示数据。(不过拿 RGSS 表示图果然还是觉得很蛋疼)

点评

(=゚ω゚)=谢谢~  发表于 2014-11-28 18:18
加油。写一个系统不容易。  发表于 2014-11-28 18:15
应当说它是我这几个月来编程学习的重要伙伴(基友(误)),对我很重要的人(不是人)。  发表于 2014-11-28 17:37
我开工时的10月份很渣的。当时根本没法想象能够写出这段程序来。多亏写这个我的水平才得以提高。  发表于 2014-11-28 17:35
另外网上没有找到理想的VA版SRPG系统,需要自己做。而自己写代码是为了增加程序的契合度。(因为大部分代码都要自己写,而且我有足够的时间)  发表于 2014-11-28 17:34
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9467
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

发表于 2014-11-28 19:21:59 | 显示全部楼层
Ruby版的给taroxd看好了
看代码看了两遍没看出来是Dijkstra算法,果然算法是除了自己以外别人都看不懂的东西啊……
而且这个Java程序写得,我可以说数组超过三维我就开始接受不了了吗?四维数组用起来真的好麻烦啊。如果你想要表示点对的话,还是新建一个类为好。
不过搞出一个脚本来也是很辛苦的,希望优化方面再多做做吧。

PS:我的代码60多行是如何变成450行的?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1024
在线时间
1389 小时
注册时间
2010-8-9
帖子
3471
 楼主| 发表于 2014-11-28 20:37:19 | 显示全部楼层
本帖最后由 寒冷魔王 于 2014-11-28 20:47 编辑
RyanBern 发表于 2014-11-28 19:21
Ruby版的给taroxd看好了
看代码看了两遍没看出来是Dijkstra算法,果然算法是除了自己以外别人都看不 ...


= =那个啥,我是用Java把Ruby版的算法复刻了……不是Dijkstra算法。。

这是第三次尝试,全部都用数组储存。
第一次尝试定义了好多的类,结果又慢又乱= =而且程序有600+
Java版的puts()和print()就占去100行,各种get又是N多行= =
东西没有Ruby的多,但是基本的还是有的。


PS:你的那个我能说我看不懂RGSS吗= =另外用Java的话Ruby的60行变成个400多行是没问题的。
没办法,定一个void put()就要一大堆= =如果新建类表示类型输出的话又要一大堆= =
还有
{
}
占去的行数又有一大堆= =

点评

嗯,好的  发表于 2014-11-28 21:23
你这个学习语言的顺序真心不合适……先接触Ruby再学其他的就会觉得好多都不方便。不过C语言显得过于啰嗦了,C++就好太多了,所以建议学C++  发表于 2014-11-28 21:20
哦,那好吧,其实我想再学C#的  发表于 2014-11-28 21:16
追求效率还用什么Java,C++适合你  发表于 2014-11-28 21:15
这样啊,包装类指的是Ingter之类的?  发表于 2014-11-28 21:14
SRPG on RM 项目研发组 正式成立。目前SRPG·RMVA系统进度88.8%。SMRC Kernel 进度90%
↖(^ω^)↗热烈庆祝~SMRC Ver5.1 SRPG战棋地图移动范围生成脚本正式发布~~
-----------------------------------------------------------------------------------------
SMRC具有高性能、高兼容、定制自由、使用方便的特点。
1.性能,100移动力轻松算出,无压力;
2.兼容,RGSS1-3通吃,效率保证;
3.支持移动形状定制,支持4方位、6方位、正方形或其他任意有移动规律的形状;
4.可以充当高性能寻路来使用。
【链接点此】
-----------------------------------------------------------------------------------------
【2016/01/06更新 | 改版】RM脚本编辑器Gemini
-----------------------------------------------------------------------------------------
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1024
在线时间
1389 小时
注册时间
2010-8-9
帖子
3471
 楼主| 发表于 2014-11-28 21:20:32 | 显示全部楼层
RyanBern 发表于 2014-11-28 19:21
Ruby版的给taroxd看好了
看代码看了两遍没看出来是Dijkstra算法,果然算法是除了自己以外别人都看不 ...


引用:
单说执行效率,不说开发效率。

首先,很明显,汇编是最高的,不需要解码,没有任何限制。
然后是C/C++等等直接静态编译到汇编的语言,它们的效率等同汇编,之所以是第二等是因为编译器本身产生的结果可能和【你自己】想要的结果有细微差异,从而降低效率——当然,虽然编译器越来越先进,这种事情越来越少了。
关于C++的编译期计算等等的问题,我们等会儿来说。
下一级别,估计有点超出你的想象了,是Java、JavaScript和LuaJIT/PyPy这些,也就是运行时编译到汇编的语言,它们的效率大概只比C/C++之类低50%的样子——也就是说,C做事需要1s,它们估计也就需要2s,问题是,现代的程序,大部分都是碎片化执行的,真正在CPU上面耗费的时间不多,因此,实际的包含大量IO的程序而言,其实效率上差多。
再下一个级别就是Lua、Python(这里是CPython)这种了,字节码执行,自带虚拟机,效率上大概比C慢出50倍这个数量级。但是某些操作如果语言直接内置(比如Python的列表合成),那效率就和C的相同,有些操作你手动搞,效率就比C慢50倍,因此语言的设计极其重要,要保证需要手动搞的东西都是对效率影响不大的。
再下一个级别就是内存里面直接放解析树,没有字节码的。比如Ruby,大概比C慢200倍左右,恩,不详细说了。
最后一个级别是连解析树都没有,直接一行一行分析完了就执行,比如VimL,大概比C慢1000倍(三个数量级)的样子。

执行效率上,就是这么个等级了。

再说说C和C++,很多人有误解,模板提高效率啊,constexpr提高效率啊什么的。其实,这些C编译器也可以做优化,只是难度会很高——没有语言级别的直接提示。比如说,gcc有一个优化已经出现很久了,就是自动内联函数指针——如果发现几次调用的时候,给出的函数指针都一样,那么直接把这个函数指针固化到函数里面,做成一个特殊的static函数给你调。这多么像C++的模板!我的意思是,不要迷信语言特性,C和C++的基本原理都是完全把一种概念模型上的表述换成另外一种表述,这种转换中的效率提升往往并没有那么明显,但的确是有的。它们的确是效率相差不大的两门语言。
SRPG on RM 项目研发组 正式成立。目前SRPG·RMVA系统进度88.8%。SMRC Kernel 进度90%
↖(^ω^)↗热烈庆祝~SMRC Ver5.1 SRPG战棋地图移动范围生成脚本正式发布~~
-----------------------------------------------------------------------------------------
SMRC具有高性能、高兼容、定制自由、使用方便的特点。
1.性能,100移动力轻松算出,无压力;
2.兼容,RGSS1-3通吃,效率保证;
3.支持移动形状定制,支持4方位、6方位、正方形或其他任意有移动规律的形状;
4.可以充当高性能寻路来使用。
【链接点此】
-----------------------------------------------------------------------------------------
【2016/01/06更新 | 改版】RM脚本编辑器Gemini
-----------------------------------------------------------------------------------------
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9273
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

发表于 2014-11-29 09:35:12 | 显示全部楼层
寒冷魔王 发表于 2014-11-28 04:20
引用:

你的VA魔塔样板呢···

点评

= =我也不会  发表于 2014-11-30 12:46
你是打算把两个东西合到一起?话说你现在有没有空帮忙写个技能升级的窗口···表示不会弄VA的窗口QwQ  发表于 2014-11-30 11:24
那是副产物  发表于 2014-11-30 11:21
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 17:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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