Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

Problemas com a "39dll" em jogo multiplayer.

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Bielfig
Novato
Novato
Reações: 0
Mensagens: 12

Problemas com a "39dll" em jogo multiplayer.

Mensagem por Bielfig » Ter Mai 17, 2016 6:04 pm

Então tava testando meu jogo online com meu amigo, testamos tudo do game mais ai dps de um tempo quando estavamos la jogando uns 10 min dps o server começou a ficar cinza falando que não estava respondendo mais, o jogo estava rodando só que um pouco lagado dava para jogar online ainda os inimigos atirando um monte de bala sem delay nois 2 saimos do server e continuou cinza ai fechei o que pode tar dando isso?
Editado pela última vez por junior.rod2 em Ter Mai 17, 2016 6:11 pm, em um total de 1 vez.
Razão: Adicionar mais detalhes ao titulo do tópico.

Avatar do usuário
gabrielsch
Colaborador
Colaborador
Reações: 0
Mensagens: 234

Re: Problemas com a "39dll" em jogo multiplayer.

Mensagem por gabrielsch » Ter Mai 17, 2016 7:07 pm

Quando você diz "...o server começou a ficar cinza... não estava respondendo mais..." tu se refere ao servidor de forma exclusiva? Digo, o cliente e servidor do teu jogo não ficam no mesmo projeto correto?
Você disse que estava rodando um pouco lagado, nesse caso o lag que você se refere é de internet (ping) ou desempenho do jogo (fps) ou os dois? No caso do desempenho tanto do servidor quanto do cliente, é quase certeza que esse lag é causado por um numero absurdo de instancia que não são destruídas e acabam tendo que ser processadas pelo servidor ou cliente.
Verifique se o cliente e servidor não estão sofrendo de memory leaking/vazamento de memória, inicie tanto o servidor quanto o cliente, anote a quantidade de memória RAM que eles usam na arrancada, ao decorrer do jogo acompanhe se o uso de memória aumenta com o tempo, se sim, você pode ter sérios problemas de vazamento de memória.
Imagem

Avatar do usuário
Bielfig
Novato
Novato
Reações: 0
Mensagens: 12

Re: Problemas com a "39dll" em jogo multiplayer.

Mensagem por Bielfig » Ter Mai 17, 2016 9:29 pm

Gabriel obrigado por ter respondido meu tópico tipo vou explicar detalhadamente:
Eu e meu colega Ismael aqui do fórum testamos o jogo o servidor e o cliente, não são os mesmos arquivos, tem o arquivo servidor e o arquivo cliente, eu abro o servidor depois abro o cliente e conecto ao servidor ele também conectou testamos e jogamos bastante, mais depois de 10 minutos ficamos lá parado. Estavamos só conversando pelo chat do jogo estava observando o server a setinha do mouse apareceu a roletinha azul, quando atualiza a área de trabalho o servidor ficou cinza quando algo para de carregar fica cinza no windows 7.E parou de funcionar mais não fechou continuou aberto e se você tentasse fechar falava que o Tombterra server parou de funcionar o windows esta procurando alguma solução mais sem responder eu e meu colega conseguimos conversar pelo chat mais depois o jogo crashou para mim e para ele e os inimigos ficavam só parado atirando bullets balas eu consegui entrar no servidor bugado que não estava respondendo e não dava para ver o debug ja que não dava para clicar em nada consegui entrar,logar,pegar items e tudo que da para fazer no jogo mais o jogo estava bugado vc ativava as habilidade os movimento dela não funcionavam e os inimigo atiravam balas só que elas não se moviam mais miravam em sua direção então fechei o server ai já não podia usar habilidades e os inimigo não atirava foi ai que vi que o serve tava rodando mais super mega lagado para carregar travado e conseguia atirar nos inimigos mais suas mascaras estavam só com uma pontinha para acertar o tiro testei com 3 cliente dentro do server eu deixei lá atirei pra todo canto fui tomar banho e deixei eles parado que nem com o ismael voltei e o server estava rodando. quando eu eo o ismael tava lá parado segundos antes do servidor travar o fps do servidor estava em 30 o numero de instancias em 9 então não entendo o erro.
mals pelas falta de virgula mais o texto é bem grande e preciso que tu responda isso hoje pelo menos obrigado.

Avatar do usuário
gabrielsch
Colaborador
Colaborador
Reações: 0
Mensagens: 234

Re: Problemas com a "39dll" em jogo multiplayer.

Mensagem por gabrielsch » Ter Mai 17, 2016 10:21 pm

Tu precisa melhorar esse português, usar virgula não é tão difícil assim...
Antes de mais nada, tu precisa fazer aquele teste que eu falei no último post sobre vazamento de memória, se não for isso outras possibilidades devem ser analisadas.
Imagem

Avatar do usuário
Bielfig
Novato
Novato
Reações: 0
Mensagens: 12

Re: Problemas com a "39dll" em jogo multiplayer.

Mensagem por Bielfig » Qua Mai 18, 2016 1:28 pm

Não está sofrendo nenhum problema de memória, seu numero de instâncias estava em 9, o FPS em 30, simplesmente travou.Se o problema fosse de memória ele teria indo diminuindo seu fps, mais não diminuiu simplesmente travou.E isso só da quando testo com outras pessoas, agora comigo não da, e quando não tem clientes no servidor o servidor  remove os inimigos e ativa instâncias desativadas e as destrói.O problema não pode ser isso, por que isso só acontece depois de 10 min, ele pode fechar abrir fazer o que quiser, levar kick que não vai acontecer nada.No game simplesmente depois de 10 minuto o server aberto e com outra pessoa de uma rede diferente da isso.
Mais o que eu não entendendo é que meu outro colega Ian estava bem lagado no jogo o tempo que ele demorou para crashar o servidor foi pelo menos de 7 minutos, e o Ismael tava com menos lag e levou 10 minutos.

Avatar do usuário
gabrielsch
Colaborador
Colaborador
Reações: 0
Mensagens: 234

Re: Problemas com a "39dll" em jogo multiplayer.

Mensagem por gabrielsch » Qua Mai 18, 2016 1:34 pm

Você por a caso fez o teste que eu falei para comprovar que não tem nenhum vazamento de memória? O número de instancias baixa ainda pode ocasionar esse tipo de problema se usam data structures etc. e não as liberam da memória. Talvez seja melhor tu postar o código que tu usa para o networking do servidor e do cliente para nós podermos dar uma analisada.
Imagem

Avatar do usuário
Bielfig
Novato
Novato
Reações: 0
Mensagens: 12

Re: Problemas com a "39dll" em jogo multiplayer.

Mensagem por Bielfig » Qua Mai 18, 2016 3:14 pm

blz
INICIALIZADOR DO SERVIDOR
CREATE:
dllinit(0, 1, 1); //Initializes the 39dll

servertcp = tcplisten(real(global.port), real(global.maxplayers), 1); //Start listening (looking) for new connections, with maximum of 10 connections at a time
STEP:
[gml=gml]
//Accept a new connection if there is any
global.players=instance_number(obj_client)
new_connection = tcpaccept(servertcp,1);
if (new_connection <= 0)
{
    break;
}
//If there is a connection that i just accepted then:
if(new_connection)
{
if global.players<real(global.maxplayers)
{

    clearbuffer();
    writebyte(MSG_SERVERFULL)
    writebyte(1)
    writestring(global.world)
    writebyte(new_connection)
    sendmessage(new_connection)
    //Ignore the setsync();
    
    //Create an object dedicated to the new guy connected
   
    addconnection = instance_create(-7200,-7200, obj_client);
    addconnection.tcp = new_connection; //The tcp will represent his NETWORK unique id
    }
    else
    {
    clearbuffer();
    writebyte(MSG_SERVERFULL)
    writebyte(0)
    sendmessage(new_connection)
    closesocket(new_connection)
    }
    }[/gml]
Step do obj_client:
//RECEIVE MESSAGES HERE (from the owner of the client)
while(1) //Infinite loop (to keep checking for messages forever)
{
if close=true
{
closetime-=1
if closetime<1
{
closesocket(tcp)
}
}

if ingame=true
{
for (i=0 i<global.activei[room_i] i+=1)
{
if global.activeinst[room_i,i]!=0
{
if distance_to_point(global.activexx[room_i,i], global.activeyy[room_i,i]) < global.activedist[room_i,i] && global.activeroom[room_i,i] = currentroom
{
instance_activate_object(global.activeinst[room_i,i])
global.activeinst[room_i,i]=0
}
}
}
}
msize = receivemessage(tcp); //Reads size of message.
//if the size is 0, then client disconnected from me (the server).
    //since he disconnected, ill kill his object (destroy it).
if !tcpconnected(tcp) 
{
auto_quit();
} 
    if(msize == 0) 
{
time-=1
if time<1
{
auto_quit()
}
}
else
{
time=5*room_speed
}       //since he disconnected, ill kill his object (destroy it).    
        
//if the size is less than 0, there is no messages.. so use break; to stop the code from continueing
    if(msize <= 0) {break}  
  
//but if there is messages then read the message identifier (usually in the layout of MSG_something, defined in constants)
mid = readbyte(); 
    
//Execute different scripts for different online-messages
//eg: MSG_MOVEMENT -> execute case_msg_movement() script.
switch(mid)
{
case MSG_MOVIMENT: case_moviment(); break;
case MSG_LOGIN: case_login(); break;
case MSG_NEEDUMMY: case_needummy(); break;
case MSG_NAMEDUMMY: case_namedummy(); break;
case MSG_SERVERFULL: case_serverfull(); break;
case MSG_CHECKMOD: case_checkmod(); break;
case MSG_ROOM: case_room(); break;
case MSG_COMMAND: case_command() break;
case MSG_PROJECTILE: case_projectiletoward(); break;
case MSG_CHAT: case_chat() break;
case MSG_ITEM: case_item() break;
}
}
o auto_quit é só para sair do game mesmo você não vai entender muito bem esse código gabriel você não poderia tentar resolver esse problema testando comigo? add ai gabriel.ferreira240

Responder

Quem está online

Usuários navegando neste fórum: Ahrefs [Bot] e 7 visitantes