背包系统设计

配置

ItemIdMainTypeSubTypeMaxStackableCount
唯一Id大类小类最大堆叠数

MainType:

主要的分类方式,不建议写入数据库

SubType:

MainType下面的分类方式,不建议写入数据库

MaxStackableCount:

为0时表示该Item不可堆叠;可用于处理各种Item的存储,当然有些时候,需要一种添加Item后不可改变数量的情况,具体可以根据业务设计

设计 

存储
UIdItemIdCount
拥有数量

基本的存储如上,但是这里有些问题需要考虑。如果Count为0,是否需要加载到内存?是否可以重用Count为0 的数据?建议不要重用Count为0的数据,就我遇到的情况,前期我们重用数据,但是后面发现一些生成的DbId, 被其它的系统依赖,当重用这些DbId, 就会出现添加的数据不是新数据,而有些业务又只处理新数据,在这里就出现了,对于某些业务新数据是有意义的,而有的却没有。当然如果不用背包做一些奇怪的系统以来,我觉得重用是完全没问题的,但是谁也保证不了

获取

一般来说玩家可以通过 MainType 和 itemId 获取相关的Item,数据量大的情况,建议细分查考下面链接

背包系统设计-获取数据量大问题-CSDN博客 

增减问题

如果存在好几个 未到 堆叠数数据,发生数量变化时怎样处理?应该加到谁身上?减到谁身上?

理论上,我们希望,减数据的时候先减 同itemId中 数量最小的;

                                加数据的时候先加 同itemId中 数量最多的;

这样可以保证尽量少的数据在内存中

bool TryRemoveItemCount(uint itemId, uint count)
{// 先检查是否足够// 获取这个类型的物品list, 按照数量递增排序int removeCount = remove;while(removeCount > 0){// 移除物品直到 removeCount 为0   }// 更新数据,推送等
}void AddItemCount(uint itemId, uint count)
{// 获取这个类型的物品list, 按照数量递减排序int addCount = remove;while(addCount > 0){// 添加物品直到 addCount 为0   }// 更新数据,推送等
}
 关联系统

这个系统算是所有系统的基础系统,不管是奖励的发放、还是其它业务,都是通过背包来工作的,但是不建议所有系统跟背包进行强关联,否则系统后期会很难维护,就像我们前期为了省事,考虑可能出现的各种交易,将所有的系统DbId跟背包关联,导致后期背包中存在很多无用的数据,而且一个数据存储在两个地方,本身就是违背设计的,但是由于各种原因,我们还是做了,希望大家做的时候想清楚,当然如果遇到一个喜欢应付的合作对象,你会发现,不管你怎样说他总有理由 ^ ^

奖励可以参考下面的链接

奖励Reward系统设计-CSDN博客  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/231282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lua语法

lua语法 1.lua数据类型 lua 脚本输出乱码,将lua脚本改为UTF-8编码,并且需要DOS下修改代码页:CHCP 65001 即可。 基本语法 注释 print("script lua win")-- 单行注释--[[多行注释]]--标识符 类似于:java当中 变量、…

新建vue3项目

三种方法 一. 第一种方式 1、操作步骤: 创建项目目录 vue create 项目名称选择配置方式 ? Please pick a preset: #选择一个配置 Default ([Vue 3] babel, eslint)Default ([Vue 2] babel, eslint)Manually select …

Python:(Sentinel-1)如何解析SNAP输出的HDF5文件并输出为GeoTIFF?

博客已同步微信公众号:GIS茄子;若博客出现纰漏或有更多问题交流欢迎关注GIS茄子,或者邮箱联系(推荐-见主页). Python:(Sentinel-1)如何解析SNAP输出的HDF5文件并输出为GeoTIFF? 01 前言 最近…

Spring之容器:IOC(1)

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

【Android Studio】各个版本下载地址

下载地址: https://developer.android.com/studio/archive?hlzh-cn

java期末大作业(星辰对决--五子棋AI)

星辰闪耀星空棋,璀璨洒满宇宙间。 Java编织智慧谱,FindYou翩舞奇妙规。 黑白对弈纵横展,人机较量激荡心。 星光指引胜利路,创造奇迹指尖舞。 代码: 等改好了再放上来 效果图: 日志: 2023/12/17 今天去网上学了一下AI下五子棋…

el-table表格中数据过长如何使用省略号

前提问题:当表格中某一个数据过长,不需要气泡提示,需要省略号显示解决过程:使用el-table时,el-table-column自带show-overflow-tooltip属性可以将不完全展示的内容通过气泡提示进行展示:show-overflow-tooltip"tr…

什么同源策略?

