ioGame 是一个由 java 语言编写的网络游戏服务器框架。支持 websocket、tcp ,适用于全球同服、回合制游戏、策略游戏、即时战斗等游戏服务器的开发。具有高性能、稳定、易用易扩展、超好编程体验等特点。可做为 H5、手游、端游的 java 游戏服务器。
ioGame 是轻量级的网络游戏服务器框架,在使用 ioGame 时,只需一个依赖即可获得整个框架,而无需在安装其他服务,如: Nginx、Redis、MQ、Mysql、ZooKeeper、Protobuf协议编译工具 ... ...等。简单点说,就是无需安装其他产品,就能支持开头介绍的内容特性;这意味着在使用上简单了,在部署上也为企业节约了成本。
通过 ioGame 你可以很容易的搭建出一个稳定、高性能、自带负载均衡、避免类爆炸设计、可跨进程跨机器通信、集群无中心节点、集群自动化、有状态多进程的分步式网络游戏服务器。游戏框架借助于蚂蚁金服 sofa-bolt 通信框架来提供通信方面的稳定与高性能。
ioGame 在打包、内存占用、启动速度等方面也是优秀的。打 jar 包后大约 15MB,应用通常会在 0.x 秒内完成启动,内存占用小。详细请看 快速从零编写服务器完整示例。
在 ioGame 中能让你遗忘 Netty,你几乎没有机会能直接的接触到 Netty 的复杂,但却能享受 Netty 带来的高性能。对开发者要求极低,为开发者节约开发时间。
即使之前没有游戏编程的经验,也能参与到游戏编程中。如果你之前具备一些游戏开发或者 webMVC 相关的知识,则会更容易上手游戏服务器的开发。
ioGame 可以做到同样的一套业务代码,无需开发者做代码的变更,就能同时支持多种通信协议:websocket、socket。简单点说,就是一个游戏服务端的项目,具有同时对接 socket 和 websocket 游戏客户端的能力。
ioGame 可以做到同样的一套业务代码,无需开发者做代码的变更,就能支持多种协议的切换,如:protobuf、json。协议的切换是简单的,只需要一行代码。简单点说,如果开发者的项目之前使用的是 json 数据来传输的,以后想改用 protobuf 来传输,是不需要改变业务方法的。框架除了内置支持的 protobuf、json 协议外,开发者还可以对协议进行扩展。
开发者基于 ioGame 编写的项目、模块通常是条理清晰的,得益于框架对路由的合理设计。当我们整理好这些模块后,对于其他开发者接管项目或后续的维护中,会是一个不错的帮助(模块的整理与建议)。
基于 ioGame 编写的项目,通常是语法简洁的、高性能的、低延迟的。框架最低要求使用 JDK17,这样即可以让项目享受到 ZGC 带来的改进,还能享受语法上的简洁。从 JDK17 开始 GC 已经处理得越来越好了,JDK17 中的 ZGC 远低于其亚毫秒级暂停时间的目标;当开发者使用 JDK17 时,相当于在你们的项目中变相的引入了一位 JVM 调优大师,详细请看 JDK17 垃圾回收GC性能飞跃提升。
在部署上,支持多服单进程的方式部署(类似单体应用、在分步式开发时,调试更加方便)、也支持多服多进程多机器的方式部署。在部署方式上可以随意切换,而不需要更改代码;日常中按照单体思维开发,在生产上可以使用多进程的方式部署;当然,也可以使用单进程的方式部署。
ioGame 框架职责清晰、业务开发几乎零学习成本、源码有高质量注释、示例多、使用文档多,开发体验最佳、业务代码自动生成与游戏前端对接的文档、逻辑服之间可跨进程跨机器通信、业务代码定位--神级特性、异常机制。提供了丰富的在线高质量使用文档,为你的团队助力,带上你们的小伙伴一起,这样就不用手把手的教了。
代码即文档,对于这方面 ioGame 提供了游戏文档生成的辅助,通过该辅助可以做到代码即对接文档。简单的说,当开发者的业务代码编写完后,不需要额外的去编写业务对接文档了,框架会自动的生成最新的文档。如果没有游戏文档的生成,那么你将要抽出一些时间来维护对接文档的工作,而且当团队人数多了,就会很乱(文档不同步、不是最新的、或是忘记更新等等情况就会出现)。
ioGame 可以很方便的与 spring 集成(5 行代码)。
综上,ioGame 屏蔽了很多复杂且重复性的工作;超棒的开发体验,使用简单,无中间件依赖,只需一个依赖即可获得整个框架;减少了学习成本、减少了使用成本、减少了开发者的工作量、减少了项目的运维成本。并可为项目中的功能模块结构、开发流程等进行清晰的组织定义,减少了后续的项目维护成本。从而让开发团队更方便快捷高效的开发游戏项目。