IO游戏设计思路

1、TCP ,UDP ,KCP ,QUIC

TCP 协议最常用的协议

UDP协议非常规的协议,因为需要在线广播,貌似运营商会有一些影响

KCP 基于UDP的协议,GitHub - l42111996/java-Kcp: 基于java的netty实现的可靠udp网络库(kcp算法),包含fec实现,可用于游戏,视频,加速等业务,暂时看中了这个,后面研究下。

QUIC 谷歌基于UDP的协议,实现过于厚重,放弃

基于UDP被运营商管制的原因,暂时先用选择TCP

2、架构设计

架构设计基本上还是常规的房间服 做所有的战斗逻辑

game服,承载常规的业务逻辑

为了能多承载一些用户,可以增加一个gate服,承载连接

中规中矩,没什么亮点

3、设计细节

3.1 游戏架构大纲

服务端技术底层:Springboot + Netty + Disruptors + Akka + protobuf 

移动逻辑使用帧同步,同步频率 60/s ,可适当降低频率

客户端可以做一些预测移动

房间内移动的对象有,玩家,敌人,子弹等,可以抽象出一类移动的物品

其他的战斗逻辑可以使用状态同步

3.2 游戏通信流程

登录流程:

客户端连接gate服务器之后,远程调用Game服登录,加载玩家数据到内存

通信流程:

客户端发送消息到gate服之后,Gate根据消息类型转发到对应的服务器,如果是Game服的消息转发到Game,否则转发到Room服

战斗流程

线上匹配进入向Room服发送创建请求,创建完成之后同步玩家数据到room服,并设置room为ready状态,发送个客户端,接着进入战斗状态

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

增强版 Kimi:AI 驱动的智能创作平台,实现一站式内容生成(图片、PPT、PDF)!

前言 基于扣子 Coze 零代码平台,我们从零到一轻松实现了专属 Bot 机器人的搭建。 AI 大模型(LLM)、智能体(Agent)、知识库、向量数据库、知识图谱,RAG,AGI 的不同形态愈发显现,如何…

GEO数据挖掘-PCA、差异分析

From 生物技能树 GEO数据挖掘第二节 文章目录 探针注释自主注释流程(了解)PCA图、top1000基因热图探针注释查看示例代码 top 1000 sd 热图离散基因热图,top1000表达基因,只是看一下,不用放文章里 差异分析火山图差异基因热图转换id富集分析-K…

安装mpi4py与dlio_profiler_py的总结

安装mpi4py mpi4py是一个Python库,它提供了与MPI(Message Passing Interface)兼容的接口,使得Python程序能够利用MPI实现并行计算。mpi4py 的核心是基于MPI标准的C/C实现,它能够在高性能计算环境下进行高效的并行处理…

网页版收银系统比安装板收银系统的四大优势

在当今竞争激烈的零售市场中,高效的收银系统对于连锁实体店的管理至关重要。随着科技的不断发展,网页版收银系统成为越来越多零售企业的首选。网页版收银系统以其灵活性、可定制性和便利性,成为现代零售业的利器。本文将探讨网页版收银系统相…

pycharm 关闭项目卡死

PyCharm2023.3.4 关闭一直卡在 closing projects 解决办法: 打开PyCharm, 选择 Help -> Find Action -> 输入 Registry -> 禁用ide.await.scope.completion

MYSQL 集群

1.集群目的:负载均衡 解决高并发 高可用HA 服务可用性 远程灾备 数据有效性 类型:M M-S M-S-S M-M M-M-S-S 原理:在主库把数据更改(DDL DML DCL)记录到二进制日志中。 备库I/O线程将主库上的日志复制到自己的中继日志中。 备库SQL线程读取中继日志…

51cto已购买的视频怎么下载到电脑上?

在数字学习的浪潮中,51CTO已成为众多专业人士和爱好者的知识宝库。但购买了视频课程后,如何将其下载到电脑上以便离线学习呢?这不仅是技术问题,更是时间管理和学习效率的关键。本文将为您揭示简单而高效的步骤,无论您使…

前端面试项目细节重难点(已工作|做分享)

面试官提问:需求场景:页面上有一个单选框,有是否两个选项:当用户选择是,出现一个输入框,用户可以输入内容,给后端的保存接口传入参数radio和content这两个字段,值分别是用户选项和输…

西门子WINCC8.0VBS脚本学习讲解

WinCC VBS脚本置位/复位/取反 二进制变量 "TAG1_BOOL1" 进行置位复位取反操作 步骤:按钮-->对象属性-->事件-->单击鼠标VBS动作填入代码如下: 对二进制变量进行复位 对二进制变量进行置位 对二进制变量进行取反 VBS脚本数学运算/读写批处理 …

百度智能云参与信通院多项边缘计算标准编制,「大模型时代下云边端协同 AI 发展研讨会」成功召开

1 中国信通院联合业界制定、发布多项标准化成果,推动产业发展 大模型开启了 AI 原生时代,云边端协同 AI 构建了「集中式大规模训练」、「边缘分布式协同推理」新范式,有效降低推理时延和成本,提升数据安全和隐私性,也…

安卓App封装全攻略:利用小猪APP分发提升应用发布效率

在快速迭代的移动应用市场,高效且安全地分发安卓应用程序是开发者面临的一大挑战。安卓App封装技术,作为这一挑战的解决方案之一,不仅能够提升应用的安全性,还能简化分发流程。本文将深入探讨安卓App封装的核心概念,以…

小型发电机不发电原因和解决方法

小型发电机不发电可能由多种原因造成,以下是一些常见原因及其解决方法: 1.电池电量不足:小型发电机通常需要电池来启动。如果电池电量不足,可能导致发电机无法启动。此时,您可以使用充电设备对电池进行充电&#xff0…

2025秋招深度学习基础面试题(一)

01. 卷积和BN如何融合提升推理速度 Conv和BN的融合:在网络的推理阶段,可以将BN层的运算融合到Conv层中,减少运算量,加速推理。本质上是修改了卷积核的参数,在不增加Conv层计算量的同时,略去了BN层的计算量。def fuse_conv_bn(conv, bn):std = (bn.running_var + bn.eps).…

深入解读TuGraph计算引擎模型推理系统

作者:李文凯 TuGraph计算引擎模型推理系统将基于迭代计算的图计算框架与模型推理系统相结合,推理系统可自定义推理依赖环境,图迭代计算与推理链路实现隔离。基于共享内存的跨进程通信方式,提高了推理数据交换效率,满足…

VUE3好看的酒网站模板源码

文章目录 1.设计来源1.1 首页界面1.2 十大名酒界面1.3 名酒新闻界面1.4 联系我们界面1.5 在线留言界面 2.效果和结构2.1 动态效果2.2 代码结构 3.VUE框架系列源码4.源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/detai…

2024/5/22 学习杂记

为什么功率放大电路在模电中经常提到? 模拟信号:它是连续变化的电信号,它在时间上和幅度上都是连续的,能够代表信息的连续变化。大多数物理量为模拟信号,如:温度、压力、流量… 非电物理量通过传感器变换成…

Nginx - 健康检查终极指南:探索Upstream Check模块

文章目录 概述upstream_check_module模块安装和配置指南模块安装步骤基本配置示例详细配置说明检查类型和参数常见问题及解决方案 SSL检查和DNS解析功能SSL检查配置示例和说明配置示例 DNS解析配置示例和说明配置示例 结合实际应用场景的高级配置示例综合SSL检查与DNS解析 总结…

Discourse 中可能使用的 HMAC 算法 Java 实现

在 DiscourseConnect 中,对数据的签名使用的是 HMAC 算法。 实际使用的算法为 HmacSHA256。 Java 生成签名的方法很简单。 String hmac new HmacUtils(HmacAlgorithms.HMAC_SHA_256, "55619458534897682511405307018226").hmacHex(ssoPayload);HmacUti…

robosuite导入自定义机器人

目录 目的:案例一:成果展示具体步骤:URDF文件准备xml文件生成xml修改机器人构建 目的: 实现其他标准/非标准机器人的构建 案例一: 成果展示 添加机器人JAKA ZU 7 这个模型 具体步骤: URDF文件准备 从…