从HTML5游戏开发开始 – 非常困惑

我想开始开发一个HTML5的“简单”游戏,我很困惑我在网上find的许多资源。 我在开发方面有着坚实的背景,但是在完全不同的环境中(具有讽刺意味的是,我开始编程是因为我想成为一名游戏开发人员,而且这是我13年来从未做过的唯一事情)。

混淆来自这样一个事实,虽然我非常了解JavaScript,而且对HTML5有了一些了解,但我无法弄清楚如何将所有这些新东西与我所了解的混合在一起。 例如,这是我在想什么:

  1. 这个游戏将是国际象棋的实现。 我有一些简单的“现成的”AIalgorithm,我可以重复使用单人游戏; 这里的目的是学习HTML5游戏开发,所以这一部分目前不是很重要。
  2. 我想围绕游戏build立一个网站。 为此,我会使用“常规”CMS,因为我知道其中很多已经有了,而且将会更快。
  3. 那么我就有了这个游戏本身,它在“离线”版本中与网站无关,就我所知,它会自己生活在一个页面中。 这是第一个问题 :如何让游戏知道用户的会话? login将由CMS处理(这应该会更容易,因为用户pipe理已经实施)。
  4. 作为更进一步的一步,我想把AI移到服务器上。 这是第二个问题 :如何让游戏将玩家的操作发送给服务器,以及如何获得答案?
  5. 之后,我想给游戏带来一个PVP元素,即一对一的多人游戏(像老式的国际象棋)。 这是第三个问题 :如何从客户端发送信息到另一个客户端,并保持对话。 为此,人们build议我看一下Node.js,但是还有一个元素是我无法弄清楚如何“粘合”到其他部分。

    下面是一个PVP会话中单个动作的例子,这已经让我很头疼:玩家1将他的举动发送到服务器( 游戏如何与Node.js交谈? )。 我需要确定游戏ID(我该在哪里以及如何存储它 ),并确保玩家没有手动修改它,所以它不会干扰别人的游戏( 如何? )。

我意识到,就像我写的那样,整个事情非常混乱,但这正是我目前的感受。 我不知道从哪里开始,因此任何build议都非常受欢迎。

太多的东西,可能是错误的顺序。

很多问题在我看来似乎并不特别与HTML5有关。

从明显的事情开始 – 你想要一个单独的页面(基本上是一个JavaScript应用程序),下象棋,所以build立。 如果你不能build立,那么剩下的就基本上是不相关的,如果你能build立(而且我不怀疑你可以),那么剩下的就是build立在这个能力上。

所以我们得到你的第一个问题 – 在你加载页面的时候,你将有会话,它的网页,就像任何其他的网页一样,所以这就是你如何获得会话。 如果你是脱机的,那么你坚持从什么时候上网,无论如何 – 大概是本地存储。

你想把AI移动到服务器上? 好的,请确保前端用户的交互与“界面”对话来logging玩家的移动和检索AI动作。 鉴于这种分离,你可以用ajaxreplace客户端上的AI(尽pipe我希望x是json!) 使用相同的参数调用服务器。

这会变得更好,如果你想把玩家做到玩家,那么你只是在讨论通过服务器从一个用户/玩家到另一个用户/玩家的路由 – 前端代码不必改变,只是服务器在做什么ajax呼叫的最远端。

但是,对于所有这一切,退一步一步一步解决问题 – 如果你这样做,你应该到达你想要去的地方,而不要驾驶自己的疯狂,试图担心一桶充满了可能可怕的问题轻松地一次解决一个问题,我会开始让您的游戏在浏览器中独立运行。

关于问题一:你也许可以给用户一个签名的cookie。 例如,创build一个包含他的用户标识的cookie,以及用户标识的SHA2哈希加一个秘密的长盐(例如32字节盐)。 关于问题二:为了交换东西和调用远程函数,我会使用RPC库dnode 。 关于问题三:使用相同的东西来调用客户端之间的方法。

客户端代码(只是一个例子):

DNode.connect(function (remote) { this.newPeer = function(peer) { peer.sendChatMessage("Hello!"); }; }); 

如果您使用dnode,则不必使用游戏ID – 只需将函数传递给绑定到游戏的浏览器即可。 如果由于某种原因需要使用ID,可以使用UUID模块来创build长随机的模块 – 它们是不可测的。