GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» Como ajustar velocidade de cada frame da animação no game maker
por Ralphed Qui 18 Abr 2024, 18:28

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39


Erro em surface de vídeo...

4 participantes

Ir para baixo

Erro em surface de vídeo... Empty Erro em surface de vídeo...

Mensagem por Convidad Dom 10 Out 2010, 22:32

É o seguinte... eu criei uma surface de vídeo, 800 x 600, acho que é um tamanho modesto, não é exagerado e não "pesa" na memória em nada. Tomei o cuidado de fazê-lo na primeira room, onde também defino todos as outras configurações do jogo. Isso significa que essa surface é criada apenas uma vez durante a execução do jogo.

O que acontece é o seguinte, toda vez que o jogo termina, eu libero a memória usada pela surface com surface_free() normalmente. Mas certas ocasiões onde tento executar o jogo novamente, o Game Maker gera um erro com uma mensagem dizendo que a surface não pôde ser criada! Quando eu altero a resolução do monitor ou reinicio a máquina, o jogo funciona normalmente!

Eu tô martelando o Game Maker há um tempão e nunca vi isso acontecer. Não é falta de memória, definitivamente. Eu já testei em outras máquinas e o problema persiste. O que mata o Game Maker é isso, os bugs que ele tem são sérios, pegam pra desanimar mesmo.
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

Erro em surface de vídeo... Empty Re: Erro em surface de vídeo...

Mensagem por Fuzenrad Dom 10 Out 2010, 23:03

Interessante, eu já tive problemas relacionados a isso, mas era com um surface maior (1024x768), executava somente 1 vez, sem maiores problemas, e quando rodava novamente, mostrava a mensagem de erro, outro erro que encontrei é quando altera a resolução seguidas vezes, em algum momento ele retorna "parâmetro inválido.", mas acho que isso é da versão atual, pois nas versões anteriores eu nunca tive problemas assim.
Fuzenrad
Fuzenrad

Games Ranking : Nota A

Notas recebidas : A-A-A-A-B
Data de inscrição : 04/07/2010
Reputação : 46
Número de Mensagens : 1063
Prêmios : Erro em surface de vídeo... Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

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

Ir para o topo Ir para baixo

Erro em surface de vídeo... Empty Re: Erro em surface de vídeo...

Mensagem por Convidad Dom 10 Out 2010, 23:25

Na realidade, eu venho programando o uso desta surface no Game Maker 6.1. Eu não testei no Game Maker 8. Mas é um problema que eu acredito ser dos piores. Digo isso porque se o problema reside em como o Game Maker gerencia a memória, então não deve haver o que se fazer agora, a não ser trabalhar somente em uma resolução menor.

Isso está tornando meu trabalho ainda mais complicado. Em todas as vezes em quem me deparei com bugs do Game Maker, nesta eu estou preso. Não sei o que fazer. A única vez em que vi algo parecido foi no Delphi, usando canvas. Mas lá, não havia necessidade de "limpar" a memória, pois toda vez que o programa era finalizado a memória era desalocada, isso é normal!

Não tenho nem ideia de como resolver isso agora.
cheers
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

Erro em surface de vídeo... Empty Re: Erro em surface de vídeo...

Mensagem por Fuzenrad Dom 10 Out 2010, 23:29

Realmente, a solução (que eu encontrei no caso), foi usar a tela com a resolução 640x480, com esse tamanho inclusive, o jogo ficou com um visual mais clássico, mas de forma alguma perdeu qualidade, aliás, creio eu, ficou melhor, já que gasta pouca memória do computador e deixou o jogo em um estilo mais retrô. Devia tentar.
Fuzenrad
Fuzenrad

Games Ranking : Nota A

Notas recebidas : A-A-A-A-B
Data de inscrição : 04/07/2010
Reputação : 46
Número de Mensagens : 1063
Prêmios : Erro em surface de vídeo... Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

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

Ir para o topo Ir para baixo

Erro em surface de vídeo... Empty Re: Erro em surface de vídeo...

Mensagem por Convidad Dom 10 Out 2010, 23:37

È. Se não tiver jeito vou ter que fazer isso. Trabalhar em uma resolução menor pra poupar memória (se é que é este o real problema). Dessa forma eu tenho certeza quase absoluta de que irá funcionar porque quando eu alterava a resolução do vídeo, funcionava normalmente.
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

Erro em surface de vídeo... Empty Re: Erro em surface de vídeo...

Mensagem por Denis Lemos Seg 11 Out 2010, 17:59

Bugs de surface no GM é tradicional, acho que até no help diz que se alterar a resolução do jogo a surface é perdida e aparece a menssagem de erro, comigo acontece vários erros quando uso surfaces:

1º Quando tem uma surface e se aperto "Control+Alt+Del" no vista aparece uma tela com algumas opições, de reiniciar, desligar ou ir para o gerenciador de tarefas, e se volto para a aba do GM, já dá o erro e a surface é perdida !

