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

问题描述 投票:4回答:2

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

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

  1. 这场比赛将是国际象棋的实施。我有一些简单的“现成的”AI算法,我可以重复使用单人游戏;这里的目的是学习HTML5游戏开发,所以这部分目前还不是很重要。
  2. 我想在游戏周围建立一个网站。为此,我会使用“常规”CMS,因为我已经了解了很多这样的CMS,并且提出它会更快。
  3. 然后我就拥有游戏本身,它在“离线”版本中与网站无关,因为据我所知,它本身就会存在于一个页面中。这是第一个问题:如何让游戏意识到用户的会话?登录将由CMS处理(这种方式应该更容易,因为已经实现了User Managememt)。
  4. 作为进一步的步骤,我想将AI移动到服务器。这是第二个问题:如何让游戏将玩家的动作发送到服务器,我该如何得到答案?
  5. 后来,我想把一个PVP元素带到游戏中,即一对一的多人游戏(就像古老的国际象棋一样)。这是第三个问题:如何将信息从客户端发送到另一个客户端,并保持对话继续进行。为此,人们建议我看看Node.js,但这是另一个我无法弄清楚如何“粘合”其余部分的元素。 以下是PVP会话中单个操作的示例,这让我头疼:玩家1将他的移动发送到服务器(游戏如何与Node.js交谈?)。我需要确定游戏ID(我应该在哪里以及如何存储它?),并确保玩家没有手动修改它,所以它不会干扰别人的游戏(如何?)。

我知道,正如我所写的那样,整个事情非常混乱,但这正是我现在所感受到的。我无法弄清楚从哪里开始,因此非常欢迎任何建议。

html5 node.js javascript-framework
2个回答
2
投票

太多事情,可能是错误的顺序。

在我看来,很多问题在第一个实例中并不特别与HTML5有关。

从显而易见的事情开始 - 你想要一个下棋的单个页面(基本上是一个javascript应用程序),所以构建它。如果你不能构建它,那么其余部分基本上是无关紧要的,如果你可以构建(我不怀疑你可以),那么剩下的就是建立在这种能力上。

所以我们得到你的第一个问题 - 在你加载页面的时候你会有会话,它是一个网页,就像任何其他网页一样,这就是你如何得到会话。如果你处于离线状态,那么无论你何时上网,都可以坚持下去 - 大概是本地存储。

您想将AI移动到服务器吗?好的,所以请确保前端用户交互与“界面”对话以记录玩家移动并检索AI移动。鉴于这种分离,您可以使用ajax替换客户端上的AI(尽管我希望x为json!)使用相同的参数调用服务器。

这会变得更好,如果你想做播放器到播放器,你只是谈论通过服务器从一个用户/播放器到另一个用户/播放器的路由 - 前端代码不必改变,只是服务器做什么ajax调用的远端。

但是对于所有这一切,退后一步,一次解决一个问题 - 如果你这样做,你应该到达你想去的地方,而不是让自己疯狂地试图担心一堆看起来很可怕的问题我可以轻松解决一个问题,然后开始让您的游戏在浏览器中自行运行。


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 - 它们是不可取的。

© www.soinside.com 2019 - 2024. All rights reserved.