Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
Trabalhando com resoluções em dispositivos móveis
+3
cascavelo
willyruduit
fredcobain
7 participantes
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 2
Página 1 de 2 • 1, 2
Trabalhando com resoluções em dispositivos móveis
Título: Trabalhando com resoluções em dispositivos móveis
Versão do GM:Studio
Dificuldade:Intermediário
Link para download da Engine: Resolucao.zip
Requer Extensões:Não.
Requer DLLs:Não.
Tags: Resoluçao,display,android,ios,mobile,width,height;
Trabalhando com resoluções em dispositivos móveis
Como não deixar seu jogo distorcido em diferentes dispositivos
INTRODUÇÃO
Muitas vezes vejo usuários deste fórum e do próprio GMC (fórum oficial da Yoyogames) com dúvidas sobre como adequar a room do seu jogo na tela do seu dispositivo. Isso é uma dúvida que sempre ocorre pelo fato de que os dispositivos possuem diferentes resoluções entre si.
Então, é muito comum que o seu jogo pareça ficar bom no seu celular, mas quando vc roda em outro aparelho fica horroroso (as imagens todas distorcidas).
Isso ocorre porque a proporção entre largura e altura (width e height) entre os aparelhos varia constantemente.
Essa proporção (width / height) é bastante conhecida como Aspect Ratio.
O mesmo efeito (desagradável) ocorre quando você projeta seu jogo na orientação landscape (paisagem) por exemplo, e decide rodá-lo na resolução portrait (retrato). Quando vc faz isso, acaba invertendo o WIDTH e o HEIGHT do seu aparelho, mudando assim o ASPECT RATIO e consequentemente "cagando" toda a visualização (para previnir isso muitos vão no Global Game Settings e botam o jogo pra rodar em Landscape only, ou Portrait only, por exemplo).
Se vc está boiando na maionese, essas figuras ilustram o conceito de muitas palavras usadas até então:
Esse tutorial visa criar um mecanismo que automaticamente vai corrigir as proporções do seu jogo, independentemente da resolução do aparelho ou mesmo da orientação em que vc está jogando.
UAU!! TUdo que eu sonhava!!!
BOTANDO A MÃO NA MASSA!
Gente, a técnica é muito simples:
Vamos precisar apenas de um OBJETO persistente e fazer o uso de VIEWS.
Consiste em basicamente criar um objeto persistente na primeira room do jogo que vai pegar o HEIGHT, WIDTH e ASPECT RATIO do dispositivo deixar a view proporcional a estas dimensões.
Pergunta: Como deixar sempre proporcional ?
Resposta: Simples, vamos deixar um HEIGHT fixo e o WIDTH vai ser calculado a partir do ASPECT RATIO.
Pasmem, é só isso, mais nada... também me sentia um idiota por não ter pensado nisso antes...
Obs: To falando que o objeto deve ser persistente para que ele possa continuar trabalhando durante todas as rooms do jogo. Se vc não sabe o que é um objeto persistente, vai estudar mais.
Então, na primeira room do jogo, coloque esse objeto, e, no evento CREATE deste:
Bom agora isso não é mais problema
=)
Dicas Finais
Como eu sou bonzinho, criei uma engine que faz esse trabalho sujo e ainda mostra na tela o valor de todas as variáveis que interessam. Inclusive, se vc clicar com o botão direito do mouse (ou der 2 cliques no touch do seu dispositivo móvel) vc pode mudar o valor do Height Fixo. Assim vcs vão entender exatamente o que esse código está fazendo no seu jogo. A engine está no cabeçalho deste tutorial.
Como sabemos que alguns dispositivos tem uma resolução relativamente baixa (como alguns celulares xing ling) e outros (como o IPAD Retina) tem resoluções muito altas uma dica que eu dou é ajustar o valor do Height Fixo de acordo com o dispositivo onde o jogo vai rodar.
EX:
Se for IPAD Retina, o height vale 1024.
Se for Iphone, o height vale 720.
Se for Android, o height vale 640. E assim por diante.
Isso pode ser feito através do exemplo de código abaixo (não contemplado na engine).
Resposta: É claro, porra. Seu Width ficou muito menor (veja a primeira figura desse tutorial, cabeçudo). O que vc pode fazer pra compensar é aumentar a resolução da view para pegar um pedaço maior da room.
Então, nesse caso esse pedaço de código vai bem a calhar no evento Alarm0 (embora possa tbm ser usado no step).
É isso pessoal, espero ter contribuído com mais um tuto.
Bons jogos e bons estudos.
Abraço
Titio Fred
Versão do GM:Studio
Dificuldade:Intermediário
Link para download da Engine: Resolucao.zip
Requer Extensões:Não.
Requer DLLs:Não.
Tags: Resoluçao,display,android,ios,mobile,width,height;
Trabalhando com resoluções em dispositivos móveis
Como não deixar seu jogo distorcido em diferentes dispositivos
INTRODUÇÃO
Muitas vezes vejo usuários deste fórum e do próprio GMC (fórum oficial da Yoyogames) com dúvidas sobre como adequar a room do seu jogo na tela do seu dispositivo. Isso é uma dúvida que sempre ocorre pelo fato de que os dispositivos possuem diferentes resoluções entre si.
Então, é muito comum que o seu jogo pareça ficar bom no seu celular, mas quando vc roda em outro aparelho fica horroroso (as imagens todas distorcidas).
Isso ocorre porque a proporção entre largura e altura (width e height) entre os aparelhos varia constantemente.
Essa proporção (width / height) é bastante conhecida como Aspect Ratio.
O mesmo efeito (desagradável) ocorre quando você projeta seu jogo na orientação landscape (paisagem) por exemplo, e decide rodá-lo na resolução portrait (retrato). Quando vc faz isso, acaba invertendo o WIDTH e o HEIGHT do seu aparelho, mudando assim o ASPECT RATIO e consequentemente "cagando" toda a visualização (para previnir isso muitos vão no Global Game Settings e botam o jogo pra rodar em Landscape only, ou Portrait only, por exemplo).
Se vc está boiando na maionese, essas figuras ilustram o conceito de muitas palavras usadas até então:
Esse tutorial visa criar um mecanismo que automaticamente vai corrigir as proporções do seu jogo, independentemente da resolução do aparelho ou mesmo da orientação em que vc está jogando.
UAU!! TUdo que eu sonhava!!!
BOTANDO A MÃO NA MASSA!
Gente, a técnica é muito simples:
Vamos precisar apenas de um OBJETO persistente e fazer o uso de VIEWS.
Consiste em basicamente criar um objeto persistente na primeira room do jogo que vai pegar o HEIGHT, WIDTH e ASPECT RATIO do dispositivo deixar a view proporcional a estas dimensões.
Pergunta: Como deixar sempre proporcional ?
Resposta: Simples, vamos deixar um HEIGHT fixo e o WIDTH vai ser calculado a partir do ASPECT RATIO.
Pasmem, é só isso, mais nada... também me sentia um idiota por não ter pensado nisso antes...
Obs: To falando que o objeto deve ser persistente para que ele possa continuar trabalhando durante todas as rooms do jogo. Se vc não sabe o que é um objeto persistente, vai estudar mais.
Então, na primeira room do jogo, coloque esse objeto, e, no evento CREATE deste:
- Código:
device_w=display_get_width(); //pegando o width do device e salvando na variável
device_h=display_get_height(); //pegando o height do device e salvando na variável
aspect_ratio=device_w/device_h; //calculando o aspect ratio do device
height=720; //escolhendo um height fixo
view_hview[0]=height; //botando o height da view fixo
view_hport[0]=height; //"
view_wview[0]=height*aspect_ratio; //colocando o width proporcional ao height
view_wport[0]=height*aspect_ratio; //"
alarm[0]=60; //a cada 2 segundos vamos atualizar esses valores (caso a orientaçao do dispositivo tenha mudado)
Bom agora isso não é mais problema
=)
Dicas Finais
Como eu sou bonzinho, criei uma engine que faz esse trabalho sujo e ainda mostra na tela o valor de todas as variáveis que interessam. Inclusive, se vc clicar com o botão direito do mouse (ou der 2 cliques no touch do seu dispositivo móvel) vc pode mudar o valor do Height Fixo. Assim vcs vão entender exatamente o que esse código está fazendo no seu jogo. A engine está no cabeçalho deste tutorial.
Como sabemos que alguns dispositivos tem uma resolução relativamente baixa (como alguns celulares xing ling) e outros (como o IPAD Retina) tem resoluções muito altas uma dica que eu dou é ajustar o valor do Height Fixo de acordo com o dispositivo onde o jogo vai rodar.
EX:
Se for IPAD Retina, o height vale 1024.
Se for Iphone, o height vale 720.
Se for Android, o height vale 640. E assim por diante.
Isso pode ser feito através do exemplo de código abaixo (não contemplado na engine).
- Código:
switch (os_type)
{
case os_windows: height=768 ;break;
case os_android: height=420; break;
case os_psp: height=420; break;
case os_linux: height=768; break;
case os_macosx: height=768; break;
case os_ios: height=768; break;
case os_winphone: height=420; break;
}
Resposta: É claro, porra. Seu Width ficou muito menor (veja a primeira figura desse tutorial, cabeçudo). O que vc pode fazer pra compensar é aumentar a resolução da view para pegar um pedaço maior da room.
Então, nesse caso esse pedaço de código vai bem a calhar no evento Alarm0 (embora possa tbm ser usado no step).
- Código:
//height=720; (essa linha obviamente vc vai comentar)
if display_get_orientation() = display_landscape //se tiver no formato paisagem (landscape)
{
height=720 //a resolução da view pode ser menor
}
else //se estiver no formato retrato (portrait)
{
height=1240 //vamos aumentar a view (ou seja, afastar um pouco da room pra eu poder enxergar mais da sala)
}
É isso pessoal, espero ter contribuído com mais um tuto.
Bons jogos e bons estudos.
Abraço
Titio Fred
Última edição por fredcobain em Qua 11 Set 2013, 22:16, editado 4 vez(es)
fredcobain- Games Ranking :
Data de inscrição : 14/04/2011
Reputação : 163
Número de Mensagens : 692
Prêmios :
x 0 x 3 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Trabalhando com resoluções em dispositivos móveis
Não funcionou aki testei no galaxy s2lite Android
mudei o height para 720,420,600 e nada
em landscap até da mas se viro o telefone aparece só um pedaço do game!
tens a solução?
mudei o height para 720,420,600 e nada
em landscap até da mas se viro o telefone aparece só um pedaço do game!
tens a solução?
willyruduit- Games Ranking :
Notas recebidas : B-B-B-A-A
Data de inscrição : 02/08/2013
Reputação : 33
Número de Mensagens : 306
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Trabalhando com resoluções em dispositivos móveis
Amigo, vc não entendeu. Na verdade deu certo.
Só aparece um pedaço do game porque a largura da view diminuiu...
Mas a sprite do player continua nas proporções normais.
Faça o teste com um height maior (tipo 1280) que vc vai entender.
Obs>> Para dar o efeito que vc está querendo, basta colocar esse código no evento de alarm0:
Só aparece um pedaço do game porque a largura da view diminuiu...
Mas a sprite do player continua nas proporções normais.
Faça o teste com um height maior (tipo 1280) que vc vai entender.
Obs>> Para dar o efeito que vc está querendo, basta colocar esse código no evento de alarm0:
- Código:
if display_get_orientation() = display_landscape
{
height=720
}
else
{
height=1240
}
fredcobain- Games Ranking :
Data de inscrição : 14/04/2011
Reputação : 163
Número de Mensagens : 692
Prêmios :
x 0 x 3 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Trabalhando com resoluções em dispositivos móveis
Apareceu uma tarja preta em cima da view nos dois sentidos
uso a view 800x600 tem como deixar bom para todas as resoluções dos aparelhos?
não saquei ainda
uso a view 800x600 tem como deixar bom para todas as resoluções dos aparelhos?
não saquei ainda
willyruduit- Games Ranking :
Notas recebidas : B-B-B-A-A
Data de inscrição : 02/08/2013
Reputação : 33
Número de Mensagens : 306
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Trabalhando com resoluções em dispositivos móveis
Deve ser pq a sua view está menor que a room.willyruduit escreveu:Apareceu uma tarja preta em cima da view nos dois sentidos
uso a view 800x600 tem como deixar bom para todas as resoluções dos aparelhos?
não saquei ainda
Vc habilitou a view0 na room ?
Faz um teste e bota a view pra seguir o objeto.
A propósito, vc está usando minha engine mesmo ?
fredcobain- Games Ranking :
Data de inscrição : 14/04/2011
Reputação : 163
Número de Mensagens : 692
Prêmios :
x 0 x 3 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Trabalhando com resoluções em dispositivos móveis
Não consegui abrir sua engine
minha room tem width=8000 heigth=600
view0 ativada seguir obj_per
view in room W800 H600
port on screen W800 H600
HBOR 400
VBOR 300
visível em room starts
minha room tem width=8000 heigth=600
view0 ativada seguir obj_per
view in room W800 H600
port on screen W800 H600
HBOR 400
VBOR 300
visível em room starts
willyruduit- Games Ranking :
Notas recebidas : B-B-B-A-A
Data de inscrição : 02/08/2013
Reputação : 33
Número de Mensagens : 306
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Trabalhando com resoluções em dispositivos móveis
Vc está usando que versão do Game Maker ?
fredcobain- Games Ranking :
Data de inscrição : 14/04/2011
Reputação : 163
Número de Mensagens : 692
Prêmios :
x 0 x 3 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Trabalhando com resoluções em dispositivos móveis
É sempre necessário marcar a orientação correta do jogo na aba correspondente ao sistema em global game setings.
Há mais deu ano eu postei um tutorial explicando o método utilizado pra fazer um jogo funcionar na maioria das telas,
https://gmbr.forumeiros.com/t23783-android-adaptando-o-jogo-a-resolucoes-diferentes?highlight=resolu%E7%F5es+android
É um código bem pequeno que eu uso em todos os meus jogos, já nem penso mais a respeito.
Apenas copio e colo no novo projeto.
Há mais deu ano eu postei um tutorial explicando o método utilizado pra fazer um jogo funcionar na maioria das telas,
https://gmbr.forumeiros.com/t23783-android-adaptando-o-jogo-a-resolucoes-diferentes?highlight=resolu%E7%F5es+android
É um código bem pequeno que eu uso em todos os meus jogos, já nem penso mais a respeito.
Apenas copio e colo no novo projeto.
cascavelo- Games Ranking :
Notas recebidas : A - A - A - A - A -A -C
Data de inscrição : 08/12/2011
Reputação : 71
Número de Mensagens : 1011
Prêmios :
x 0 x 0 x 0
x 1 x 2 x 1
x 0 x 0 x 0
Re: Trabalhando com resoluções em dispositivos móveis
Cascavelo
Testei o seu no galaxy deu certo mas em um lgpf350 não deu cortou a tela!
Testei o seu no galaxy deu certo mas em um lgpf350 não deu cortou a tela!
willyruduit- Games Ranking :
Notas recebidas : B-B-B-A-A
Data de inscrição : 02/08/2013
Reputação : 33
Número de Mensagens : 306
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Trabalhando com resoluções em dispositivos móveis
Casca, vou mover seu tuto pra seção correta, ok? Ele tá em Engines em vez de Tutoriais.
fredcobain- Games Ranking :
Data de inscrição : 14/04/2011
Reputação : 163
Número de Mensagens : 692
Prêmios :
x 0 x 3 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Trabalhando com resoluções em dispositivos móveis
OK, estas informações são muito úteis.Casca, vou mover seu tuto pra seção correta, ok? Ele tá em Engines em vez de Tutoriais.
Você em que colocar o personagem para seguir a view, baixe meu jogo do sapo e teste nos dois aparelhos pra você entender como funciona.Testei o seu no galaxy deu certo mas em um lgpf350 não deu cortou a tela!
Em telas mais estreitas vai cortar mais, mas a view se movimenta pra os dois lados acompanhando o personagem.
Em telas mais largas a view pode ate ficar parada se for bem larga.
Lembrando que a hud, placares e outras informações devem ser colocadas na tela com o evento Draw_gui pra ficarem sempre no mesmo lugar. Tendo o cuidado de não colocar informações próximas as bordas pra não cortar.
cascavelo- Games Ranking :
Notas recebidas : A - A - A - A - A -A -C
Data de inscrição : 08/12/2011
Reputação : 71
Número de Mensagens : 1011
Prêmios :
x 0 x 0 x 0
x 1 x 2 x 1
x 0 x 0 x 0
Re: Trabalhando com resoluções em dispositivos móveis
Olá, uma perguntinha. tem como manter o jogo SEMPRE em landscape?
Re: Trabalhando com resoluções em dispositivos móveis
cê define issoIsaque Onix escreveu:Olá, uma perguntinha. tem como manter o jogo SEMPRE em landscape?
Sim você define isso em global game settings -> android -> general: Orientation
willyruduit- Games Ranking :
Notas recebidas : B-B-B-A-A
Data de inscrição : 02/08/2013
Reputação : 33
Número de Mensagens : 306
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Trabalhando com resoluções em dispositivos móveis
so uma coisa, eu boto o alarm 0 onde? na primeira room tb como se fosse um objeto "controle"?
MatheusMM- Data de inscrição : 10/08/2014
Reputação : 0
Número de Mensagens : 30
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Trabalhando com resoluções em dispositivos móveis
você poe só na primeira room, e marca como persistent...
[edit]
você cria um objeto para "controlar" a resolução, depois coloca o alarm[0] nele, marca persistent, e coloca esse objeto na primeira room do seu jogo...
[edit]
você cria um objeto para "controlar" a resolução, depois coloca o alarm[0] nele, marca persistent, e coloca esse objeto na primeira room do seu jogo...
Re: Trabalhando com resoluções em dispositivos móveis
willyruduit escreveu:Não funcionou aki testei no galaxy s2lite Android
mudei o height para 720,420,600 e nada
em landscap até da mas se viro o telefone aparece só um pedaço do game!
tens a solução?
minha tela esta cortada alguem pode me ajudar
Douglas Felipe- Data de inscrição : 27/01/2015
Reputação : 0
Número de Mensagens : 11
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Trabalhando com resoluções em dispositivos móveis
Douglas Felipe talvez esse tutorial possa ajuda-lo:
https://gmbr.forumeiros.com/t23783-android-adaptando-o-jogo-a-resolucoes-diferentes?highlight=resolu%E7%F5es+android
https://gmbr.forumeiros.com/t23783-android-adaptando-o-jogo-a-resolucoes-diferentes?highlight=resolu%E7%F5es+android
WellingtonBecker- Games Ranking :
Notas recebidas : D
Data de inscrição : 09/05/2013
Reputação : 105
Número de Mensagens : 824
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Trabalhando com resoluções em dispositivos móveis
Cara ja fiz e refiz esse tutorial varias vezes mais sempre da uma tela corta
Douglas Felipe- Data de inscrição : 27/01/2015
Reputação : 0
Número de Mensagens : 11
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Trabalhando com resoluções em dispositivos móveis
se alguem poder me ajudar
Douglas Felipe- Data de inscrição : 27/01/2015
Reputação : 0
Número de Mensagens : 11
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Página 1 de 2 • 1, 2
Tópicos semelhantes
» Android - Adaptando o jogo a resoluções diferentes
» Jogo com diversas resoluções
» [Duvida] Resoluções android
» Level Design: Grids e Resoluções
» [Dúvida eterna] - Multi Resoluções
» Jogo com diversas resoluções
» [Duvida] Resoluções android
» Level Design: Grids e Resoluções
» [Dúvida eterna] - Multi Resoluções
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 2
Permissões neste sub-fórum
Não podes responder a tópicos