Cocos独立游戏开发框架(二十):协议管理器

引言

本系列是《8年主程手把手打造Cocos独立游戏开发框架》,欢迎大家关注分享收藏订阅。

本文重点给大家展示一下有协议管理器和没有协议管理器的区别,并且从零开始构建一个协议管理器。

本文源码和源工程在文末获取,小伙伴们自行前往。

什么是协议管理器?

在游戏开发中,"协议" 通常指的是通信协议或网络协议。这是一种规定了在游戏客户端和服务器之间进行通信时,如何封装和解释数据的约定或规则。游戏中的协议用于确保不同组件、客户端和服务器之间可以正确地发送、接收和解释数据,以便协同工作并保持游戏的一致性和可玩性。

顾名思义,协议管理器是一种用于处理网络通信和数据交换的关键组件。它主要用于管理游戏客户端和服务器之间的通信协议,以确保数据的可靠传输和正确处理。

协议管理器的主要作用和功能

以下是协议管理器在游戏开发中的主要作用和功能:

  1. 协议封装和解析:协议管理器负责将游戏中的数据和消息封装成网络协议的格式,以便发送到服务器或其他客户端。它还能够解析从服务器或其他客户端接收到的协议,以将其转换为游戏中可用的数据格式。
  2. 协议发送和接收:协议管理器处理协议的发送和接收。它负责将封装好的协议数据发送到服务器,并监听来自服务器或其他客户端的协议消息,以及时响应和处理它们。
  3. 协议版本控制:在游戏开发中,协议通常会不断地发生变化。协议管理器可以管理不同版本的协议,以确保不同版本的客户端和服务器之间的兼容性。
  4. 错误处理和重试:协议管理器通常包括错误处理机制,以便在网络故障或服务器错误的情况下进行适当的处理。它可以支持重试机制,以确保协议的可靠传输。
  5. 协议分组和优先级:在复杂的游戏中,可能有多种类型的协议需要处理。协议管理器可以将协议分组,以便按照一定的优先级顺序处理不同类型的协议。
  6. 事件触发:一些协议管理器还支持事件机制,使得游戏代码可以订阅和响应特定协议事件,以便更灵活地处理协议消息。
  7. 协议压缩和加密:对于需要保护数据安全性的游戏,协议管理器可以支持协议数据的压缩和加密,以防止数据泄露或篡改。
  8. 性能优化:在处理大量协议消息时,协议管理器需要进行性能优化,以确保游戏的性能不受太大影响。

协议管理器在多人在线游戏、实时多人对战游戏、社交游戏和任何需要网络通信的游戏中都扮演着关键角色。它们有助于简化复杂的网络通信流程,提高代码的可维护性,确保游戏的稳定性和可玩性。不同游戏引擎和框架可能有不同的实现方式,但它们的核心功能通常是相似的。

没有协议管理器的情况

1.糟糕的代码

下面是一个示例,展示了没有协议管理器的情况下,发送协议到服务器和从服务器接收协议的糟糕代码:

Cocos独立游戏开发框架(二十):协议管理器_第1张图片

2.测试

编写一个简单Http服务器。

Cocos独立游戏开发框架(二十):协议管理器_第2张图片

启动服务器。

Cocos独立游戏开发框架(二十):协议管理器_第3张图片

编写测试代码。

Cocos独立游戏开发框架(二十):协议管理器_第4张图片

服务器接收到请求并返回结果。

Cocos独立游戏开发框架(二十):协议管理器_第5张图片

前端接收到服务器的返回结果。

3.存在问题

上述代码存在以下问题:

  1. 协议发送和接收逻辑散落在不同的函数中,使代码难以维护和理解。
  2. 没有良好的结构来处理不同类型的协议,需要手动检查协议类型。
  3. 没有错误处理机制,无法有效地处理协议发送或接收过程中的错误。
  4. 不利于代码扩展和维护,随着协议数量的增加,代码会变得更加混乱。

使用协议管理器可以解决上述问题,将协议发送和接收逻辑以及处理逻辑集中到一个地方,提高代码的可读性、可维护性和扩展性。

构建协议管理器

1.构建ProtocolManager

构建协议管理器单例类。

Cocos独立游戏开发框架(二十):协议管理器_第6张图片

2.添加发送和接受的方法。

