手机游戏服务器搭建教程

如何开发电脑游戏服务器?

下面说一下手机游戏服务器开发需要的技术。

一、说一下开发手游服务器要考虑什么

1、开发语言的选择:

要想做好工作,首先要磨砺自己的工具。选择合适的开发语法会对以后的开发产生事半功倍的效果。

业界采用c/c++++/lua模式作为手游服务器,c/c++用于网络通信数据传输,/lua用于业务逻辑,不仅保持了网络传输的效率( c++),也提高了开发效率(/lua),还支持热更新

当然,还有其他的服务器开发语言,(没用过,但是很多网页游戏公司都用),c#(大棒国喜欢用,神奇的民族),Java(当时我都愣住了)第一次听说),节点。js(用在少数游戏中,也有node.js写的引擎)、php(用http协议通讯做游戏时php+mysql也是不错的选择)

见过两个手游服务器引擎

1),(9秒俱乐部开发的一款手游服务器框架)

图片[1]-手机游戏服务器搭建教程-唐朝资源网

2),(根据架构设计,c++)

2、数据库

现在流行的数据库有两种,关系型数据库mysql和非关系型数据库。这是我使用最多的两个数据库。

网上有很多关于两者的比较。当然,您也可以使用其他数据库。对于大多数开发者来说,这个数据库是相当可怜的。

3、服务器架构

先说一下我用过的架构模型之一,也是公司根据架构设计的:

1)、Gate:首先要有一个Gate(网关)服务器,负责客户端连接和消息转发到Game(游戏服务器),并维护客户端和服务器之间的连接

没有逻辑,只有消息的加解密,以及客户端和服务端消息的转发(相当于两者之间的一座桥梁)。

2), : 是游戏进程,提供游戏逻辑功能(使用单进程(或单线程)模型,手游服务器的瓶颈从来不是CPU,所以如果只使用逻辑功能,单个线程就足够了,这里不需要多线程或多处理)

3),:实现数据库的读写,方便游戏服务器异步读写数据库的数据(有的在游戏服务器上读写数据库,无需单独的服务器,恐怕游戏服务器单进程还不够)

4),: 负责管理所有,在之间转发消息,并提供向所有游戏广播的功能

4、协议

客户端和服务端的协议通信可以使用tcp或者http,主要看游戏模型,如果是弱联网单机游戏,使用http就够了,比如天天酷跑之类的,只处理一个http请求时需要响应

不过tcp还是用的比较多。现在的网络游戏大部分都是tcp,和游戏一样,我们现在的游戏使用http和tcp,客户端和游戏服务器使用http协议。只有多人战斗转向战斗服使用tcp长链接

udp:其实游戏里都有udp。在pvp实时战斗等一些高效率的场景下,tcp拥塞控制和超时重传不适合。性交换游戏零件的效率

目前参与开发的游戏同时使用http协议和tcp协议。在游戏服务器中,单人游戏使用http协议。战斗服务器需要长连接保存协议状态,使用的是tcp协议。

5、保存到磁盘

如果有数据库游戏服务器是cs架构用来网站使用会怎么样,就必须有数据库读写操作。最重要的是保存(save)、定期保存或即时保存。

即时保存是每次操作时将数据保存到数据库中。当然,这会导致对数据库的操作过于频繁。毕竟,这是效率的瓶颈之一。

周期性归档也叫固定归档,就是每隔固定时间归档一次,比如10秒或者15秒,这样对数据库的压力就会小很多。导致回调

二、开源技术开发手游服务器

1、、boost.asio等网络库,网上有很多开源网络库,与其造轮子,不如把开源网络库作为自己服务器的通讯库,最著名的是 boost.asio

Boost的ASIO是一个异步IO库,封装了常用操作,简化了基于程序的开发,支持跨平台

它是一个用C语言编写的事件驱动的开源网络库

至于两者之间的效率,仁者见仁

当然还有很多:比如云峰的(c+lua),陈硕的木多(c++)。他们都写得很好。云峰写的东西简单好用。陈硕在炫耀他的C++技能。

2、:全称是为网络通信中的数据存储和协议编解码而开发的一套工具库。它类似于XML或JSON,即将某种数据结构的信息转换成某种格式(XML、JSON)保存

不同于XML和JSON,它是基于二进制的,主要用于数据存储、传输协议格式等。

它的优点是为传输比较大的数据而产生的数据非常紧凑和小,可以显着减少传输量。

并且处理速度比较快,有C++、Java、PHP等多种编程语言。

缺点是不能用纯文本编辑(数据是二进制的)

用rpc进行数据传输非常方便,是个不错的选择。只负责消息的打包和解包,不包括RPC的实现,需要自己实现

图片[2]-手机游戏服务器搭建教程-唐朝资源网

3、:消息队列,健壮简洁的多进程通信方案的基础。它不是正确的封装,不能用于实现现有的网络协议。它有自己的模式,不同于更底层的点对点通信模式。它具有比 tcp 协议更高级别的协议。(不一定基于TCP协议,当然也可以用于进程间和进程内通信。)它改变了通信是基于一对一连接的假设

这里更适合服务器到服务器的通信,比如逻辑套装和战斗套装之间的通信。

4、:用于动态 Web 应用程序的高性能分布式内存对象缓存系统,以减少数据库负载。它通过在内存中缓存数据和对象来减少数据库读取次数,从而提高动态、数据库驱动的网站的速度

它可以用于缓存。比如客户端每次操作都需要操作数据库,会严重影响效率。在这种情况下,在中间增加一层缓存系统可以提高性能。基于http协议的通信是一个不错的选择。如果是长tcp链接,直接维护一个在线内存对象就够了。

类似的技术还有redis等。

5、glog/zlog:你肯定需要记录日志游戏服务器是cs架构用来网站使用会怎么样,注意你的爱好

6、:内存性能分析

7、:分布式编译工具。以前,每次修改代码都需要半个小时的时间。使用多台计算机帮助您同时编译要快得多。

© 版权声明
THE END
喜欢就支持一下吧
点赞234 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片