构建移动游戏服务器教程 游戏服务器怎么开发?

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

首先说说手机游戏服务器开发需要考虑什么。

1、开发语言的选择:

如果一个工人想做好他的工作,他必须先磨他的工具。选择合适的开发语法对以后的开发有倍增效应。

在行业内,C/c/c+++Python/lua模式是移动游戏服务器,c/c++是网络通信数据传输,Python/lua是业务逻辑,既保持了网络传输的效率(c++),又提高了开发效率(python/lua),还支持热更新。

当然也有其他的服务器开发语言,erlang(没用过,被page tour公司用过)、c#(被大棒子国、了不起的nation用过)、Java(第一次听说的时候很震惊)、node.js(用了几个游戏,还有一个node.js写的引擎叫pemolo)、php(用http协议通信玩游戏可以用php+mysql)。

看过两个手机游戏服务器引擎。

1)萤火虫(9秒社区开发的python手机游戏服务器框架)

2)、kbengine(根据bigworld的架构设计,c+++python)

2.数据库ˌ资料库

目前比较流行的数据库有两种,关系数据库mysql和非关系数据库mongodb,这是我用的最多的两种数据库。

两者在网上有很多比较。当然,您也可以使用其他数据库。至于sqlserver,大多数开发人员都报告说这个数据库相当差劲。

3.服务器架构

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

1) Gate:首先要有Gate服务器,负责客户端连接和消息转发到Game(游戏套装),保持客户端和服务器的连接。

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

2) GameServer:GameServer是一个游戏进程,提供游戏逻辑功能(采用单进程(或单线程)模式,移动游戏服务器的瓶颈从来不在于CPU,所以如果只做逻辑功能的话单线程就足够了,所以这里不需要用到多线程或多进程)

3).DBManager:实现数据库的读写,方便Game服务器异步读写数据库的数据(有的把数据库读写放在游戏服里,没有单独的服务器,恐怕游戏服的进程不够用)

4) GameManager:负责管理所有游戏服务器以及游戏服务器之间的消息转发,并提供向所有游戏广播的功能。

4.协议

客户端和服务器之间的协议通信可以通过tcp或http来完成,主要取决于游戏模型。如果是弱联网单人游戏,http就够了,像每天跑步一样,需要的时候只处理一个http请求响应。

然而,tcp被广泛使用。如今,大多数网络游戏都是tcp,就像MMORPG游戏一样。我们现在的游戏同时使用http和tcp,客户端和游戏套装都使用http协议。Tcp长链接仅在多人对战变成战斗服时使用。

Udp:其实游戏里有udp。在一些高效率的场景中,比如pvp实时作战,tcp拥塞控制和超时重传并不适合。他们有的只是用udp,然后自己做丢包重传,用网络公平换取游戏的局部效率。

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

5.救援

如果有数据库,则必须有数据库读写操作。最重要的是保存,定期保存还是即时保存。

及时保存意味着每个操作数据都保存到数据库中。当然,这会导致数据库的操作过于频繁,这毕竟是效率的瓶颈之一。

定期保存也叫固定保存,就是每隔固定时间保存一次,比如10秒或者15秒,这样对数据库的压力就会小很多。当然你要做好内存中的数据操作,防止数据污染或者保存失败会导致文件回退。

二是开发手机游戏服务器需要掌握的开源技术。

1.libevent、boost.asio等网络库。互联网上有很多开源的网络图书馆。与其自己造轮子,不如用开源网络库作为自己服务器的通讯库。最著名的是libevent和boost.asio。

Boostasio是一个异步asio库,封装了socket的常用操作,简化了基于Socket的程序开发,支持Boost-platform。

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

至于他们之间的效率,不同的人有不同的看法。

当然,还有很多其他的:冯云写的天网(c+lua)和陈硕写的木铎(c++)。它们都写得很好。冯云写的东西简单易用。陈硕正在炫耀他的c++技术。

2.proto buf:google Protocol Buffers的全称是Google为网络通信中的数据存储和协议编解码开发的工具库。它类似于XML或JSON,即某一数据结构的信息以某种格式(XML、JSON)保存。

Protobuf与XML、JSON的区别在于protobuf基于二进制,主要用于数据存储、传输协议格式等场合。

Protobuf的优点是传输相对大的数据产生的数据非常紧凑小巧,可以显著降低传输量。

而且处理速度比较快,实现了各种编程语言,如C++、Java、PHP等。

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

Protobuf rpc数据传输方便,是一个不错的选择。Google protobuf只负责消息的打包和解包,不包括RPC的实现,需要自己实现。

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

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

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

它可以用于缓存。比如客户端原本每次都需要操作数据库,会严重影响效率。此时,在中间增加一层缓存系统将提高性能。Memcached是一个很好的基于http协议的通信选择。如果是tcp长链接,直接维护一个在线内存对象即可。

类似的技术包括redis等等。

5.glog/zlog:你绝对需要记日志,关注自己的爱好。

6.内存性能分析

7.distcc:分布式编译工具,之前每次修改代码都要半个小时,多台电脑同时使用distcc为你编译要快得多。

 

主题测试文章,只做测试使用。发布者:admin,转转请注明出处:https://www.gyxinw.com/3857.html

(0)
上一篇 2022年1月6日 上午10:19
下一篇 2022年1月6日 上午11:22

相关推荐

  • 贵州遵义一条河水变红了 官方回应: 雨水冲刷颜料色素,已经恢复正常

    贵州遵义一条河水变红了 官方回应: 雨水冲刷颜料色素,已经恢复正常 7月19日,贵州遵义绥阳县一条河流出现异常红色,水质堪忧。20日下午,绥阳县委宣传部工作人员回应媒体记者称,河水变红是因为颜料被雨水冲入河中。目前河水已恢复正常,没有鱼虾因河水变红而死亡。 网上视频显示,水流湍急,河两岸的草是绿色的,但河水却异常的红。上述视频发布后,该河流水质堪忧。 据了解…

    2022年7月20日
    0
  • 黑龙江塔河遭罕见严重汛情国际奥委会主席巴赫:北京冬奥会非常成功

    黑龙江塔河遭罕见严重汛情国际奥委会主席巴赫:北京冬奥会非常成功 据央视消息,国际奥委会主席新闻发布会18日举行。会上,国际奥委会主席巴赫表示,本次活动可以说是非常成功。运动员们非常高兴和满意。他们对奥运村的设施、奥运村及相关服务非常满意,对闭路中展现的防疫水平也非常满意。 “我们知道Omicron 变体仍在世界范围内迅速传播,这对我们,尤其是组委会来说,是一…

    2022年2月18日
    0
  • 纵观发展历史,解析可雅白兰地的机遇与挑战

    所谓“白兰地”,其实是一种“蒸馏酒”,最初译文来自荷兰文“Brandewijn”,意思是“烧制过的酒”。在制作工艺方面,白兰地是以水果为原料,经过发酵、蒸馏、贮藏后酿造而成,其中,约有50%-60%的成分是水,40%-50%的成分是乙醇,也就是我们常说的酒精。质量上乘的白兰地,通常会呈赤金黄色,具有优雅的葡萄果香,陈酿的橡木香以及浓郁而醇和的酒香,口感品尝起…

    2022年5月9日
    0
  • 泰力浴霸怎么样,质量优缺点评测 知乎

    泰力浴霸——泰力浴霸的优缺点 随着社会的发展,生活质量的不断提高,越来越多的家庭在浴室里效仿浴霸。浴霸的每个品牌都有它的优点和缺点,没有完美的产品。接下来,边肖将告诉你泰力浴霸的优缺点。让我们来看看。 泰力浴霸——泰力浴霸的优势 1.解决了秋冬春三季家庭沐浴寒冷问题的泰力浴霸,巧妙地将光与暖的概念引入供暖领域,杜绝了多年未解决的三季家庭沐浴寒冷问题。在自己配…

    2022年2月10日
    0
  • “2022茂名荔枝配送服务”正式启动,邮政等物流快递企业降费提速

    “2022茂名荔枝配送服务”正式启动,邮政等物流快递企业降费提速 5月13日消息,2022年5月12日,由茂名市邮政管理局主办的茂名荔枝寄递服务资源对接交流活动在中国荔枝博览会举行。 活动现场,“2022茂名荔枝送外卖服务”正式启动。在服务方案中,中国邮政茂名公司表示将通过优化运输大幅度降低投递成本。3公斤和6公斤荔枝邮件的运输价格将分别从46元和77元降至…

    2022年5月13日
    0