2011-10-30 43 views
4

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

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

  1. 该游戏将是国际象棋的执行。我有一些简单的“现成的”AI算法,我可以重复使用单人游戏;这里的目的是学习HTML5游戏开发,所以这一部分目前并不是很重要。
  2. 我想围绕游戏构建一个网站。为此,我会使用“常规”CMS,因为我已经知道其中很多已经存在,并且放置起来会更快。
  3. 然后,我会拥有游戏本身,在其“离线”版本中,与网站无关,因为据我了解,它将独自生活在一个页面中。这是第一个问题:如何让游戏知道用户的会话?登录将由CMS处理(因为用户管理已经实施,所以这种方式应该更容易)。
  4. 作为进一步的一步,我想将AI移动到服务器。这是第二个问题:我如何让游戏将玩家的操作发送给服务器,以及如何获得答案?
  5. 后来,我想给游戏带来一个PVP元素,即一对一的多人游戏(比如老式的象棋)。这是第三个问题:如何从客户端向另一个客户端发送信息,并保持对话继续。为此,人们建议我看一下Node.js,但是我还不知道如何“粘合”到其他部分。

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

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

+1

这将是对http://gamedev.stackexchange.com ...... – Kzqai

+0

@Tchalvak更好:谢谢,我不知道一个呢。 – Diego

回答

2

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

很多的问题似乎并没有我做的是在一审尤其涉及到HTML5。

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

所以我们得到你的第一个问题 - 以及在上,你加载页面,你将有会议,它的网页,就像任何其他网页的地步,所以这就是你如何获取会话。如果你不在线,那么你一直坚持从什么时候开始在线,大概是本地存储。

你想要的AI移动到服务器?好吧,确保前端用户交互与“界面”对话以记录播放器移动并检索AI移动。鉴于这种分离,你可以使用ajax替代客户端上的AI(尽管我希望x是json!)使用相同的参数调用服务器

这变得更好,如果你想要做球员你只是在谈论通过服务器从一个用户/玩家路由到另一个用户/ player播放器 - 前端代码没有改变,只是什么服务器在ajax调用的最远端执行。

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

+0

为什么选择ajax?你想如何在ajax上制作多人游戏?长期投票?然后处理重新连接?使用socket.io(仅用于消息传递)或dnode(用于真正的RPC),这会变得更容易。 – thejh

+0

感谢您相信我的技能(也就是说,如果您可以构建(我不怀疑您可以))。如果我真的可以,我不确定我自己,因为我仍然必须决定从哪里开始。关注游戏页面本身,现在我必须找到一个合适的文档框架来开始 – Diego

+0

@thejh - 我的错误 - 通过使用一些任意的机制在客户端和服务器之间进行通信,应该试着留下来说实话,这就是我曾经试图提出的关于一步一步的建议 - 它是一个你可以并且应该独立于其他问题的问题,如果它是我的工具包,我会在玩https://github.com/SignalR/SignalR是因为我所做的是.NET( - :但其他人做的事情不同...... – Murph

1

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

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

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

您不必如果使用dnode使用游戏的ID - 只是手功能绑定到游戏浏览器。如果您出于某种原因需要身份证,请使用UUID模块创建漫长而随机的身份证 - 它们是不可猜测的。

+0

'dnode ++ && substack ++' – Raynos