背包系统设计问题

news/2024/5/18 14:45:23 标签: 游戏程序, 服务器

概述 

由于业务需要,灵活的,交易等原因,目前我们将很多不属于背包的功能放入背包,起初感觉这样省了不少事情,很多东西的获取直接走背包就好,不用添加任何协议。

问题

1.定点恢复的功能,需要再玩家上号时全部更新掉,而且无法知道客户端什么时候需要真正的数据,造成服务器在登陆前期、和特定恢复时间点出现大量无效的处理流程。

2.另外就是时间的问题,有些几分钟恢复的功能,使用道具(道具不会出现分数),可能出现一定的误差,时间需要精确把握(比如还差一秒恢复一滴,那个就需要将时间做特殊处理)。

3.无法重用已有的数据(count = 0的数据),由于,许多模块,根据新的DbId去处理流程,导致,原本相同ItemId的物品不能被重用,数据库,一直在产生无效数据,特别是我们将词条相关的也放入背包,当词条被销毁时,对于背包来说,就是数量没有了,而实际的情况时,这个词条不能再被用了,面对类似这种情况,加了许多特殊处理。

4.背包模块越来越臃肿,常见的游戏一般会有背包的数量限制,如果背包融合了许多其它的功能,就很难再做限制。

物品堆叠

在这个问题上,我们支持三种:可堆叠;不可堆叠,新数据固定数量不可堆叠

背包数据过多问题

由于背包数据太多,查证后,发现是配表方式有问题,对于一个道具需要加1000个来表示,某一属性的提升值,这个本身就是“不可堆叠的”,由于这类东西存在单独升级的流程,又不能合在一起,我们的策略是,当加的时候,如果是一起加的,直接将数量固定下来,后面不允许改变,这个就是上面说的 “新数据固定数量不可堆叠”。我想这样只是减少一部分集中添加的数据量,其实根本的解决办法,就是将这类移除背包,另开系统处理。

物品大类小类

由于没有将物品的 大类、小类放入数据库,所以获取数据时,只能先将数据全部加入内存,分类获取。

无法分类加载解决办法 

1.将ItemId 和 MainType, SubType 导入数据库表,在查询时,连表查询。

这样做的话 存在需要维护数据库表的负担

2.根据配表,获取ItemId 去数据库 IN 先关物品

可能导致发送的IN数据过多,很多时候大部分都找不到


http://www.niftyadmin.cn/n/5109398.html

相关文章

Spring中配置文件参数化

目录 一、什么是配置文件参数化 二、配置文件参数化的开发步骤 一、什么是配置文件参数化 配置文件参数化就是将Spring中经常需要修改的字符串信息&#xff0c;转移到一个更小的配置文件中。那么为什么要进行配置文件参数化呢&#xff1f;我们看一个代码 <bean id"co…

高速DSP系统设计参考指南(六)锁相环(PLL)

&#xff08;六&#xff09;锁相环&#xff08;PLL&#xff09; 1.模拟锁相环2.数字锁相环3.PLL隔离技术 系统设计人员需要隔离PLL&#xff0c;使其免受内部和外部噪声的影响。PLL通常用作频率合成器&#xff0c;将输入时钟乘以一个整数。该整数是反馈计数器M除以输入计数器N的…

AWS SAP-C02教程9-节省成本

SAP-C01变成SAP-C02的时候,最大的变化就是没有把成本单独列出一个模块,但是成本依然包含在各个其它模块之中,所以成本还是很重要的。本章将列举一些成本优化方案以及一些成本辅助功能。 目录 1 Cost Allocation Tags2 Trusted Advisor2.1 AWS Support Plans2.2 基本特性2.3…

系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第二部分:CI CD、设计模式、数据库

本心、输入输出、结果 文章目录 系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第二部分&#xff1a;CI CD、设计模式、数据库前言CI/CD第 1 部分 - 带有 CI/CD 的 SDLC第 2 部分 - CI 和 CD 之间的区别第 3 部分 - CI/CD 管道 Netflix Tech Stack &#xff08;CI/CD Pip…

漏刻有时地理信息系统LOCKGIS小程序配置说明(web-view组件、服务器域名配置、复制链接和转发功能)

漏刻有时地理信息系统说明文档(LOCKGIS、php后台管理、三端一体PC-H5-微信小程序、百度地图jsAPI二次开发、标注弹窗导航)漏刻有时地理信息系统LOCKGIS小程序配置说明(web-view组件、服务器域名配置、复制链接和转发功能)漏刻有时地理信息系统LOCKGIS主程序配置说明(地图调起弹…

设计模式_备忘录模式

备忘录模式 介绍 设计模式定义案例问题堆积在哪里解决办法备忘录模式行为型模式&#xff0c; 保存了数据某一个时间点的状态 在需要的时候进行回档单机游戏的角色 数据保存并且回档保存和回档加一个状态管理类 类图 代码 MomentData using UnityEngine;public class MomentD…

python代码书写规范和严格缩进问题,nginx 502 Bad Gateway

python的代码书写规范为什么要单独放在一个章节来写呢&#xff1f;先说说鄙人的一个因为书写代码规范错误而导致的服务器奔溃的经历吧。 nginx 502 Bad Gateway 鄙人之前有一个网站&#xff0c;做机器学习查询的&#xff0c;就是自己统计样本、训练模型&#xff0c;然后与Dja…

如何实现存量业务的基础设施导入Kubevela+Terraform

由于我们的使用场景是将基础设施资源定义成KubeVela的组件,一个terraform “module”对应的就是一个kubevela的组件,对应terraform-controller的一个Configuration资源。因此导入的最小粒度是组件,即一个terraform “module”。 Terraform的terraform import terraform原生…