我想开始用HTML5开发一个“简单”的游戏,我对网上找到的很多资源感到很困惑。我在开发方面有扎实的背景,但在完全不同的环境中(具有讽刺意味的是,我开始编程因为我想成为一名游戏开发人员,而这是我13年来从未做过的唯一事情......)。
混淆源于这样一个事实,虽然我非常了解JavaScript并且我对HTML5有一些了解,但我无法弄清楚如何将我所知道的与所有这些新东西混合在一起。例如,这就是我的想法:
稍后,我想把一个PVP元素带到游戏中,即一对一的多人游戏(就像古老的国际象棋一样)。这是第三个问题:如何将信息从客户端发送到另一个客户端,并保持对话继续进行。为此,人们建议我看看Node.js,但这是另一个我无法弄清楚如何“粘合”其余部分的元素。
以下是PVP会话中单个动作的示例,这让我头疼:玩家1将他的动作发送到服务器(游戏如何与Node.js交谈?)。我需要识别游戏ID(我应该在哪里以及如何存储它?),并确保玩家没有手动修改它,因此它不会干扰别人的游戏( 如何?)。
我知道,就像我写的那样,整个事情非常混乱,但这正是我现在的感受。我无法弄清楚从哪里开始,因此非常欢迎任何建议。
答案 0 :(得分:2)
太多事情,可能是错误的顺序。
在我看来,很多问题在第一时间并不特别与HTML5有关。
从明显的事情开始 - 你想要一个下棋的单个页面(基本上是一个javascript应用程序),所以构建它。如果你不能构建它,那么其余部分基本上是无关紧要的,如果你可以构建(我不怀疑你可以),那么剩下的就是建立在这种能力上。
所以我们得到你的第一个问题 - 在你加载页面的时候你会有会话,它是一个网页,就像任何其他网页一样,这就是你如何得到会话。如果您处于离线状态,那么无论您何时上网,都可以坚持使用 - 大概是本地存储。
您想将AI移动到服务器吗?好的,所以请确保前端用户交互与“界面”对话以记录玩家移动并检索AI移动。鉴于这种分离,您可以使用ajax替换客户端上的AI(尽管我希望x为json!)使用相同的参数调用服务器。
这会变得更好,如果你想做播放器到播放器,你只是谈论通过服务器从一个用户/播放器到另一个用户/播放器的路由 - 前端代码不必改变,只是服务器在ajax调用的远端做。
但是对于所有这一切,退后一步,一次解决一个问题 - 如果你这样做,你应该到达你想去的地方,而不要让自己疯狂地试图担心一堆看起来很可怕的问题。你可以轻松地一次解决一个问题,我首先要让你的游戏在浏览器中自行运行。
答案 1 :(得分:1)
关于问题一:您可以给用户一个签名的cookie。例如。创建一个包含他的用户ID左右的cookie以及他的用户ID的SHA2哈希加上一个秘密的长盐(例如大约32字节的盐)。 关于问题二:为了交换东西和调用远程函数,我使用RPC库dnode。 关于问题三:在客户端之间调用方法使用相同的东西。
客户端代码(仅举例):
DNode.connect(function (remote) {
this.newPeer = function(peer) {
peer.sendChatMessage("Hello!");
};
});
如果您使用dnode,则不必使用游戏ID - 只需将游戏功能添加到绑定到游戏的浏览器即可。如果由于某种原因需要ID,请使用UUID模块创建长而随机的ID - 它们是不可取的。