Entrar
Últimos assuntos
» Problema ao entrar por uma porta e voltar por elapor aminaro Seg 06 maio 2024, 10:08
» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43
» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45
» 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
» 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
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
[Resolvido] Alterar view_hport e view_wport por código em execução
2 participantes
Página 1 de 1
[Resolvido] Alterar view_hport e view_wport por código em execução
Boa noite,
estou desenvolvendo um aplicativo de mensagens para android que preciso que preencha toda a tela do celular automaticamente independente da resolução da tela e com uma boa qualidade pois vou usar muito texto mas estou tendo problemas para alterar o view_hport e view_wport por códigos, quando eu defino pelas configurações da room as fontes que desenho na tela ficam perfeitas, chego no resultado esperado porem não tem como ser dinâmico pois cada celular tem uma resolução diferente e preciso que o app se ajuste automaticamente, mas quando tento fazer por código não funciona a qualidade da impressão na room fica zoada, faltando ate pedaços das letras, parece que quando roda o app ele pega os dados que estão definidos nas configurações a room e ate é possível alterar o resultado das variáveis view ports mas parece que não são de fato aplicados os novos valores nas views.
Com os valores definidos diretamente nas configurações da room:
Com os valores tentando aplicar via código:
" />
Sei trabalhar com os valores da resolução e etc, meu celular(s8 plus) da para usar em HD, FHD, e 2K então tenho 3 resoluções diferentes para testar o ajuste automático e o único problema que estou enfrentando é esse view port, se alguém puder me ajudar serei eternamente grato, já pesquisei bastante por vários dias e não consegui resolver!
estou desenvolvendo um aplicativo de mensagens para android que preciso que preencha toda a tela do celular automaticamente independente da resolução da tela e com uma boa qualidade pois vou usar muito texto mas estou tendo problemas para alterar o view_hport e view_wport por códigos, quando eu defino pelas configurações da room as fontes que desenho na tela ficam perfeitas, chego no resultado esperado porem não tem como ser dinâmico pois cada celular tem uma resolução diferente e preciso que o app se ajuste automaticamente, mas quando tento fazer por código não funciona a qualidade da impressão na room fica zoada, faltando ate pedaços das letras, parece que quando roda o app ele pega os dados que estão definidos nas configurações a room e ate é possível alterar o resultado das variáveis view ports mas parece que não são de fato aplicados os novos valores nas views.
Com os valores definidos diretamente nas configurações da room:
Com os valores tentando aplicar via código:
" />
Sei trabalhar com os valores da resolução e etc, meu celular(s8 plus) da para usar em HD, FHD, e 2K então tenho 3 resoluções diferentes para testar o ajuste automático e o único problema que estou enfrentando é esse view port, se alguém puder me ajudar serei eternamente grato, já pesquisei bastante por vários dias e não consegui resolver!
Última edição por GabrielXavier em Sex 20 Nov 2020, 14:57, editado 1 vez(es)
GabrielXavier- Games Ranking :
Notas recebidas : A
Data de inscrição : 25/02/2012
Reputação : 40
Número de Mensagens : 399
Prêmios :
x 0 x 1 x 0
x 0 x 1 x 1
x 0 x 0 x 0
Plataformas :- Game Maker Studio 2.0
Re: [Resolvido] Alterar view_hport e view_wport por código em execução
O tamanho da tela sempre foi um problema. Fazer a aplicação se ajustar na tela é chamado de "responsividade" (pelo menos tratando-se de WEB) e é uma boa prática desenvolver de modo responsivo. Basicamente, isso significa fazer com que os componentes que aparecem na tela se ajustem da melhor forma possível no espaço que elas têm.
Mas, no mundo dos jogos, responsividade não é possível pois isso significaria "esticar" os sprites, fazendo aquela meleca desproporcional. Seria como habilitar aquela opção "stretch" que tem nas configurações do GM.
Então, para os jogos, adota-se a prática de criar "zonas mortas" na tela, onde nenhuma informação ou controle (input) deve aparecer, pois é uma área destinada a ser cortada pra se adaptar ao aparelho do usuário, respeitando assim seu aspct ratio. Eu escrevi este artigo a uns anos atrás, caso queira dar uma olhada.
Bom, falei falei e nada da solução do seu problema. Para resolver isso no GM, de forma curta e grossa: eu não sei.
Mas, eu vim deixar minha humilde opinião. "Não é porque da pra fazer um app no GM que eu deva fazer no GM".
Não sei do que se trata o seu aplicativo, mas eu optaria por utilizar outras ferramentas mais apropriadas.
Por exemplo, se você tiver familiaridade com desenvolvimento WEB, você pode criar um aplicativo usando Angular + Ionic. Ou, se gostar de Java, pode utilizar o Android Studio pra fazer (se não me engano, conta até com drag n drop dos componentes). Enfim, você tem N possibilidades.
Mas, no mundo dos jogos, responsividade não é possível pois isso significaria "esticar" os sprites, fazendo aquela meleca desproporcional. Seria como habilitar aquela opção "stretch" que tem nas configurações do GM.
Então, para os jogos, adota-se a prática de criar "zonas mortas" na tela, onde nenhuma informação ou controle (input) deve aparecer, pois é uma área destinada a ser cortada pra se adaptar ao aparelho do usuário, respeitando assim seu aspct ratio. Eu escrevi este artigo a uns anos atrás, caso queira dar uma olhada.
Bom, falei falei e nada da solução do seu problema. Para resolver isso no GM, de forma curta e grossa: eu não sei.
Mas, eu vim deixar minha humilde opinião. "Não é porque da pra fazer um app no GM que eu deva fazer no GM".
Não sei do que se trata o seu aplicativo, mas eu optaria por utilizar outras ferramentas mais apropriadas.
Por exemplo, se você tiver familiaridade com desenvolvimento WEB, você pode criar um aplicativo usando Angular + Ionic. Ou, se gostar de Java, pode utilizar o Android Studio pra fazer (se não me engano, conta até com drag n drop dos componentes). Enfim, você tem N possibilidades.
Super Games e GabrielXavier gostam desta mensagem
Re: [Resolvido] Alterar view_hport e view_wport por código em execução
Salve @Willy, primeiramente te agradeço muito pelo comentário e pelos esclarecimentos, e informo que demorei responder seu comentário pois estava fissurado em achar a solução para o problema
Mas o role é o seguinte, comprei o Game Maker Studio 2 e comprei a licença na Google play tem mais de 1 ano e nunca criei nem publiquei nada, tanto tempo sem mexer com o Game Maker me "enferrujou".
Então eu decidi criar algo fácil e complexo ao mesmo tempo e algo que eu possa publicar na Google play para aprender como funciona e para desenvolver minhas habilidades com o GM, e acabei por resgatar um projeto antigo meu, de um aplicativo de frases, aquelas frases para legendas de fotos e status para redes sociais, a base de dados desse aplicativo vai ser online, cadastro de usuários com o facebook ou google play, publicar frases na base online pelo próprio app, segurança do sistema, etc (acho que ja deu pra perceber que estou estudando para fazer um jogo online no futuro hehehe).
Então desenvolvendo este aplicativo "simples" vou resolver muitos problemas com os quais ainda não tenho soluções como este do viewport ai que buga a imagem ao ser redimensionado durante a execução do game ou app.
E de fato minha estratégia esta funcionado sempre tive problemas com esse view port em jogos responsivos pois qualquer código de responsividade que usei sempre meio que bugava imagem, pesquisei muito e finalmente hoje consegui entender oque acontece e como resolver o problema e vou deixar aqui a solução acho que vai ser muito útil para a comunidade.
O GameMaker trabalha com uma surface para renderizar a tela do game e essa surface é criada assim que o game se inicia com os valores configurados nas propriedades da room ali no game maker, e quando se altera o view port por código durante a execução do projeto, mesmo que seja no create code da room ou no game start do primeiro objeto da room, o valor das variáveis view hport e wport são alterados mas a surface da aplicação continua com o tamanho anterior e é ai que esta o problema, as imagens ou textos sofrem uma distorção e a solução para este problema é absurda de simples, é necessário apenas redimensionar o tamanho da surface da aplicação! apenas uma linha de código e o problema está resolvido!
Com esta solução os cantos das imagens não ficam com serrilhados e os textos são desenhados sem absolutamente nenhuma distorção, claro que no meu código acima não estou calculando aspect ratio pois não preciso, apenas preciso que minha aplicação preencha 100% da tela do dispositivo, para quem precisa calcular o tamanho da tela pelo aspect ratio recomendo também que depois de definir a resolução da sua tela e redefinir as view port usar o surface_resize também para não ocorrer a distorção das sprites e textos e assim aumentar absurdamente a qualidade gráfica do seu game!
Assim fica registrado aqui no fórum essa informação que pelo menos eu achei absurdamente útil já que me preocupo muito com a definição e qualidade de imagens e texto do projeto.
Abaixo algumas capturas de tela rodando com o mesmo código em duas resoluções diferentes para mostrar o resultado:
Concordo 100% com você! Usar o Game Maker para fazer um app é muito inviável existem N's maneiras mais fáceis e mais viáveis !Willy escreveu:"Não é porque da pra fazer um app no GM que eu deva fazer no GM"
Mas o role é o seguinte, comprei o Game Maker Studio 2 e comprei a licença na Google play tem mais de 1 ano e nunca criei nem publiquei nada, tanto tempo sem mexer com o Game Maker me "enferrujou".
Então eu decidi criar algo fácil e complexo ao mesmo tempo e algo que eu possa publicar na Google play para aprender como funciona e para desenvolver minhas habilidades com o GM, e acabei por resgatar um projeto antigo meu, de um aplicativo de frases, aquelas frases para legendas de fotos e status para redes sociais, a base de dados desse aplicativo vai ser online, cadastro de usuários com o facebook ou google play, publicar frases na base online pelo próprio app, segurança do sistema, etc (acho que ja deu pra perceber que estou estudando para fazer um jogo online no futuro hehehe).
Então desenvolvendo este aplicativo "simples" vou resolver muitos problemas com os quais ainda não tenho soluções como este do viewport ai que buga a imagem ao ser redimensionado durante a execução do game ou app.
E de fato minha estratégia esta funcionado sempre tive problemas com esse view port em jogos responsivos pois qualquer código de responsividade que usei sempre meio que bugava imagem, pesquisei muito e finalmente hoje consegui entender oque acontece e como resolver o problema e vou deixar aqui a solução acho que vai ser muito útil para a comunidade.
O GameMaker trabalha com uma surface para renderizar a tela do game e essa surface é criada assim que o game se inicia com os valores configurados nas propriedades da room ali no game maker, e quando se altera o view port por código durante a execução do projeto, mesmo que seja no create code da room ou no game start do primeiro objeto da room, o valor das variáveis view hport e wport são alterados mas a surface da aplicação continua com o tamanho anterior e é ai que esta o problema, as imagens ou textos sofrem uma distorção e a solução para este problema é absurda de simples, é necessário apenas redimensionar o tamanho da surface da aplicação! apenas uma linha de código e o problema está resolvido!
- Código:
global.DISPLAY_W = display_get_width(); //Largura da tela do celular
global.DISPLAY_H = display_get_height(); //Altura da tela do celular
camera_set_view_size(view_camera[0],global.DISPLAY_W,global.DISPLAY_H);
view_wport[0] = global.DISPLAY_W;
view_hport[0] = global.DISPLAY_H;
//A linha abaixo é quem redimensiona a surface da aplicação e corrige o problema de distorção do texto ou das imagens
surface_resize(application_surface, view_wport[0], view_hport[0]);
Com esta solução os cantos das imagens não ficam com serrilhados e os textos são desenhados sem absolutamente nenhuma distorção, claro que no meu código acima não estou calculando aspect ratio pois não preciso, apenas preciso que minha aplicação preencha 100% da tela do dispositivo, para quem precisa calcular o tamanho da tela pelo aspect ratio recomendo também que depois de definir a resolução da sua tela e redefinir as view port usar o surface_resize também para não ocorrer a distorção das sprites e textos e assim aumentar absurdamente a qualidade gráfica do seu game!
Assim fica registrado aqui no fórum essa informação que pelo menos eu achei absurdamente útil já que me preocupo muito com a definição e qualidade de imagens e texto do projeto.
Abaixo algumas capturas de tela rodando com o mesmo código em duas resoluções diferentes para mostrar o resultado:
- Imagens:
GabrielXavier- Games Ranking :
Notas recebidas : A
Data de inscrição : 25/02/2012
Reputação : 40
Número de Mensagens : 399
Prêmios :
x 0 x 1 x 0
x 0 x 1 x 1
x 0 x 0 x 0
Plataformas :- Game Maker Studio 2.0
Tópicos semelhantes
» [RESOLVIDO]Alterar codigo em tempo de execucao
» como alterar o codigo fonte de um jogo??
» [Resolvido] Screenshoot com o nome do gmk em execução
» [Resolvido] Problemas com loop de execução de som
» [Resolvido]Flipar Sprite em tempo de execução
» como alterar o codigo fonte de um jogo??
» [Resolvido] Screenshoot com o nome do gmk em execução
» [Resolvido] Problemas com loop de execução de som
» [Resolvido]Flipar Sprite em tempo de execução
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|