boxmoe_header_banner_img

山风微微,像月光下晃动的海浪,温和而柔软,停留在时光的背后,变成小时候听过的故事,变成小时候听过的故事。

加载中

文章导读

ioGame网络游戏服务器框架


avatar
小橘子 2025年6月9日 5

ioGame 源码完全开放、最新文档阅读完全开放;使用完全自由、免费(遵守开源协议)。

ioGame 是一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。

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

    群号

    群号:🔥🔥回合制网络游戏 MMO (yuque.com)

    主要内容是 MMO 回合制网络游戏项目开发与学习,也是 ioGame 网络编程框架的最佳实践项目。提供完整的项目源码、详细的文档、问答交流…等。如果你对网络编程感兴趣,或许这是一个很好的入门机会。如果你是 web 领域的开发者,但对网络游戏开发感兴趣,或许这是一个很好的入门机会。

    🕹️🎮寻求游戏前端合作

    如果你是游戏客户端(游戏前端)开发者,且对 MMO 回合制游戏感兴趣的开发者,欢迎加入我们,一起来制作一个完整的游戏。

    我们会提供服务器完整的对接文档;我们对游戏前端代码与资源并无很大兴趣,所以,你开发的所有前端内容只需要自己拿着就好。

    对于组建团队有两种方案

    • 散户拼接式,就是将零散且有兴趣的前端开发者聚集在一起,所组建的前端开发团队。
    • 自己组建,如果你能组建自己的前端团队最好

    对于游戏展现部分,我们并不关心具体使用的技术方案;所以你可以使用任意你感兴趣的前端技术,如下面表格中推荐的,或者其他的游戏引擎。

    游戏前端(客户端)引擎
    Unity
    UE(虚幻)
    Cocos
    godot
    libgdx(java)
    FXGL(java)
    jMonkeyEngine(java)
    或者其他的游戏引擎

    如果你是游戏前端开发者,并不需要询问我们有没有组建好前端团队,我们随时欢迎新加入者组建自己的前端团队。简单的说,假设现在已经有 U3D 的游戏前端团队在开发 MMO 回合制游戏了,你也可以使用其他的前端技术,来制作一套全新的游戏客户端。也就是说,我们并不限于只与一个前端团队合作。

    web 版游戏前端

    web 前端的哥们,可以关注一下这个项目 ioGameClientJs,使用 ts 做的一个游戏展示页面项目。

    项目产生背景

    纸上得来终觉浅,绝知此事要躬行。现推出基于 ioGame 的 MMO 回合制网络游戏的实践系列项目。

    ioGame 在网络编程方面是先进的、富有想象力的、与时俱进的框架。除了能制作网络游戏外,还能用在物联网等其他领域,总之与网络相关的领域基本上都适用。

    项目是基于网络编程框架 ioGame 开发的,也是 ioGame 的最佳实践。ioGame 正式发布至中央仓库已经一周年了,经历了近 50 个版本的高速迭代。期间得到了众多开发者的认可,并且这些数据都是可查的,统计数据来源于语雀后台,这些数据都是真实的、客观存在的、活的。与 git star 数据不同的是,因为成本的原因,某宝某多还没有出现能提供这种服务的商家,所以这样的统计数据也更具真实性。

    ioGame 为开发者提供了丰富的文档与示例,对于有过游戏开发经验的小伙伴来说已经足够了,甚至可以用丰富来形容。但这些对于没有游戏开发经验的人来说是远远不够的,即使看完了文档与示例后,不懂得如何灵活的运用在游戏中。这些都是正常的现象,之所以会有这种现象是因为没有项目可练习。

    另外一个比较困难的点,就是其他领域的开发者想要进入游戏领域则比较困难,因为大部分的公司都需要具备游戏开发经验,这样就导致了对游戏开发有兴趣的人进不来的困境。

    游戏开发与 web 类型的 xxx管理系统不同,游戏研发相对来说更困难,且研发经费也较高(没有谁的钱是大风刮来的),所以很少能看见相关的开源产品;这样就造成了入门困难的局面,想入门的开发者没地方入门;为了打破这个局面和普及 ioGame,这里决定使用 ioGame 来研发 MMO 类型的回合制游戏,让 java 从业者有机会能看到游戏开发的整体过程。

    本项目对 web 开发者是友好的,如果你之前做过 web 开发,那么学习本项目是一件轻松且简单的事。

    该项目整体内容比较丰富,学习完项目后,基本可以开发出市面上 90% 的游戏了。不夸张的说,当你学习完该系列后,基本上可以超越游戏行业 80% 的从业人员。

    如果你想深入学习游戏开发、如果你是其他领域的开发者且对游戏开发有兴趣,请选择我们。我们会用心的制作该系列的文档,并且我们有编写优质文档的能力,这点从 ioGame 提供的文档中就可以看出。

    适合人员

    • 对游戏开发感兴趣的。
    • 想从其他领域转入游戏行业,这是一个不错的机会。
    • 如果你想深入学习,这会是一个不错的项目,整体系统丰富,综合了多方面的内容。

    故事背景

    参考简介

    当前开发的是回合制游戏,如果你对回合制游戏不熟悉,可以参考一下梦幻西游手游之类的。之前也说过,回合制游戏与即时战斗类的游戏只是在战斗部分的所不同,但大部分的系统都是可以通用的。所以,只要没有涉及到战斗部分内容的,就可以将我们现在做的游戏称为通用游戏。

    故事背景

    在一个名为渔民小镇的城镇中,居住着许多喜爱冒险的英雄。这个小镇周围环境优美,是个旅游胜地,吸引了许多游客前来观光和休闲。然而,最近,一股黑暗势力突然出现,威胁着小镇和其居民的安全。

    这个黑暗势力由一位邪恶的巫师领导,他使用黑魔法控制了周边的森林和山脉,并派遣手下侵袭小镇。居民们生活在恐惧之中,他们需要拯救者的到来来击败黑暗势力,恢复和平与安宁。

    为了解救小镇和居民,我们需要招集这些英雄。这些英雄拥有各自独特的技能和能力,可以擅长物理攻击、魔法攻击、医疗或辅助。他们都住在渔民小镇上,过着平凡的生活,但在危机时刻,他们愿意奋起抵抗黑暗势力。

    在这个回合制的 MMO 游戏中,玩家可以选择一个英雄来进行战斗。每个英雄都有自己独特的技能树和装备,玩家可以根据自己的游戏风格和策略选择最适合自己的英雄。有些英雄擅长远程物理攻击,如射手,他们使用弓箭和弩来对抗敌人;有些英雄擅长近战物理攻击,如剑客,他们运用灵活的剑术打击敌人;还有一些英雄擅长魔法攻击,他们可以控制火焰、冰霜、闪电等元素来打击敌人;还有一些英雄擅长医疗和辅助技能,可以为队友提供治疗和增益效果。

    除了英雄,玩家还可以携带宠物宝宝一起战斗。这些宝宝拥有各种特色,有些可以提供额外的攻击力,有些可以为队友提供辅助效果,还有些可以变身成强大的怪兽来对抗敌人。玩家需要与自己的宠物宝宝建立深厚的关系,训练它们并发挥它们的潜力。

    在游戏中,玩家们可以通过组队过副本、任务和剧情,与其他英雄一起冒险。通过合作与协作,玩家们可以共同击败强大的敌人,解锁新的地图和装备,提升自己的实力。

    在副本中,他们将面临各种挑战和敌人,需要通过团队协作和策略才能成功通关。完成任务和剧情将推动故事的发展,揭示出邪恶势力背后更深层的秘密。

    玩家不仅可以升级,提升他们的技能和装备,还可以升级和培养宠物宝宝。随着宠物宝宝的成长,它们将获得新的技能和能力,为玩家在战斗中提供更多的支持和战斗力。

    渔民小镇的命运掌握在玩家们的手中。让我们招集这些英雄,带领他们一起战胜黑暗势力,保护渔民小镇和其居民,恢复和平与繁荣!

    提示:上述故事背景是临时写的,将来游戏发展到一定阶段会重新架构相关内容。

    大体玩法架构

    从上面的故事背景我们知道,游戏有很多英雄,类似 LOL 的那种英雄,每个英雄都有其特色技能。而玩家只要拥有了英雄,在战斗前是可以选择任何英雄、并携带宠物宝宝一起战斗。

    玩家们可以组队一起下副本、任务、剧情行。

    玩家可以组队、游戏内置多个英雄,玩家可以使用任意英雄战斗。每个英雄擅长有所不同,各玩家在组队时,可以选择搭配不同的组合来达到不同的效果。

    与一般回合制游戏不同的是,我们不固定玩家使用某一个英雄,而是可以随意切换英雄。回合制的核心之一是战斗部分,通过不同的搭配和战斗策略,往往可以展现出丰富的战斗亮点。这些搭配可以是各英雄之间的组合、阵型选择、所携带的宠物宝宝、指挥的策略…等。

    为了突出一些意外性,我们会在战斗中添加地形、天气等各种因素;某些英雄、或者阵型、或其他…等,则可以根据这些意外因素增减自身的一些属性。

    为了保证 PVP(玩家与玩家之间的)战斗之间的公平性,我们会推出一个赛事。无装备加成模式、或者说装备任选的搭配模式。在战斗前玩家可以选择各装备的搭配策略,凭借各玩家的想象力来组装出各种出奇的战术。

    通过上面的方式,在比赛中我们做到了公平性。正常情况下,如副本、剧情、任务等,各种加成,如装备、宠物宝宝 …等各种加成,还是需要依靠平时的积累。

    这样使得游戏具有娱乐性、又具备比赛的公平性。

    环境安装及准备工作

    本项目的学习者建议具备 1 年及以上工作的经验,纯新手不推荐往下看。由于项目整体规划比较大,所以太过基础的不会细讲,比如语法、基本环境的安装 …等。项目整体是偏应用的,更多的是讨论游戏相关的内容。

    环境安装

    建议先了解 ioGame 框架的基础概念,可以阅读 ioGame 快速理解篇

    项目当前进展

    文档阅读地址 https://iohao.yuque.com/osgn9f/mmo1

    已经完成与进行中的功能

    表格中是商业版本已提供的功能,并持续发展中。

    分类功能模拟测试状态
    登录完成
    地图【独立模块设计】
    玩家进入地图完成
    玩家移动完成
    接收其他玩家移动完成
    人物、英雄【独立模块设计】
    人物及属性初始化完成
    英雄及属性初始化完成
    英雄列表完成
    选择当前使用的英雄完成
    人物与英雄的属性加成完成
    升级【独立模块设计】
    人物经验值的增加完成
    人物升级完成
    装备【独立模块设计】
    装备打造进行中
    鉴定装备进行中
    装备-头盔进行中
    装备-衣服进行中
    装备-项链进行中
    装备-武器进行中
    装备-鞋子进行中
    装备-腰带进行中
    物品
    增加经验值的道具完成
    10级-武器书 物品描述:装备制造书完成
    10级-铁 物品描述:合成装备的精铁完成
    增加气血值的药品进行中
    增加魔法值的药品进行中
    背包【独立模块设计】
    得到玩家背包及物品完成
    往背包添加(增加)物品完成
    从背包减少物品完成
    背包物品变动通知进行中
    使用背包物品
    使用经验值道具,增加人物经验值完成【模块联调】
    [打造装备] – 使用装备制造书和材料铁,打造未鉴定的新装备完成【模块联调】
    邮件【独立模块设计】
    查看玩家邮件列表完成
    添加系统奖励邮件完成
    删除单个邮件-指定邮件完成
    一键删除所有已开封和过期的邮件完成
    打开单个邮件-指定邮件完成
    一键打开所有未开封和未过期的邮件完成
    解析附件奖励完成【模块联调】
    通用
    业务框架扩展 ActionAfter完成
    业务框架扩展 ActionMethodExceptionProcess完成
    逻辑处理线程扩展完成
    通信线程策略扩展完成
    扩展 ExternalBizRegion,获取 nginx 代理后的玩家真实 ip完成
    物品获得通知完成
    整合
    SpringBoot 3.x完成
    spring-data-mongo完成

    权益对比

    普通用户与付费用户的权益区别

    权益普通用户付费用户描述
    少量模块代码
    当下完整代码
    购买授权沟通码资格
    项目提问、交流
    疑问解答
    参与游戏玩法设计
    参与模块编码
    项目学习文档
    项目设计文档
    客户端美术资源目前没有,后续提供。

    学习后的收获

    我们已经将项目整理成一本书,通过该书本你所收获的内容包括

    • 系统化的学习。
    • 独立模块的设计思想,解耦各系统模块之间的关联;耦合越小,扩展则越强。
    • 各模块之间的联调规范。
    • 代码结构规范。
    • 除了让你知道需要这样做以外,还会告诉你为什么需要这样需要做。
    • 项目中的业务功能,都是可以自测的。我们使用 ioGame 提供的压测&模拟客户端请求模块,模拟真实的网络环境来测试所有业务功能。
    • 通过项目代码、项目文档、模拟测试..等,这几个方面的配合,可让你更好地 debug 所有业务,快速熟悉整个项目。

    业务提问

    • 业务一:有个打造装备的业务,玩家有背包,背包中有打造装备所需的一些材料(装备书、材料铁),你会如何做。将来如果新增一个装备强化打造的业务,如何做才能做到最小改动?
    • 业务二:游戏中有一个增加经验值的道具,使用后可增加玩家的经验值,你如会如何做。将来某一天,需要新增一个挂机可获得经验值的业务,如何做才能做到最小改动?

    怎样设计,能减少上述业务之间的耦合。文档中使用了独立模块的设计思想,有效的减少了各模块之间的耦合。

    独立模块的设计思想,除了能将耦合减少外,在多人合作时有着绝对的优势。因为没有耦合,可以合理的分工,提升项目的整体迭代速度。这样的协作方式,无论是开发速度、还是维护成本,在总成本方面的投入,会比同行少几倍,项目越大,优势越明显。

    项目文档

    🔥🔥回合制网络游戏 MMO (yuque.com)



    评论(0)

    查看评论列表

    暂无评论


    发表评论

    表情 颜文字
    插入代码