2016-11-28 69 views
1

首先,我是一位自学成才的程序员/开发人员,对于一些显而易见的问题感到抱歉。与编程相比,这个主题更像是一个设计问题。用node.js和socket.io为手机游戏构建简单的后端

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

  • 添加免费的 将(服务器端)
  • 移动gamelogic从客户端到服务器端的
  • 学习一下后台开发
  • 学习有关网络(未P2P新功能的能力,所以没有打孔)
  • 在服务器端的开发积累经验和技术

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

现在我的问题:

我想使用的Node.js,socket.io和MongoDB创建我的后端系统。

这些是我想要做的:

网络:

  • 从服务器到客户端和发送刚反之亦然
  • io.to(插座#ID).emit( '嗨' )(服务器到客户端)
  • socket.Emit( “JoinRoom”)(客户端到服务器)

后端功能:

  • 用户认证
  • 注册玩家信息(姓名,唯一的ID,得分,日期 创作等)
  • 每次
  • 更新分数注册的朋友列表,以便他们可以一起玩
  • 等。

什么会我gamelogic每个房间做(ATM我gamelogic是完全以客户端,所以容易受到黑客和作弊):

  • 在空间中创建的,等待10秒钟,以便其他人可以加入
  • 当10秒已经结束,调用处理该启动 过程
  • 随机化
  • 52甲板卡的功能
  • AI选择赌注
  • AI选择王牌
  • AI播放时,它的轮到他
  • 确定谁拥有下一回合
  • 决定谁赢得了
  • 更新分数数据库
  • 当比赛结束后打开空间,这样的人可以离开, 加入游戏
  • 等等

是否有可能与正创建此ode.js,socket.io和mongoDB?如果是的话,用node.js,socket.io和mongoDB做这件事情还是很明智的,还是用其他技术做得更好?

或者我应该使用Node.js和受socket.io为网络部分,另一TECHNOLOGIE(例如asp.net)为游戏逻辑是什么?我读过node.js不擅长处理CPU繁重的任务,我认为gamelogic部分是CPU繁重的。

也许有些人可能想知道我的系统有多少玩家支持?那么atm我每天有20个CCU,但是我的游戏在商店里用了3个星期,而且我并没有提升很多,因为我首先需要一个强大的后端系统。我希望我的后端能够处理10000个CCU,也许我永远不会达到它,但这是我的目标。

我希望我清楚我想要什么,我们希望你们能帮助我。如果我想要做的事情可能和有效,我已经找了一周。

+0

非常宽泛的问题,尽管描述很长,但可能没有足够的细节。由于游戏逻辑的缘故,您担心服务器受CPU限制,但您对其复杂性的细节很少。此外,并发用户在这里可能不是一个好的措施,因为大部分工作只是在“轮流”完成。更好的衡量标准是每个时间段的转数...... – jcaron

+0

@jcaron最重要的任务是在游戏开始时,以及玩游戏。 - 在开始时,由52张卡组成的阵列进行洗牌(字符串排列) - AI纸牌,最好情况下AI通过他的套牌1次(最多13张卡组成),最差4次。 因此,从开始到开始的1场比赛: - 最多4轮最多10,在赢得最多扑克牌的玩家之间投注 - 赢得投注的玩家选择王牌,所以在这里转1圈。 - 然后游戏开始,每个玩家必须玩,直到他的套牌完成。 所以每场比赛总共最多63回合。 –

回答

0

NodeJS是这类事情的最佳选择。大量的并发IO,相对较短的突发。您绝对可以使用您列出的技术制作可扩展的服务器端。

那场比赛逻辑可能会很复杂,但我怀疑你甚至会发现你需要实现一个纸牌游戏规则并检查CPU峰值。在每个阶段,你可能会检查5-10个规则,也可能遍历52张数组(两次!)。不是问题。对于CPU绑定任务,请考虑“1000次迭代”(图像处理?)或“数学计算”(过度使用斐波纳契?)。

我会指出actionherojs作为节点服务器,内置聊天功能(用于您的游戏室通信),内置任务(用于10秒超时和AI轮流)以及一个用于启动的良好项目结构一个新的NodeJS应用程序从头开始。

玩得开心!

+0

谢谢你的回答,并确认这是可能的。现在我把你的答案看作是我的错误,我会等待几个小时才能接受它,也许别人证明不了。 –