ioGame 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
ioGame 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
ioGame 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 GPL2.0
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 Web应用开发Web框架
开源组织
地区 国产
投 递 者 渔民小镇
适用人群 未知
收录时间 2022-03-10

软件简介

愿景

让网络游戏服务器的编程变得轻松简单!

ioGame 网络游戏服务器框架简介

  • 无锁异步化、事件驱动的架构设计;轻量级,无需依赖任何第三方中间件或数据库就能支持集群、分布式
  • 通过 ioGame 可以很容易的搭建出一个集群无中心节点、集群自动化、多进程的分步式游戏服务器
  • 包体小、启动快、内存占用少、更加的节约、无需配置文件、提供了优雅的路由访问权限控制
  • 让开发者用一套业务代码,无需任何改动,同时支持多种通信协议:WebSocket、TCP
  • 让开发者用一套业务代码,能轻松切换和扩展不同的通信协议:Protobuf、JSON
  • 近原生的性能;业务框架在单线程中平均每秒可以执行 1152 万次业务逻辑
  • 代码即联调文档、JSR380验证、断言 + 异常机制 = 更少的维护成本
  • 在业务开发中,提供了业务逻辑的执行信息、代码定位与跳转等
  • 架构部署灵活性与多样性:既可相互独立,又可相互融合
  • 可同时与同类型的多个游戏逻辑服通信并得到数据
  • 逻辑服之间可相互跨进程、跨机器进行通信
  • 支持玩家对游戏逻辑服进行动态绑定
  • 能与任何其他框架做融合共存
  • 对 webMVC 开发者友好
  • 无 spring 强依赖
  • 零学习成本

你是否想要开发一个高性能、稳定、易用、自带负载均衡、避免类爆炸设计、可跨进程跨机器通信、集群无中心节点、集群自动化、有状态多进程的分步式的网络游戏服务器呢?如果是的话,这里向你推荐一个由 java 语言编写的网络游戏服务器框架 ioGame。下面将会从多个方面来对框架做一些简单的介绍。

ioGame 是一个 java 网络游戏服务器框架,有以下特点:

  • 无锁异步化、事件驱动的架构设计
  • 支持 websocket 和 socket 两种通信协议
  • 支持 protobuf、json 等不同的通信协议
  • 集群无中心节点、集群自动化、分布式的设计
  • 轻量级,不依赖第三方中间件或数据库就能支持集群、分布式
  • 提供多种通讯方式,且逻辑服之间可以相互跨机器通信
  • 与 spring 和其他框架融合方便
  • 学习成本低,开发体验好
  • 支持多服单进程、多服多进程的启动和部署方式
  • 提供游戏文档生成的辅助功能
  • 包体小、启动快、内存占用少
  • 提供优雅的路由访问权限控制

 

ioGame 是一个专为网络游戏服务器设计的轻量级框架,它可以帮助你快速地搭建和运行自己的游戏服务器。它适用于各种类型和规模的网络游戏,无论是 H5、手游还是 PC 游戏,无论是简单的聊天室,还是复杂的全球同服、回合制游戏、策略游戏、放置休闲游戏、即时战斗、MMORPG 等,ioGame 都可以满足你的需求。

ioGame 在打包、内存占用、启动速度等方面也是优秀的。打 jar 包后大约 15MB,应用通常会在 0.x 秒内完成启动,内存占用小。详细请看 快速从零编写服务器完整示例

在生态融合方面,ioGame 可以很方便的与 spring 集成(5 行代码);除了 spring 外,还能与任何其他的框架做融合,从而使用其他框架的相关生态。

在轻量级方面,ioGame 不依赖任何第三方中间件或数据库就能支持集群、分布式,只需要 java 环境就可以运行。这意味着在使用上简单了,在部署上也为企业减少了部署成本、维护难度。使用 ioGame 时,只需一个依赖即可获得整个框架,而无需在安装其他服务,如: Nginx、Redis、MQ、Mysql、ZooKeeper、Protobuf协议编译工具 ... ...等。

在通讯方式方面,大部分框架只能支持推送(广播)这一类型的通讯方式;而 ioGame 则提供了 3 种类型的通讯方式,分别是推送、单次请求处理、逻辑服之间相互通信。其中逻辑服之间相互通信,除了可以让我们跨机器通信外,还能与同类型多个游戏逻辑服同时通信并得到结果;

在通信方面,ioGame 让开发者用一套业务代码,同时支持 WebSocket 和 TCP 两种通信协议,无需做任何改动。这意味着一个游戏服务器可以同时接入 WebSocket 和 TCP 的游戏客户端。

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

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

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

在学习成本方面,ioGame 的学习成本非常低,可以说是零学习成本,即使没有游戏编程经验,也能轻松上手。开发者只需掌握普通的 java 方法或 webMVC 相关知识,就能用框架开发业务。框架不要求开发者改变编码习惯,而是自身适应开发者的需求。

在开发体验方面,ioGame 非常注重开发者的开发体验;框架提供了 JSR380验证、断言 + 异常机制、业务代码定位... ...等诸多丰富的功能,使得开发者的业务代码更加的清晰、简洁;

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

与前端对接联调方面,ioGame 提供了游戏文档生成的辅助功能,可以做到代码即对接文档。简单地说,当业务代码编写完后,框架会自动生成最新的文档。如果没有游戏文档的生成,那么你将要抽出一些时间来编写、维护对接文档的工作,而且当团队人数多了之后,文档就会很乱、不同步、不是最新的、忘记更新等情况就会出现。

在部署方面,ioGame 支持多服单进程的方式部署,也支持多服多进程多机器的方式部署;在部署方式上可以随意的切换而不需要更改代码。日常中我们可以按照单体思维开发,到了生产可以选择使用多进程的方式部署。

开发者基于 ioGame 编写的项目模块,通常是条理清晰的,得益于框架对路由的合理设计,同时也为路由提供了优雅的访问权限控制。当我们整理好这些模块后,对于其他开发者接管项目或后续的维护中,会是一个不错的帮助(模块的整理与建议)。或许现阶段你感受不到这块的威力,随着你深入地使用实践就能体会到这么设计的诸多好处与优势。

开发者基于 ioGame 编写的项目,通常是语法简洁的、高性能的、低延迟的;框架最低要求使用 JDK17,这样即可以让项目享受到 ZGC 带来的改进,还能享受语法上的简洁。从 JDK17 开始 ZGC 远低于其亚毫秒级暂停时间的目标,可以在不影响游戏速度的情况下,清理掉多余的内存。这样就不会出现卡顿或者崩溃的问题了,相当于在项目中变相的引入了一位 JVM 调优大师,详细请看 JDK 17 垃圾回收 GC 性能飞跃提升

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

相信你已经对 ioGame 有了一个初步的了解,虽然还有很多丰富的功能与特性没有介绍到,但你可以通过后续的实践过程中来深入了解。感谢你的阅读,并期待你使用 ioGame 来打造自己的游戏服务器。


ioGame 由 [网络通信框架] 和 [业务框架] 组成

  • 网络通信框架职责是各服务器之间的网络通信
  • 业务框架职责是业务逻辑的处理方式和编写方式

网络通信框架 - SOFABolt

SOFABolt 是蚂蚁金融服务集团开发的一套基于 Netty 实现的网络通信框架。

  • 为了让 Java 程序员能将更多的精力放在基于网络通信的业务逻辑实现上,而不是过多的纠结于网络底层 NIO 的实现以及处理难以调试的网络问题,Netty 应运而生。
  • 为了让中间件开发者能将更多的精力放在产品功能特性实现上,而不是重复地一遍遍制造通信框架的轮子,SOFABolt 应运而生。

Bolt 名字取自迪士尼动画-闪电狗,是一个基于 Netty 最佳实践的轻量、易用、高性能、易扩展的通信框架。

业务框架

如果说 sofa-bolt 是为了让 Java 程序员能将更多的精力放在基于网络通信的业务逻辑实现上。而业务框架正是解决业务逻辑如何方便实现这一问题上。业务框架是游戏框架的一部分,职责是简化程序员的业务逻辑实现,业务框架使程序员能够快速的开始编写游戏业务。

业务框架对于每个 action (即业务的处理类) 都是通过 asm 与 Singleton、Flyweight 、Command 等设计模式结合,对 action 的获取上通过 array 来得到,是一种近原生的方式。

业务框架平均每秒可以执行 1152 万次业务逻辑。


 

架构简图

 

通过 ioGame 你可以很容易的搭建出一个集群无中心节点、集群自动化、分步式的网络游戏服务器!

无锁异步化与事件驱动的架构设计、集群无中心节点、自带负载均衡、分布式支持、可动态增减机器、避免类爆炸的设计;

图中的每个游戏对外服、每个游戏逻辑服、每个 broker (游戏网关)都可以在单独的进程中部署,逻辑服之间可以跨进程通信(游戏对外服也是逻辑服的一种)。

游戏网关集群

broker (游戏网关)支持集群的方式部署,集群的使用是简单的,集群无中心节点、集群自动化、自带负载均衡。ioGame 本身就包含服务注册,你不需要外接一个服务注册中心,如 Eureka,ZooKeeper 等(变相的节约服务器成本)。

 

通过 broker (游戏网关) 的介入,之前非常复杂的负载均衡设计,如服务注册、健康度检查(后续版本提供)、到服务端的连接维护等这些问题,在 ioGame 中都不需要了,结构也简单了很多。实际上单台 broker (游戏网关) 性能已经能够满足了,因为游戏网关只做了转发。

 

逻辑服

逻辑服通常说的是游戏对外服和游戏逻辑服。逻辑服可以有很多个,逻辑服扩展数量的理论上限是 netty 的连接上限。

 

游戏对外服

对外服保持与用户(玩家)的长连接。先来个假设,假如我们的一台硬件支持我们建立用户连接的上限是 5000 人,当用户量达到 7000 人时,我们可以多加一个对外服务器来进行分流减压。由于游戏对外服扩展的简单性,意味着支持同时在线玩家可以轻松的达到百万、千万甚至更多。

即使我们启动了多个游戏对外服,开发者也不需要关心这些玩家连接到了哪个游戏对外服的问题,这些玩家总是能接收到广播(推送)消息的,因为框架已经把这些事情给做了;在玩家的角度我们只有“一个”服务器,同样的,在开发者的角度我们只有“一个”游戏对外服;

 

在结构组合上(部署多样性)

在部署上,支持多服单进程的方式部署(类似单体应用、在分步式开发时,调试更加方便)、也支持多服多进程多机器的方式部署。

架构由三部分组成:1.游戏对外服、2.Broker(游戏网关)、3.游戏逻辑服;三者既可相互独立,又可相互融合,如:

  • 游戏对外服、Broker(游戏网关)、游戏逻辑服这三部分,在一个进程中;【单体应用;在开发分步式时,调试更加方便
  • 游戏对外服、Broker(游戏网关)、游戏逻辑服这三部分,在多个进程中;【分布式
  • 游戏对外服、Broker(游戏网关)这两部分在一个进程中;而游戏逻辑服在多个进程中;【类似之前游戏的传统架构
  • 甚至可以不需要游戏对外服,只使用Broker(游戏网关)和游戏逻辑服这两部分,用于其他系统业务

因为 ioGame 遵循面向对象的设计原则(单一职责原则、开闭原则、里式替换原则、依赖倒置原则、接口隔离原则、迪米特法则)等,所以使得架构的职责分明,可以灵活的进行组合;

游戏对外服是架构的三部分之一,默认的游戏对外服是基于 netty 实现的。如果有需要,将来我们还可以使用基于 minasmart-socket 等通信框架编写,额外提供一个游戏对外服的实现;即使是使用 minasmart-socket 提供的游戏对外服,也并不会影响现有的游戏逻辑服业务逻辑,因为游戏对外服满足单一职责原则,只维护用户(玩家)长连接相关的。

开发人员几乎都遇见过这么一种情况;在项目初期阶段,通常是以单体项目的方式进行开发,随着需求不断的增加与迭代,会演变成一个臃肿的项目;此时在对一个整体进行拆分是困难的,成本是极高的。甚至是不可完成的,最后导致完全的重新重构;

ioGame 提供了在结构组合上的部署多样性,通过组合的方式,在项目初期就可以避免这些拆分问题。在开发阶段中,我们可以使用单体应用开发思维,降低了开发成本。通过单体应用的开发方式,在开发分步式项目时,调试更加的方便;这既能兼顾分步式开发、项目模块的拆分,又能降低团队的开发成本;

 

架构优点

架构有很高程度的抽象,让设计者更加关注于业务,而无需考虑底层的实现、通信参数等问题。

