[PEDIDO] engine reconhecer resolução do monitor

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

[PEDIDO] engine reconhecer resolução do monitor

Mensagem por Gonzo em Sex 09 Nov 2012, 14:14

qual é o segredo dos jogos fodões que reconhecem a resolução do monitor e redimensiona a resolução do jogo para a resolução do monitor, gostaria de uma engine definitiva que reconhecesse a resolução do monitor e saber também em qual dimensões universais devem ser feitos os background's nos editorer de imagens, gostaria de uma engine assim pra padronizar tds aspectos visuais do jogo pra quando chegar no meio do jogo e começar a testar em outros pc's não me decepcionar com a imagem esticada tonto

VLW

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por saim em Sex 09 Nov 2012, 15:10

Taí uma pergunta que vale ouro... Eu já te falei que você só faz pergunta interessante, né?

Uma engine definitiva, eu acho difícil de conseguir. O que eu faço quando quero um jogo em tela cheia é fazer toda a programação PROPORCIONAL à tela. É meio chato, mas você aos poucos se conforma a fazer conta pra toda e qualquer posição e tamanho. Como essas contas normalmente ficam no create event (se não for no game start), não atrapalham muito a performance.

Mas hoje eu estou num clima de exemplos. Dessa vez, não vai ser o Mario, vamos pensar na HUD do Baldur's Gate. Sim, eu sou velho.
Custei a arranjar um site com uma imagem que não fosse bloqueada aqui...

Tudo o que eu vou falar daqui pra frente é interpretação minha, sem nenhum fundamento em pesquisa, ok?

Note que há 6 espaços pra avatares no direita, além de um bocado de outras informações. Vou focar em colocar os avatares. Eu me lembro que eu podia até importar uma foto minha nesse lugar, o jogo era ilimitado!
Ilimitado? Não. A foto tinha que ter dimensões fixas. Se não tivesse, o jogo perguntava se era pra esticar a foto, encurtar, cortar as rebarbas ou preencher o espaço restante com alguma cor à escolha (não era ilimitado, mas era muito bom!). Isso tudo pra deixar a sprite criada no tamanho certo pra encaixar na HUD. Essa dimensão era calculada no create. As dimensões da tela são facilmente obtidas com as funções display_get_width/height. De posse da altura disponível e do número de retângulos a encaixar ali, a altura de cada retângulo será
altura disponível / número de retângulos
E se a largura for proporcional, ela é igual à altura multiplicada por um valor constante
largura = altura * proporção
Aí, a posição (em Y) de cada retângulo é definida como
Código:
posY = view_yview[0] + numero_do_retangulo * altura_calculada;
numero_do_retangulo variando de 0 a 5
E a posição (em X) será
Código:
posX = view_xview[0] + view_wview[0] - largura_calculada;
beirada da view + largura dela - espaço do retângulo
Claro que o tamanho da view também foi calculado na instalação.

E assim vai. Se tivermos bordas, temos que considerá-las, podemos definir um espaço máximo e mínimo pras figuras ocuparem, permitindo espaços em branco, enfim, podemos fazer um monte de coisas. O ponto importante é que nenhum número foi escrito ali, a não ser o número de retângulos e a proporção altura/largura. Todo o resto do posicionamento do jogo é definido por cálculos de proporção.
Aliás, eu me lembro de instalar o jogo num monitor mais widescreen que o meu e a tela aumentou, sem variar a proporção das imagens, ou seja, a view realmente passou a abranger uma área maior do jogo.


Ah, mas não precisamos realizar esses cálculos toda vez que formos rodar o jogo. Podemos inicializar o jogo assim: procura-se um arquivo com as proporções já escritas, pra gente não ter que calcular. Se ele não existir, lascou, vambora calcular tudo. Armazene tudo em variáveis. No final dos cálculos, ESCREVA o arquivo que procuramos antes de fazer os cálculos, aí na próxima vez que o jogo rodar, ele estará lá. E, ao instalar o mesmo jogo em outra máquina, ele ainda não bai existir, permitindo que o cálculo seja feito de novo.

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: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por superrafao em Sex 09 Nov 2012, 15:30

LOL Oh my God! It is very cool! Oh meu Deus! Isso e muito legal!
Isso vai servir muito para o jogo que estou fazendo, ele esta demorando por conta de mim esta procurando coisas desse tipo, e etc!
Vou usar isso para o inventario, etc...
Obrigado, gostei disso! Happy

superrafao

Número de Mensagens : 414
Idade : 20
Data de inscrição : 18/08/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por Gonzo em Sex 09 Nov 2012, 16:15

saim manow ótimo texto, mais se vc poder fomatar um exemplo em forma de gmk seria muito apreciado, eu entendi sua metodologia, mais não saberei aplica-la estou em fase de aprendizado, tem coisas que pego facilmente e outras não, essa é uma das que não entra na minha cabeça na teoria hehe, porem ótima explicação vlw XD

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por superrafao em Sex 09 Nov 2012, 16:17

Desculpe intrometer!
Mas você ja estudou surface Mina do Rock?

superrafao

Número de Mensagens : 414
Idade : 20
Data de inscrição : 18/08/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por Gonzo em Sex 09 Nov 2012, 16:26

superrafao não não estudei nem sei o que é.. rsss
ei superrafao caso vc possa fazer o exemplo agradeço, o saim já deu sua explicação não quero ser inconveniente e ficar enchendo o saco sendo que ele já deu a resposta e eu não consegui desifrar
VLW

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por superrafao em Sex 09 Nov 2012, 16:49

Mina do Rock escreveu:superrafao não não estudei nem sei o que é.. rsss
ei superrafao caso vc possa fazer o exemplo agradeço, o saim já deu sua explicação não quero ser inconveniente e ficar enchendo o saco sendo que ele já deu a resposta e eu não consegui desifrar
VLW

Sei não viu?!... Porque se eu fazer e você não entender? =/
Vou ver aqui, vou tentar fazer com comentários, mas depois!

superrafao

Número de Mensagens : 414
Idade : 20
Data de inscrição : 18/08/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por saim em Sex 09 Nov 2012, 17:00

Hmn... um exemplo...
Pode ser feito sim, mas o problema, como eu disse, é que cada caso é um caso. Não dá pra fazer uma engine genérica.
Seguinte, nesse minuto eu estou meio atarefado e tem o prazo do concurso chegando ao final. Não acho que vou deixar 100% do meu tempo dedicado ao concurso, então assim que tiver um tempinho eu crio uma engine que faça isso pra você: desenhe 6 retângulos iguais com cores diferentes, numa proporção fixa em posição constante na tela numa room com view móvel (mas não de tamanho variável, que é mais chato de fazer). Ou, se eu estiver me sentindo mais propenso a mexer nas views, faço de tamanho variável mesmo. Isso custa processamento, claro, mas deixa a coisa mais adaptável.

Depois você me paga com umas músicas.

PS: se até o dia 18 eu não tiver te mandado nada, me cobre por MP. Minha cabeça não anda muito benta.

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: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por Kapoty em Sex 09 Nov 2012, 17:03

Me baseando na explicação do Saim, fiz duas engines para você mina do rock e para vocês interessados no assunto, em uma dessas engines eu fiz um exemplo sem pegar a resolução e também sem trocar o tamanho da room, apenas para servir de base para nossos futuros cálculos, já na outra, fiz meus próprios cálculos me baseando na minha outra engine para saber o valor exato de cada quadrado na room, sua largura, altura, distancia entre si e etc.

Não cheguei a comentar a engine, mas estude-a, acho que vocês poderão compreende-la sem os comentário, caso não consigam, é só me pedir que eu farei a engine com os comentários, mesmo achando não muito necessário.

Aqui o link para o download do .rar contendo as duas engines.

Kapoty

Ranking : Nota B
Número de Mensagens : 635
Data de inscrição : 05/11/2011
Notas recebidas : E + D + C + B + D +B + A
Reputação : 22
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por superrafao em Sex 09 Nov 2012, 17:09

Poxa kapoty, podia ter explicado!
Sera que posso ler e explicar e mandar a engine explicada para ela? (se eu entender tambem né?! )
Seria melhor se ela tambem entendesse, caso contrario, ela so vai poder fazer isso copiando o codigo! '-'

superrafao

Número de Mensagens : 414
Idade : 20
Data de inscrição : 18/08/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por Gonzo em Sex 09 Nov 2012, 17:32

special thanks a: superrafao, saim, Kapoty,

o proposito desse Tópico foi achar a melhor solução para essa situação, eu estava fazendo de outro modo, já tinha visto algumas maneiras tb de se fazer e vou postar aqui uma que foi quase perfeita pra mim, eu estava fazendo do seguinte modo: em

Código:
create event()

wtela=display_get_width()
htela=display_get_height()

em step()

if view_wview!=wtela
or view_hview!=htela
{
view_wview=wtela
view_hview=htela
view_wport=wtela
view_hport=htela

view_hborder=view_wview/2
view_vborder=view_hview/2

room_set_persistent(room, true)
room_goto(room);
}

em room_tart()

room_set_persistent(room, 0)

desse modo eu quase consegui um alinhamento perfeito agora vou testar a engine que o manow kapoty fez baseando na explicação do Saim, mais vamos continuar até td mundo concordar que tal engine conseguiu fazer a função com eficiência ok

VLW


Última edição por Mina do Rock em Sex 09 Nov 2012, 18:40, editado 1 vez(es)

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por Kapoty em Sex 09 Nov 2012, 17:59

Bem, vou postar aqui a minha engine com uma pequena explicação, percebi que eu tinha errado um calculo, dentro da engine vocês podem conferir oque eu tinha errado.

