Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从HTML5游戏开发开始-非常困惑_Html_Node.js_Javascript Framework - Fatal编程技术网

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

从HTML5游戏开发开始-非常困惑,html,node.js,javascript-framework,Html,Node.js,Javascript Framework,我想开始用HTML5开发一个“简单”的游戏,我对网上的很多资源感到困惑。我在开发方面有着坚实的背景,但在完全不同的环境中(具有讽刺意味的是,我开始编程是因为我想成为一名游戏开发人员,这是我13年来唯一没有做过的事情……) 这种困惑源于这样一个事实:尽管我非常熟悉JavaScript,并且对HTML5有一些了解,但我不知道如何将我所知道的与所有这些新东西结合起来。例如,我想的是: 这场比赛将是国际象棋的一种实现。我有一些简单的“现成的”人工智能算法,我可以重用为单人游戏;这里的目的是学习HTML5

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

这种困惑源于这样一个事实:尽管我非常熟悉JavaScript,并且对HTML5有一些了解,但我不知道如何将我所知道的与所有这些新东西结合起来。例如,我想的是:

  • 这场比赛将是国际象棋的一种实现。我有一些简单的“现成的”人工智能算法,我可以重用为单人游戏;这里的目的是学习HTML5游戏开发,所以这一部分目前不是很重要

  • 我想围绕游戏建立一个网站。为此,我会使用一个“常规”的CMS,因为我知道他们中的许多人已经和它会更快地把它

  • 然后我会有游戏本身,在它的“离线”版本中,它与网站无关,因为据我所知,它将独自生活在一个页面中。这是第一个问题:如何让游戏知道用户的会话?登录将由CMS处理(这种方式应该更容易,因为已经实现了User ManageMet)

  • 作为进一步的步骤,我想将AI移动到服务器上。这是第二个问题:如何让游戏将玩家的动作发送到服务器,以及如何获得答案

  • 稍后,我想在游戏中加入一个PVP元素,即一对一的多人游戏(就像古老的象棋)。这是第三个问题:如何将信息从一个客户发送到另一个客户,并保持对话的进行。为此,人们建议我看一下Node.js,但这是另外一个我不知道如何“粘合”到其余部分的元素

    这里有一个PVP会话中的单个动作的例子,这已经让我头疼:玩家1将他的移动发送到服务器(游戏如何与Node.js对话?)。我需要识别游戏Id(我应该在哪里以及如何存储它?),并确保玩家没有手动修改它,这样它就不会干扰其他人的游戏(如何?)


  • 我知道整个事情,正如我写的,非常混乱,但这正是我此刻的感受。我不知道从哪里开始,因此任何建议都是非常受欢迎的。

    关于问题一:你可以给用户一个签名的cookie。例如,创建一个cookie,其中包含他的userid左右和他的userid的SHA2散列加上一个秘密的长salt(例如32字节salt左右)。 关于问题二:为了交换内容和调用远程函数,我会使用RPC库。 关于问题三:在客户端之间调用方法时使用相同的方法

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


    如果您使用dnode,则不必使用游戏ID,只需将绑定到游戏的浏览器的功能手动即可。如果出于某种原因需要ID,请使用UUID模块创建长的、随机的ID—它们是不可用的。

    太多东西,而且可能顺序错误

    在我看来,很多问题一开始并不是特别与HTML5有关

    从一件显而易见的事情开始——您需要一个单独的页面(基本上是一个javascript应用程序)来下棋,所以构建它。如果你不能构建它,那么剩下的基本上是无关紧要的,如果你能构建(我不怀疑你能),那么剩下的就是在这个能力的基础上构建

    现在我们来回答你的第一个问题——在你加载页面的时候,你将有一个会话,它是一个网页,就像其他网页一样,所以这就是你获得会话的方式。如果您处于脱机状态,那么您可以通过任何方式(可能是本地存储)从联机时起一直保持这种状态

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

    这就更好了,如果你想实现玩家对玩家,你只是在谈论从一个用户/玩家到另一个用户/玩家的服务器路由——前端代码不必更改,只是服务器在ajax调用的远端所做的更改


    但对于所有这些,退后一步,一次解决一个问题——如果你这样做了,你应该到达你想去的地方,而不会让自己发疯,担心一桶看起来很可怕的问题,你可能很容易一次解决一个问题,我会让你的游戏开始运行,完全靠自己,在浏览器中。

    为什么选择ajax?您希望如何通过ajax制作多人游戏?长时间投票?然后处理重新连接?使用socket.io(仅用于消息传递)或dnode(用于真正的RPC),这会变得容易得多。感谢您信任我的技能(即,如果您能够构建(我毫不怀疑您能够构建)。我不确定自己是否真的可以,因为我还必须决定从何处开始。正如你所建议的,我将专注于游戏页面本身;现在我必须找到一个正确记录的框架开始。@thejh-我的错误-通过使用一些任意机制在客户端和服务器之间进行通信,应该尝试保持更多的通用性老实说,这是我试图一步一个脚印地提出的建议——这是一个问题,你可以也应该从其他问题中孤立地看待。如果是我,我会使用我的工具包,因为我所做的是.NET(-):但是其他人做不同的事情…@Murph:无论如何,这是一个好答案,我想我理解这个概念。我的两个主要问题是我在启动项目时有困难
        DNode.connect(function (remote) {
            this.newPeer = function(peer) {
                peer.sendChatMessage("Hello!");
            };
        });