Conectar-se
Quem está conectado
19 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 19 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 121

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Novamente, problemas na view

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.
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 106

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Novamente, problemas na view

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/
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 121

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: Novamente, problemas na view

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.
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum