Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 港口及机场;数据库:为多个实时多人游戏设计游戏服务器架构_Node.js_Mongodb_Websocket_Server_Database - Fatal编程技术网

Node.js 港口及机场;数据库:为多个实时多人游戏设计游戏服务器架构

Node.js 港口及机场;数据库:为多个实时多人游戏设计游戏服务器架构,node.js,mongodb,websocket,server,database,Node.js,Mongodb,Websocket,Server,Database,我正在设计一个运行同步多人游戏的框架。 根据一些参数,游戏服务器需要能够创建其指定游戏的多个实例。首先,这只是给定实例中已经存在的玩家数量 请查看执行此操作的服务器示例 在该游戏中,100名玩家可以连接到一个实例。当新连接进入时,服务器必须决定 “分配给现有实例”->在数据库中查找该服务器ID->向客户端发送连接命令->客户端连接 或 “创建游戏的新实例”->为新实例创建新数据库条目->发送连接详细信息->客户端连接并等待其他玩家 我好奇的是如何划分端口托管和数据库 我正在考虑Node.js+w

我正在设计一个运行同步多人游戏的框架。 根据一些参数,游戏服务器需要能够创建其指定游戏的多个实例。首先,这只是给定实例中已经存在的玩家数量

请查看执行此操作的服务器示例

在该游戏中,100名玩家可以连接到一个实例。当新连接进入时,服务器必须决定

“分配给现有实例”->在数据库中查找该服务器ID->向客户端发送连接命令->客户端连接

“创建游戏的新实例”->为新实例创建新数据库条目->发送连接详细信息->客户端连接并等待其他玩家

我好奇的是如何划分端口托管和数据库

我正在考虑Node.js+websockets+Mongo。请告诉我以下内容是否合理,以及原因:

  • 我创建一个主帐户数据库
  • 玩家通过主数据库进行身份验证
  • 新的数据库是基于每个实例的。 **这使得查找更容易,数据库查找代码更清晰(而不是通过mongo记录解析所有同时发生大量写入和读取的游戏!)
  • 玩家通过游戏实例建立websocket请求(可能到专用端口,见下文)
  • 玩家交换websocket命令,这些命令通过控制器操作发送,控制器操作在游戏进行时更新该实例的mongo数据库
  • 最终,其中一个websocket操作触发游戏完成状态
  • 游戏结束后,将更新的分数等保存到主帐户数据库中。删除游戏实例数据库
其中哪些部分设计得很糟糕

我是否应该在端口1000、1001、10002等上对端口主机进行类似的操作。。为了更快地查找数据库(每个端口都有自己的游戏实例服务器),还是速度加成可以忽略不计

请评论任何问题。请至少看看agar.io,了解我正在寻找的体系结构类型