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

Project1

 找回密码
 注册会员
搜索
查看: 7088|回复: 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
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

19
发表于 2011-1-1 14:12:18 | 只看该作者
不过想做ARPG但是不想重写地图……
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

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

第1届Title华丽大赛新人奖

18
发表于 2010-10-29 21:49:26 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
17
 楼主| 发表于 2010-10-28 22:10:05 | 只看该作者
回复 支持 反对

使用道具 举报

菜鸟飞呀飞 该用户已被删除
16
发表于 2010-10-28 21:45:58 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

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

我倒是发明了一种新的表示区域的方法。
scope = ?
如果是一个数比如 5,就代表主角周围5格范围
如果是两个数,比如 5,6就代表一个点。
如果是三个数,比如5,6,3,就代表以5,6为中心向外3格范围
四个数=>2,2,6,8。这代表一个矩形区域
如果是数组  =>[4,6],[3,3,5,5] 这样就代表这数组里的元素的区域之和。

自由吧?
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

14
发表于 2010-10-28 19:17:16 | 只看该作者
显然二维线段树是最快的……不过若是咱的AOE是圆形区域嘎嘎~
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

13
发表于 2010-10-28 18:06:10 | 只看该作者
对于算法效率神马的倒是没咋研究过,我以前倒是特无奈的试过用两个数组来记录事件的id
evpos_x[0] = [1,3,4]
evpos_x[1] = []
evpos_x[2] = [2,5]
evpos_y[0] = [1,2]
evpos_y[1] = [4,5]
evpos_y[2] = [3]
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
12
 楼主| 发表于 2010-10-28 15:53:28 | 只看该作者
回复 冰蓝的马甲 的帖子
其实二维数组管理管理效率并不会高多少。
主要是这样,移动的时候经常要调动自己的位置,这样就导致不断复制清除数据。
在获取一定范围内的事件的时候,需要扫描整个范围。
比如
0,0,8,8 这样的矩形范围,那样就要整个矩形全部扫描(根据细分程度)

而四叉树,是根据怪物分布的不同,平分的密度也不同。比如一大块地图上只有1-2个事件。
那么四叉树记录这整个区域只有两个事件。这两个事件只要不走出去着整个区域。
就不用改变树结构,总的来说差不多。

   
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
83 小时
注册时间
2008-4-19
帖子
420
11
发表于 2010-10-28 14:53:40 | 只看该作者
嗯,考虑一下写一个二维数组式的管理法吧
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 11:08

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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