发送协议。

Cocos独立游戏开发框架(二十):协议管理器_第7张图片

接收协议。

Cocos独立游戏开发框架(二十):协议管理器_第8张图片

3.编写测试代码。

Cocos独立游戏开发框架(二十):协议管理器_第9张图片

4.测试结果

测试结果与上面无协议管理器一致。

5.优点

在上述代码中,我们创建了一个 ProtocolManager 类,该类包含了发送协议到服务器和处理服务器响应的方法。使用协议管理器的好处包括:

  1. 协议发送和接收逻辑以及处理逻辑集中在一个类中,提高了代码的可维护性和可读性。
  2. 不需要手动检查协议类型,协议管理器负责根据协议名称调用相应的处理方法。
  3. 可以添加错误处理机制,以更好地处理协议发送或接收过程中的错误。
  4. 代码扩展和维护更加容易,无论协议数量如何增加,代码仍然保持清晰。

虽然引入了协议管理器,但感觉还是差点,下面我们来升级一下。

升级协议管理器

1.改进协议管理器

加入注册协议处理函数。

Cocos独立游戏开发框架(二十):协议管理器_第10张图片

2.编写测试代码

Cocos独立游戏开发框架(二十):协议管理器_第11张图片

3.测试结果

测试结果与上面都一致。

4.改进的重点

在这个升级版本的协议管理器中,我们引入了以下改进:

  1. 注册协议处理函数:协议管理器允许注册不同协议的处理函数,这样您可以在需要时更灵活地处理不同类型的协议。
  2. 使用回调函数处理协议:协议管理器在接收服务器响应时,使用注册的协议处理函数来处理不同类型的协议。这种方式更加灵活,可以根据协议名称执行不同的处理逻辑。

还有更高级的协议管理器吗?

当涉及到更高级的协议管理器时,您可以进一步增强其功能,以适应复杂的游戏开发需求。以下是一些进一步的提升:

  1. 协议分组和优先级:您可以为协议添加分组和优先级,以确保不同类型的协议按照一定的顺序处理。这可以通过使用多个协议处理队列和优先级队列来实现。
  2. 协议过滤器:引入协议过滤器,可以在处理协议之前或之后进行额外的逻辑检查,例如权限验证或数据过滤。
  3. 事件机制:结合事件机制,使协议处理变得更加响应式,当协议到达时,触发相应的事件,允许其他部分的代码订阅和响应这些事件。
  4. 自动化协议生成:创建工具,使协议的定义和生成更加自动化,以减少手动编写协议的工作量。
  5. 协议版本控制:为协议添加版本控制,以确保不同版本的客户端和服务器之间的兼容性。
  6. 错误处理和重试机制:引入更复杂的错误处理和重试策略,以应对网络故障或服务器错误。
  7. 协议压缩和加密:添加协议压缩和加密层,以提高协议的安全性和性能。
  8. 性能优化:对协议管理器进行性能优化,以应对高并发和大规模协议传输的需求。

这些高级功能将根据项目的需求而异,但它们可以提供更大的灵活性、可维护性和可扩展性,以满足复杂游戏项目的要求。要实现这些功能,通常需要更多的时间和资源,但它们可以显著提高游戏开发的效率和质量。小伙伴们可以自行实现一下。

总结

本文的重点内容主要有以下几点,不知道小伙伴们是否已经理解:

  • 本系列是《8年主程手把手打造Cocos独立游戏开发框架》,欢迎大家关注分享收藏订阅。
  • 协议管理器的简介、主要作用和功能。
  • 有无协议管理器的对比。
  • 协议管理器的升级。
  • 源码通过关注“亿元程序员”发送"ProtocolManager"获取。

AD:笔者已经上线的小游戏《贪吃蛇掌机经典》《填色之旅》《重力迷宫球》大家可以自行点击搜索体验。

感兴趣的小伙伴记得关注"亿元程序员"哦,一位有着8年游戏行业经验的主程。学习游戏开发不迷路。感谢您的关注,希望能给到您帮助, 也希望通过您能帮助到大家。

喜欢的可以点个、点个在看哦!请把该文章分享给你觉得有需要的其他小伙伴。谢谢。

你可能感兴趣的:(Cocos独立游戏开发框架(二十):协议管理器)