Tag: 多人游戏

多人游戏是否总是从每个客户请求的数据库中请求数据?

那么我不知道这个问题的标题是否合适,但我不知道如何把这个几句话。 我目前正在使用服务器端的NodeJS和Socket.io以及客户端的HTML5开发多人2D游戏。 这个游戏不需要保存玩家的进度,除非他们完成。 而且我必须确保关于球员的所有信息,比如得分和帮助总是有效的。 所以我决定把这个信息集中在服务器上,这样客户端就不会把分数发送给服务器,而是根据发送的信息计算服务器的分数并发送给所有客户端。 除此之外,我可以有不同的运行这个游戏的最低两名球员和最多4名球员运行。 起初,我决定实现这一点,服务器总是维护内存中的游戏会话数据,但现在我问自己,如果我不应该使用数据库来存储这些数据。 我正在使用数据库存储会话数据只有当他们完成,因为我没有使用未完成的会话数据。 但是,我应该在游戏中保持会话和玩家的数据吗? 我的问题在于,客户端与服务器的通信非常频繁,我必须先从数据库请求数据,进行必要的更改,将其存储回数据库,然后对每个客户端请求重复此过程。 也许这个答案很明显,但是我应该用这个方法吗? 这是我第一次开发游戏,所以我不知道事情是如何工作的。 我只知道我希望服务器速度很快。 我select维护内存中的所有内容,主要是因为所有关于多人游戏开发的例子和教程都没有提到数据库。 谢谢!

使用node.js / socket.io构build一个实时的大型多人游戏有多昂贵?

您好,我正在尝试使用node.js和socket.io构build一个实时多人游戏。 现在,在编码方面实现本身并不是什么大问题,但是来自传统的http请求响应web编程模型,我不知道在stream量和服务器负载方面会有多昂贵。 基本上在游戏期间,玩家的浏览器应当跟踪实时的鼠标input事件,并且将其广播给同一游戏中的所有其他玩家。 下面是一个例子,假设我的头像围绕我的鼠标指针在屏幕上显示,并且应该实时播放给屏幕上的其他玩家。 我会做这样的事情: // client side $(document).on("mousemove", function(event){ io.emit("coordinate", {x: event.pageX, y: event.pageY}); }); 并在服务器上: // server side io.sockets.on("connection", function(socket){ … socket.on("coordinate", function(coordinate){ socket.get("username", function(err, username){ socket.broadcast.emit("move", {username: username, coordinate:coordinate}); }); }); … }); 我认为这应该起作用,但是这需要浏览器每秒向服务器发送几个事件,随后应该向同一游戏中的其余玩家广播它们,并且我担心这个事情的含义。 有一件事是,每个传输的数据片段的大小不是那么大(基本上只是一个x和y坐标)。 如果这太贵,不pipe这个游戏多么伟大,我都不认为我能发货。 谁能开导我吗? 谢谢。 [编辑]澄清,我不问如何使这个架构更有效率。 我只想知道这种types的系统在系统负载(和维护成本)方面是否足够现实对于普通的Web服务,我可以通过查看页面视图数字来估计成本,但websocket是一个全新的领域,我不知道的,所以我想问。

关于更新我的node.js游戏的问题

我正在做一个小游戏,为服务器使用node.js,为客户端使用embedded在HTML5canvas中的.js文件。 玩家可以用箭头键移动。 现在我已经提出了两种更新游戏的方法,一种是每次改变玩家的新位置。 它的工作,但我的服务器必须处理大约每秒60对(客户端的更新速度是30 /秒,有2名球员不停地移动)。 第二种方法是在改变方向速度时只发送玩家对象的新位置和速度/方向,所以基本上在其他客户端上使用来自上次更新的方向/速度对玩家的移动进行插值。 我的服务器只需要处理很less的x / y7speed / direction数据包,但是当数据包到达时,我的客户端经历了一些延迟,因为插入的位置通常与数据包中写入的实际位置相距一点点。 现在我的问题是:你会推荐哪种方法? 而我应该如何为两种方法做出滞后赔偿?