对于gameplay来说,本身就是个大循环,一定频率进行tick,接收来客户端或者其他服务器的rpc,处理逻辑,然后数据落地以及发送数据给客户端或者其他服务器,一般gameplay来说在同一个进程里都是同步的方式去编写,同步的实现大多数是单线程的,或者使用coroutine来实现actor这种模式。大部分游戏交互都是比较多,所以不论service和service之间的交互还是玩家和玩家之间的交互,如果考虑多线程的同步的问题,会非常复杂以及很容易做错,所以一个service内同一个时刻都是在一个线程中执行的。
针对mmo或者一些竞技类游戏往往有场景管理的概念,就是游戏AOI,比如一个玩家移动,需要告诉周围所有的玩家,复杂度在n*n,如果减少这个n,就有了AOI算法,比如九宫格,十字链表等,如果刚开服的时候很多人挤到一个主城中,就算采用九宫格和十字链表等AOI等算法,往往同屏内玩家数量还是很大,客户端渲染的单位数量比服务器少一个数量级的,所以场景管理这里还可以有个分线的做法,玩家多的时候,不同线不可见,玩家少的时候进行合并。
如果做帧同步一些关键点为表现要和逻辑分离,随机算法和随机种子的一致性,数学库浮点换定点,三角函数采用泰勒展开或者查表法,需要保序的容器,timer不能基于钟表时间而需要帧timer,以及防作弊(一般都是投票法,或者服务器跑个验证端)
现在很多游戏在线更新bug甚至不停服更新慢慢变成一种强需求了,实现这种方式主要使用脚本热更新,热重启+逻辑内存以及ab服切换来实现。
首先,要注册或者购买一个域名。注册域名或者购买域名没什么特别值得注意的。注册的域名肯定会考虑使用年限,域名长短,识别度和认知度等,越短的域名越难越贵,如果没有这些要求,直接注册一个域名就行。能注册域名的地方太多了,直接网上在线就可以注册,笔者就不专门举例了。第二,要准备服务器。无论是虚拟服务器还是购买真实的服务器,要做一个网站,网站上所有的动态或者静态数据都应该有个存储的地方。真实服务器需要做底层代码编写、部署、注册备案等一系列工作,使用网络虚拟服务器或者租用网络服务器则只需要做一定的底层数据编码和程序部署工作即可。第三,域名的绑定和解析。这个是准备好底层代码,因为要求年费建站,那么这些代码可以到一些开源的建站代码网站去拷贝使用。在服务器上部署好代码后如果是购买的域名,则需要进行备案才能投入使用,如果是免费的子域名,则无需备案,直接部署代码后进行域名绑定和解析,具体方法度娘上很多,就不详细介绍了。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)