浅谈如何做一个游戏服务器

浅谈如何做一个游戏服务器,第1张

首先要知道游戏类型是什么,然后知道承载人数是多少,以及开发周期多少。需要根据这些来决定游戏架构和技术选型。

对于gameplay来说,本身就是个大循环,一定频率进行tick,接收来客户端或者其他服务器的rpc,处理逻辑,然后数据落地以及发送数据给客户端或者其他服务器,一般gameplay来说在同一个进程里都是同步的方式去编写,同步的实现大多数是单线程的,或者使用coroutine来实现actor这种模式。大部分游戏交互都是比较多,所以不论service和service之间的交互还是玩家和玩家之间的交互,如果考虑多线程的同步的问题,会非常复杂以及很容易做错,所以一个service内同一个时刻都是在一个线程中执行的。

针对mmo或者一些竞技类游戏往往有场景管理的概念,就是游戏AOI,比如一个玩家移动,需要告诉周围所有的玩家,复杂度在nn,如果减少这个n,就有了AOI算法,比如九宫格,十字链表等,如果刚开服的时候很多人挤到一个主城中,就算采用九宫格和十字链表等AOI等算法,往往同屏内玩家数量还是很大,客户端渲染的单位数量比服务器少一个数量级的,所以场景管理这里还可以有个分线的做法,玩家多的时候,不同线不可见,玩家少的时候进行合并。

如果做帧同步一些关键点为表现要和逻辑分离,随机算法和随机种子的一致性,数学库浮点换定点,三角函数采用泰勒展开或者查表法,需要保序的容器,timer不能基于钟表时间而需要帧timer,以及防作弊(一般都是投票法,或者服务器跑个验证端)

现在很多游戏在线更新bug甚至不停服更新慢慢变成一种强需求了,实现这种方式主要使用脚本热更新,热重启+逻辑内存以及ab服切换来实现。

根据你的要求来看,其实要想让领导满意,按照我之前给一家国有企业做的数据服务器和文件存储服务器等功能,集合到一台服务器上的经历来看,你的要求跟他们单位比较相似。

我个人是比较建议你在内网搭建一台服务器,然后装WINDOWSSERVER系统,现在基本最低都是SERVER2008了,那么在服务器上搭建一下ASP,PHP环境。然后磁盘做一下RAID1阵列,有条件做双阵列,再有钱的话,两台服务器做同步热备。

如果你自己不会编写软件的话,那么你可以去百度上下载一些WEB代码,搜索云盘的代码就行了,非常多,然后丢到你搭建的运行环境里面,修改一下参数和数据,安装SQL数据库,链接好,基本就没问题了,再想牛逼点,把页面改成你公司的就可以了。这样把页面地址发给公司所有人,让他们自己去注册账号和密码,你只需要设置好统一保存文件的目录,以及每个人账号的空间大小即可。

至于备份,比较简单,你要是懒,你可以用XCOPY+D做个批处理,来XCOPY到另外一个磁盘里头,保存一份。然后将这个批处理用计划任务指定一下,多长时间执行一次就行了。很简单。

至于双服务器热备,则同样,可以用批处理解决,A服务器做主,B服务器做副,A将客户的资料目录,做一下共享,B服务器直接批处理XCOPY到磁盘上即可。我就是给他们单位这么维护的,简单方便。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/13056810.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-29
下一篇2025-08-29

发表评论

登录后才能评论

评论列表(0条)

    保存