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.

É possível gerar imagem com o GMS?

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
GabrielXavier
Membro
Membro
Reações: 0
Mensagens: 39
Localização: Goiás

Contato:

É possível gerar imagem com o GMS?

Mensagem por GabrielXavier » Qui Ago 18, 2016 12:37 am

É possível editar e gerar uma imagem com o Game Maker Studio, adicionar texto na imagem ou mesmo colocar uma marca d'água na imagem e salvar ela sem ser por meio do print screen da tela?
Oque preciso é fazer a edição da imagem em segundo plano e salva-la em .png
É possível? :hmm:
[ ] Publicar um App no Google Play.
[ ]GANHAR DINHEIRO.
[ ]Viver com o lucro dos meu jogos/apps (Sonho).

Avatar do usuário
Denis Lemos
Membro
Membro
Reações: 0
Mensagens: 49

Re: É possível gerar imagem com o GMS?

Mensagem por Denis Lemos » Qui Ago 18, 2016 7:32 am

Sim, é possível!

Na época do GM8 eu fiz um editor de textura que tinha até aquela ferramenta de carimbo do Photoshop. A melhor forma é usar surface, vc desenha a sua imagem na surface, faz todas as alterações que for preciso e depois salva essa surface em png. Só lembre de criar a surface do tamanho da sua imagem para manter a resolução.
Docs: suface_save()

Também é possível salvar uma sprite e até mesmo a tela do jogo.
Docs: sprite_save()
Dosc: screen_save()

Avatar do usuário
GabrielXavier
Membro
Membro
Reações: 0
Mensagens: 39
Localização: Goiás

Contato:

Re: É possível gerar imagem com o GMS?

Mensagem por GabrielXavier » Sex Ago 19, 2016 12:05 pm

Nossa cara não sabia que as surfaces funcionavam assim, dei uma pesquisada e achei o potencial das surfaces potencial incrível para o app que to em mente, é uma pena que as surfacesse auto destroem quando a janela do jogo perde o foco na tela e isso é um problema.
Obrigado mesmo pela ajuda!
[ ] Publicar um App no Google Play.
[ ]GANHAR DINHEIRO.
[ ]Viver com o lucro dos meu jogos/apps (Sonho).

Avatar do usuário
Denis Lemos
Membro
Membro
Reações: 0
Mensagens: 49

Re: É possível gerar imagem com o GMS?

Mensagem por Denis Lemos » Sex Ago 19, 2016 1:19 pm

Na verdade tem como contornar esse problema, vc pode simplesmente salvar temporariamente a surface em uma sprite antes da tela perder o foco ou depois de alguma mudança usando a função:
sprite_create_from_surface()
ou
sprite_add_from_surface()
background_create_from_surface()

Depois quando a tela recuperar o foco, basta apenas desenhar novamente a sprite na surface e deletar a sprite para não causar vazamento de memória. Eu lembro que eu usei isso para fazer um sistema de Ctrl+Z no meu antigo editor de texturas.

Avatar do usuário
GabrielXavier
Membro
Membro
Reações: 0
Mensagens: 39
Localização: Goiás

Contato:

Re: É possível gerar imagem com o GMS?

Mensagem por GabrielXavier » Seg Ago 22, 2016 10:44 pm

Muito interessante esse esquema para contornar este problema.
Como fazer essa verificação se o dispositivo  perdeu o foco ou não?

Seria num evento STEP o código:

Código: Selecionar todos

if os_is_paused(){
    se existir a surface { desenha ela em uma sprite};
    apaga a surface;
}
else{
    se existir a sprite { desenha ela na surface};
    apaga a sprite;
}
Esse código funcionaria?
Ou seria melhor em toda alteração que eu fazer na surface eu salvar ela em uma sprite?
Qual a logica que você usou para fazer o sistema de CTRL+Z?
[ ] Publicar um App no Google Play.
[ ]GANHAR DINHEIRO.
[ ]Viver com o lucro dos meu jogos/apps (Sonho).

Avatar do usuário
Denis Lemos
Membro
Membro
Reações: 0
Mensagens: 49

Re: É possível gerar imagem com o GMS?

Mensagem por Denis Lemos » Qui Ago 25, 2016 12:49 am

O sistema de Ctrl+Z era muito simples, igual ao do Photoshop que só tem como voltar a ação uma vez. No seu caso, basicamente no exato momento que terminar uma edição na surface você tem que verificar se a sprite usada como cópia de segurança existe e deletá-la para liberar espaço na memória e recriá-la novamente a partir da surface já modificada.

Eu não sei como faz para saber se o app está em foco ou não, pois eu não desenvolvo para dispositivos móveis, mas pelo que eu li na documentação as surfaces são armazenadas na memória de texturas e por isso podem ser destruídas quando a aplicação é minimizada ou perder o foco, mas não quer dizer que elas sempre serão destruídas, só em caso do sistema necessitar de mais memória para outras tarefas ele vai apagar as surfaces para liberar espaço. Então acho que seria melhor apenas verificar se a surface existe ou não usando a função surface_exists(), a própria documentação do GM:s alerta para em caso de usar ou modificar uma surface, sempre fazer a verificação se a surface existe para evitar erros Docs: Surfaces. Então caso a surface "não" exista, você precisa criá-la novamente e desenhar a sprite usada como cópia de segurança.

Se você querer fazer o sistema de Ctrl+Z, então "antes" ou quando você "começar" a edição da surface já tem que salvar a surface sem a alteração em uma sprite secundária, para caso a função de "undo" seja usada você pintar essa sprite novamente na surface para anular a modificação.

Trancado

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante