使用node.js和socket.io为移动游戏

时间:2016-11-28 20:01:46

标签: node.js socket.io backend multiplayer

首先,我是一名自学成才的程序员/开发人员,对于一些明显的问题感到抱歉。这个主题更多的是设计问题,而不是编程。

我有一个Android游戏直播在Play商店,我使用第三方后端和网络解决方案。现在我想构建自己的简单后端和网络解决方案。为什么?这是因为:

  • 无需添加新功能的功能 将(服务器端)
  • 将gamelogic从客户端移动到服务器端
  • 了解后端开发
  • 了解网络(不是p2p,所以没有打孔)
  • 获得服务器端开发和技术方面的经验

为了您的信息,我的游戏是某种黑桃。

现在我的问题:

我正在考虑使用node.js,socket.io和mongoDB来创建我的后端系统。

这些是我想要做的:

网络:

  • 只是从服务器发送到客户端,反之亦然
  • io.to(socket#id).emit('hey')(服务器到客户端)
  • socket.Emit(“JoinRoom”)(客户端到服务器)

后端功能:

  • 用户身份验证
  • 注册玩家信息(姓名,唯一身份证,分数,日期 创作等)
  • 每次更新分数
  • 注册好友列表以便他们可以一起玩

我的gamelogic将为每个房间做些什么(ATM我的游戏逻辑完全是客户端,因此容易遭受黑客攻击和欺骗行为):

  • 创建房间时,请等待10秒,以便其他人可以加入
  • 当10秒结束时,调用一个处理启动的函数 过程
  • 随机化52张卡
  • AI选择下注
  • AI选择特朗普
  • 当轮到他时AI播放
  • 确定谁有下一个回合
  • 确定谁赢了
  • 更新数据库中的分数
  • 当游戏打开房间时,人们就可以离开了 加入游戏

是否可以使用node.js,socket.io和mongoDB创建它?如果是的话,使用node.js,socket.io和mongoDB这样做是否明智?或者使用其他技术更好吗?

或者我应该将node.js和socket.io用于网络部分,还有另一种技术(例如asp.net)用于游戏逻辑?我已经读过node.js不擅长CPU繁重的任务,我认为gamelogic部分是CPU重。

也许你们中的一些人可能想知道我的系统会支持多少玩家?好吧,我每天都有20个CCU,但是我的游戏已经存在了3个星期,而且我没有提升很多,因为我想要一个强大的后端系统。我希望我的后端能够处理10 000个CCU,也许我永远不会达到它,但那是我的目标。

我希望我清楚自己想要什么,让我们希望你们可以帮助我。我已经找了一个星期,如果我想做的事情是可行和有效的。

1 个答案:

答案 0 :(得分:1)

NodeJS是这类事物的不错选择。大量并发IO,爆发时间相对较短。使用您列出的技术,您绝对可以使用可扩展的服务器端。

游戏逻辑可能变得复杂,但我怀疑你甚至会注意到你需要为纸牌游戏实施规则和检查的CPU峰值。在每个阶段,您可能需要检查5-10个规则,并且可能会迭代52个卡片阵列(两次!)。不是问题。对于CPU绑定任务,请考虑" 1000次迭代" (图像处理?)或"数学计算" (过度使用斐波那契?)。

我将指向actionherojs作为节点服务器,内置聊天(用于游戏室通信),内置任务(用于10秒超时和AI转弯),以及一个不错的项目从头开始创建新NodeJS应用程序的结构。

玩得开心!