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

Project1

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

高手讨论→RM里你们在乎程序效率吗?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
跳转到指定楼层
1
发表于 2010-9-15 16:00:48 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 九夜神尊 于 2010-9-15 19:28 编辑

忘了是哪位高手说的,RM的内部结构不是最优的。

那时候我还不懂,只是记住并知道这么回事。

在我写自己的系统的时候,写到了人物属性的取得。
这个模块我想大家都很熟悉,防御 =武器防御+帽子防御+盾防御+衣服防御。

但是,每次获取防御力都要经过这么一次运算,然而结果却大部分相同。显然程序效率低很多(当今的电脑似乎可以忽略)。

不过我想,RM作者最初不会没考虑到,而是为了让使用者容易上手。如果把每个属性保存成一个变量,每次读取的时候,直接
调用,在换装备的时候,再改属性。虽然效率会高很多,但是新手却很难上手。

不晓得各位高手对程序效率怎么看待的,就我本人而言,一个程序在我能力下,有优化的空间,我就觉得这程序没完成。

不过像我说的,属性的获取我倒是决定不优化,因为优化后会与现有大部分脚本脱节。

以下是我的一个感叹

血条,每次都要描绘么?

不,只需要在HP 或MAX_HP有改变的时候重新描绘

每次改变都要重新描绘么?

不,血多了就描绘一段红色把黑条盖住,血少了就描绘一条黑色把红条盖住

然而最后要吐自己的是:在乎效率就别用RUBY

点评

现在的电脑运算能力越来越快,内存容量越来越大.....  发表于 2010-10-3 15:40

评分

参与人数 1星屑 +100 收起 理由
回转寿司 + 100 讨论帖鼓励~

查看全部评分

精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
26 小时
注册时间
2010-7-10
帖子
50
31
发表于 2010-10-28 21:48:21 | 只看该作者
考虑到现在机子的效率
还是把更多的精力投入到游戏设计上比较有爱啊...
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1225
在线时间
15 小时
注册时间
2008-1-25
帖子
3
30
发表于 2010-10-24 12:37:18 | 只看该作者
本帖最后由 applesnake 于 2010-10-24 12:39 编辑

RM以牺牲效率和灵活性来换取简单性。越灵活的系统效率会越高,但是使用会更复杂。灵活性和复杂度并非简单线性关系,增加一个维度的灵活性的同时复杂性会随之成几何级数的增长——对比2D游戏和3D游戏的绘图过程就可见一斑。
对于现在的计算机游戏逻辑的处理的开销几乎可以忽略,除非超大型的循环、遍历或复杂的物理,AI计算。
脚本本身具有很强的针对性,而RM又是在这个基础上做了进一步的强化——针对多数2D RPG。所谓需求决定实现,所以RM的体系结构并不适用于构造过于复杂图形子系统。
对现有体系结构中的图形和特效的处理需要专业背景和对RM体系结构的深入了解,一般的使用者无法做到。建议:一般使用者不要在RM中使用脚本构建过于复杂的图形子系统,因为这超出RM框架本身包括图形库的能力。

评分

参与人数 1星屑 +200 收起 理由
九夜神尊 + 200 此乃资深高手,除膜拜无法表达泪目之情。 ...

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
236
在线时间
74 小时
注册时间
2009-7-20
帖子
186
29
发表于 2010-10-23 13:03:57 | 只看该作者
对于一般程序已经不在乎效率了,在乎易读。
好吧……
恭喜发财!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
28
 楼主| 发表于 2010-10-23 10:46:11 | 只看该作者
回复 熊的选民 的帖子

现在在实现任意几何图形范围内对象索取。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
27
发表于 2010-10-23 10:30:49 | 只看该作者
回复
并不只是寻找交集,如果坐标是连续的,就得进行距离检查。比如把“重叠“定义为“距离小于5.0“

    ...
熊的选民 发表于 2010-10-23 05:53


换汤不换药,数组转换为散列表后,想如何实现元素的二元关系都行,普通情况下是判断相等,你这里可以判断距离
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8075
在线时间
7346 小时
注册时间
2010-7-16
帖子
4915

开拓者

26
发表于 2010-10-23 10:20:23 | 只看该作者
回复 九夜神尊 的帖子
期待能用上你做的4叉树系统

   
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
25
 楼主| 发表于 2010-10-23 08:57:33 | 只看该作者
托紫苏大人的福,我已经开始对4叉树研究了。
已经研究出来最快速度获得指定范围内的对象了。
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8075
在线时间
7346 小时
注册时间
2010-7-16
帖子
4915

开拓者

24
发表于 2010-10-23 05:53:01 | 只看该作者
回复 紫苏 的帖子
并不只是寻找交集,如果坐标是连续的,就得进行距离检查。比如把“重叠“定义为“距离小于5.0“

   
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
23
发表于 2010-10-23 05:31:06 | 只看该作者
本帖最后由 紫苏 于 2010-10-23 05:34 编辑
主而rm脚本的效率又不高,用高级数据结构的额外支出可能还抵不上带来的收益。
熊的选民 发表于 2010-10-9 15:32

Ruby 有本地接口,可以用 C 来写数据结构。

忽然想到一个问题。假如有m个子弹和n个敌人,都储存在数组中。如何在最短时间内找出所有重叠的子弹-敌人对 ...
熊的选民 发表于 2010-10-23 03:43

这个就是求交集的算法了,目前最常见的做法是把其中一个方位向量的数组转换为散列表,然后迭代另一个方位向量数组,判断当前元素是否在之前转换的散列表中。
见:http://rpg.blue/forum.php?mod=viewthread&tid=157558
不过这个也是限制在你用无序的数组保存方位的假设上。如果是有序结构或四叉树,一次遍历就完事儿了(当然,如果用了有序或四叉树结构,那可能就不会这么做碰撞检测了,而是在插入/移动节点的时候就判断)。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-10 21:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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