/ioGameMMO

java Netty MMO 回合制网络游戏;这是一个基于 ioGame 网络编程框架开发的 MMO 类型的回合制网络游戏项目,这类型的游戏涵盖的点比较多,是 ioGame 的最佳实践。 我们会尽可能的在项目中演示框架文档中提及的理论特性。

Primary LanguageJavaGNU Affero General Public License v3.0AGPL-3.0

群号

群号:🔥🔥回合制网络游戏 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)