逻辑服的位置透明性;同时,由于模块化、抽象化,使得整个架构各服务器之间耦合度很低,逻辑服注册即可用,大大增加了可伸缩性、可维护性,动态扩展变得简单而高效。由于逻辑服是注册到 Broker(游戏网关) 上的,所以逻辑服可以动态的增加、删除、改变;由于逻辑服之间耦合度较小,调试和测试的工作也是可控的;

架构比较清晰的就是,游戏对外服负责维护客户端的接入(用户、玩家的连接),游戏逻辑服专心负责业务逻辑,他们之间的调度由 Broker(游戏网关)来负责;因为架构拆分的合理,所以特别方便用 k8s 来自由伸缩部署这三种服,哪个服水位高就扩容哪个,水位过去了又可以缩容。

参考:构架简图中:对外服、游戏网关、游戏逻辑服各自的职责

 

ioGame 支持的通信方式

ioGame 支持 3 种类型的通讯方式,分别是单次请求处理、推送、逻辑服间的相互通信;下面分别对这 3 种类型的通讯方式相关的应用场景举几个例子。

框架对这 3 种类型的通讯方式提供了代码调用点的日志,简单点说就是框架可以让开发者知道,是在哪一行代码中触发的业务逻辑。

我们可以想象一下,假如框架没有提供代码调用点的日志会是什么样的;比如,游戏前端发送一个业务请求到游戏服务器中,但是处理这个请求的业务方法,会触发多个响应(通常是推送、广播)给游戏前端。一但时间久了,开发者是很难知道分别响应了哪些业务数据给游戏前端,特别是一些二手项目;所以这将是一个灾难性的问题,因为这会耗费大量的时间来寻找这些相关的业务代码。


业务交互简图


抽象的说,游戏前端与游戏服务器的的交互由上图组成。游戏前端与游戏服务器可以自由地双向交互,即发送和接收业务数据。业务数据由.proto文件作为载体,在前端和后端之间进行编码和解码。.proto文件是对业务数据的描述载体,定义了数据类型和消息类型,以及它们的属性和规则。

通过这种方式,游戏前端和游戏服务端可以建立连接,并开始相互传递业务数据,处理各自的业务。以上是对游戏前端与游戏服务器之间交互方式的介绍。接下来,我们将编写一个简单的游戏业务处理示例,并定制一个适合我们需求的业务数据协议。

 

快速入门代码示例

协议文件定义

首先我们自定义一个协议文件,这个协议文件作为我们的业务载体描述。这个协议是纯java代码编写的,使用的是 jprotobuf,jprotobuf 是对 google protobuf 的简化使用,性能同等。

可以把这理解成DTO、POJO、业务数据载体等,其主要目的是用于业务数据的传输;

/** 请求 */
@ProtobufClass
@FieldDefaults(level = AccessLevel.PUBLIC)
public class HelloReq {
    String name;
}

 

Action

游戏服务的编程,游戏服务接收业务数据后,对业务数据进行处理;

@ActionController(1)
public class DemoAction {
    @ActionMethod(0)
    public HelloReq here(HelloReq helloReq) {
        HelloReq newHelloReq = new HelloReq();
        newHelloReq.name = helloReq.name + ", I'm here ";
        return newHelloReq;
    }
}

一个方法在业务框架中表示一个 Action(即一个业务动作)。

方法声名的参数是用于接收前端传入的业务数据,在方法 return 时,数据就可以被游戏前端接收到。程序员可以不需要关心业务框架的内部细节。

从上面的示例可以看出,这和普通的 java 类并无区别,同时这种设计方式避免了类爆炸。如果只负责编写游戏业务,那么对于业务框架的学习可以到此为止了。

游戏编程就是如此简单

 

问:我可以开始游戏服务的编程了吗?

是的,你已经可以开始游戏服务的编程了。

 

