move() ... 减少系统对象数的建议 ,北大侠客行MUD论坛" />

北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 6503|回复: 9

减少系统对象数的建议

[复制链接]
发表于 2012-8-26 17:17:26 | 显示全部楼层 |阅读模式
以前玩过好几个mud,都是在系统更新时"一阵风吹过"摧毁房间里掉落的物品,建议可以采取这种方式。具体实现方法可以是:
给所以物品加一个move_time属性,当执行obj->move()时,就设置move_time为系统时间。当系统更新时,检查房间里各个物品,只要move_time早于15分钟的就销毁该物品。
一般东西掉地上超过15分钟就没人要了,直接销毁也没影响。对于不能销毁的特殊物品,加一个no_destroy标记就是。
这样一来毫毛这个经常惹祸的npc都不需要了,尸体也不用加速腐烂了,目测可以减少不少对象

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2012-8-26 17:18:40 | 显示全部楼层
如果建议不当请无视…
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-8-26 17:20:04 | 显示全部楼层
大哥你发错地方了
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-8-26 18:14:30 | 显示全部楼层
不懂计算机的撸过支持一下!
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-8-26 20:40:51 | 显示全部楼层
本帖最后由 zgbl 于 2012-8-26 08:41 PM 编辑

我觉得用队列方法应该挺不错,毕竟加了move_time这个mark后还是得遍历所有物品
按照drop时间顺序加入队列,每15分钟插一个标记,插入第二个标记后删除第一个标记之前的所有物品
drop时的操作:
1、物品加入队列
2、物品上加上一个mark,标记队列中的位置

get时的操作:
根据物品上的mark从队列中去掉这个物品
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2012-8-26 21:55:05 | 显示全部楼层
本帖最后由 yunlan 于 2012-8-26 01:59 PM 编辑
我觉得用队列方法应该挺不错,毕竟加了move_time这个mark后还是得遍历所有物品
按照drop时间顺序加入队列, ...
zgbl 发表于 2012-8-26 12:40 PM



    队列方式有一个问题,因为一个物品被丢到房间A之后,它还可能在15分钟内被捡起来,丢到别的房间去,所以每次move物品的时候,还要先遍历队列内已有标记,删除这件东西的旧标记。当有几千件物品标记的时候,这个效率也不见得高啊!
像你说的给物品加mark标记它在队列中的位置,以避免遍历,这个恐怕不太可行吧?因为每15分钟队列中考前的物品要被清除,这个时候队列位置会改变。比如你原先一个物品A在第1000位,而一次更新时消除了队列里前500位的物品,这个时候物品A实际变成了第500位,它身上mark的第1000位位置,这个数据已经失效了
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-8-26 22:50:40 | 显示全部楼层
本帖最后由 zgbl 于 2012-8-26 10:51 PM 编辑
队列方式有一个问题,因为一个物品被丢到房间A之后,它还可能在15分钟内被捡起来,丢到别的房间去 ...
yunlan 发表于 2012-8-26 21:55



    不需要,队列元素不是只能有一个数据,也可以给元素加mark,队列元素的mark表示该物品是否在地上。如果被get了,那么修改那个mark,就等同于删除元素了,队列中的顺序没变不过这里还有个问题就是,如果是这样的话,随着时间的递增队列会越来越长,这也比较蛋疼,得动态释放之前的空间
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-8-26 22:56:24 | 显示全部楼层
队列方式有一个问题,因为一个物品被丢到房间A之后,它还可能在15分钟内被捡起来,丢到别的房间去 ...
yunlan 发表于 2012-8-26 09:55 PM



    比如物品A在第1000位,队头指针p指向obj[1],那么A存在obj[1000];删除队列里前500个物品后,p指向obj[501],A仍存在obj[1000],这没什么问题吧?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-8-26 23:03:29 | 显示全部楼层
回复 7# zgbl


    递增的问题可以考虑循环队列或静态链表吧
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-8-27 09:28:36 | 显示全部楼层
回复  zgbl


    递增的问题可以考虑循环队列或静态链表吧
flauto 发表于 2012-8-26 23:03



    循环队列不错
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-4-20 06:55 AM , Processed in 0.011844 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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