玩家数据和活动数据的修改、保存、删除

本文介绍了一种游戏数据管理流程,包括玩家数据的修改、删除及活动数据的增删改查等操作。通过使用hash_map存储玩家信息,实现高效的数据保存与检索。并详细解释了数据的保存与删除机制,确保数据的准确性和一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

玩家数据的修改
1、玩家发来的事件处理完完成后,
2、会保存玩家的UID(map《int64, bool》 m_mapUserSave)(表示这个玩家更新了数据),
3、保存玩家数据
3.1然后去从hash_map 《int64, User*》 & mapUsers找到玩家的数据,进行保存
3.2清除第二步中的玩家信息。
4、保存完成后,
添加该玩家的uid到清除容器中map《int64,bool》 m_mapUserRemove,目的是假设清除改玩家的数据

玩家数据的删除
遍历上述第4部中的假设需要清除的玩家UID,
判断真正是否需要删除玩家数据
判断的条件有,
1、所有玩家信息中hash_map《int64, User*》 & mapUsers没有找到该玩家 ,或者改玩家指针为NULL,那么就进行删除
2、找到玩家信息后,发现在线(bool falge)那么不会删除
3、不在线,并且玩家有需要保存的数据,那么就不会删除
4、不在线,并且玩家没有要保存的数据,并且未到删除的时间(玩家的事件处理完毕后,设会记录时间戳,如果这段时间玩家掉线,不会删除玩家数据,以便于玩家网络不好频繁连接游戏时,可以像没有掉线一样重新获得数据,如果删除数据,那么会冲重新加载玩家数据,比较耗时,游戏体验很差)

活动数据的增删该查
我司的数据采用key—value的形式进行保存,
程序启动时,会加载数据,保存到容器当中,
1、当有新增或者删除数据时。
1.1会修改容器中的数据
1.2 同时更新到数据库
数据库的更新机制,采用定时更新,而不是马上更新,这样可以均匀的保存,不至于同一时间需要保存很多数据,反正有信号机制保证服务器在挂掉的时候,进行保存。

2、当有查询数据时,直接从容器中查找,而不是从数据库中查找,这样做的目的是,从容器中查找,一般是map中查找非常迅速,并且容器中的数据和数据库中的数据是一样的。

玩家的保存和删除都是放入到定时中处理的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值