访问示例(控制台

当我们访问 here 方法时(通常由游戏前端来请求),控制台将会打印

┏━━━━━ Debug. [(DemoAction.java:4).here] ━━━ [cmd:1 - subCmd:0 - cmdMerge:65536]
┣ userId : 888
┣ 参数: helloReq : HelloReq(name=塔姆)
┣ 响应: HelloReq(name=塔姆, I'm here )
┣ 时间: 0 ms (业务方法总耗时)
┗━━━━━ Debug [DemoAction.java] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 

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

如果觉得 ioGame 适合你,可以看一下 快速从零编写服务器完整示例 。在这个示例中,你可以用很少的代码实现一个完整的、可运行的、高性能的、稳定的服务器。

 

适合人群?

  1. 长期从事 web 内部系统开发人员, 想了解游戏的
  2. 刚从事游戏开发的
  3. 未从事过游戏开发,但却对其感兴趣的
  4. 对设计模式在实践中的应用和 sofa-bolt 有兴趣的学习者
  5. 可以接受新鲜事物的
  6. 想放弃祖传代码的

推荐实际编程经验一年以上的人

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
发表了资讯
09/09 13:31

🔥netty 分步式游戏服务器框架,真轻量级网络编程框架 ioGame 21.16 发布

ioGame 源码完全开放、最新文档阅读完全开放;使用完全自由、免费(遵守开源协议)。 ioGame 是一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。 文档与日志 ioGame javadoc api 框架版本更新日志 (yuque.com) ioGame 真轻量级网络编程框架 - 在线文档 ioGame 每月会发 1 ~ 2 个版本,通常在大版本内升级总是兼容的,如 21.1 升级到任意 21.x 的高版本。 版本更新汇总 [kit] #291 增...

1
2
发表了资讯
08/26 13:28

netty 分步式网络游戏服务器框架 & 真轻量级网络编程框架 ioGame 21.15

ioGame 源码完全开放、最新文档阅读完全开放;使用完全自由、免费(遵守开源协议)。 ioGame 是一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。 文档与日志 ioGame javadoc api 框架版本更新日志 (yuque.com) ioGame 真。轻量级网络编程框架 - 在线文档 ioGame 每月会发 1 ~ 2 个版本,通常在大版本内升级总是兼容的,如 21.1 升级到任意 21.x 的高版本。 版本更新汇总 [core] #35...

3
1
发表了资讯
08/08 17:32

🔥netty 分步式游戏服务器框架 & 真轻量级网络编程框架 ioGame 21.14 发布

ioGame 源码完全开放、最新文档阅读完全开放;使用完全自由、免费(遵守开源协议)。 ioGame 是一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。 文档与日志 ioGame javadoc api 框架版本更新日志 (yuque.com) ioGame 真.轻量级网络编程框架 - 在线文档 ioGame 发版本的频率:每月会发 1 ~ 2 个版本。通常在大版本内升级总是兼容的,如 21.1 升级到任意 21.x 的高版本。 版本更新汇总...

0
4
发表了资讯
07/24 16:04

🔥netty 分步式游戏服务器框架 & 真轻量级网络编程框架 ioGame 21.13 发布

ioGame 源码完全开放、最新文档阅读完全开放;使用完全自由、免费(遵守开源协议)。 ioGame 是一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。 文档与日志 ioGame javadoc api 框架版本更新日志 (yuque.com) ioGame 网络游戏服务器框架 (yuque.com) 版本更新汇总 [external] #334 顶号操作 bug,有概率触发并发问题 [core] FlowContext 新增 createRequestCollectExternalMessage ...

3
2
发表了资讯
07/08 12:16

netty 分步式游戏服务器框架 & 真轻量级网络编程框架 ioGame 21.12 发布

ioGame 源码完全开放、最新文档阅读完全开放;使用完全自由、免费(遵守开源协议)。 ioGame 是一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。 文档与日志 ioGame javadoc api 框架版本更新日志 (yuque.com) ioGame 网络游戏服务器框架 (yuque.com) 版本更新汇总 [light-game-room] #326 GameFlowContext getRoom、getPlayer 方法返回值改成泛型 [对接文档] #330 增强,支持对接文...

0
1
发表了资讯
06/21 15:26

netty 分步式游戏服务器框架 & 真轻量级网络编程框架 ioGame 21.10 发布

ioGame 源码完全开放、最新文档阅读完全开放;使用完全自由、免费(遵守开源协议)。 ioGame 是一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。 文档与日志 ioGame javadoc api 框架版本更新日志 (yuque.com) ioGame网络游戏服务器框架 (yuque.com) 版本更新汇总 [core] #315 ResponseMessage 增加协议碎片便捷获取,简化跨服调用时的使用 [core] ActionCommand 增加 containAnnot...

0
2
发表了资讯
06/03 10:37

netty 高性能游戏服务器框架;ioGame 21.9 真.轻量级网络编程框架发布

ioGame 源码完全开放、最新文档阅读完全开放;使用完全自由、免费(遵守开源协议)。 ioGame 是一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。 21.9 文档与日志 ioGame javadoc api 框架版本更新日志 (yuque.com) ioGame网络游戏服务器框架 (yuque.com) 版本更新汇总 [core] #294 增加范围内的广播接口 RangeBroadcaster,业务参数支持基础类型(协议碎片)的简化使用 [core-对接文...

0
2
发表了资讯
05/20 12:08

netty 高性能游戏服务器框架;ioGame 21.8 真.轻量级网络编程框架发布

ioGame 源码完全开放、最新文档阅读完全开放;使用完全自由、免费(遵守开源协议)。 ioGame 是一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。 文档与更新日志 ioGame网络游戏服务器框架 (yuque.com) 框架版本更新日志 (yuque.com) ioGame javadoc api https://github.com/iohao/ioGame/releases/tag/21.8 版本更新汇总 [light-game-room] #278 桌游类、房间类游戏的扩展模块,简化...

1
1
发表了资讯
05/11 11:55

netty 高性能游戏服务器框架;ioGame 21.7 真.轻量级网络编程框架发布

ioGame 源码完全开放、最新文档阅读完全开放;使用完全自由、免费(遵守开源协议)。 ioGame 是一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。 文档与日志 框架版本更新日志 (yuque.com) ioGame网络游戏服务器框架 (yuque.com) Release ioGame 21.7,java 高性能游戏服务器框架;netty 高性能游戏服务器框架 · iohao/ioGame (github.com) 版本更新汇总 [core] #112 protobuf 协议类...

0
2
发表了资讯
04/23 16:05

netty 高性能游戏服务器框架;ioGame 21.6 真.轻量级网络编程框架发布

ioGame 源码完全开放、最新文档阅读完全开放;使用完全自由、免费(遵守开源协议)。 ioGame 是一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。 本次更新 版本更新汇总 #264 新增属性值变更监听特性 模拟客户端新增与服务器断开连接的方法。模拟客户端新增是否活跃的状态属性。 #265 从游戏对外服中获取玩家相关数据 - 模拟玩家请求。 任务相关:TaskListener 接口增加异常回调方法...

2
5
发表了资讯
04/16 10:39

java 游戏服务器 ioGame 21.5,netty 高性能游戏服务器

ioGame 源码完全开放、最新文档阅读完全开放;使用完全自由、免费(遵守开源协议)。 ioGame 是一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。 本次更新 see Release java 游戏服务器框架 ioGame 21.5, netty 游戏服务器框架 · iohao/ioGame (github.com) #255 关于 Proto 生成排除属性问题 /** * 动物 */ @ProtobufClass @FieldDefaults(level = AccessLevel.PUBL...

0
4
发表了资讯
03/28 11:04

netty 游戏服务器框架 ioGame 21.4,java 强悍的游戏服务器框架

ioGame 源码完全开放、最新文档阅读完全开放;使用完全自由、免费(遵守开源协议)。 ioGame 是一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。 本次更新 #253 CreateRoomInfo.createUserId int --> long 文档生成时,默认指定 StandardCharsets.UTF_8 javaProjectBuilder.setEncoding(StandardCharsets.UTF_8.name()); 玩家下线时,使用自身所关联的线程处理。 SocketUserSessions...

2
4
发表了资讯
03/11 09:48

ioGame 21.3 发布;语雀阅读交互超 44 万;netty java 轻量级游戏服务器框架

ioGame 源码完全开放、最新文档阅读完全开放;使用完全自由、免费(遵守开源协议)。 ioGame 是一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。 ioGame 语雀阅读交互超 44 万,因为成本的原因,某宝某多还没有出现能提供这种服务的商家,所以这样的统计数据也更具真实性。 与 star 相比,活数据总是真实的,也更具真实性! ioGame 使用趋势数据 关注 ioGame 的游戏服务器开发者持续...

0
3
发表了资讯
02/19 11:23

ioGame21 发布,史诗级增强,质的飞越;Java Netty 轻量级网络游戏服务器框架

ioGame21 首发计划 https://github.com/game-town/ioGame/releases/tag/21.0 框架版本更新日志 (yuque.com) 功能支持 完成 描述 issu 游戏对外服开放自定义协议 ✅ 功能增强 #213 游戏对外服缓存 ✅ 功能增强、性能提升 #76 FlowContext 增加通信能力,提供同步、异步、异步回调的便捷使用 ✅ 功能增强 #235 虚拟线程支持; 各逻辑服之间通信阻塞部分,改为使用虚拟线程,避免阻...

0
9
发表了资讯
01/30 11:41

开源小谈,赠现代卧龙、凤雏;创造三赢的方案!

前言 在 ioGame17 文档或将强制收费文中引起了一些讨论,这些讨论更多的是理念上的分歧。 文中内容简要如下 近期 ioGame 将要升级到 21 版本,提醒开发者保存好 ioGame17 的文档。 开发者如果不打算升级到 ioGame21 的,请提前私下保存好 ioGame17 相关文档。ioGame21 发布后,在线文档的内容则与新版本对应。而旧的文档(ioGame17)将从自愿付费模式转为强制付费文档。如果不打算支付这部分文档费用,请私下保存一份自留使用,...

99
4
发表了资讯
01/24 12:45

ioGame17 文档或将强制收费,netty java 游戏服务器

公告 不久之后,将会发布 ioGame21;当 ioGame21 发布后,在线文档将对应最新版本的 ioGame21; 开发者如果不打算升级到 ioGame21 的,请提前保存好 ioGame17 相关文档。当 ioGame21 发布后,旧的文档(ioGame17)将从自愿付费模式转为强制付费文档。简单的说,如果你不打算支付这部分文档费用,请私下保存一份自留使用,但不得以任何形式传播及公开。 同时,ioGame21 在线文档依旧采用自愿付费模式策略。简单的说,我们提供了最...

68
1
发表了资讯
01/03 13:51

java 游戏服务器框架 ioGame 17.1.61 action 各时间段调用统计插件

主要更新 #223 一天内 action 各小时的调用统计插件 打印预览 以下打印的是一天内(24小时)的业务消费量,计划以每小时为一个时间阶段,小时内可划分钟阶段。 2023-11-29 action 调用次数 共 [100] 次 0:00 共 8 次; - [15~30分钟 3 次] - [30~45分钟 2 次] - [45~59分钟 3 次] 1:00 共 9 次; - [0~15分钟 1 次] - [15~30分钟 4 次] - [30~45分钟 1 次] - [45~59分钟 3 次] 2:00 共 4 次; - [0~15分钟 1 次]...

0
5
发表了资讯
2023/12/11 09:42

netty 集群网络游戏服务器框架 ioGame 17.1.60 action 业务线程监控插件

主要更新 #227 增加调度、定时器相关便捷工具,使用 HashedWheelTimer 来模拟 ScheduledExecutorService 调度  public void test() {      // 每分钟调用一次      TaskKit.runIntervalMinute(() -> log.info("tick 1 Minute"), 1);      // 每 2 分钟调用一次      TaskKit.runIntervalMinute(() -> log.info("tick 2 Minute"), 2);  ​      // 每 2 秒调用一次      TaskKit.runInterval(() ->...

0
3
发表了资讯
2023/11/20 11:08

netty 分布式网络游戏服务器框架 ioGame 17.1.59 action 调用统计插件

ioGame 适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景; 主要更新 TImeKit 新加时间更新策略,开发者可设置时间更新策略。 RandomKit 功能增强,随机得到数组中的一个元素。 移除 SocketUserSessionHandler exceptionCaught 的日志打印。 [#221] 新增 action 调用统计插件 StatisticActionInOut action 调用统计插件 StatisticActionInOut - 文档 StatActionInOut 是 action 调用统计插件,可以用来统计各 ac...

0
1
发表了资讯
2023/11/02 12:32

netty 网络游戏服务器框架 ioGame 17.1.58 模拟客户端请求新 api

ioGame 适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景; 主要更新 优化 FlowContext createRequestMessage #194 可能在 springboot 集成 light-domain-event 时,启动报 java.lang.ClassNotFoundException #198 关于改造现有或老客户端项目到 ioGame 遇到的问题 HeadMetadata 增加 customData 属性;用于自定义数据,专为开发者预留的一个字段,开发者可以利用该字段来传递自定义数据。该字段由开发者自己定义...

0
5
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
63 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部