`

游戏中掉落系统的设计

阅读更多
掉落的分类
1、 固定掉落
2、 随机掉落(包含分组随机和组内随机两种情况)
3、 条件掉落(在一定条件下才会产出的掉落,比如任务道具)

下面举例说明一种最复杂的情况:
击杀关底BOSS即可获得200W金币,并有几率获得橙色宝剑(共6种)、护具(共4种)或头盔(共3种)中的两种(甚至多种),如果你的运气足够好,每种装备可能都不止一个哦!当然如果你是奉乔帮主的命而来,你还可以获得IPAD任务道具一件!

从玩家的角度分析一下,玩家可能获得的物品:
200W金币
宝剑、护具、头盔中的两种(甚至多种)
每种装备数量可能多于1件
如果有指定任务在身,则会获得相应的任务道具IPAD

从策划的角度分析一下,策划需要一个可以同时支持固定掉落、随机掉落和条件掉落的强大掉落系统,以满足游戏设计的需要。

   从程序员的角度分析一下,程序员需要提供一个足够强大的掉落表(DROP),用于满足复杂的掉落情况。
  
掉落表设计(DROP)
id——必不可少的字段,用于区别其他drop的关键字
name——可以用做显示,也可以用于策划标识不同的掉落描述
iconId——如果需要显示,则显示的DROP图片ID
mustDropGroup——固定掉落的物品集合(建议只配置在同一组GROUP中,维护方便)
mayDropGroups——随机掉落的GROUP集合(建议将同一类型物品配置在同一GROUP中)
mayDropGroupCount——需要随机出来的掉落组数量(最小为0,最大为mayDropGroups.size)
questDroup——条件掉落的物品集合(可以是固定GROUP,也可以是随机GROUP)
relationQuestType——关联的条件类型
relationQuestId——关联的条件ID

GROUP表设计
id——必不可少的字段,用于区别其他group的关键字
name——可以用做显示,也可以用于策划标识不同的掉落描述
iconId——如果需要显示,则显示本组GROUP图片ID
type——掉落组类型(枚举:0 固定掉落 1 随机掉落)
index——group中各物品的顺序,如需要显示则按照该顺序进行排序
mayDropTypeCount——如果是随机掉落,则掉落几条(最小为0,最大为group.size)
rate——随机概率
intervals——随机数量区间[0-5],当随机数量区间内等概率随机
relationType——随机物品的类型(枚举,资源、道具、装备等等)
relationId——随机物品的关联ID


掉落拾取流程图



此设计中有一个根据随机概率和随机数量随机GROUP中掉落条数的算法,想请看到这篇博客的朋友做个交流:
问个问题,有5个字母 a b c d e,出现的概率分别为 10%,20%,30%,25%,15%,现在要随机3个不重复的字母出来,怎么写算法是最优的?


  • 大小: 15.5 KB
分享到:
评论

相关推荐

    基于Java的飞机大战游戏系统

    本资源包含东北石油大学Java课程设计源码+报告,适用于有一定编程基础的在校大学生。...(4)敌机是随机出现,Buff是击落敌机后随机掉落,Boss每获得100分出现一次; (5)英雄机生命为0时,游戏退出。

    【Java大作业】俄罗斯方块游戏系统设计与实现

    俄罗斯方块是俄罗斯人发明的。这人叫阿列克谢·帕基特诺夫(Алексей Пажитнов 英文:Alexey Pazhitnov)。...没有被消除掉的方块不断堆积起来,一旦堆到屏幕顶端,玩家便告输,游戏结束。

    基于Python编写小游戏FlappyBird(高分课程设计)

    小鸟由于重力会自动掉落到地面,所以玩家需要不断操作使小鸟进行Flap,躲避管道和地面,游戏分数由小鸟成功通过多少个管道障碍物来衡量。如果小鸟撞到地面或者管道,它就会死亡并结束游戏。 操作: 按下空格或者上...

    基于Cocos Creator的水果忍者游戏

    在本游戏设计中,包含了水果模块、刀光模块、计分模块、主菜单模块等等。首先是主菜单数据的加载,当玩家按下鼠标,进行碰撞检测,判断刀光是否与目标物体有交点,若有则相应地将场景切换为Game或Detail。根据玩家所...

    打冰雹游戏源程序

    Text2.Text = Text2.Text - 1 '冰雹掉落到下限时重新从上边掉落,并且每掉落一个冰雹能量减一 If Text2.Text = 0 Then m = MsgBox("你失败了,别灰心,降低难度,请重来!", 64, "shot") Combo1.Text = ...

    基于Minimax tree的跳棋博弈系统C语言实现源码+详细项目说明+作业报告.zip

    在一次跳跃中只能吃掉一个棋子或塔,而在我们的变体游戏中,只允许跳跃一次。在我们的游戏中,一个回合中只允许跳一次。因此,如果在第一次跳棋之后还有另一个棋子可以捕获,那么就不能选择在这一回合中吃子。此外,...

    C++ Doodle Jump源码

    玩家控制小人,小人是不断往上跳的,玩家需要控制它不让它掉落下去,并找板子让小人跳的更高。跳的越高得分越多,但越到后面板子越稀少,同时还有怪物会阻挡小人的前进,变的更难,但考验了玩家的反应能力。每次会...

    uMMORPG 2D 1.28

    *物品掉落和掠夺 *制作 *可编写脚本的任务 *公会系统和等级 *派对系统和Exp。/黄金分享 *商品商城 *设备精灵 *玩家到玩家交易 * NPC交易和任务 * NPC“?” 和“!” 任务指标 * PvP谋杀系统 *标签目标 *技能演员...

    Els.rar_ELS软件怎么玩_时反运动

    本游戏主要有一个界面,是用于主游戏区的游戏画布,用来显示游戏时运动和落下去的方块 方块下落时,可通过键盘方向键(上、下、左、右键)对该方块进行向上(变形),向下(加速)、向左、向右移动。 随机给出不同的...

    五子棋Java实验报告.doc

    三、五子棋的系统设计 1、系统用例模型设计 五子棋系统应该具有选择玩家先落子还是电脑先落子的功能,应该具有开始游戏和重 新开始的功能,当然了,必须具有在玩家指定位置落子的功能。以上描述,用用例图在 图1中...

    projects-ReedMe:我为您提供了一个查看我的存储库的方向。 我写了从项目中可以得到的信息,功能

    语言:C# 工具:Unity 项目类型:团队项目(团队成员:5位游戏设计师和5位游戏开发人员) 负责:怪物,物品掉落,时间线(cutScene) 该项目由10位团队成员进行。 这是一个向Google Play商店发布手机游戏的小项目...

    Chrome俄罗斯方块游戏 - 经典和真实「Chrome Tetris Game - Classical and authentic」-crx插件

    Blocktris-受俄罗斯方块(Tetris,俄语:Тетрис[ˈtɛtrʲɪs])的启发,但不要与它混淆,这是一款拼图匹配的电子游戏,最初是由俄罗斯游戏设计师Alexey Pajitnov设计和编程的。 它于1984年6月6日发布,当时他...

    java弹球游戏源码-Leacme:Leacme项目索引

    此应用程序具有模拟球通过一系列针脚掉落的能力。 - 此应用程序具有在触摸屏鼓机上播放合成声音的功能。 - 此应用程序具有模拟鼠标绕过障碍物寻找奶酪的能力。 - 此应用程序具有在屏幕触摸上生成彩色圆点的能力。 - ...

    java俄罗斯方块源码-Tetris3d:俄罗斯方块3d

    java俄罗斯框源码3D 俄罗斯方块:在 ...并且您将能够使用诸如开关块项目、掉落重置项目的位置、移除某些层项目的炸弹等项目。 您也可以从保存点玩游戏并在保存点保存游戏。 程序语言 # 程序语言 笔记 1 Java 2

Global site tag (gtag.js) - Google Analytics