2º Se No create de algum objeto eu crio uma surface, e coloco ele na room, alí pela terceira vez que a room aparece no jogo vem a menssagem de que a surface não existe, o que deixou quase impossível de fazer meu jogo rodar sem lag, pois tive que fazer sem surfaces, o que é estranho, pois toda vez que a room aparecesse teria que criar a surface, mesmo se ele não existisse !

Alguns erros são causados, por a surface ser muito grande, acho que 1024X1024 é muito grande até, mas ainda funciona assim !

Talvez a causa do seu erro seja por as imagens terem alpha, que eles disseram ter corrigido esse problema no GM8, mas ele ainda causa erros !

Você disse que usa o GM6, tente fazer no GM8, talvez o erro não aconteça mais, mas mesmo assim no GM se o assunto é surface, ele tem muito que melhorar !
Denis Lemos
Denis Lemos

Data de inscrição : 17/05/2009
Reputação : 1
Número de Mensagens : 938
Prêmios : Erro em surface de vídeo... Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Unity
  • C#
  • Godot
  • C ou C++


Ir para o topo Ir para baixo

Erro em surface de vídeo... Empty Re: Erro em surface de vídeo...

Mensagem por Convidad Ter 12 Out 2010, 00:04

Valeu pelas dicas, Denis e Fuzenrad! Vou fazer todo o possível aqui.
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

Erro em surface de vídeo... Empty Re: Erro em surface de vídeo...

Mensagem por Janx Ter 12 Out 2010, 00:39

Usei surfaces ontem mesmo e não tive nenhum problema com erros!
Usei até em um loop, em que a surface era criada e destruida umas 30x por segundo. Não houve problema algum. (No fim não usei mais desse método, mas como não deu erro achei interessante comentar.)

Mostre um pouco do código que você está usando. Como desenhou a surface? Códigos usando a surface.
Qual é o erro exatamente? A mensagem.

Mesmo você testando em outra máquina e dando o mesmo problema, qual a configuração do seu computador e do outro?

Você tem certeza absoluta que liberou a memoria ocupada pela surface? Se um erro ocorrer durante a execução e o jogo for fexado em uma daquelas mensagens "abort", a surface não será removida!
Janx
Janx

Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios : Erro em surface de vídeo... Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 0

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

Ir para o topo Ir para baixo

Erro em surface de vídeo... Empty Re: Erro em surface de vídeo...

Mensagem por Convidad Ter 12 Out 2010, 00:56

Durante o jogo ela é criada normalmente. Uma vez eu notei que não depende muito do tamanho dela e sim do tamanho de todas as surfaces conjuntas. Acho que exceder um certo limite (não sei precisar, mas no meu pc é por volta de 6000 x 8000) o Game Maker não consegue criar mais nenhuma!

O código não tem muita coisa a mais. O erro dá é só de vez em quando na hora que eu executo o exe. Daí se eu mudar a resolução e voltar à resolução original ou então se eu mudar a taxa de atualização do vídeo o jogo volta a funcionar normalmente. Essa mudança de resolução e da taxa é pelas configurações de vídeo do Windows.

A mensagem que dá, é de que a surface não existe, e eu tenho certeza de que eu limpei a memória certinho. Tá osso.
cheers
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

Erro em surface de vídeo... Empty Re: Erro em surface de vídeo...

Mensagem por vinians Ter 12 Out 2010, 01:01

E ae amigão blz? Estava acompanhando seu problema e analisando a causa.
O Game Maker por padrão parece que aloca uma páginas da própria memória de vídeo para armazenar os surfaces, provavelmente porque ele usar page-flipping para copiar o surface rapidamente para a página de vídeo "visivel". Isso é muito rápido mais faz com que o sistema se torne instável se qualquer coisa externa tocar na memória. Para resolver esse problema acho que você pode fazer o seguinte:
-Primeiro, tente não liberar a memória do seu surface, pois como você já está saindo do programa, o proprio garbage collector do sistema operacional se encarrega disso, ou seja é menos 1 funcao do GM para usar.
-Outra idéia é detectar quando o jogo perder o foco para outra aplicação, destruir o surface antes e recria-lo depois.
-Veja se o erro ocorre em full screen, caso em FULL configure para o game settar a própria resolução, isso provavelmente vai tirar um pouco do poder do S.O. em tentar ferrar a memoria de video.
Faça esses teste e me diga se deu certo.
Flws!
vinians
vinians

Games Ranking : Nota B

Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Reputação : 90
Número de Mensagens : 2715
Prêmios : Erro em surface de vídeo... Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Construct 2
  • Java
  • C#
  • Javascript
  • C ou C++
  • Outros


https://vinians.itch.io

Ir para o topo Ir para baixo

Erro em surface de vídeo... Empty Re: Erro em surface de vídeo...

Mensagem por Convidad Ter 12 Out 2010, 01:30

page-flipping... muito interessante, eu não conhecia nada sobre isso! Mas eu ainda não entendi uma coisa. Será em dois jogos rodando ao mesmo tempo (e usando surfaces) iria interferir um no outro quando ele fizesse essa "cópia"? Isso é uma coisa interessante a se testar. Imagina se isso funcionar, eu poderia criar exe que usa uma suface para tentar copiar o conteúdo da suface de outro jogo!

-Primeiro, tente não liberar a memória do seu surface, pois como você já está saindo do programa, o proprio garbage collector do sistema operacional se encarrega disso, ou seja é menos 1 funcao do GM para usar.

Eu tentei mas não deu. É como se cada criação de surface fosse "engordando" o que já foi alocado, porém, o estranho é que essa memória alocada foi de uma execução anterior! Ou seja, um processo que já foi fechado. Isso é muito estranho.

-Outra idéia é detectar quando o jogo perder o foco para outra aplicação, destruir o surface antes e recria-lo depois.

Acho que isso vai ser difícil pra caramba. Quando o jogo perde o foco, não tem nada que eu possa fazer pra detectar o handle da janela pelo Game Maker, daí eu teria que usar o Delphi. É fácil fazer mas acho que complicaria muito a programação do jogo no GM.

-Veja se o erro ocorre em full screen, caso em FULL configure para o game settar a própria resolução, isso provavelmente vai tirar um pouco do poder do S.O. em tentar ferrar a memoria de video.

Ocorre. O que eu tentei fazer foi uma opção de escolha pro jogador. Se ele escolher não alterar a resolução do vídeo (que roda sem problemas), ou seja, se ele rodar na janela normal, eu mudo a resolução pra outra menor e depois de dois segundos eu volto ela ao normal. Até agora não deu problema, pelo menos por enquanto, vamos ver se resolve. Parece que isso dá um "refresh", não sei explicar.
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

Erro em surface de vídeo... Empty Re: Erro em surface de vídeo...

Mensagem por Denis Lemos Ter 12 Out 2010, 13:53

Código:
Por razões de velocidade, a superfície é mantida em videomemory só. Como resultado, você pode perder a superfície quando, por exemplo as mudanças de resolução de tela ou protetor de tela aparece.
Superfícies não serão salvos quando salvar o jogo.
Essa parte eu traduzi do help, não seria a troca de resolução o motivo do erro ???

Vinians escreveu:-Outra idéia é detectar quando o jogo perder o foco para outra aplicação, destruir o surface antes e recria-lo depois.
Eu precisava muito destruir a surface, mas não achei o código que faz isso, tem apenas esse surface_free(id), que libera a memória, mas ele continua lá existindo !

ccphreaker escreveu:Durante o jogo ela é criada normalmente. Uma vez eu notei que não depende muito do tamanho dela e sim do tamanho de todas as surfaces conjuntas. Acho que exceder um certo limite (não sei precisar, mas no meu pc é por volta de 6000 x 8000) o Game Maker não consegue criar mais nenhuma!
Vai ver que é esse então o erro que ocorria comigo, pois cada vez que iniciava a room era criada a surface, e se desse uns 3 ou 4 restart já dava o erro, mas isso era só quando eu desenhava na surface uma back com alpha, se fosse sem alpha não dava o problema !
Denis Lemos
Denis Lemos

Data de inscrição : 17/05/2009
Reputação : 1
Número de Mensagens : 938
Prêmios : Erro em surface de vídeo... Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Unity
  • C#
  • Godot
  • C ou C++


Ir para o topo Ir para baixo

Erro em surface de vídeo... Empty Re: Erro em surface de vídeo...

Mensagem por Convidad Ter 12 Out 2010, 22:39

Essa parte eu traduzi do help, não seria a troca de resolução o motivo do erro ???

Foi o contrário, parece que foi a solução. Por algum motivo qualquer me parece que o GM não estava conseguindo "jogar fora" a memória que ele estava usando para as surfaces. Daí quando eu mudo a resolução no início do jogo e volto pra original, o jogo funciona sem erro.

Eu precisava muito destruir a surface, mas não achei o código que faz isso, tem apenas esse surface_free(id), que libera a memória, mas ele continua lá existindo !

É sério?? Isso eu não sabia (que ele continuava existindo). Cara, você acabou de resolver o problema! O que tava acontecendo então era exatamente isso mesmo, parece que o GM aloca a memória, mas como referência ele usa algum ponteiro. Já que a vram é dinâmica, essa função deve apenas eliminar esse ponteiro e não a surface em questão. Não sei se é isso, mas há uma grande possibilidade de ser!

Agora a questão do alpha, comigo pelo menos não deu problema não. Aliás, minto. Na verdade, não se se é exatamente um erro. Toda vez que eu desenho algo usando alpha, se ele for muito baixo, fica uma espécie de "buraco" na surface. Eu achei que ele ia apenas desenhar por cima, mas o alpha acaba fazendo isso.

Se bem que dá pra fazer até um efeito legal de "máscara" usando essa gambiarra. Valeu pelas dicas!
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

Erro em surface de vídeo... Empty Re: Erro em surface de vídeo...

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos