通信与协议Netty+Protobuf-游戏设计与开发

通信与协议Netty+Protobuf-游戏设计与开发,第1张

1、背景

弄这个东东,主要想探索下元宇宙中的数字人(AI)领域和游戏领域结合的平行世界到底怎么玩?特别是高性能游戏服务器框架设计

元宇宙安全设计-技术人产品思维修炼(9)_luozhonghua2000的博客-CSDN博客

2、传统逻辑架构

2.1、消息流程:
客户端 -> Protobuf封装游戏数据 -> 打包成自定义数据包Packet -> 编码器将Packet编码为二进制字节流Bytebuf -> 发送给服务端 -> 服务端 -> 收到二进制字节流Bytebuf解码为Packet -> 服务端业务处理handler根据Packet协议号和Protobuf协议文件取出相应的请求数据进行游戏逻辑处理 -> 下发协议给客户端

 2.2、protobuf生成协议代码,这个重要,没有这个协议代码是无法完成通信数据交换的

各rpc协议汇总对比,游戏领域的应用肯定是跨语言的,特别是通信,除了游戏,工业,IOT,元宇宙,数字人等领域需要集成的都需要考虑跨语言

生成参考:

除了这个,代码没啥可将的,都很基础,最后会附上代码,提供大家了解。

3、验证

 

3.1、通信代码

client钩子

	@Override
	public void channelActive(ChannelHandlerContext ctx) throws Exception {
		if (NettyTcpClient.instance().getChannel() != null) {
			NettyTcpClient.instance().getChannel().disconnect();
		}
		NettyTcpClient.instance().setChannel(ctx.channel());
		System.out.println("登录  " + ctx.channel().remoteAddress().toString().replace("/", "") + "  成功");
	}
server钩子
public void channelActive(ChannelHandlerContext ctx) throws Exception {
    super.channelActive(ctx);
    
    log.info("[{}] connected", ctx.channel().remoteAddress());
    System.out.println("----channel:"+ctx.channel());
    ref.put(ctx.channel(), ctx.channel());
}

通信与协议Netty+Protobuf-游戏设计与开发(1)配套代码-Java文档类资源-CSDN下载

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/759273.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-01
下一篇 2022-05-01

发表评论

登录后才能评论

评论列表(0条)

保存