我想开始用HTML5开发一个“简单”的游戏,我对我在网上找到的很多资源感到非常困惑。我有一个坚实的开发背景,但在完全不同的环境中(讽刺的是,我开始编程是因为我想成为一名游戏开发人员,这是我13年来唯一从未做过的事情……)。
这种困惑源于这样一个事实:虽然我非常了解JavaScript,我对HTML5也有一些了解,但我不知道如何将我所知道的东西与所有这些新东西混合在一起。举个例子,我是这么想的:
我知道整件事,正如我所写的,是非常混乱的,但这正是我此刻的感受。我不知道从哪里开始,所以任何建议都是非常受欢迎的。
发布于 2011-10-30 15:44:09
太多的事情,可能是错误的顺序。
在我看来,很多问题一开始与HTML5并没有什么特别的关系。
从显而易见的事情开始--您想要一个下棋的页面(基本上是一个javascript应用程序),那么就构建它吧。如果你不能构建它,那么剩下的就根本不相关了,如果你可以构建(我不怀疑你能构建),那么剩下的就是建立在这个功能之上。
所以我们来问你的第一个问题--在你加载页面的时候,你会有一个网页,这是一个网页,就像任何其他网页一样,所以你就会得到这个会话。如果你是离线的,那么你已经坚持从你在线的时候,以任何方式-大概是本地存储。
你想把人工智能移到服务器上吗?好的,所以请确保前端用户交互与一个“界面”对话,以记录玩家的移动并检索AI移动。考虑到这种分离,您可以用ajax替换客户机上的AI (尽管我希望x是json!)调用具有相同参数的服务器。
这样做会变得更好,如果您想从一个用户/播放机路由到另一个用户/播放器--前端代码不需要更改,这只是服务器在ajax调用的远端所做的事情。
但是,尽管如此,退一步,一次解决一个问题--如果你这样做了,你应该到达你想要去的地方,而不必为一桶看似可怕的问题而发狂,你可能一次就能很容易地解决一个问题,我会让你的游戏在浏览器中独立运行。
发布于 2011-10-30 15:31:19
关于第一个问题:您可以给用户一个签名的cookie。例如,创建一个cookie,其中包含他的userid和他的userid的SHA2散列,加上一个秘密的长盐(例如,32字节盐)。关于第二个问题:为了交换东西和调用远程函数,我会使用RPC库dnode。关于第三个问题:在客户端之间调用方法时使用相同的方法。
客户端代码(只是一个例子):
DNode.connect(function (remote) {
this.newPeer = function(peer) {
peer.sendChatMessage("Hello!");
};
});
如果使用dnode,则不必使用游戏IDs -只需将函数交给绑定到游戏的浏览器即可。如果您出于某种原因需要ID,请使用UUID模块创建长而随机的IDs -它们是不可猜测的。
https://stackoverflow.com/questions/7945784
复制相似问题