Bug do GM ??

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

Bug do GM ??

Mensagem por Lukbebalduke em Qui 05 Abr 2012, 13:22

Pessoal revisei meu codigo varias vezes, e nao restou outra opçao alem de ser um bug do GM. Criei um mapa de 64000x4800 , e um codigo que gerava o mapa, deixei na room speed 9999. Em fim ele esta gerando mapa, só que em alguns lugares ele nao preenche o mapa e fica um vazio, só que isso nao tem uma explicaçao peo codigo. Poderia ser um bug do GM ?

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por Golpe Baixo em Qui 05 Abr 2012, 13:26

O tamanho da room é muito grande, e a speed também. Não sei se pode ser algo relacionado a esses fatores, mas se você postar o código de geração do mapa pode ajudar.

Golpe Baixo

Ranking : Sem avaliações
Número de Mensagens : 284
Data de inscrição : 01/10/2011
Notas recebidas : A
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://caiqueluzsilva.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por Lukbebalduke em Qui 05 Abr 2012, 13:35

Código:
if b<=192
{
instance_create(a,b,choose(obj_terra,obj_terra_grama))
}
//
if b<=384 and b>192
{
instance_create(a,b,obj_terra)
}
//
if b<=640 and b>384
{
instance_create(a,b,choose(obj_terra,obj_pedra,obj_pedra))
}
//
if b<=1024 and b>640
{
instance_create(a,b,choose(obj_terra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra))
}
//
if b<=1504 and b>640
{
instance_create(a,b,choose(obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_carvao,obj_terra))
}
//
if b<=1888 and b>1504
{
bola=irandom(100)
if bola=99
instance_create(a,b,obj_bronze)
if bola>=97 and bola<99
instance_create(a,b,obj_carvao)
if bola<97
instance_create(a,b,obj_pedra)
}
//
if b<=2272 and b>1504
{
bola=irandom(100)
if bola>=98
instance_create(a,b,obj_bronze)
if bola>=94 and bola<98
instance_create(a,b,obj_carvao)
if bola<94
instance_create(a,b,obj_pedra)
}

//
b+=32
if b=2272
{
a+=32
b=0
}

Tambem achei q fosse o tamanho e a speed. Mas para o tipo de jogo que eu vou fazer, a room precisa ser grande e se a speed for menor o mapa demora 1 hora para ser gerado

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por Golpe Baixo em Qui 05 Abr 2012, 13:39

Já deu para perceber o que delimita a área de geração. Você criou uma variável b e atribuiu valores específicos. Pois bem, em alguns instance_creates você colocou no argumento y essa variável, e o valor dela é menor que o tamanho da room no eixo y. Para aumentar o valor de b, você pode checar se o valor atual dela é menor que o comprimento/a largura da tela.

PS : seria bom saber o valor dessas variáveis, não consigo saber qual é a verdadeira função delas, só disse o que disse acima baseado no código que você postou. Seria bom também saber como o sistema funciona.

Golpe Baixo

Ranking : Sem avaliações
Número de Mensagens : 284
Data de inscrição : 01/10/2011
Notas recebidas : A
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://caiqueluzsilva.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por Lukbebalduke em Qui 05 Abr 2012, 13:47

A= lugar y onde vai ser criado
B=lugar x onde vai ser criado
bola=Nada nao, so a chance de craiar um tipo de bloco ou outro

Inicia o B=0 e o Q=0
ai a cada step o b+32
Ai quando o B chega no 4800 (ali no casa nao sei porque mais eu mudei pra 2272) ele volta ao 0, e o A+32

Assim ele vai gerando em todo lugar.

Assim q funciona

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por Golpe Baixo em Qui 05 Abr 2012, 13:57


A= lugar y onde vai ser criado
B=lugar x onde vai ser criado

Bom, se b define o x onde o objeto vai ser criado, por que você colocou essa variável no no argumento y do instance_create? Razz


Ai quando o B chega no 4800 (ali no casa nao sei porque mais eu mudei pra 2272) ele volta ao 0, e o A+32

Acho que seria melhor setar o b para 4.800 quando ele for maior ou igual que 4.800.

Golpe Baixo

Ranking : Sem avaliações
Número de Mensagens : 284
Data de inscrição : 01/10/2011
Notas recebidas : A
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://caiqueluzsilva.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por Lukbebalduke em Qui 05 Abr 2012, 14:09

No caso do B e do A eu me confundi XD, mas deu pra entender
E quanto ao b>=4800 nao precisa ja que 4800 é multiplo de 32

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por Golpe Baixo em Qui 05 Abr 2012, 14:17

E quanto ao b>=4800 nao precisa ja que 4800 é multiplo de 32

É, verdade. Mas o que eu queria dizer é que você poderia manter o valor de 4.800 em vez de deixar 0. Veja o trecho do código abaixo :

Código:

if b=2272 //ou 4800, de acordo com a sua correção
{
a+=32
b=0

Mas ai, ainda está ocorrendo o erro?

Golpe Baixo

Ranking : Sem avaliações
Número de Mensagens : 284
Data de inscrição : 01/10/2011
Notas recebidas : A
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://caiqueluzsilva.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por Lukbebalduke em Qui 05 Abr 2012, 14:23

so que ai ele so prencheria o canto esquerdo e a ultima linha de baixo. Nao sei se entendeu. Talvez se eu passar o GMK ajude um pouco:

http://www.4shared.com/file/fsfiPwJw/GMK_Engine_map.html

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por Golpe Baixo em Qui 05 Abr 2012, 14:25

pinpi escreveu:so que ai ele so prencheria o canto esquerdo e a ultima linha de baixo. Nao sei se entendeu. Talvez se eu passar o GMK ajude um pouco:

http://www.4shared.com/file/fsfiPwJw/GMK_Engine_map.html

Sim, ajudaria bastante, mas no caso eu não uso o Game Maker 8.1. Razz



Acho que agora estou começando a entender como funciona, o preenchimento é por linhas, bem pensado.

Golpe Baixo

Ranking : Sem avaliações
Número de Mensagens : 284
Data de inscrição : 01/10/2011
Notas recebidas : A
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://caiqueluzsilva.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por saim em Qui 05 Abr 2012, 14:38

if b<=1888 and b>1504
{
bola=irandom(100)
if bola=99
instance_create(a,b,obj_bronze)
(...)
E se bola == 100? Não acontece nada e o espaço fica vazio.

Não precisa aumentar a velocidade da room pra gerar esse mapa, dá pra fazer no create event se você usar um loop.
Vai travar seu jogo por um tempo, talvez até alguns segundos, mas vai ser bem mais eficiente que gerar o mapa usando o step.
Código:
for(a = 0; a <= largura; a += 32){
for(b = 0; b <= altura; b += 32){
//código de geração do mapa
}}
Agora, uma vez gerado esse mapa, a quantidade de intâncias pode deixar o processamento lento. Talvez seja interessante desativar aquelas que não estiverem sendo usadas.

Edit:
if b<=1024 and b>640
{
instance_create(a,b,choose(obj_terra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra))
}
//
if b<=1504 and b>640
instance_create(a,b,choose(obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_carvao,obj_terra))
}
Outro erro, talvez? entre 640 e 1024 podem ser serão criadas duas instâncias de objetos sorteados. Talvez seja o que você quer, mas não parece que é.


Última edição por saim em Qui 05 Abr 2012, 14:44, editado 1 vez(es)

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por Lukbebalduke em Qui 05 Abr 2012, 14:39

Entao vou descrever ele por inteiro

obj_terra , obj_carvao , obj_bronze
simples bloco de 32x32
obj_terra_grama
32x32
create:
Código:
instance_create(x,y,obj_destroi_mato)
obj_destroi_mato
32x192
create:
Código:
alarm[0]=3
alarm 0
Código:
instance_destroy()
collision com obj_terra
Código:
with(other)
instance_destroy()
colision com obj_terra_grama
Código:
with(other)
instance_destroy()
obj_create_map
create
Código:
a=0
b=0
step
Código:
if b<=192
{
instance_create(a,b,choose(obj_terra,obj_terra_grama))
}
//
if b<=384 and b>192
{
instance_create(a,b,obj_terra)
}
//
if b<=640 and b>384
{
instance_create(a,b,choose(obj_terra,obj_pedra,obj_pedra))
}
//
if b<=1024 and b>640
{
instance_create(a,b,choose(obj_terra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra))
}
//
if b<=1504 and b>640
{
instance_create(a,b,choose(obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_carvao,obj_terra))
}
//
if b<=1888 and b>1504
{
bola=irandom(100)
if bola=99
instance_create(a,b,obj_bronze)
if bola>=97 and bola<99
instance_create(a,b,obj_carvao)
if bola<97
instance_create(a,b,obj_pedra)
}
//
if b<=2272 and b>1504
{
bola=irandom(100)
if bola>=98
instance_create(a,b,obj_bronze)
if bola>=94 and bola<98
instance_create(a,b,obj_carvao)
if bola<94
instance_create(a,b,obj_pedra)
}

b+=32
if b=4800
{
a+=32
b=0
}
Room=3200x4800 (versao q eu estou testando, original 64000x48000)
room_speed=9999

Teste ai

EDIT

Valeu saim, mas nao adiantou,apenas previniu outro bug, pois o mapa continua deixando espaços vazios

EDIT 2

Talvez a imagem ajude


Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por saim em Qui 05 Abr 2012, 15:13

Olha, esse obj_destroi_mato... Ele leva alguns steps pra se autodestruir, mas até lá, ele destrói alguns objetos, inclusive o objeto obj_terra_grama, que CRIA o obj_destroi_mato.
Assim, ao criar o obj_terra_grama, ele cria o obj_destroi_mato, que destroi o obj_terra_grama e depois some, deixando um espaço em branco. Isso acontece nos primeiros 192 pixels.

Eu estava partindo do princípio que todos os objetos eram 32x32. Há mais algum que não seja?

Depois de resolvermos isso, me lembre de te passar outras alternativas a esses chooses. Eles estão muito grandes, tem formas mais elegantes de se chegar no mesmo resultado (não sei se melhora a eficiência, provavelmente não).

Viu o edit acima, né? Bom, a partir de 1504 pode-se fazer a mesma observação.

Edit:A imagem realmente ajudaria... se eu conseguisse visualizá-la daqui. Desculpe, vou ter que continuar tateando no código, mesmo.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por Lukbebalduke em Qui 05 Abr 2012, 15:18

Na verdade esse objeto destroi mato nao destroi quem o criou, se vc ver o print percebe que ele só serve para desnivelar o terreno

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por saim em Qui 05 Abr 2012, 16:00

pinpi escreveu:obj_terra_grama
32x32
create:
Código:
instance_create(x,y,obj_destroi_mato)
obj_destroi_mato
32x192
(...)
colision com obj_terra_grama
Código:
with(other)
instance_destroy()
Ele é criado sobre o criador e, na colisão com o criador, destrói o mesmo. DEVERIA destruir o criador.

Vou tentar dar uma olhada no print e, se não adiantar, no arquivo.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por Lukbebalduke em Qui 05 Abr 2012, 16:09

Na verdade nao pois a origem do obj_terra_grama é em cima e a do obj_destroimato é bem em baixo. Mas o problema nao esta ai, ja que ele deixa vazio no meio do mapa e nao em cima, olhar o print ajudaria a entender

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por saim em Qui 05 Abr 2012, 16:48

Se você desenhar linhas, com o obj_create_map, pode isolar o problema. Coloque ele numa depth menor que os demais objetos e escreva, no draw_event:
Código:
draw_line(0, 192, 4800, 192);
draw_text(20, 192, "192");
draw_line(0, 384, 4800, 384);
draw_text(20, 384, "384");
draw_line(0, 640, 4800, 640);
draw_text(20, 640, "640");
draw_line(0, 1024, 4800, 1024);
draw_text(20, 1024, "1024");
draw_line(0, 1504, 4800, 1504);
draw_text(20, 1504, "1504");
draw_line(0, 1888, 4800, 1888);
draw_text(20, 1888, "1888");
Faça isso e verifique em que região surgem as partes em branco.

Se é no meio do mapa, provavelmente o problema está no obj_pedra, que você não detalhou. Estou assumindo que é de uma sprite 32x32, sem nenhum evento, então não deveria ter problemas.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por Lukbebalduke em Qui 05 Abr 2012, 18:03

Na verdade nao é sempre no mesmo lugar, sempre muda, nao é o obj. Ja deu uma olhada no print ? Ele ia ajudar bastante a perceber o q ha de errado

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por saim em Sab 07 Abr 2012, 17:14

Vi a imagem. São aqueles espaços em branco na parte do meio, né?
Beleza, vou dar mais uma olhada nos códigos. PODE ter alguma situação em que nada é criado.
Mas na parte de cima está tudo em branco, realmente. Era pra estar mesmo, né?

Edit: Como eu disse, as linhas ajudaram (mas eu tive que desenhar elas em branco, em preto estavam quase invisíveis.
O problema é EVENTUAL, entre as linhas 640 e 1024. Vamos rever o código desse trecho:
Código:
if b<=1024 and b>640
{
instance_create(a,b,choose(obj_terra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra))
}
//
if b<=1504 and b>640
{
instance_create(a,b,choose(obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_pedra,obj_carvao,obj_terra))
}
A única coisa eventual ali é o obj_terra. Mas o que tem no obj_terra? Nada no create, nada no step... só um evento de colisão com o próprio obj_terra (que você NÃO mencionou, né? Evil or Very Mad ). Nesse evento, um destrói o outro. Ou melhor, ambos se autodestroem.
"mas não tem como um tocar no outro, só tem um objeto em cada quadrado!"
Eu já mostrei isso antes: os dois "if's" rodam pra valores entre 640 e 1024, de forma que duas instâncias de objetos sortidos são criadas em cada espaço desse trecho. EVENTUALMENTE, duas instâncias do obj_terra, que acabam por se anular.

Solução?
- Troque o 640 do segundo if por 1024 (que é o que eu acho que você queria desde o princípio).
- Elimine o evento de colisão do obj_terra.

Testei a primeira solução e não ocorreu mais o erro, mas não dá pra dizer que foi a medida adotada que resolveu o problema, já que trata-se de algo eventual.

PS: Depois de um tempo gerando a room, a fps cai pra valores mais mundanos. Bobagem sugerir ao GM valores tão altos. A menos que a ordem e tempos de criação sejam importantes, sugiro veementemente (na verdade, insisto na sugestão, porque já foi feita) mudar esse sistema pra dentro de um create event e desativar as instâncias que não estiverem na tela.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por Lukbebalduke em Seg 09 Abr 2012, 13:29

Nao congui testar ainda mais pelo que vc disse , deve funcionar. Assim que chegar na minha casa vou ver se eu arrumo. Quanto ao tamanho da room eu vou tentar diminuir.

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Bug do GM ??

Mensagem por Conteúdo patrocinado Hoje à(s) 10:44


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

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


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