Novamente, problemas na view

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

Novamente, problemas na view

Mensagem por saim em Ter 14 Abr 2015, 23:16

Eu sempre tive problemas com views. No link acima, consegui criar a room com as views, numa boa. Agora, o problema é no android/windows.

Basicamente, a janela do jogo todo está "pegando" o tamanho da primeira janela, sem direito a mudar essa primeira janela com código. Quer dizer, direito deve ter, eu que não estou conseguindo.
Mas o que importa é isso, eu quero definir o tamanho da tela via código, porque quando for exportar pra Android, quero ocupar a tela inteira - uma tela que eu não sei o tamanho, ainda.
Descobrir o tamanho da tela via código é parece mole. display_get_width/display_get_height.

Me parece que se eu mandasse um
Código:
lar := 300 // usarei display_get_width, quando conseguir fazer funcionar
alt := 400 // usarei display_get_height, quando conseguir fazer funcionar
view_wport0] := lar;
view_hport[0] := hei;
// ok, pra garantir, vamos incluir ainda um:
room_set_view(rm_play, 0, 1, 0, 0, lar, alt, 0, 0, lar, alt, 0, 0, 0, 0, -1);
room_goto(rm_play);
(rm_play é a room em que o jogo acontece, pra jogos complexos, estou disposto a escrever essa última linha mais vezes).
Esse código faz parte do creation code da primeira room.

Bom, esse código e NADA têm o mesmo efeito no tamanho da janela. O resultado é que a janela está ficando do tamanho da primeira room.
Se as views da primeira room estão habilitadas, a janela fica do tamanho do port da view[0] da primeira room - o port ORIGINAL, não aquele definido pelo código.
Se as views da primeira room NÃO estão habilitadas, a janela fica do tamanho da primeira room.

O manual meio que prevê isso:
The height of the viewport (or combined view ports if more than one are active) define the height of the game window or background canvas at the start of the game, but changing this value after the game has started will have no visible effect on the game window size.
"Mude o tamanho da janela no começo do jogo ou cale-se para sempre" (em tradução livre)
Parece que o primeiro step do jogo já é tarde demais.

Vocês estão acompanhando o game dev diary? Na parte 4, ele fala exatamente sobre isso, apresentando códigos. Talvez o problema seja mais simples do que parece, mas não estou conseguindo resolver.

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: Novamente, problemas na view

Mensagem por Markituh em Ter 14 Abr 2015, 23:55

Curioso é que eu tinha feito uma coisa bem parecida com essa, um layout adaptável. Quando abre o jogo fica em modo janela no ratio do monitor, e 70% do tamanho dele. Em tela cheia a room fica do mesmo tamanho do monitor, não havendo assim aquele efeito de esticamento. Só que aí eu altero o tamanho da room, que é possível fazer desde que você saia dela, altere e depois entre denovo.

A magia é aqui - Script pra trocar entre tela cheia e janela:
Código:
DisplayWidth = display_get_width();
DisplayHeight = display_get_height();
if GoFull == true {
    // Modo janela
    // GM_SCALE é justamente a porcentagem em relação a tela (70)
    DisplayWidth *= GM_SCALE/100;
    DisplayHeight *= GM_SCALE/100;
    GoFull = false;
} else { GoFull = true; }
room_goto(rmStart);

Creation Code da rmStart:
Código:
window_set_visible(false);
if (not variable_global_exists("DisplayWidth")) {
    globalvar DisplayWidth,DisplayHeight,GoFull,AvScaleX,AvScaleY;
    global.NoProcess = false;
    global.GameEND = false;
    DisplayWidth = display_get_width()*(GM_SCALE/100);
    DisplayHeight = display_get_height()*(GM_SCALE/100);
    GoFull = false;
}
font_replace(fntDialogue,".\data\font\dungeon.ttf",floor(DisplayWidth/FNT_SCALE),false,false,0,255);
AvScaleX = 1;//(DisplayWidth/AV_BW)
AvScaleY = 1;//(DisplayHeight/AV_BH)
room_set_width(rmMain,DisplayWidth);
room_set_height(rmMain,DisplayHeight);
if (GoFull) window_set_fullscreen(true);
else window_set_fullscreen(false);
room_goto_next();

Respeita inclusive a resolução da fonte e tal. Não lembro do valor da FNT_SCALE, mas obti ele calculando o tamanho da fonte padrão com a resolução de base (1366x768). Achei o projeto perdido aqui nos arquivos e as constantes não estão aparecendo por algum motivo... O código foi feito no GM8, por isso as funções "variable_" aí, só era trocar por vars previamente declaradas. Espero que isso resolva no seu caso.

Abraços o/

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Novamente, problemas na view

Mensagem por saim em Qui 16 Abr 2015, 06:44

É algo parecido, Markituh. Só que eu não quero mexer no tamanho da room, mas da janela que aparece na tela (mesmo que quisesse, parece que no studio, não funciona, eu testei o room_set_width/height). E não é necessário ir e voltar, se eu puder fazer isso uma vez só, já está bom. O resto, é bônus.
Só que eu quero ter uma room de um tamanho qualquer (suponha que seja algo imenso, como uma fase de Mario ou Sonic) e mostrar uma parte dessa room sem esticamentos.
Pra evitar os esticamentos, sei que a view_wview e a view_hview devem ser proporcionais à janela. Eu supunha que a janela seria do tamanho da view_wport e view_hport. Se isso fosse verdade, seria fácil resolver.
Só que a janela não está desse tamanho. Por enquanto, essas variáveis (view_wport e view_hport) só servem pra quando for usar várias views ao mesmo tempo - coisa que, pra ser sincero, nunca fiz, nem pra criar uma HUD.
Talvez se eu deixar o jogo fullscreen no Android, isso se resolva sozinho - coloco os ports pra serem proporcionais à tela e o fullscreen faz a imagem se adequar - mas seria bacana se desse pra fazer isso diretamente no windows, do tamanho que eu quisesse.

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: Novamente, problemas na view

Mensagem por Conteúdo patrocinado Hoje à(s) 05:42


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