http://www.mediafire.com/?bt3r6siix06sml5

Não expliquei o código que está no draw por que basta você comparar esta engine com a outra engine, sem os cálculos de medição da altura e largura da tela, que você já ira entender o por que de cada variável em cada local.

Kapoty

Ranking : Nota B
Número de Mensagens : 635
Data de inscrição : 05/11/2011
Notas recebidas : E + D + C + B + D +B + A
Reputação : 22
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por Gonzo em Sex 09 Nov 2012, 18:32

Kapoty é só ativar o persistent do obj_pegar_resolução para na prôxima room1 o code continuar valendo ? fiquei com essa duvida XD

VLW

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por Kapoty em Sex 09 Nov 2012, 18:37

Mina do Rock escreveu:Kapoty é só ativar o persistent do obj_pegar_resolução para na prôxima room1 o code continuar valendo ? fiquei com essa duvida XD
VLW
Não seria só ativar o persistent, você teria que fazer está modificação :

Código:
if room_exists(room_next(room)) // Caso exista uma próxima room.
{
width=display_get_width()
heigth=display_get_height()
room_set_width(room_next(room),width)
room_set_height(room_next(room),heigth)
}

Kapoty

Ranking : Nota B
Número de Mensagens : 635
Data de inscrição : 05/11/2011
Notas recebidas : E + D + C + B + D +B + A
Reputação : 22
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por superrafao em Sex 09 Nov 2012, 18:39

E, acho que pode ate dar certo Mina do rock!
Eu sei que num tem nada a ver mas...
OFF: você ja fes um sistema complexo ou qualquer outro sistema legal?
Eu fis um sistema de blocos, que eles mesmo escolhe o o sprite que deve ter!
Exemplo!
Eu coloco todos o blocos perto uns dos outros, ai na onde nao tem mais blocos no lado ele usa determinada sprite, se nao tiver em cima, ele usa sprite com grama...

superrafao

Número de Mensagens : 414
Idade : 20
Data de inscrição : 18/08/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por Gonzo em Sex 09 Nov 2012, 19:06

superrafao

acho que o mais complicado que fiz foi esse da mega sena que a 1º bola é sorteada ai depois a 2º bola é sorteada e se a 2º for igual a 1º bola a 2º bola é sorteada de novo repitindo o processo com as outras 4 bolas, a 6º bola checa se é igual as 5 bolas anteriores, o que mais gostei desse sistema é que eu não sabia por onde começar, não tinha ideia de como ficaria, e derrepente eu terminei kkk

link: https://www.facebook.com/pages/Mega-Sena/360838920666271?sk=app_208195102528120


Kapoty

posta a engine com o code modificado pra quem baixar não perguntar sobre isso
Código:
if room_exists(room_next(room)) // Caso exista uma próxima room.
{
width=display_get_width()
heigth=display_get_height()
room_set_width(room_next(room),width)
room_set_height(room_next(room),heigth)
}

na verdade eu não sei onde inserir Razz

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por Kapoty em Sex 09 Nov 2012, 19:25

Mina do Rock escreveu:Kapoty
posta a engine com o code modificado pra quem baixar não perguntar sobre isso
Isso não é necessário.
Mina do Rock escreveu:na verdade eu não sei onde inserir Razz
Sabe o obj_pegar_resolucao ?
Troque o create dele, por esse código.

Kapoty

Ranking : Nota B
Número de Mensagens : 635
Data de inscrição : 05/11/2011
Notas recebidas : E + D + C + B + D +B + A
Reputação : 22
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por Gonzo em Sex 09 Nov 2012, 19:34

ficou td cinza da uma olhada ai

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por Kapoty em Sex 09 Nov 2012, 19:38

Mina do Rock escreveu:ficou td cinza da uma olhada ai
Mina do Rock, aprenda que não é só usar o ctrl+c e o ctrl+v, tente ver o código também.

De cara da para perceber o motivo de estar tudo cinza, perceba que no código que passei, não está presente o código "room_goto_next()", assim você não sai da room "room_pegar_resolucao", que é toda cinza.

Acho que vou ter que passar o código completo :

Código:
if room_exists(room_next(room)) // Caso exista uma próxima room.
{
width=display_get_width()
heigth=display_get_height()
room_set_width(room_next(room),width)
room_set_height(room_next(room),heigth)
if room=room_pegar_resolucao
{room_goto_next()}
}

Kapoty

Ranking : Nota B
Número de Mensagens : 635
Data de inscrição : 05/11/2011
Notas recebidas : E + D + C + B + D +B + A
Reputação : 22
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por Gonzo em Sex 09 Nov 2012, 22:54

Kapoty VLW manow

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [PEDIDO] engine reconhecer resolução do monitor

Mensagem por Conteúdo patrocinado Hoje à(s) 07:54


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

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

- Tópicos similares

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