查看: 829|回复: 0

谁将是下一个吃鸡手游呢,云服务器如何部署你的游戏服务...

[复制链接]

4783

主题

5079

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
18913

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2020-2-12 16:32:54 | 显示全部楼层 |阅读模式
谁将是下一个吃鸡手游呢,云服务器如何部署你的游戏服务端? https://www.gmbbs.net/

手游越来越受欢迎了。倾听业内人士的分析,并向他人学习。如何构建手游服务端的服务器?
我从事游戏服务器的开发已经快两年了。在过去的两年里,我参加了许多项目。我学到了很多关于游戏服务器的开发技术。我参与了几个不同架构的服务器的开发。我只是随便谈谈开发游戏服务器所需的技术。(下面提到的游戏服务器更多的是面向手的,因为我对终端游戏和页面游戏的开发没有太多的接触。)
谈论在服务器开发中应该考虑什么。
1.开发语言的选择:
如果一个工人想做好工作,他必须首先磨利他的工具,选择一个合适的开发语法,这将对以后的开发产生倍增效应。
行业的主要焦点是使游戏服务器以c/c Python/lua模式运行。C/c进行网络通信数据传输,python/lua进行业务逻辑。这样,保持了网络传输的效率,提高了开发效率,并支持热更新。
当然,也有其他的服务器开发语言,erlang(未使用的,页面浏览公司更多使用的)、c#(大棒子国使用的,一个神奇的国家)、Java(当我第一次听说它的时候我很震惊)、node.js(用于少量的游戏,一个由node.js编写的引擎,叫做PE mola)、PHP (php mysql在用http协议通信做游戏的时候也是一个很好的选择),还有两个游戏服务器引擎3360
1.Firefly(由9秒社区开发的python游戏服务器框架)
2.kbengine(作者说他是根据big world architecture c python设计的)
2.有两种流行的数据库,关系数据库mysql和非关系数据库mongodb。这是我最常用的两个数据库。
在网上有很多两者的比较。当然,您也可以使用其他数据库。至于sql server,如果你不怕被攻击,你可以使用它(我从来不喜欢微软)。3.服务器架构让我们来谈谈我使用的架构模型之一,它也是由公司根据bigworld架构设计的:1。Gate:首先必须有一个Gate服务器,负责客户端连接和向游戏(游戏套装)转发消息,保持客户端-服务器连接,没有逻辑,只加密和解密消息。2.GameServer:GameServer是一个提供游戏逻辑功能的游戏进程(使用单进程(或单线程)模型,游戏服务器的瓶颈永远不是中央处理器,所以用单线程完成逻辑功能就足够了,这里不需要使用多线程或进程)。3.数据库管理器:实现了数据库的读写,方便了游戏服务器异步读写数据库的数据(有些把数据库的读写放在游戏服中,没有单独的服务器,所以恐怕单个游戏服的进程是不够的)。3.游戏管理员:负责管理所有游戏服务器,在游戏服务器之间转发消息,并向所有游戏服务器提供广播。4.协议客户端和服务器之间的协议通信可以是tcp或http。主要看游戏模式,如果是那种弱联网的单人游戏,http就足够了,就像每天跑步一样,只需要在需要的时候处理一个http请求响应。
然而,tcp仍然使用许多比较。大多数当前的在线游戏都是tcp,就像MMORPG游戏一样。我们当前的游戏同时使用http和tcp,客户端和游戏套装使用http协议。Tcp长链接仅在许多人转向战斗装备时使用。
Udp:在游戏中实际上有Udp。在一些高效的场景中,例如pvp即时战斗,tcp拥塞控制和超时重传是不合适的。有些人使用udp协议,然后自己进行丢包重传,用网络公平性来交换游戏的本地效率。
目前,参与开发的游戏同时使用http和tcp协议。在游戏套装中,http协议用于单机游戏。战斗服需要长连接来保存协议状态,并且使用tcp。
5.档案馆
如果有数据库,就必须有数据库读写操作。最重要的是保存,定期保存或立即保存
即时存档意味着每个操作数据都存储在数据库中。当然,这将导致对数据库的操作过于频繁。毕竟,这是效率的瓶颈之一。
定期归档也称为固定归档,即每隔固定时间归档一次,如10秒或15秒,这样数据库上的压力就减少了
2.开发游戏服务器需要开源技术
1.libevent、boost.asio和其他网络库在互联网上有许多开源网络库。与其制造轮子,不如使用开源网络库作为服务器的通信库。最著名的是libevent和boost.asio Boost的asio是一个异步io库,它封装了套接字的常见操作,并简化了基于套接字的程序的开发。支持跨平台。Libevent是一个用C语言编写的事件驱动的开源网络库。
至于两者之间的效率,不同的人有不同的看法。当然,也有很多:比如冯云写的天网和陈硕写的木铎。两者都写得很好。冯云写的东西简单易用。陈硕正在炫耀他的碳技术。
2.protobuf:是谷歌协议缓冲区(Protocol Buffers)的全称,是谷歌为网络通信中的数据存储和协议编码解码开发的一套工具。它类似于XML或JSON,也就是说,某个数据结构的信息是以某种格式(XML,JSON)存储的。protobuf不同于XML和JSON,它是基于二进制的。主要用于数据存储、传输协议格式等场合。
Protobuf的优点是传输相对较大的数据产生的数据非常紧凑和小,这可以明显减少传输量。此外,处理速度相对较快,实现了各种编程语言,如C、Java、PHP等。缺点是它不能被显式编辑(数据是二进制的)。Protobufprpc非常便于数据传输,因此是一个不错的选择。Google protobuf只负责打包和消息的解包,不包括RPC实现,所以它需要自己实现。
3.zeromq:消息队列,这是一个健壮简洁的多进程通信方案的基础。ZeroMQ不是一个套接字包,不能用于实现现有的网络协议。它有自己的模式,不同于较低层次的点对点通信模式。它有一个比tcp更高级的协议。(当然,零MQ不一定基于TCP协议,它也可以用于进程间和进程内通信。)它改变了通信是基于一对一连接的假设。在这里,它更适合于服务器之间的通信,例如逻辑服和战斗服之间的通信。
4.memcached:高性能分布式内存对象缓存系统,用于动态网络应用程序,以减少数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态和数据库驱动网站的速度。
它可以用作缓存。例如,客户端每次运行时都需要操作数据库,这将严重影响效率。此时,在中间添加一层缓存系统将会提高性能。基于http协议的Memcached通信是一个不错的选择。如果是tcp长链接,直接维护一个在线内存对象就足够了。类似的技术包括再贴现等。
5.glog/zlog:你肯定需要记日记,关注你的爱好。
6.tcmalloc:内存性能分析
7.distcc:分布式编译工具,每次修改代码前要做半个小时,使用distcc让多台计算机同时帮助你编译,速度快得多。


【GM论坛[www.gmbbs.net]免责声明】
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
4、论坛的所有内容都不保证其准确性,完整性,有效性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请告之,本站将立即删除。
   提问发帖求助请点此发帖 https://www.gmbbs.net/
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表