Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
sem simular rede
2 participantes
Página 1 de 1
sem simular rede
como podem ter percebido eu estou criando um chat, so que começou a aparecer problemas: eu quero saber se tem como eu me comunicar com outro computador, com esse chat, é obvil, sem ser necessário simular a rede, com o uso de hamachi e talz...ou que apenas o admnistrador da room tenha um tal programa...
grato
grato
Re: sem simular rede
o multplayer do Game Mker tbm funciona com o protocolo TCP/IP
Esse tutorial não é de minha autoria. Apenas peguei ele em um outro forum faz tempo. Não lembro de onde,nem quem escreveu. Desculpem. Se for de alguém ai. Diz que eu dou edit.
Desculpem não estar tão organizado, mas é que não tenho tempo disso agora. :oops:
- Código:
Criando um jogo Multiplayer Online
1- Estabelecendo uma conexão:
Bom, eu uso a conexão TCP/IP, então ensinarei como se conectar com ela.
Primeiro crie um objeto chamado obj_conectar, adicione o seguinte código no evento Create:
Código:
_______________________________________________________________________________
if !mplay_init_tcpip("Meu IP")
{
show_message("Erro na conexão")
game_end();
}
_______________________________________________________________________________
O código acima, faz com que caso a conexão com seu IP seja estabelecida,
ir para a próxima room, caso contrário, dê erro na conexão.
Pronto, a conexão já foi estabelecida.
--------------------------------------------------------------------------------
2- Criando uma sessão
Para jogos multiplayer online, são necessárias sessões (pelo menos no gm eh assim oO').
O dono do IP, servirá como um servidor, ou seja, abrindo uma nova sessão, para outros jogarem com você, você irá precisar enviar seu endereço IP para essas pessoas.
Então, irei dizer aqui como criar uma sessão e entrar numa sessão já existente.
2.1- Criando uma nova sessão
Para criar uma nova sessão, crie um objeto chamado obj_novasessao, e adicione uma sprite a ele, adicione o seguinte código ao evento Mouse Left Pressed:
Código:
_______________________________________________________________________________
global.nome = get_string("Seu nome:","")
if mplay_session_create('',2,global.nome)
{
room_goto_next();
}
else
{
show_message("Erro ao criar uma nova sessão.")
}
_______________________________________________________________________________
No código acima, faz com que você digite seu nome,
e crie a sessão. Caso não dê para criar essa sessão por algum erro ocorrido,
a mensagem de erro será exibida.
Explicando o código:
Citação
_______________________________________________________________________________
mplay_session_create = Código para criar uma nova sessão
'' = aqui seria o nome da sessão, deixe em branco
2 = número de identificação do jogador
global.nome = variável do seu nome
_______________________________________________________________________________
2.2- Entrar numa sessão já existente
Para entrar em uma sessão criada por um amigo, iremos checar se existe
essa sessão, e então entrar nela, caso contrário, exibir uma mensagem de erro, crie um objeto chamado obj_entrarsessao e digite o seguinte codigo no evento Mouse Left Pressed:
Código:
_______________________________________________________________________________
global.nome=get_string("Seu nome:","")
if mplay_session_find()>0
{
if mplay_session_join(0,global.nome)
{
room_goto_next();
}
else
{
show_message("Erro ao entrar no jogo.")
}
}
else
{
show_message("Não há sessões disponíveis.")
}
_______________________________________________________________________________
O código "mplay_session_find()>0" checa se há alguma sessão,
e se ela existir, entrar no jogo com o nome da variável "global.nome".
3 - Enviando mensagens
Bom, sua conexão já está estabelecida, e já dá para criar ou entrar em alguma sessão, o que iremos fazer agora, é enviar mensagens.
Como assim, mensagens?
É isso mesmo, mensagens.
Tudo o que se faz na sua tela, tem que aparecer na tela do outro jogador,
e essas informações são as mensagens. Por exemplo, a posição X e Y do player 1, tem que aparecer para o player 2, e para isso, a mensagem do X e Y do player 1 é enviada para o player 2.
Iremos criar 2 players com a mesma sprite, crie um círculo simples apenas para testes, 1 terá o movimento que você irá programar (Pode ser movimento RPG, plataforma, etc...), e o 2, será um objeto sem ações, para que as ações do player 2 no outro computador, sejam reproduzidas nele.
Bom, irei programar um movimento simples no obj_player1, então, adicione isso no evento Step:
Código:
_______________________________________________________________________________
if keyboard_check(vk_up) then y-=4
if keyboard_check(vk_down) then y+=4
if keyboard_check(vk_left) then x-=4
if keyboard_check(vk_right) then x+=4
_______________________________________________________________________________
Bom, pelo que você pode ver, ele só trabalha com movimento simples, de apenas 8 direções.
Agora iremos enviar a mensagem da posição do player 1 para o player 2, adicione no evento Step também:
Código:
_______________________________________________________________________________
mplay_message_send(0,1,x)
mplay_message_send(0,2,y)
_______________________________________________________________________________
Explicação:
mplay_message_send = Código para o envio de mensagens
0 = Número do jogador
1 = Número de identificação da mensagem (Explicarei mais tarde)
x = Valor da mensagem, isso é o que será enviado para o outro jogador, a mesma coisa do Y, enviando o X e o Y, é enviada a posição exata do player 1.
_______________________________________________________________________________
Agora, essa mensagem foi enviada para o outro jogador, então, o que iremos fazer agora, é "reproduzir" essa mensagem. Crie um objeto chamado "obj_controlador", ele irá controlar as mensagens do jogo.
Adicione isso no evento Create:
Código:
_______________________________________________________________________________
mplay_data_mode(true);
_______________________________________________________________________________
Adicione um evento Step nele e escreva:
Código:
_______________________________________________________________________________
//Lendo mensagens
{
while (mplay_message_receive(0))
{
messid = mplay_message_id();
val = mplay_message_value();
// Checando mensagens
if (messid == 1) obj_player2.x=val;
if (messid == 2) obj_player2.y=val;
}
}
_______________________________________________________________________________
Bom, aqui é simples, irei explicar apenas a parte da variável "messid" e a "val",
essa variável identifica o número de identificação de cada mensagem, a variável "val" identifica o valor de cada mensagem.
Veja a parte:
_______________________________________________________________________________
if (messid == 1) obj_player2.x=val;
if (messid == 2) obj_player2.y=val;
_______________________________________________________________________________
Lá em cima, você viu o envio das mensagens, o número 1 corresponde ao X do player 1, e o 2 correspondo ao Y do player 1. Os seus movimentos no seu computador, corresponde aos movimentos do player 2 no computador de seu amigo, ou seja, o que você fizer aqui como player 1, aparecerá lá como player 2.
Lembrando, que apenas a sua posição X e Y está sendo enviada para o outro jogador, caso você mude de sprite, deverá enviar a mensagem da sua sprite atual, é a mesma coisa do X e do Y:
Código:
_______________________________________________________________________________
mplay_message_send(0,3,sprite_index)
_______________________________________________________________________________
E então, no controlador:
Código:
_______________________________________________________________________________
if (messid == 3) obj_player2.sprite_index=val;
_______________________________________________________________________________
--------------------------------------------------------------------------------
Obs: Adicione os objetos obj_conectar, obj_novasessao e obj_entrarsessao na primeira room do jogo, o objeto obj_controlador e os dois jogadores adicione na segunda room do jogo.
Esse tutorial não é de minha autoria. Apenas peguei ele em um outro forum faz tempo. Não lembro de onde,nem quem escreveu. Desculpem. Se for de alguém ai. Diz que eu dou edit.
Desculpem não estar tão organizado, mas é que não tenho tempo disso agora. :oops:
Tópicos semelhantes
» Como simular o player ter apertado botao por code
» [Resolvido] : Simular Friction
» Como simular uma partida de futebol
» Movimentaçao em um jogo rede?
» [Resolvido]Como simular a direção de um carro de F1?
» [Resolvido] : Simular Friction
» Como simular uma partida de futebol
» Movimentaçao em um jogo rede?
» [Resolvido]Como simular a direção de um carro de F1?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos