找回密码
 点一下
查看: 1419|回复: 2

一个通用的控制数量的随机物品发放系统

[复制链接]
发表于 2013-4-14 21:17:47 | 显示全部楼层 |阅读模式
本帖最后由 yxxiaobin 于 2013-4-14 21:27 编辑

实际上做这个东西完全是由theninth1985的一篇帖子引发的。
前些日子看了theninth1985斑竹关于游戏掉落系统的一篇设计文章,写的非常不错,忍不住帮顶了下,而且他提到的原理已经在实践中得到检验,确实是很好的一个理论。不过因为这个理论有些复杂,比较适合网络游戏,而在我们做的地图中,应用的机会会非常少。实际上,在大多数地图中,简单的随机数就足够了,所以我也只是在后边顶了一下,没有继续研究,但是前几天正好有一点点时间,做其他的事也不够用了,正好又想到这个东西,所以就顺手做了一个能控制数量的通用物品发放系统。不过做完后时间也不多了,就没发上来,今天正好有时间,发出来顺便写几句说明。
在大多数地图中,我们一般使用简单随机的方法来发放物品(打怪掉落或随机合成之类的都算发放物品),所以某件东西出现的多少完全取决于概率,也就是说,一个顶级物品即便出现概率极低,也挡不住在某局游戏中产出好几个。因为这通常不会带来严重后果,所以我们从来没理会过。不过对于一个追求完美的作者来说,这种情况可能是无法容忍的,他们有时会需要这样的效果:某件东西在一小时内最多产出5件,随着产出数量的增加,产出概率会越来越低,而如果一段时间内没有产出,则产出概率会升高,这样就会在一段时间内控制物品产出数量,即便玩家走不同的路线,最终的结果仍然相似,这样就能减少设计难度,让玩家能获得更好的游戏体验。下边这个系统基本上解决了这个问题。当然或许某些地方还不完善,所以欢迎大家来喷,但是要喷的有道理,无意义乱喷是不好的。
先上真相:
1.GIF
可以看到,我们需要初始化物品库,因为星际2里边物品的本质就是单位,所以物品库是由一组“单位类型”型数据组成的(因为我偷懒,演示直接使用了对战单位),每种单位类型对应一个权重,自己的权重除以权重总和就是产出概率,允许0权重的单位类型,这样它就不会被产出。另外我们要指定物品库的容量,这个值可以比“物品表”变量的实际最大下标要小,这样超过物品表容量指定的部分将不会被计算在内,比如实际物品表有100种,但是指定了容量为50,那么只有下标为1-50的元素会起作用。
需要说明的就是计时器周期,这个是由我们需要发放物品的频度决定的,发放越频繁,周期需要越小,否则可以大一些,如果不确定发放频繁程度,可适当设小一点,该系统会自动控制避免越界,不过如果有权重低于一百万分之一的物品可能会出现误差。
我们可以在触发器中调用 随机物品 这个函数,将随机返回一个单位类型,你可以将它创建在地图上。
最后:当物品全部发放后,再次调用 随机物品 这个函数,将返回空值,这个和空奖的返回是一样的,如果你需要区分它们,可以在物品发放完后返回一个正常情况不会出现的特定的单位类型,这样就能区分开了。
回头再有时间的话或许会放上一个辅助设置权重的小软件,大家只需要简单指定物品出现的频度就可以自动生成数据了。当然,到目前为止这还是个坑,不过回头一定来填就是了。

-----------------------------------------------------------------
一如既往的忘记上附件....
现在补上:错误附件已删除

---------------------------------------------------------------
发上来才发现,i的初始值设置错误,应该开始就设为1,结果设为0了,其实开始是直接设的i自加1,后来随手改了下,还改错了。现在更新了。
控制总量的随机物品系统.SC2Map (18.43 KB, 下载次数: 25)
发表于 2013-4-14 21:58:20 来自手机 | 显示全部楼层
这一定要支持啊
开不了游戏本体导致无法自己测试自己做的地图的也一点不会trigger的渣渣路过。
回复

使用道具 举报

 楼主| 发表于 2013-4-14 22:22:17 | 显示全部楼层
感谢空人的支持,其实这个只是临时起意随手制作的,还粗糙的很,有时间会完善一下。另外小彬表示触发器要比数据简单的多呀,有时间可以看一看,应该不难学。

另外主题帖有一点没有提到,这里补充下:演示里物品库大小为10,于是各种对应的数组大小都控制在10,实际应用时如果需要更改,需要统一更改的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-12-22 15:57 , Processed in 0.150236 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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