Node.js 港口及机场;数据库:为多个实时多人游戏设计游戏服务器架构
我正在设计一个运行同步多人游戏的框架。 根据一些参数,游戏服务器需要能够创建其指定游戏的多个实例。首先,这只是给定实例中已经存在的玩家数量 请查看执行此操作的服务器示例 在该游戏中,100名玩家可以连接到一个实例。当新连接进入时,服务器必须决定 “分配给现有实例”->在数据库中查找该服务器ID->向客户端发送连接命令->客户端连接 或 “创建游戏的新实例”->为新实例创建新数据库条目->发送连接详细信息->客户端连接并等待其他玩家 我好奇的是如何划分端口托管和数据库 我正在考虑Node.js+websockets+Mongo。请告诉我以下内容是否合理,以及原因:Node.js 港口及机场;数据库:为多个实时多人游戏设计游戏服务器架构,node.js,mongodb,websocket,server,database,Node.js,Mongodb,Websocket,Server,Database,我正在设计一个运行同步多人游戏的框架。 根据一些参数,游戏服务器需要能够创建其指定游戏的多个实例。首先,这只是给定实例中已经存在的玩家数量 请查看执行此操作的服务器示例 在该游戏中,100名玩家可以连接到一个实例。当新连接进入时,服务器必须决定 “分配给现有实例”->在数据库中查找该服务器ID->向客户端发送连接命令->客户端连接 或 “创建游戏的新实例”->为新实例创建新数据库条目->发送连接详细信息->客户端连接并等待其他玩家 我好奇的是如何划分端口托管和数据库 我正在考虑Node.js+w
- 我创建一个主帐户数据库
- 玩家通过主数据库进行身份验证
- 新的数据库是基于每个实例的。 **这使得查找更容易,数据库查找代码更清晰(而不是通过mongo记录解析所有同时发生大量写入和读取的游戏!)
- 玩家通过游戏实例建立websocket请求(可能到专用端口,见下文)
- 玩家交换websocket命令,这些命令通过控制器操作发送,控制器操作在游戏进行时更新该实例的mongo数据库
- 最终,其中一个websocket操作触发游戏完成状态
- 游戏结束后,将更新的分数等保存到主帐户数据库中。删除游戏实例数据库