快速从零编写服务器完整示例

快速从零编写服务器完整示例

生态整合方面,ioGame可以轻松与spring集成(5行代码); 除了spring之外,还可以与任何其他框架集成,比如solo...等,从而利用其他框架的相关生态。

轻量级方面,ioGame可以支持集群和分发,无需依赖任何第三方中间件或数据库,只需要Java环境即可运行。 这意味着使用更加简单,降低了企业的部署成本和维护难度。 使用ioGame时,只需要一个依赖即可获取整个框架,无需安装其他服务,例如:Nginx、Redis、MQ、Mysql、ZooKeeper、Protobuf协议编译工具...等。

在通信方式上,大多数框架只能支持推送(广播)通信方式; ioGame提供了5种通信方式,包括单个请求处理、推送以及单个逻辑服务器之间的相互通信。 ,相互通信并与多个相同类型的逻辑服务器进行脉冲通信。 通过各种通信方式的组合使用,过去难以完成的任务可以轻松完成,而且这些通信方式都支持跨进程、跨机器通信。

在连接方式方面,ioGame允许开发者使用一套业务代码游戏开发素材,无需任何修改即可支持多种连接方式。 ioGame已经支持TCP、WebSocket和UDP连接方式,并且还支持这些连接方式之间的灵活切换。 连接方式是可扩展的,扩展操作也非常简单,这意味着如果以后支持KCP,无论你当前的项目是使用TCP、WebSocket还是UDP,都可以切换到KCP; 请注意,即使切换到 KCP,连接方法和现有业务代码也不需要更改。

在通信协议方面,ioGame可以让开发者通过一套业务代码,轻松切换和扩展不同的通信协议,比如Protobuf、JSON等。 只需一行代码,您就可以在不改变业务方式的情况下从 Protobuf 切换到 JSON。

集群方面,ioGame的Broker(游戏网关)采用中心节点、自动化集群设计。 所有节点都是平等且自治的,并且不存在单点故障。 集群可以自动管理和弹性扩展。 当节点加入或退出时,可以自动保证负载均衡和数据一致性,而不影响服务可用性。

在分布式方面,ioGame的逻辑服务器采用分布式设计思想,将服务器分为游戏外部服务器、游戏逻辑服务器等不同层次,每一层都有明确的职责和接口。 这样可以提高代码的可读性和可维护性,并且方便横向扩展。

从学习成本上来说,ioGame的学习成本很低。 可以说是零学习成本。 即使您没有游戏编程经验,也可以轻松上手。 开发者只需要掌握常用的Java方法或者webMVC相关知识,就可以使用该框架进行业务开发。 该框架不需要开发人员改变他们的编码习惯,而是根据开发人员的需求进行自我调整。

在同进程亲和性方面,同一进程内不同Netty实例之间的通信通过内存传输,无需网络传输,数据传输速度极快。 同进程亲和是指同一进程内的游戏逻辑服务器优先访问。 当同一进程中没有可以处理该请求的游戏逻辑服务器时,它会在其他进程或机器中寻找可以处理该请求的游戏逻辑服务器; 简单来说,框架对请求的处理非常智能,会优先考虑同一进程中的逻辑服务器进行消费。

在开发体验方面,ioGame非常重视开发者的开发体验; 框架提供了JSR380验证、断言+异常机制、业务代码定位...等丰富的功能音乐音效,让开发者的业务代码更加清晰明了。 简洁的;

在业务并发方面,框架为开发者解决了单个玩家的并发问题网络游戏 开发,也为同一个房间或业务的多个玩家的并发问题提供了解决方案; 框架对线程可扩展性提供友好的支持,并且不仅仅提供严格的线程数量设置; 请参阅 ioGame 线程了解详细信息。

从分布式开发经验来看,开发分布式应用时通常需要启动多个进程。 这会让调试和排查问题变得非常困难,从而降低开发者效率、增加工作量等。这也是很多框架无法解决的问题,但ioGame做到了! ioGame支持多服务器、单进程的启动方式,方便开发者开发和调试分步系统。

在与前端对接联调方面,ioGame提供了生成游戏文档的辅助功能,让代码可以对接文档。 简单来说,当业务代码编写完毕后,框架会自动生成最新的文档。 如果没有生成游戏文档,那么你就得花一些时间编写和维护对接文档。 而且,当团队人数增多时,文档就会变得杂乱、不同步、不是最新的、忘记更新。 。

部署方面,ioGame支持多服务器、单进程部署,以及多服务器、多进程、多机器部署; 无需修改代码即可随意切换部署方式。 在日常生活中,我们可以按照单体思维进行开发,而在生产中,我们可以选择使用多进程部署。

在模拟客户端测试方面,ioGame提供了压力测试和模拟客户端请求模块。 该模块用于模拟客户端,简化模拟工作量。 只需要编写相应的请求和回调即可。 除了模拟简单的请求外,一般还可以进行一些复杂的请求编排,支持复杂服务的压力测试。 模拟测试过程是交互式的,但也支持测试自动化。 与单元测试不同的是,该模块可以模拟真实的网络环境,模拟测试时与服务器的交互是可持续的、交互式的。

从架构灵活性上来说,ioGame的架构由三部分组成:1.游戏外部服务器,2.Broker(游戏网关),3.游戏逻辑服务器; 三者可以相互独立,也可以相互结合。 因此,使用ioGame几乎可以满足任何部署方式并根据您的需求适配不同类型的游戏,并且在ioGame中完成这些任务很简单。

开发者基于ioGame编写的项目模块通常清晰、条理清晰,这得益于框架对路由的合理设计,同时也为路由提供了优雅的访问控制。 当我们把这些模块组织起来之后,对于其他开发者接手项目或者后续的维护(模块组织和建议)都会有很好的帮助。 也许现阶段你还感受不到这的威力。 随着您更深入地使用它,您将意识到这种设计的许多好处和优点。

开发者基于ioGame编写的项目通常语法简洁、高性能、低延迟; 该框架至少需要JDK17,这样项目才能享受ZGC带来的改进,享受语法的简洁性。 从 JDK17 开始,ZGC 远低于其亚毫秒暂停时间的目标,清理多余的内存而不影响游戏速度。 这样就不会出现卡顿或者崩溃的问题,相当于变相的在项目中引入了一个JVM调优高手。 详细信息请参见JDK 17垃圾收集GC性能改进。

综上所述,ioGame是一个非常适合网络游戏开发的框架。 它允许您轻松创建高性能、低延迟且易于扩展的游戏服务器,同时节省时间和资源。 如果您想快速开发出精彩的网络游戏,请立即选择ioGame! 框架屏蔽了很多复杂、重复的工作,可以清晰地组织和定义项目中的功能模块结构、开发流程等,减少后续的项目维护成本。

该框架在开发、部署、压测&模拟测试等各个阶段都提供了良好的支持,相信您已经对ioGame有了初步的了解。 虽然还有很多丰富的功能和特性没有介绍,但是可以通过后续的实践来进一步了解。 感谢您的阅读网络游戏 开发,并期待您使用ioGame构建自己的游戏服务器。

文章来源:https://www.oschina.net/news/251980