同源 同源指的是URL有相同的协议、主机名和端口号。 同源策略 同源策略指的是浏览器提供的安全功能,非同源的RUL之间不能进行资源交互 跨域 两个非同源之间要进行资源交互就是跨域。 浏览器对跨域请求的拦截 浏览器是允许跨域请求的,但是请求返回…

android 13.0 设置上网应用白名单(上网app白名单)

1.概述 在13.0的产品rom定制开发中,在对产品进行网络模块开发中,有功能需要要求设置某些app可以上网,某些app不可以上网,就是所谓的网络应用白名单功能 接下来就来分析下相关的网络模块,来具体实现相关功能的开发 2.设置上网应用白名单(上网app白名单)核心代码 framewor…

计算机网络(1):开始

计算机网络(1):开始 计算机网络在信息时代中的作用 21世纪的一些重要特征就是数字化、网络化和信息化,是一个以网络为核心的信息时代。要实现信息化就必须依靠完善的网络,因为网络可以非常迅速地传递信息。因此网络现…

人工智能原理课后习题(考试相关的)

文章目录 问答题知识表示一阶谓词逻辑表示法语义网络表示法 确定推理谓词公式永真和可满足性内容归结演绎推理 不确定推理主观贝叶斯可信度方法证据理论 搜索策略机器学习 问答题 什么是人工智能? 人工智能就是让机器看起来像人类表现出的智能水平一样 人工智能就是…

ElasticSearch单机或集群未授权访问漏洞

漏洞处理方法: 1、可以使用系统防火墙 来做限制只允许ES集群和Server节点的IP来访问漏洞节点的9200端口,其他的全部拒绝。 2、在ES节点上设置用户密码 漏洞现象:直接访问9200端口不需要密码验证 修复过程 2.1 生成认证文件 必须要生成…

Multimodal Chain-of-Thought Reasoning in Language Models语言模型中的多模态思维链推理

Abstract 大型语言模型 (LLM) 通过利用思维链 (CoT) 提示生成中间推理链作为推断答案的基本原理,在复杂推理方面表现出了令人印象深刻的性能。然而,现有的 CoT 研究主要集中在语言情态上。我们提出了 Multimodal-CoT,它将语言(文本…

c++期末复习总结语言基础

常用的输出设置 dex十进制、oct八进制、dec十六进制 语法cout<<hex<<17; 浮点数精度 Steprecision(n)n代表有效位数&#xff0c;包括小数和整数 Setw(n) n是输入数据占用屏幕的宽度的字符个数&#xff0c;输入数据默认右对齐 设置对齐方式 Setiosflags(ios:ri…

unity—UGUI 点击按钮后,持续点击空格键会持续出发按钮

在unity开发当中&#xff0c;使用UGUI开发&#xff0c;无论是你代码绑定按钮事件&#xff0c;还是在Inspector窗口直接拖拽绑定的事件&#xff0c;点击按钮事件后&#xff0c;按空格键都会再次执行相关的方法。 默认情况下&#xff0c;Unity将空格键映射为UI按钮的Submit提交操…

Python 爬虫之简单的爬虫(二)

爬取百度热搜榜 文章目录 爬取百度热搜榜前言一、展示哪些东西二、基本流程三、前期数据获取1.引入库2.请求解析获取 四、后期数据处理1.获取保存 总结 前言 每次打开浏览器&#xff0c;我基本上都会看一下百度热搜榜。这篇我就写一下如何获取百度的热搜榜信息吧。 如果到最后…

深度学习中的张量是什么意思,为什么要引入张量的概念。

问题描述&#xff1a;深度学习中的张量是什么意思&#xff0c;为什么要引入张量的概念。 问题解决&#xff1a;张量是一种特殊的数据结构&#xff0c;是矩阵的延申。矩阵是一种特殊的张量。 在数学世界中&#xff0c;需要用数据来描述现实世界中的存在的实物&#xff0c;比如用…

最近的进展

几天前&#xff0c;我还在老老实实的写着博客&#xff0c;突然晚上睡了一觉&#xff0c;发现左脚的脚踝特别疼&#xff0c;疼的无法直立行走&#xff0c;我想去医院&#xff0c;但是真的没办法走动&#xff0c;我没办法一个人去医院&#xff0c;这两天才好了一点&#xff0c;那…

C语言之双链表理解与应用

其实网上也有好多关于双链表理解&#xff0c;知乎上同样有写的很好文章。这里主要看双链表概念&#xff0c;应用场景&#xff0c;举例。 &#xff11;&#xff0c;双链表概念 双链表是一种更复杂的线性数据结构&#xff0c;它由一系列节点组成&#xff0c;每个节点包含数据元素…