首页 > 试题广场 >

在MMO游戏中,网络通信与游戏逻辑处理进程一般是分离的。请您

[问答题]
在MMO游戏中,服务器采用Linux操作系统,网络通信与游戏逻辑处理进程一般是分离的。
例如:GameSvr进程处理游戏逻辑,TCPSvr进程处理网络通信。Linux操作系统提供了很多机制可以实现GameSvr和TCPSvr进程之间的数据通信。请您列出两种你认为最好的机制来,并为主(最好)次(次佳)描述他们实现的框架,优缺点对比和应用中的注意事项。

考的应该是进程间的通信,一般有信号、信号量、消息队列和内存共享,个人认为在MMO这种对实时响应要求比较高的应用场合,使用消息队列有点太慢了(比如Android的Broadcast),内存共享还是比较靠谱的,但是要注意设置互斥量。
发表于 2015-08-07 15:06:30 回复(0)
TCP通信是首选,TcpSrv->GameSrv,方便随时扩容,但我们知道贵腾喜欢共享内存,so,makeinterviewerHappy,最好的机制是共享内存!!(笑...
----------严肃点------------
首先,需要隔离性,不能更新的逻辑崩溃了影响别人,需要可扩展性,需要解耦,需要高性能(打字累,大概这些。。。。
编辑于 2015-04-19 19:37:18 回复(0)
参考linux高性能服务器,应该是采用reactor和proactor的模式,reactor是主线程通知工作线程去做,工作线程完成后返回处理结果,是多路复用中的同步方法,而proactor是主线程通知内核去处理,当内核完成后返回结果给主线程,是多路复用技术中的异步方法
发表于 2016-09-23 06:49:59 回复(0)
这问题是问游戏架构吗?
答:P2P结构、会话厅结构、C/S结构
服务器的运行流程如下:
(1)创建一个套接字,绑定IP和端口。
(2)服务器监听端口,等待连接。创建一个游戏大厅。
(3)服务器处于等待状态,因此需要两个进程/线程在服务器端运行:一个界面线程,处理游戏菜单操作;一个网络线程,等待连接。
(4)在每个客户端创建一个Socket,连接游戏服务器。
(5)服务器更新连接信息,并在游戏大厅上显示。同时,将连接用户信息发送给每个连接用户。
(6)当所有的用户都连接到服务器上开始游戏,关闭服务器侦听的套接字,中断所有等待的连接,新的用户将不可能连接上服务器。
发表于 2016-07-26 23:46:36 回复(0)