房间(大厅/战斗)服务器的实现
创作时间:
作者:
@小白创作中心
房间(大厅/战斗)服务器的实现
引用
CSDN
1.
https://blog.csdn.net/g369383427/article/details/139991710
房间服务器是游戏开发中的重要组件,负责处理玩家之间的交互和游戏逻辑。本文将详细介绍大厅服务器和战斗服务器的实现原理,包括进入流程、同步方式、核心技术实现、服务器管理以及全球加速方案等多个方面。
房间服务器的实现
介绍
- 大世界/大厅是一个大的房间,持久存在,可以容纳很多玩家(100-3000),玩家可以在这里自由移动,聊天,组队等。
- 战斗房间是一个小的房间,一般是2-100人,玩家在这里进行战斗,比如FPS,MOBA等游戏。
- 源码参考:Room service
房间服务器进入流程
同步方式
- 大厅/大世界:状态同步,因为大厅和大世界属于持久存在的房间类型,帧同步的帧数据量太大,不适合这种场景
- 战斗房间:帧同步,因为战斗房间是短时间内的战斗,帧同步可以保证玩家的操作同步,开发速度快,但是需要考虑同步数据量和延迟问题
核心技术实现
- 碰撞检测和寻路:碰撞检测简单的轴对齐可以使用AABB算法,寻路可以考虑navmesh
- 如果地图很大,人数过多可以采用AOI算法来划分区域,减少同步数据量和计算量。
- AI:如果有NPC,可以使用有限状态机或者行为树来实现
房间服务器管理
- 负载均衡,可以采用etcd/consul/zookeeper等来管理游戏房间服务
- 因为房间服务器一般是有状态的服务,需要把指定玩家路由到指定的服务器上,所以需要实现对应的一致性hash算法
- agones来管理和分配房间服务器(本教程采用的就是这种方式)
- 附加了房间服务的自动扩缩容功能
- 通过配置文件来管理房间服务器生命周期
- 需要基于k8s来部署服务
- openmatch来实现房间的匹配(可选的)
房间服务器的实现
- 一个服务器可以开多个房间,每个房间采用actor模式.
- 每个房间拥有一个主Update循环,用于处理房间内的逻辑和数据同步
- 每个房间管理自己的玩家,NPC,怪物等,相当于一个单线程的游戏服务器
房间服务器的全球加速
房间服务器一般同步数据量比较大,如果玩家分布在全球各地,可能会有较大的延迟,这里可以采用aws global accelerator
这里使用aws官方给的解决方案:
热门推荐
使用GIMP进行图片修复与增强
受损严重的泰安老照片修复有哪些重要步骤
刘德华的鸡蛋吐司引发热议:到底多好吃?
揭秘刘德华64岁仍能连嗨9小时的秘诀:素食+运动+自律
穿针效应:为什么越努力反而越容易失败?
重庆最大废弃游乐园:8亿投资成荒地,小花猫成唯一主人
重庆海陆空大世界:一座废弃游乐园的兴衰史
乳腺癌患者的社交圈:爱与支持的力量
近三成乳腺癌患者延迟就诊,专家呼吁:时间就是生命
北京协和医院专家推荐:乳腺超声筛查助力女性乳腺癌早诊
职场上被领导偏爱是福还是祸?
家庭里的“小偏心”:如何用幽默化解矛盾?
宠溺还是尊重?爱情的甜蜜负担
当爱情遇上现实:如何应对伴侣以经济压力为由推迟婚姻?
春节临近,如何科学避免胖三斤?
减肥路上的心理小妙招:如何保持积极心态
“三减”理念引领健康饮食,科学方法助力维持理想体重
三伏天中医养生法:轻松瘦出理想体重
邯郸初中生杀人案一审宣判:一犯被判无期,引发社会关注
宁波姜山中学名师朱建军教你学好通用技术
宁波市姜山中学:感恩母校行的文化盛宴
广州中心城区,二手房价格,下跌幅度接近30%!
最高12万/㎡!最低不到8千/㎡!广州60+板块房价大起底
闽南姜母鸭:冬日里的暖心滋补
涨停利器的使用方法是什么?这种使用方法的效果如何评估?
打板投资策略解析及其潜在风险分析
怎么才能熟练用Word进行文字排版,看起来很规范和正式
滤镜显示不全?这份解决方案请收好!
广州塔浪漫约会攻略:从450米高空开始的甜蜜之旅
从610米到600米:广州塔的“瘦身”传奇