Como fazer um Multiplayer com Socket.IO

1

Index

Tagged

Attached Files

The following files have been attached to this tutorial:

.capx

socketioexample.capx

Download now 78.09 KB
.zip

socket-io-mod-johnnysheffield.zip

Download now 355.61 KB

Contributors

Stats

10,577 visits, 11,706 views

Tools

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 6 Nov, 2014. Last updated 25 Feb, 2019

código socket.io

    // Isto é necessário para executar o servidor

// aqui definimos a porta que as mensagens são enviadas embora.

// Neste caso, é a porta 8080, você pode defini-la para qualquer porta que você quiser.

// Mas Observe, algumas portas já estão em uso e, em seguida, ele irá gerar uma mensagem de erro.

var io = require("socket.io").listen(8080);

//uma variável para o nosso "automatch making"

TmpRoom="wait";

//se um cliente se conecta a isso, ele executa esta grande function.

io.sockets.on("connection", function (socket) {

// quando o cliente emite 'adduser', isto escuta e executa

socket.on("joint", function(data){

// verifica se nenhum outro jogador está esperando,

if(TmpRoom=="wait")

{

//Se sim, então executar isso

// TmpRoom = data, isto é o nome do usuário que é data

/*Isso significa que, TmpRoom não é mais = wait! então da próxima vez que

quer se juntar aqui, ir para o próximo loop, o loop "else" */

TmpRoom = data;

//em seguida, ele cria, e entra em uma sala, isso é chamado após o users username

socket.join(TmpRoom);

//Agora, ele envia a mensagem, you,playersname

socket.send("you," + TmpRoom);

// e agora, ele termina os loops.

}

else

{

//Entra no quarto temporária, para o jogador inimigo

socket.join(TmpRoom);

//Em seguida, envia o nome da sala.

socket.send("Room," + TmpRoom);

//Agora, a parte interessante. Isto não só envia dados para UM cliente,

//mas para todos os clientes na sala. Para todos os clientes na TmpRoom.

// os dados que envia, são o nome da sala no momento.

io.sockets.in(TmpRoom).send("enemy," + TmpRoom);

//e o username do outro jogador.

io.sockets.in(TmpRoom).send("enemy," + data);

//Agora novamente define o TmpRoom = wait, então, o próximo que tenta entrar,

//mais uma vez, volta para o loop acima, e cria a sua própria sala.

//As salas são automaticamente "destruídas" quando o Host sai da sala.

TmpRoom = "wait";

}

});

//se o socket, recebe uma função personalizada do C2, chamada Message com alguns dados (o nome da sala),

//em seguida, ele executa isto:

socket.on("message", function(data){

//Agora está no loop, e se o servidor recebe um evento chamado Chatmessage,

//provavelmente com uma string de message, então ele executa isto:

socket.on("chatmessage", function(data2){

//Envia uma mensagem de bate-papo na sala.

//Envia dados para todos os clientes na sala. que

//o cliente enviar definido em sua função de "message".

io.sockets.in(data).send("chatmessage," + data2);

});

//Isso é praticamente o mesmo e não necessitam de explicações

// Espero.

socket.on("GameSettings", function(data2){

//Envia as configurações do jogo, coordenadas x, y, String, tudo!

io.sockets.in(data).send("GameSettings," + data2);

});

});

// Quando o usuário se desconectar. Execute isto:

socket.on("disconnect", function(data){

//ao desconectar, sai da sala.

socket.leave(data);

});

});

Muito código certo?

// são comentários, e são usadas para definir as anotações, como o / escreva aqui /

Eu acho que isso não requer qualquer explicação adicional. Você pode baixar o arquivo do lado esquerdo.

Quanto mais você souber javascript, mais possibilidades você tem,

Este é apenas um exemplo, e não deve ser utilizado num servidor terminado.

Mas você pode usá-lo como um modelo de como ele poderia ser

Iniciando o servidor

Se perguntou como iniciar o servidor?

existe várias maneiras para isso, eu vou cobrir duas delas

1. CMD

Abra o CMD, digite:

cd C:\PastaOndeSalvouSeuJS

node yourappname.js

Agora que você iniciou o servidor, uma janela de comando deve aparecer.

2. Batch

Primeiro você abre o editor, e escreva no arquivo:

node yourserverappname.js

pause

yourserverappname precisa ser o nome do aplicativo servidor, que você usou para salvar o arquivo como.

Em seguida, pressione Salvar Como -> Nome: Start.bat -> Tipo: Todos os arquivos -> Salvar.

É isso, coloque o arquivo .bat no diretório onde esta seu arquivo .js e inicie o .bat.

Agora uma janela de comando deve aparecer, e o seu servidor iniciou.

Se você quer escrever coisas específicas para essa janela, use

console.log("Um texto" + "ou" + umaVariável);

[page="

Construct 2"]

Construct 2

Sim, era isso, agora você vai fazer coisas realmente divertidas.

Você vai encontrar o Capx à esquerda, tem toda a explicação nele, então por favor baixá-lo e dar uma olhada em como deve ser feito.

Lembre-se, é apenas um exemplo, não copiar e colar a partir dele.

Para descobrir todas essas informações, eu procurei muito tempo...

Possibilidades

Você poderia enviar dados muito complicados, embora Socket.io,

como “enemybuilt,tank,x,120,y,140,otherimportantinfos”.

O ponto é, não o servidor, precisamos reconhecer toda essa pilha de dados, ele só precisa com o que a função deve-se enviar mais passar. Então você em Construct 2 , pode levar os dados à parte, analisá-lo e usá-lo .

As mensagens estão passando tão rápido, que eu recomendo a todos que querem fazer um jogo multiplayer , querendo código, usando Socket.io eu usei o teste com um endereço DynDns , e posso dizer , socket.io é muito confiável.

Só não se esqueça , o cliente emite os dados para o servidor , o servidor envia os dados para o cliente.

Principalmente, transmiti-lo para a sala específica.

Se você quiser saber mais , use estes links, eles são muito úteis , aprendendo Javascript em profundidade e aprender mais possibilidades com Socket.io .

https://github.com/LearnBoost/socket.io/wiki/Rooms

https://gist.github.com/crabasa/2896891

http://udidu.blogspot.co.il/2012/11/chat-evolution-nodejs-and-socketio.html

http://socket.io/

http://dyn.com/dns/

.CAPX

socketioexample.capx

Download now 78.09 KB
.ZIP

socket-io-mod-johnnysheffield.zip

Download now 355.61 KB
  • 0 Comments

Want to leave a comment? Login or Register an account!