多人游戏服务器到人物游戏

时间:2013-08-09 00:56:19

标签: websocket

我确实是新来的,但我一直在阅读答案,因为我已经开始编程了。

我还是新手,在网络方面绝对是新生的。但我会保持这个简短的内容,以便您给出一个确定的答案。

我有一个网络服务器和一个域名。我想使用websockets来创建一个环境,让两个玩家可以在同一个屏幕上同时移动。例如,如果鼠标控制了一个点,并且两个人连接到一个全球性的世界"然后一个人可以实时看到另一个人的点。像这样的例子就是rumpetroll.com。

我不希望如何设计像RuneScape这样的游戏(尽管我认为这个想法几乎相同)。我只想深入解释如何让这个很酷的小交互进行。

任何有关如何编程到套接字的链接都会非常感激,因为我在互联网上找到的只是概念。机械上没有任何东西,每个命令可能做什么。

无论如何,谢谢你们。

1 个答案:

答案 0 :(得分:1)

您需要一台服务器和一台客户端。我假设您了解JavaScript,因此我将提供一个在双方都使用它的示例。

服务器

您需要nodejs,请按照网站上的说明进行安装。

我将使用socket.io提供示例,因为您要求使用websockets,但请记住,还有其他解决方案,例如Faye,值得一看。

将自己置于一个新文件夹中,运行npm install socket.io,这将下载服务器所需的代码;然后将此代码粘贴到名为server.js

的文件中
var io = require('socket.io').listen(8000);

io.sockets.on('connection', function (socket) {
  socket.emit('new-connection', { message: 'we have a new user!' });
  socket.on('message-from-client', function (data) {
    console.log(JSON,stringify(data));
  });
});

键入node server.js启动服务器,您应该在控制台中看到info - socket.io started

客户

将此代码粘贴到名为index.html的文件中,并使用您喜欢的网络浏览器将其打开

<script src="http://localhost:8000/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost:8000');
  socket.on('new-connection', function (data) {
    alert(JSON.stringify(data));
    socket.emit('message-from-client', { message: 'hi' });
  });
</script>

只要导航到http://localhost:8000,您就会看到两件事:

  • 警告问候你
  • 启动服务器的控制台中的消息

每次导航到该网址时都会发生这种情况,尝试使用两种不同的浏览器或在隐身/隐私浏览窗口中导航到该网址。每次您都应该看到警报和消息。

这是基本设置。从这里你可以根据自己的喜好复杂化,如果你将使用这个解决方案,考虑在JSON中传递数据,正如我在示例中所示。

从这里开始

正如您所看到的那样,它非常简单,如果您想要显示一个点,这将显示给所有用户,将客户端鼠标移动绑定到一个函数,该函数将位置发送到服务器并将其广播给所有用户其他连接的用户(应该是socket.broadcast.emit之类的东西,但我可以查看文档,因为我不确定),或者您可以简单地发送一个事件,例如updated-mouse-position,它将具有绑定到它的函数将处理图形部分。

希望这有帮助,如果您对基本配置有任何问题,请随时添加评论。