【MMORPG开发日志010】漫谈一些有的没的
写在前面
首先是祝愿所有看到这篇文章的小伙伴新年快乐健康!
目前关于这个项目的文字版开发日志已经很久没更新了,这段时间我更新了很多视频形式的开发日志,感兴趣的可以访问我的B站主页:玩物不丧志的老李
游戏研发过程中,总是产生各种想法,这些想法纠结着我。
这篇文章可能很乱,因为我在打算写这篇文章的时候依然没有清晰的中心思想
换句话说,这篇文章只是我自言自语的对于这段时间独立开发的一个复盘
如果能对你有帮助,自然是最好的了。
这个项目的意义
事到如今,我不得不重新思考这个项目存在的意义。
诚然,在最开始,这个项目的存在仅仅是为了“学习”,学习什么?学习网络游戏的开发,特别是MMORPG游戏的开发。
所以我们的目标自然不是“创新”,而应该是“复刻”。
我并没有否定最开始的理念,只是单纯在这个漫长的制作过程中产生了一些自我否定,这些怀疑导致我之后路线逐渐的偏离了最开始的理念,或者说是因为这中间遇到的坑,比我想的还是困难了一些。
简单讲,我太乐观了。
现在我们回归到最开始的目标,那个学习目标来思考的话,我们能从这个项目学到什么呢?
- KBEngine服务器框架,一种分布式的MMO游戏服务器框架的设计理念
- Python服务器脚本语言,对于我的Python语言本身也是一种强化和巩固
- UE4作为纯粹的客户端表现的情况下,将更多精力放在UE4为我们提供的UMG和材质编辑器上
- 由于前后端通信的缘故,不可避免的接触更多的前端C++的部分,这部分也是我所欠缺的
就打算和UE4死磕到底了
期间也有小伙伴问我为什么不使用Unity,而是选择UE4。
其实这是一个相当主观的原因,就是我对于UE4有一种莫名的偏好。
而且因为我过分好高骛远的性格,导致我这些年一直处于一种“半吊子”的尴尬状态,因为对于游戏引擎的频繁更换导致浅尝辄止。最后就是没有一个引擎用起来真正得心应手的。
其实仔细想想,引擎之间的差异真的有想象中那般明显么?预期在选择游戏引擎上过分纠结,不如选择一条路之后一条路走到黑算了。
UE4 的专用服务器它不香么?
将UE4作为纯粹的客户端引擎,意味着unreal为我们提供的很多好用的蓝图节点、功能没办法使用了。这造成了很大的浪费。也是我一度纠结是否应该采用DS作为服务器的原因。
或者我在相当长的一段时间考虑的都是这样一种解决方案:
舍弃KBEngine的Cell部分,仅用其Base部分作为网关服务器,使用Python动态的创建和关闭DS(Unreal专用服务器),然后KBEngine和DS之间采用Socket通信,简单说就是一种“开房间”的模式。这种方式我和群里的同学交流后也证明是可行的。
但这其实又产生了浪费KBEngine的情况,如果仅仅是作为网关服务器(此外还有数据持久化),其实使用Golang或者其他框架甚至自行编写都可以的。
这也是很长一段时间让我纠结的问题。
最后我还是决定回归原点,以《魔兽世界》为游戏规则的篮板来开发。也就是上文中提到的KBEngine服务器和UE4客户端的模式。也就引出了下文中的新的问题。
登录流程依然是最复杂的
这里所说的“登录流程”,是指玩家通过loginApp登入服务器后,在BaseApp上创建角色或者选择角色,进入CellAPP最终进入真正的游戏实际的整个环节。
这造成了MMORPG开发过程中及其不良好的学习曲线,以至于我中途有很长一段时间干脆放手去进行单机游戏的开发了(也有一部分原因是更多的小伙伴愿意看单机内容)
到目前为止我依然没把握说完全搞清楚了这部分流程。只能说是在不理解中加强理解。
至少我们这个项目目前已经顺利的度过了这个流程,角色已经成功地进入游戏世界了。
一直也搞不定的位置同步
目前,位置同步依然没有完成,或者说我一直没想通位置同步为什么会比我想象的复杂。参考KBEngine官方Demo的代码来看,Player的位置信息是直接信任客户端的,而其他人的位置信息则是通过服务器转发的,也不难啊。但是问题究竟出在哪呢?
这个问题之所以难住我,很大一部分原因是:我没有查看服务器框架相关源码的勇气,这在使用第三方服务器框架,且在项目文档不太完整的情况下就会产生这样的局面,虽然很痛苦,但也是早有预料吧。
明天会继续踩这个坑。
未来即将面对的坑
怪物刷新和导航网格是目前能想到的,最快要面对的两个坑。
其中怪物刷新是一个较小的坑,目前能想到的解决方案就是在UE4中做一个“关卡编辑器”的蓝图脚本,这个脚本的作用就是在运行时生成一个JSON文件,保存所有NPC和刷新点的位置信息,供服务器使用,实际游戏运行中就是通过服务器读取JSON文件中的数据后在CellAPP上生成NPC,然后前端在根据获取的事件中的位置信息生成NPC即可。
而导航网格是一个目前不知道深浅的坑,因为这方面将涉及到另一个陌生的领域。只能在具体制作时候来总结经验了,到时候也会写相应的技术文章来和大家分享。
有疑问加站长微信联系(非本文作者)