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
» 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
» 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
Massive multiplayer online - parte 3
+5
Gonzo
vegeto122
capcomx9
Crovux
Pit Bull
9 participantes
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Massive multiplayer online - parte 3
Massive multiplayer online
parte 3
Caso não tenha lido a parte 1 este é o LINK.
Nível: iniciante.
Descrição:Este tutorial irá abortar todos os conceitos sobre MMO, desde mensagens simultâneas, banco de dados até o projeto final: jogo MMORPG.
Todos os comandos da 39dll estão neste LINK.
Neste tutorial, você irá aprender como criar um sistema de login e cadastro, usando arquivos INI.
Vamos usar os arquivos cliente.gmk e servidor.gmk para dar continuidade ao tutorial.
O banco de dados terá os seguintes itens:
- Senha da conta
- Nivel do personagem
- experiencia do personagem
- nome do personagem
- classe do personagem
- ban (caso a conta foi banida ou não)
Criei alguns scripts para deixar o tutorial menor, para baixar clique aqui.
Insira esses scripts no Servidor.
Cliente
Precisamos criar uma Room para a tela de login, renomeie ela como ro_login.Crie o objeto obj_login e adicione-o na Room.
Lembre-se que está Room precisa ser iniciada primeiro.
obj_login:
Precisamos criar 2 variáveis para armazenar nosso login e senha.
- Código:
login=""
senha=""
- Código:
foco=1 //1=login 2=senha
- obj_login = Create Event:
- Código:
login=""
senha=""
foco=1 //1=login 2=senha
- Código:
//primeira barra
draw_set_color(c_white)
draw_rectangle(250,240,250+100,240+25,false)//fundo branco
draw_set_color(c_black)
draw_rectangle(250,240,250+100,240+25,true)//borda preta
//segunda barra
draw_set_color(c_white)
draw_rectangle(250,280,250+100,280+25,false)//fundo branco
draw_set_color(c_black)
draw_rectangle(250,280,250+100,280+25,true)//borda preta
//botao de login
draw_set_color(c_white)
draw_rectangle(275,320,275+50,320+25,false)//fundo branco
draw_set_color(c_black)
draw_rectangle(275,320,275+50,320+25,true)//borda preta
draw_text(280,324,"entrar")
Agora vamos adicionar na tela o login e senha, mas primeiro devemos proteger a senha do jogador para que ninguém veja sua senha.
- Código:
senha_escondida="" //zerar a variavel toda vez que for contar denovo
for(i=1;i<=string_length(senha);i+=1)//para cada caractere que tiver na senha, acrescentar um asterisco na variavel senha_escondida
{
senha_escondida+="*"
}
- Código:
//desenhar o login e senha na tela
draw_text(255,244,login)
draw_text(255,284,senha_escondida)
- obj_login Draw Event:
- Código:
//primeira barra
draw_set_color(c_white)
draw_rectangle(250,240,250+100,240+25,false)//fundo branco
draw_set_color(c_black)
draw_rectangle(250,240,250+100,240+25,true)//borda preta
//segunda barra
draw_set_color(c_white)
draw_rectangle(250,280,250+100,280+25,false)//fundo branco
draw_set_color(c_black)
draw_rectangle(250,280,250+100,280+25,true)//borda preta
//botao de login
draw_set_color(c_white)
draw_rectangle(275,320,275+50,320+25,false)//fundo branco
draw_set_color(c_black)
draw_rectangle(275,320,275+50,320+25,true)//borda preta
draw_text(280,324,"entrar")
senha_escondida="" //zerar a variavel toda vez que for contar denovo
for(i=1;i<=string_length(senha);i+=1)//para cada caractere que tiver na senha, acrescentar um asterisco na variavel senha_escondida
{
senha_escondida+="*"
}
//desenhar o login e senha na tela
draw_text(255,244,login)
draw_text(255,284,senha_escondida)
- Código:
limite_de_caracteres=5
limite=""
switch(foco)
{//quando qualquer tecla for apertada
case 1:
limite=string_copy(keyboard_string,1,limite_de_caracteres)
login=limite //colocar no login apenas os caracteres ate o limite.
keyboard_string=login //atualizar o keyboard_string
break;
case 2:
limite=string_copy(keyboard_string,1,limite_de_caracteres)
senha=limite //colocar na senha apenas os caracteres ate o limite.
keyboard_string=senha //atualizar o keyboard_string
}
- obj_login Keyboard Event for ANY KEY key:
- Código:
limite_de_caracteres=5
limite=""
switch(foco)
{//quando qualquer tecla for apertada
case 1:
limite=string_copy(keyboard_string,1,limite_de_caracteres)
login=limite //colocar no login apenas os caracteres ate o limite.
keyboard_string=login //atualizar o keyboard_string
break;
case 2:
limite=string_copy(keyboard_string,1,limite_de_caracteres)
senha=limite //colocar na senha apenas os caracteres ate o limite.
keyboard_string=senha //atualizar o keyboard_string
}
- obj_login Step Event:
- Código:
if keyboard_check_released(vk_tab)//usando tab para mudar o foco
{
if foco=1 //caso esteja no login, va para a senha, caso contrario va para o login
{
keyboard_string=senha//colocar o que tinha na senha no keyboard_string
foco=2// mudar para a senha
} else
{
keyboard_string=login//colocar o que tinha no login no keyboard_string
foco=1// mudar para o login
}
}
if mouse_check_button_pressed(mb_left)//usando mouse para mudar o foco
{
if mouse_x > 250 and mouse_x < 250+100 and mouse_y > 240 and mouse_y < 240+25//verificar se o mouse esta dentro do login
{
keyboard_string=login//colocar o que tinha no login no keyboard_string
foco=1// mudar para o login
}
if mouse_x > 250 and mouse_x < 250+100 and mouse_y > 280 and mouse_y < 280+25//verificar se o mouse esta dentro da senha
{
keyboard_string=senha//colocar o que tinha na senha no keyboard_string
foco=2// mudar para a senha
}
}
if keyboard_check_pressed(vk_enter)//caso aperte enter para entrar no jogo
{
instance_create(0,0,obj_conexao)
if instance_exists(obj_conexao)//caso tenha conectado enviar login e senha
{
clearbuffer()
writebyte(2)//identificação da mensagem(verificação de login e senha)
writestring(login)
writestring(senha)
sendmessage(obj_conexao.server)
}
}
if mouse_check_button_pressed(mb_left)//caso use o mouse para entrar no jogo
{
if mouse_x > 275 and mouse_x < 275+50 and mouse_y > 320 and mouse_y < 320+25//verificar se o mouse esta dentro do botão
{
instance_create(0,0,obj_conexao)
if instance_exists(obj_conexao)//caso tenha conectado enviar login e senha
{
clearbuffer()
writebyte(2)//identificação da mensagem(verificação de login e senha)
writestring(login)
writestring(senha)
sendmessage(obj_conexao.server)
}
}
}
Em vez de fecharmos o jogo, simplesmente destruímos o objeto obj_conexao para que possa tentar entrar novamente.
- Código:
if (server<0)
{
show_message("servidor desligado")
instance_destroy()
}
O final da modificação ficará assim:
- obj_conexao Create Event:
- Código:
dllinit(0,1,1);
ip_do_servidor='127.0.0.1'
porta_de_conexao=5050
nome=""
server = tcpconnect(ip_do_servidor,porta_de_conexao,1);
if (server<0)
{
show_message("servidor desligado")
instance_destroy()
}
Agora precisamos fazer com que o servidor verifique a conta e retorne uma resposta para o usuário.
Servidor
Como estamos usando mais de 1 atributo(variável) para cada jogador, precisamos atualizar nossa lista de jogadores.- obj_server Create Event:
- Código:
dllinit(0,1,1);
porta_de_conexao=5050
quantidade_maxima_de_jogadores=100
porta=tcplisten(porta_de_conexao,quantidade_maxima_de_jogadores,1)
for(i=1;i<=quantidade_maxima_de_jogadores;i+=1)
{
jogador[i,1]=0 //identificação
jogador[i,2]="" //nick do personagem
jogador[i,3]=1 //nivel
jogador[i,4]=0 //experiencia
jogador[i,5]="" //classe(raça)
}
- obj_server 1º action do Step Event:
- Código:
identificacao=tcpaccept(porta,1)
if (identificacao>0) //caso alguem se conecte
{
vaga=verificar_vaga()
if (vaga>0)
{
jogador[vaga,1]=identificacao //armazenar a identificação
}else
{
closesocket(identificacao)//desconectar o cliente
}
}
- Script verificar_vaga():
- Código:
for(i=1;i<=quantidade_maxima_de_jogadores;i+=1)
{
if jogador[i,1]=0 //se tiver vaga
{
return i;//retornar o numero da vaga
}
}
return -1;//se todas estiverem cheias, vai retornar -1
- obj_server 2º action Step Event:
- Código:
for(w=1;w<=quantidade_maxima_de_jogadores;w+=1)//receber mensagem de todos online
{
size = 1; //size armazenará o conteudo da mensagem
while (size)//enguanto essa mensagem for diferente
{
size = receivemessage(jogador[w,1]); //Receber a mensagem de cada player, por isso usamos a identificação de cada um.
if (!size) //Se não recebermos nada, sair desse loop e passar para o próximo player
{break;}
msgID = readbyte(); //Lemos o primeiro byte da mensagem, ou seja a identificação da mensagem.
switch (msgID)
{
case 1://caso seja o chat
texto=readstring()//armazenamos o texto na variavel texto
//repassamos a mensagem para todos
clearbuffer()//sempre limpar para nao mandar "lixo"
writebyte(1)//identificação da mensagem
writestring(texto)
for(ww=1;ww<=quantidade_maxima_de_jogadores;ww+=1)//lembre-se, um loop dentro do outro, você deve mudar a variavel que estiver sendo usada
{
sendmessage(jogador[ww,1])//enviar para todos
}
break;//fim
}
}
}
- obj_server 3º action Step Event:
- Código:
for(i=1;i<=quantidade_maxima_de_jogadores;i+=1)//verificar todos os jogadores
{
if (tcpconnected(jogador[i,1])=0)//caso esse jogador não esteja online
{
jogador[i,1]=0 //retiramos ele da lista mudando sua identificação para 0.
}
}
obj_server:
Vamos adicionar mais 1 identificação de mensagem, para receber o login e senha.
- Código:
case 2://verificar conta do usuario
login=readstring()//ler login
senha=readstring()//ler senha
resposta=verificar_conta(login,senha)
clearbuffer()
writebyte(2)//identificação da mensagem
writebyte(resposta)//vai retornar uma resposta para o jogador
sendmessage(jogador[w,1])//enviar para o mesmo jogador que envio a mensagem.
switch(resposta)//precisamos atualizar o servidor
{
case 3: //caso a senha esteja correta
//adicionar as informações do jogador na lista
jogador[w,2]=pegar_info(login,"nome")
jogador[w,3]=pegar_info(login,"nivel")
jogador[w,4]=pegar_info(login,"xp")
jogador[w,5]=pegar_info(login,"raça")
break;
default://caso seja qualquer outra resposta
closesocket(jogador[w,1])//desconectar o jogador
jogador[w,1]=0 //retira-lo da lista de jogadores
break;
}
break;
- obj_server 2º action Step Event:
- Código:
for(w=1;w<=quantidade_maxima_de_jogadores;w+=1)//receber mensagem de todos online
{
size = 1; //size armazenará o conteudo da mensagem
while (size)//enguanto essa mensagem for diferente
{
size = receivemessage(jogador[w,1]); //Receber a mensagem de cada player, por isso usamos a identificação de cada um.
if (!size) //Se não recebermos nada, sair desse loop e passar para o próximo player
{break;}
msgID = readbyte(); //Lemos o primeiro byte da mensagem, ou seja a identificação da mensagem.
switch (msgID)
{
case 1://caso seja o chat
texto=readstring()//armazenamos o texto na variavel texto
//repassamos a mensagem para todos
clearbuffer()//sempre limpar para nao mandar "lixo"
writebyte(1)//identificação da mensagem
writestring(texto)
for(ww=1;ww<=quantidade_maxima_de_jogadores;ww+=1)//lembre-se, um loop dentro do outro, você deve mudar a variavel que estiver sendo usada
{
sendmessage(jogador[ww,1])//enviar para todos
}
break;//fim
case 2://verificar conta do usuario
login=readstring()//ler login
senha=readstring()//ler senha
resposta=verificar_conta(login,senha)
clearbuffer()
writebyte(2)//identificação da mensagem
writebyte(resposta)//vai retornar uma resposta para o jogador
sendmessage(jogador[w,1])//enviar para o mesmo jogador que envio a mensagem.
switch(resposta)//precisamos atualizar o servidor
{
case 3: //caso a senha esteja correta
//adicionar as informações do jogador na lista
jogador[w,2]=pegar_info(login,"nome")
jogador[w,3]=pegar_info(login,"nivel")
jogador[w,4]=pegar_info(login,"xp")
jogador[w,5]=pegar_info(login,"classe")
break;
default://caso seja qualquer outra resposta
closesocket(jogador[w,1])//desconectar o jogador
jogador[w,1]=0 //retira-lo da lista de jogadores
break;
}
break;
}
}
}
Cliente
Vamos renomear a Room que executa o chat como ro_mundo, e nela que o jogo irá acontecer.Lemos a resposta.
- Código:
case 2://receber resposta do servidor sobre a conta
resposta=readbyte()
switch(resposta)
{
case 0:// a conta não existe
show_message("a conta nao existe")
closesocket(server)//desconectar com o servidor
instance_destroy()
break;
case 1://a conta esta banida
show_message("sua conta esta banida")
closesocket(server)//desconectar com o servidor
instance_destroy()
break;
case 2://a senha esta errada
show_message("senha incorreta.")
closesocket(server)//desconectar com o servidor
instance_destroy()
case 3://a conta existe, não esta banida e a senha esta correta
show_message("bem vindo")
room_goto(ro_mundo)//começar o jogo
break;
}
break;
- obj_conexao Step Event:
- Código:
size = 1;
while (size)
{
size = receivemessage(server); //Receber a mensagem do servidor
if (!size) //Se não recebermos nada, paramos por aqui
{break;}
msgID = readbyte(); //Lemos o primeiro byte da mensagem, ou seja a identificação da mensagem.
switch (msgID)
{
case 1://caso seja 1, ou seja, o chat, ele irá adicionar ao seu chat
if instance_exists(obj_chat)//caso o obj_chat exista podemos então adicionar a mensagem
{
texto=readstring()
add_chat(texto)
}
break;
case 2://receber resposta do servidor sobre a conta
resposta=readbyte()
switch(resposta)
{
case 0:// a conta não existe
show_message("a conta nao existe")
closesocket(server)//desconectar com o servidor
instance_destroy()
break;
case 1://a conta esta banida
show_message("sua conta esta banida")
closesocket(server)//desconectar com o servidor
instance_destroy()
break;
case 2://a senha esta errada
show_message("senha incorreta.")
closesocket(server)//desconectar com o servidor
instance_destroy()
break;
case 3://a conta existe, não esta banida e a senha esta correta
show_message("bem vindo")
room_goto(ro_mundo)//começar o jogo
break;
}
break;
}
}
Pronto! agora ele irá verificar se a conta existe e autorizar o jogador a continuar com o jogo.
Agora precisamos criar um modo cadastro. Quando o jogador receber a informação que a conta não existe o jogo poderá dar uma opção de cria-la.
- Código:
case 0:// a conta não existe
escolha=show_question("A conta não existe, deseja cria-la?")
if escolha=1//caso a pessoa queria criar a conta
{
closesocket(server)//desconectar com o servidor
a=instance_create(0,0,obj_conexao)//criamos uma nova conexao com o servidor
if instance_exists(a)//caso conecte
{
nome=get_string("Digite o nome do personagem","")
classe=0
while(classe=0)//enguanto o jogador nao escolher a classe nao parar de perguntar
{
classe=show_message_ext("Escolha uma classe para seu personagem","mago","guerreiro","")
}
clearbuffer()//enviamos uma mensangem para criar uma conta
writebyte(3)//identificação criar conta
writestring(obj_login.login)
writestring(obj_login.senha)
writestring(nome)
switch(classe)
{
case 1:
writestring("mago")
break;
case 2:
writestring("guerreiro")
break;
}
sendmessage(a.server)//enviamos para a nova conexao com o servidor
}
}
instance_destroy()//destruir esse objeto de qualquer jeito, pois foi criado um novo que dara a resposta.
break;
Servidor
Quando o jogador sair, precisamos limpar sua vaga na lista.- Código:
for(i=1;i<=quantidade_maxima_de_jogadores;i+=1)//verificar todos os jogadores
{
if (tcpconnected(jogador[i,1])=0)//caso esse jogador não esteja online
{
jogador[i,1]=0 //retiramos ele da lista mudando sua identificação para 0.
jogador[i,2]="" //nick do personagem
jogador[i,3]=1 //nivel
jogador[i,4]=0 //experiencia
jogador[i,5]="" //classe(raça)
}
}
Vamos testar tudo que fizemos? Vamos desenhar na tela do servidor todas as conexões atuais.
- Código:
for(i=1;i<=quantidade_maxima_de_jogadores;i+=1)
{
texto=""
texto+="id:"+string(jogador[i,1]) //identificação
texto+=" | nick:"+jogador[i,2] //nick do personagem
texto+=" | nivel:"+string(jogador[i,3]) //nivel
texto+=" | xp:"+string(jogador[i,4]) //experiencia
texto+=" | classe:"+jogador[i,5] //classe(raça)
draw_text(5,25*i,texto)
}
O chat precisa enviar o nick do jogador.
- Código:
case 1://caso seja o chat
texto=readstring()//armazenamos o texto na variavel texto
//repassamos a mensagem para todos
clearbuffer()//sempre limpar para nao mandar "lixo"
writebyte(1)//identificação da mensagem
writestring(jogador[w,2]+texto)//enviando nick e texto
for(ww=1;ww<=quantidade_maxima_de_jogadores;ww+=1)//lembre-se, um loop dentro do outro, você deve mudar a variavel que estiver sendo usada
{
sendmessage(jogador[ww,1])//enviar para todos
}
break;//fim
Toda vez que você for adicionar um atributo ao jogador, lembre-se de atualizar a lista de jogadores, pegar_info(), mudar_info() e criar_conta()
Como esse tutorial ficou gigante, caso esteja dando erro me envie o log pelos comentarios.
No próximo tutorial, Vamos começar com a movimentação dos jogadores.
Links dos gmk:
CLIENTE.GMK
SERVIDOR.GMK
Obrigado por ler.
-Bull, Pit
Edit: Um jogo exemplo do poder do game maker.
http://myriad.truevalhalla.com/
Re: Massive multiplayer online - parte 3
Hmm que bom que saiu o 3 Agora vai vim o 4 que tanto espero k tomara que resolva minhas duvidas... Você usa bastante variavel[i] isso me deixa meio perdidos nos códigos... Fica mais facil de identificar se usar uma variável pra cada coisa...
Crovux- Data de inscrição : 07/01/2012
Reputação : 6
Número de Mensagens : 169
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Massive multiplayer online - parte 3
Se eu tenho 5 variaveis pra cada jogador e quero ter 100 jogadores vou ter q criar 500 variaveis? Muito mas facil usando arrays
Re: Massive multiplayer online - parte 3
gostei do tutorial tirei print pra mostra que aki ta pegando
print tirado usando ubuntu(linux) estarei esperando part 4
print tirado usando ubuntu(linux) estarei esperando part 4
imagens e texto aleátorios
como fazer imagens e textos aleátorios ex:
entrei uma vez aparece
entro de novo aparece
entrei uma vez aparece
entro de novo aparece
vegeto122- Data de inscrição : 10/03/2013
Reputação : 0
Número de Mensagens : 9
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Massive multiplayer online - parte 3
espere a part 4 que ele deve encinarvegeto122 escreveu:como fazer imagens e textos aleátorios ex:
entrei uma vez aparece
entro de novo aparece
Re: Massive multiplayer online - parte 3
vegeto122 escreveu:como fazer imagens e textos aleátorios ex:
entrei uma vez aparece
entro de novo aparece
ops lugar errado
vegeto122- Data de inscrição : 10/03/2013
Reputação : 0
Número de Mensagens : 9
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Massive multiplayer online - parte 3
opa fui ver agora, cara muito legal em vou tomar um banho e tentar fazer alguma coisa aqui funcionar, dahora cara!!!!!!!!!! já ta funcionando ? té+
Gonzo- Data de inscrição : 29/05/2012
Reputação : 33
Número de Mensagens : 929
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Massive multiplayer online - parte 3
Tutoriais ótimos, estou ansioso esperando a continuação, eu fiz tudo no passo a passo, mas deu um bug, baixei o client e rodou perfeitamente... vou procurar onde errei... Parabéns pela série...
Re: Massive multiplayer online - parte 3
Cadê a continuação do tutorial? Não vai mais ter a parte 4?
DevMinuzzo- Data de inscrição : 03/10/2014
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Massive multiplayer online - parte 3
Part 4? PLZZZ?
Na espera do milagre hehe
Na espera do milagre hehe
Lupptyr- Data de inscrição : 06/03/2015
Reputação : 1
Número de Mensagens : 28
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Massive multiplayer online - parte 3
Olha só, ainda tem gente que gosta de fazer jogos online...
Amigo vou preparar a parte 4 nesse final de semana para você.
Amigo vou preparar a parte 4 nesse final de semana para você.
Re: Massive multiplayer online - parte 3
Valeu BRO O/ tamo junto, se puder tentar usar o Networking, acredito que o 39dll esteja meio obsoleto, não sei. xD
Lupptyr- Data de inscrição : 06/03/2015
Reputação : 1
Número de Mensagens : 28
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Massive multiplayer online - parte 3
Se eu fizer o Networking vou ter que mudar o projeto todo, o que é inviável porque tenho que seguir o tutorial, mas pra transformar os codigos da 39dll em nativo do gms não é dificil, há varios tutoriais que você pode achar na net.
Re: Massive multiplayer online - parte 3
Estou aguardando a parte 4 amigo, está ótimo, aprendendo bastante.
lordkill- Data de inscrição : 06/03/2015
Reputação : 0
Número de Mensagens : 2
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Massive multiplayer online - parte 3
Testei esse tutorial porem da erro nos 2 objetos principais obj_conexao / obj_server
Erro no obj_server;
Agora é quando ''loga'' a acc/ obj_conexao
Erro no obj_server;
Agora é quando ''loga'' a acc/ obj_conexao
Lupptyr- Data de inscrição : 06/03/2015
Reputação : 1
Número de Mensagens : 28
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Massive multiplayer online - parte 3
Pit Bull, ainda pensa em lançar um 4* Tutorial?
Edit: Desculpe double post x.x
Edit: Desculpe double post x.x
Lupptyr- Data de inscrição : 06/03/2015
Reputação : 1
Número de Mensagens : 28
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» Massive multiplayer online - parte 1
» Massive multiplayer online - parte 2
» Tutorial - Como fazer um jogo multiplayer online - Parte II
» Tutorial - Como fazer um jogo multiplayer online - Parte I
» CrossFire Multiplayer Online
» Massive multiplayer online - parte 2
» Tutorial - Como fazer um jogo multiplayer online - Parte II
» Tutorial - Como fazer um jogo multiplayer online - Parte I
» CrossFire Multiplayer Online
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos