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

Project1

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

[RMVX发布] ARPG助手→四叉树管理器1.0Base版

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
跳转到指定楼层
1
发表于 2010-10-24 01:38:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
一切的一切都归功于紫苏大人。
否则我不知道世界上有这玩意。

四叉树管理器,用于快速取得指定范围内的事件,指定位置的事件。无需遍历所有事件



只是稍微性能上提升了,因为RM的卡不仅仅是在移动遍历事件上。
  1. #===================================================================
  2. # ■ Accelerator
  3. #--------------------------------------------------------------------
  4. # 四叉树管理器
  5. #====================================================================



  6. =begin

  7. 脚本名称:四叉树管理器

  8. 版本:1.0

  9. 作用:在有大量事件的地图上,增加获得目标点事件组的速度。
  10.       多用于ARPG,以及射击类游戏。

  11. 使用方法:插入脚本即可。

  12. 注意事项:事件较少,完全可以不需要此脚本。


  13. 原理/过程:

  14. 四叉树→
  15. 将地图先扩大到正方形,且边长为2**n,比如 32*32   64*64大小。(取名总地图)

  16. 将总地图田字平分为4等分,如32*32的,就分成4个16*16的子地图块

  17. 统计每一个地图块里拥有的事件总数,若超过6(6是自适应数,可更改)

  18. 则将该子地图块,再平分成4个子地图块,以此类推,最小能平分成4个1*1的地图块。



  19. 最顶层树(树干)Plane_Base类

  20. 该类拥有4个子块

  21.           ┌───┐
  22.           │      │
  23.           └─┬─┘
  24.               │
  25.         ┌─┬┴┬─┐
  26.         │  │  │  │
  27.         
  28. 子块可能为,数值,树叶两种结构。

  29. 树枝的结构    依旧拥有4个子块 Plane_Tree
  30.           ┌───┐
  31.           │      │
  32.           └─┬─┘
  33.               │
  34.         ┌─┬┴┬─┐
  35.         │  │  │  │

  36. 树叶的结构  Grouping

  37.           ┌───┐
  38.           │      │
  39.           └─┬─┘
  40.               │
  41.       ─┬─┬┴┬─┬─┬─┬
  42.         │  │  │  │  │  │
  43.        event    event  ……
  44.       

  45. 树叶为最底层,用于保存事件的位置。

  46. Plane_Base 类方法

  47. gro_xy(x,y) 直接获得x,y点最小事件范围组,直接遍历这个组,就能获得x,y点上的事件。


  48. move(event,xt,yt) 将event事件移动到xt,yt点(事件移动后,对树的重新操作)

  49. rect_events(x0,y0,xt,yt) 获得矩形区域内的所有事件


  50. =end

复制代码
为了演示,所以将4叉树插入四方向移动里。

该脚本还估计还有20%的优化空间

该脚本绝非为伸手党而作,只是为了研究。
别拿它跟防卡脚本比,不是一回事。


付费求高手指处其中缀余代码,以及可以优化的地方。

献上附件!!




四叉树管理器1.0.rar

247.32 KB, 下载次数: 319

评分

参与人数 3星屑 +2006 收起 理由
夕阳武士 + 1998 支持优化脚本
38571240 + 6 速度提升明显
熊的选民 + 2

查看全部评分

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

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

2
发表于 2010-10-24 02:15:07 | 只看该作者
下下来看看能不能看懂
Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1150
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

3
发表于 2010-10-24 07:47:33 | 只看该作者
FSL吧。至于为什么

付费求高手指处其中缀余代码,以及可以优化的地方。


请看我签名中,FSL的细则。

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1150
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

4
发表于 2010-10-24 07:47:55 | 只看该作者
FSL吧。至于为什么

付费求高手指处其中缀余代码,以及可以优化的地方。


请看我签名中,FSL的细则。

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv1.梦旅人

万物创造者

梦石
0
星屑
54
在线时间
352 小时
注册时间
2008-2-15
帖子
2432
5
发表于 2010-10-24 08:53:02 | 只看该作者
= =这四叉树怎么看着像二维线段树{:nm_1:}
为何一定要把地图扩展到2**n……?这样 33*33的地图岂不是浪费大量空间= =
把直接把33*33竖着划分为16*16、16*17、17*16、17*17这样能节约点空间{:nm_3:}
From mortal hope immortal power springs.
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

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

开拓者贵宾

6
发表于 2010-10-24 09:44:26 | 只看该作者
LS + 1,四叉树不一定要完全均衡,基本保持均衡即可。
另外用Array管理真的让这个脚本失色呢(笑)
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
66 小时
注册时间
2009-2-13
帖子
382
7
发表于 2010-10-24 09:45:07 | 只看该作者
试一下,我用防卡脚本的时候,如果有一个事件的位置需要随时记忆,那么每次进入地图都会出现事件从初始位置移动到记忆位置的灵异现象,去掉此脚本恢复正常。这个不用刷新图形的话应该不会出现此类问题吧
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
8
 楼主| 发表于 2010-10-24 10:28:53 | 只看该作者
回5楼:多余的空间并不会占用很多内存,因为空间分配并不是均匀的。
           对于完全没有记录事件的空间就只保存了一个 []也不会在细分。
            用2的整数次幂,是为了取址更快捷如果是 16 +17 这样就会多一层条件分歧。
           每一个地图的层级矩形大小都个式各样。会降低一定的速度。

6楼:  此外,这东西也不是数组,听六折酱的话,改成了类。发现灵活性很高
         
7楼:为了测试,我把地图的刷新屏蔽掉了,在新工程内不会出现这种问题。
        但是这个脚本融入新工程需要做很多动作,主要是每个事件的移动都要告知四叉树。
        所以必须重写8方向移动、还有跳跃、场所移动(一个地图之间可能出现不爽的)
       事件交换。这些。不过所有用xy记录的对象都可以用这玩意管理。
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

9
发表于 2010-10-26 22:31:17 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
10
 楼主| 发表于 2010-10-27 08:15:46 | 只看该作者
回复 沉影不器 的帖子

起初我也想的是用二维数组。写这个纯粹是为了练习。
   
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-28 07:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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