Conectar-se

Esqueci minha senha

Últimos assuntos
» [Duvida] O que aprender
Hoje à(s) 00:17 por Fubukki

» Nota de esclarecimento - GMBR voltou!
Sex 23 Jun 2017, 20:33 por Willy

» Regras do Fórum
Sex 23 Jun 2017, 19:02 por GMBR

» Retorno da GMBR!!!
Ter 24 Jan 2017, 15:43 por GMBR

» Jogo Dengue HTML
Seg 30 Nov 2015, 16:17 por guga

» Criando IA Simples para inimigos
Qua 25 Nov 2015, 19:22 por DJDAVYD

» Ordenar variavel em ordem decrescente
Sex 28 Ago 2015, 21:09 por Kodained

» colisão de queda após outra colisão dando problema
Qui 27 Ago 2015, 13:51 por manobrother

» Crio Trilha Sonora para Games!
Qui 27 Ago 2015, 13:50 por Isaias Malafaia

» Problema com Colisão
Qui 27 Ago 2015, 12:30 por The_Game

» Quem quer Uma Engine, e de Quê?
Qui 27 Ago 2015, 09:22 por theguitarmester

» [RESOLV]Como adicionar 2 objetos na mesma posição?
Qua 26 Ago 2015, 11:38 por Bhryenno Kelvyn Carlson

» Sistema de porta!!!
Ter 25 Ago 2015, 21:29 por theguitarmester

» Venda de objetos em Inventário - Multiplicado
Seg 24 Ago 2015, 18:33 por AG Hydra

» Atirar na direção certa
Seg 24 Ago 2015, 09:03 por theguitarmester

» Western Duels
Seg 24 Ago 2015, 07:47 por theguitarmester

» Problemas na compilação android
Dom 23 Ago 2015, 23:43 por Zero.

» Dúvida sobre strings, lendo txt
Sab 22 Ago 2015, 20:31 por Pai véi

» Como estabilizar um som
Sab 22 Ago 2015, 19:03 por Isquilo_Roedor

» Janela Modal
Sab 22 Ago 2015, 09:23 por Pai véi

» Sobre instance Creation Code
Sab 22 Ago 2015, 08:39 por Pai véi

» LudumDare #33
Sex 21 Ago 2015, 21:17 por WellingtonBecker

» Como fazer um temporizador
Sex 21 Ago 2015, 19:02 por Isquilo_Roedor

» GMS sempre salva projeto ao compilar?
Sex 21 Ago 2015, 12:32 por Pai véi

» Tipo de Draw que dê melhor fps...
Sex 21 Ago 2015, 12:25 por Pai véi

Quem está conectado
25 usuários online :: 2 usuários cadastrados, Nenhum Invisível e 23 Visitantes

jonnyall, Kapoty

[ Ver toda a lista ]


O recorde de usuários online foi de 324 em Ter 05 Out 2010, 13:36

Criando um jogo Multiplayer Online

Página 1 de 2 1, 2  Seguinte

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Criando um jogo Multiplayer Online

Mensagem por Froidz em Sab 20 Dez 2008, 21:15

Criando um jogo Multiplayer Online

Game Maker: 6.1 (Ou superior)
Nível de experiência: Avançado

Descrição:

A algum tempo venho pensando em criar jogos multiplayer online,
mas acabei não criando por preguiça. E então o Near criou o jogo online dele,
e então tive vontade de fazer.

No início, usava a dll 39dll.dll, e não conseguia me conectar..

Então, vi que o Near usava o mplay, e nenhuma dll (calma, não decompilei o programa dele, apenas vi que não tinha nenhuma dll xD), então, resolvi estudar o help do gm e criar meu próprio jogo multiplayer online.

Em apenas 1 dia e meio de estudo, criei meu primeiro jogo multiplayer online.

E venho aqui, mostrar passo-a-passo como vocês criar seus próprios jogos online.
Aviso! O multiplayer online que consigo fazer até agora, é para duas pessoas, tentarei dar possibilidades infinitas de jogadores em breve.

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.

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:

Código:
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

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)

Bom, irei explicar:

Código:
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.

By Froidz.
Pronto! terminamos pessoal, espero que tenham entendido como criar seu jogo Multiplayer Online.

Esse tutorial é original feito por mim, tive um certo trabalho para concluír o teste online, embora tenha feito em menos de 2 dias, não tinha conhecimento e aprendi, e espero que caso forem publicar esse tutorial em outros sites, apenas coloque os devidos créditos.


Última edição por Froidz em Sab 20 Dez 2008, 22:41, editado 6 vez(es)
avatar
Froidz

Data de inscrição : 03/08/2008
Número de Mensagens : 1053
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por Froidz em Sab 20 Dez 2008, 21:26

É que não usei isso nos meus testes, são coisas básicas, mas tudo bem.
Valeu pelo comentário, espero que aprendam assim como eu aprendi, e quem sabe ajudar um amigo sem querer do jeito que eu te ajudei neh? xD

Valeu!Happy
avatar
Froidz

Data de inscrição : 03/08/2008
Número de Mensagens : 1053
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por Froidz em Sab 20 Dez 2008, 21:29

Desculpem-me pelo post duplo, mas me enganei de sessão, poderiam mover o tópico?
avatar
Froidz

Data de inscrição : 03/08/2008
Número de Mensagens : 1053
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por Kabeção em Sab 20 Dez 2008, 23:35

Movido para GML - Tutoriais.
avatar
Kabeção

Ranking : Sem avaliações
Data de inscrição : 08/06/2008
Número de Mensagens : 2314
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 3
   : 0
   : 1

Ver perfil do usuário http://blackcapapps.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por Gusba em Dom 21 Dez 2008, 00:27

cara muito bom, mas invés de enviar mensagens eu uso:

mplay_data_write(id,valor)

q pra mim é mais facil pq na hora de ler é só usar:

var = mplay_data_read(id)

mas eu ainda nao intendi a diferença de enviar isso ai e enviar mensagens, alguem sabe?

mas vc poderia mostrar tambem como se faz para definir oq eu vou desenhar na minha tela q oq eu vou enviar, tipo, se vc é o criador da sala vc recebe os dados do jogador 2 e se vc é um mero jogador vc recebe os dados do jogador 1, entendeu?


Última edição por Gusba em Dom 21 Dez 2008, 00:30, editado 1 vez(es)
avatar
Gusba

Data de inscrição : 03/08/2008
Número de Mensagens : 1156
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   :
   :

Ver perfil do usuário http://www.ciganospictures.hd1.com.br

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por Froidz em Dom 21 Dez 2008, 00:29

Também não sei a diferença, é que eu aprendi desse modo mesmo,
lendo o help.

Acho que os códigos tem a mesma função, mas o Near disse pra mim,
que ele fazia desse mudo teu, e viu minha engine e então
viu que era mais simples fazer enviando mensagens..

Valeu!
avatar
Froidz

Data de inscrição : 03/08/2008
Número de Mensagens : 1053
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por wac2007 em Dom 26 Jul 2009, 17:36

Help do Game Maker.... Essa sim é uma ajuda de ouro! xD

Excelente tuto kra meus parabéns ;)
avatar
wac2007

Data de inscrição : 07/11/2008
Número de Mensagens : 521
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   :
   :
   : 1

Ver perfil do usuário http://wac2007.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por mako182 em Sab 24 Out 2009, 16:21

Eu sei q to revivendo o topico mas como é tuto naum pega nada.

po gostei mto parabens eu to aprendendo a criar on-line modes e isso ajudou na 'explicação'.
só q eu naum entendi, esse tuto é p conexão local?
pq como eu acharia uma pessoa. pelo ip certo?. mas vc nao coloco isso
sei la...

global.ip = get_string('insirir ip','')

no tuto q eu vi era meio assim
ha mais devo ta moscano,kk, pq eu uso do modo com servidor.
vlew pelo tuto, mesmo q seja um vlew atrazado revivendo seu topico
avatar
mako182

Ranking : Nota C
Notas recebidas : C+C
Data de inscrição : 30/05/2009
Número de Mensagens : 334
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   :
   :
   :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por Froidz em Sex 13 Nov 2009, 07:26

Valeu cara, comentarios sao sempre bem vindos =)
Nao eh soh por conexao local nao amigo =D
avatar
Froidz

Data de inscrição : 03/08/2008
Número de Mensagens : 1053
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por lipe1994 em Sex 27 Nov 2009, 12:54

Froidz...Tá de parabéns....

Mais queria fazer uma pergunta:
PQ Vc não faz mais tutos assim,Tipo Joao Neto??

Tá ai a sugestão...
avatar
lipe1994

Data de inscrição : 16/10/2008
Número de Mensagens : 304
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   :
   :
   :

Ver perfil do usuário http://www.gmbr.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por o cara em Dom 29 Nov 2009, 15:35

no meu deu o seguinte erro...
___________________________________________
ERROR in
action number 1
of Create Event
for object conectar:

Error in code at line 1:
if !mplay_init_tcpip("Meu IP")

at position 5: This function is only available in the Pro Edition.

você sabe o que eu tenho se tem algo que concerte isso sem precisar comprar o pro???
Sad
avatar
o cara

Data de inscrição : 27/11/2009
Número de Mensagens : 103
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por ieu em Dom 29 Nov 2009, 15:56

no meu deu o seguinte erro...
___________________________________________
ERROR in
action number 1
of Create Event
for object conectar:

Error in code at line 1:
if !mplay_init_tcpip("Meu IP")

at position 5: This function is only available in the Pro Edition.

você sabe o que eu tenho se tem algo que concerte isso sem precisar comprar o pro???
jogos onlines,3D com image_angle e ect. necessitam do GM PRO então o unico jeito é você comprar o PRO mesmo
avatar
ieu

Data de inscrição : 26/09/2009
Número de Mensagens : 122
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por RoadGuy em Dom 29 Nov 2009, 19:27

Bom Post*

Editado por CPinheiro: Faça comentários mais construtivos.
Avisado.
avatar
RoadGuy

Data de inscrição : 29/11/2009
Número de Mensagens : 167
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário http://movimentodigital.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por jogio em Sab 13 Mar 2010, 20:58

Uma pergunta como se faz o jogo multiplayer com chat?
avatar
jogio

Data de inscrição : 13/03/2010
Número de Mensagens : 43
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário http://www.jogio.webnode.com

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por Gabrielbs11 em Sex 02 Abr 2010, 15:10

Deslculpa,mais que comandos eu boto no player 2?
avatar
Gabrielbs11

Data de inscrição : 14/02/2010
Número de Mensagens : 76
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário http://pokextutoriais.blogspot.com

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por Henrique_GJ em Ter 04 Maio 2010, 15:21

@o cara escreveu:no meu deu o seguinte erro...
___________________________________________
ERROR in
action number 1
of Create Event
for object conectar:

Error in code at line 1:
if !mplay_init_tcpip("Meu IP")

at position 5: This function is only available in the Pro Edition.

você sabe o que eu tenho se tem algo que concerte isso sem precisar comprar o pro???
Sad

ora, claro que tem como, é simples.... basta baixar o CRACK, bom, facil, simples, e de graçaaaaaaaaaaaaaaaa

quem quizer eu posso enviar só não posto aqui prq é proibido (e com razão se os cara da forumero pega ta laskado)

e o tuto tá muito bom tá de parabéns eu só num sei fazer aquilo ainda prq tem muita coisa que eu num aprendi mas se eu estudar um pouquinho eu aprendo e esse tuto vai ajudar com certeza =) Happy Happy Happy Happy Happy Happy Happy
avatar
Henrique_GJ

Data de inscrição : 30/12/2009
Número de Mensagens : 1344
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   :
   :
   :

Ver perfil do usuário http://sitedosjogos.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por xaelnegro em Sex 07 Maio 2010, 16:54

teria algum problema nos scripts? tentei com todo meu vasto conhecimento de programa (0,00000001/2) e minha infineta curiosidade mas não consegui progresso algum, não consigo fazer com que um jogador entre ne uma sessão criada por outro, apenas informa que não há sessão iniciada.
avatar
xaelnegro

Data de inscrição : 07/05/2010
Número de Mensagens : 1
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por ktinho456 em Sex 14 Maio 2010, 21:31

TA BOM ENTENDI TESTEI E DEU CERTINHO MAS AGORA MEUS AMIGOS EU TENHO UM PROGETO DE UM WEB GAME MAS EU NAO CONSIGO ACHAR UM SCRIPT PARA COLOCAR ELE COMO MMO OU ENVIAR SOKETS.

AE EU VIM AKI PARA SABER SE ALGUM MAKER TEM UMA SOLUCAO PARA MEU PROBLEMA

e que jogos feito em web sao bem mais jogados que outros que tem que baiar para jogar po exemplo esses aqui www.maidmarian.com/ ESSE E FEITO EM SHOKWAVE 3D E MUITO BOA AS JOGABILIDADES DELE
avatar
ktinho456

Data de inscrição : 14/05/2010
Número de Mensagens : 9
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por dd123 em Sex 14 Maio 2010, 23:07

alguem que conseguio manda uma engine ai!! é só conexão de lan??

dd123

Data de inscrição : 12/04/2010
Número de Mensagens : 126
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por shaedol em Dom 26 Set 2010, 12:37

No meu não pega multiplayer eu testo e n da em nada.
avatar
shaedol

Data de inscrição : 21/09/2010
Número de Mensagens : 45
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Criando um jogo Multiplayer Online

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Página 1 de 2 1, 2  Seguinte

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum