大家今天跟大家聊聊我最近折腾的一个事儿——游戏服务端框架。作为一个喜欢自己动手敲代码的人,我对游戏服务端这块儿一直挺感兴趣的。之前也零零散散地接触过一些,但总感觉不得要领。这回,我是下定决心要好好搞一搞,所以就有这回的实践分享。
摸索阶段
我是两眼一抹黑,完全不知道从哪儿下手。网上搜一圈,发现这玩意儿还真不少!什么 * + * ,什么 ET、einx、云霄框架、swoole-game、Gamioo,还有那个什么 Skynet 和 Pomelo,看得我头都大。这些框架,有的是 C# 写的,有的是 Go 语言,还有的是 C+Lua,简直五花八门!
我这个人,有点选择困难症,这么多框架摆在面前,真不知道该选哪个后来我想,干脆就先挑几个看起来比较顺眼的试试!
初次尝试
我先试试 * + *。为啥选它?因为我对 JavaScript 比较熟!之前写过一些前端代码,觉得用 * 应该能比较快上手。* ,看介绍说是能实现实时、双向的通信,感觉挺适合做游戏服务端的。
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
于是我就照着网上的教程,一步一步地搭环境、写代码。刚开始还挺顺利的,很快就跑通一个简单的聊天室demo。我当时还挺兴奋的,觉得这玩意儿也不难嘛
但好景不长,当我尝试往里面加一些游戏逻辑的时候,问题就来。我发现自己对游戏服务端的架构设计完全没概念,不知道该怎么组织代码,怎么处理各种各样的游戏事件。写出来的东西乱七八糟的,自己都看不下去。
再次尝试
* 这条路走不通,我就换个方向,试试那个叫 ET 的框架。这玩意儿是用 C# 写的,据说性能很强,而且还是个双端框架,客户端和服务端都能用。我之前也接触过一点 C#,所以就想试试看。
ET 框架的安装配置比 * 麻烦一些,不过好在官方文档还算详细,跟着一步一步来,倒也没遇到什么大问题。但是,当我真正开始写代码的时候,我又懵。这框架的概念太多,什么 Actor、Component、Entity,看得我云里雾里的。而且它的代码风格跟我之前接触过的 C# 代码不太一样,感觉有点别扭。
这回尝试,我坚持的时间比上次长一些,但还是放弃。主要原因是我觉得这框架的学习曲线太陡峭,我短时间内搞不定。
柳暗花明
两次失败的尝试,让我有点灰心。我是不是不适合搞游戏服务端?就在我快要放弃的时候,我偶然间发现一个叫 einx 的框架。这框架是用 Go 语言写的,据说非常灵活,而且高度模块化。我之前对 Go 语言有点兴趣,但一直没机会实践,这回正好可以试试。
einx 框架的安装和使用都非常简单,文档也很清晰。我很快就上手,而且发现它的设计理念跟我之前接触过的框架都不太一样。它没有那么多复杂的概念,也没有强制的代码结构,一切都由你自己来决定。这种自由度让我感觉非常舒服。
我用 einx 框架重新写之前的聊天室demo,这回感觉比之前用 * + * 写的时候顺畅多。代码结构清晰,逻辑也很容易理解。我又尝试着往里面加一些简单的游戏逻辑,比如玩家移动、攻击之类的,也都比较容易实现。
最终实现
经过一段时间的摸索和实践,我终于用 einx 框架搭建一个简单的游戏服务端原型。虽然功能还很简单,但总算是有一个可以运行的东西。这回实践,让我对游戏服务端开发有一个初步的解,也积累一些经验。
我知道这只是个开始,后面还有很多东西要学,很多坑要踩。但至少,我已经迈出第一步,不是吗?
好,今天的分享就到这里。希望我的经历能对大家有所帮助。如果你也对游戏服务端开发感兴趣,不妨也动手试试看!