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
» (Resolvido) 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
» (RESOLVIDO) 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
[Tutorial] Janelas Dinâmicas I
+10
Grotle
GuiEdu
CLS
The Wizard
Luan Maia
Gabreel
kraptus
fonetico
fenanco
Fuzenrad
14 participantes
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
[Tutorial] Janelas Dinâmicas I
Janelas dinâmicas
(Parte 1/3 - Informações)
Várias vezes, durante o desenvolvimento de um jogo, nos deparamos com um problema, as janelas do jogo, é possível usar a função do Game Maker show_message ou get_integer, só que por mais customizável que elas são, não fica bom, eu particularmente evito usar essas funções por quase nunca combinarem com o jogo. É possível fazer janelas com GML, assim abrindo uma imensa gama de possibilidades, como efeitos, opções, customização etc, basta saber aproveitá-las.
Esse tutorial está dividido em 3 partes (pra não ficar muito extenso a mensagem), a primeira (essa), vou mostrar como posicionar informações e imagens em uma janela dinâmica, além de adicionar efeito de fade in/out, pra surgir/sumir de forma bem profissional, a segunda parte será sobre como fazer janelas com botões de opções, como Ok, Cancelar, Sim, Não ou qualquer uma (costumizável) e finalmente a terceira e última, como fazer uma janela onde é possível inserir dados como nome, informações, valores etc.
É até simples trabalhar com janelas dinâmicas, em geral é saber posicionamento e configurar corretamente a coordenada da origem das sprites.
Pra começar, é sempre bom saber o que você pretende fazer, a posição das janelas etc, pra quem estar iniciando, é recomendável fazer efeitos simples, mais "quadrados", pois ajuda a respeitar a posição, mas com o tempo você vai posicionar no olho.
Essa é a área que eu vou trabalhar, é uma imagem de 324x191 pixels, separada em pequenos quadrados de 10 pixels.
A segunda parte é determinar a área das informações que serão adicionadas nessa janela, como feito na imagem abaixo:
Feito isso, você atribui algum efeito, imagem de fundo, colorização, enfim, essa parte vai da criatividade de cada um, nesse caso eu fiz uma montagem bem simples, no próprio editor de sprites do Game Maker, embora simples, ficou bem agradável.
Se você quiser adicionar textos na janela, fica mais fácil pro jogador identificar o que está contido nas regiões, no meu caso eu vou colocar só "Informações", "Dragão" e "Personagem", que vai mostrar informações de um RPG (um exemplo):
Informações
Você está no reino de Dacrons. Encontre o treinador do centro da cidade para que ele te ajude a treinar seu novo dragão.
Personagem
Dragão Glacial
XP: 278/350
Dragão
(Poderia ser uma imagem fixa, mas no caso o dragão será mudada ao passar do jogo, por isso tem que ser uma imagem separada)
Finalizamos então a parte gráfica da janela, entra agora a programação. Será usado somente 1 objeto, assim fica mais fácil atribuir efeitos de movimento, fade, ou qualquer outro.
No evento Create do objeto, temos que identificar as variáveis que será usada na janela, no caso são:
Com as variáveis já fixadas, vamos para o evento Draw, que é onde toda a "mágica" é feita, primeiro vamos mostrar a janela do jogo (é uma sprite chamada sp_janela).
Falta agora as informações em texto:
No evento create eu coloquei uma variável (some=0) que eu não havia explicado pra que seria usada, pois bem, ela entra agora.
No evento Step:
Por fim, o resultado final será:
Baixar a engine do tutorial
(Parte 1/3 - Informações)
Várias vezes, durante o desenvolvimento de um jogo, nos deparamos com um problema, as janelas do jogo, é possível usar a função do Game Maker show_message ou get_integer, só que por mais customizável que elas são, não fica bom, eu particularmente evito usar essas funções por quase nunca combinarem com o jogo. É possível fazer janelas com GML, assim abrindo uma imensa gama de possibilidades, como efeitos, opções, customização etc, basta saber aproveitá-las.
Esse tutorial está dividido em 3 partes (pra não ficar muito extenso a mensagem), a primeira (essa), vou mostrar como posicionar informações e imagens em uma janela dinâmica, além de adicionar efeito de fade in/out, pra surgir/sumir de forma bem profissional, a segunda parte será sobre como fazer janelas com botões de opções, como Ok, Cancelar, Sim, Não ou qualquer uma (costumizável) e finalmente a terceira e última, como fazer uma janela onde é possível inserir dados como nome, informações, valores etc.
É até simples trabalhar com janelas dinâmicas, em geral é saber posicionamento e configurar corretamente a coordenada da origem das sprites.
Pra começar, é sempre bom saber o que você pretende fazer, a posição das janelas etc, pra quem estar iniciando, é recomendável fazer efeitos simples, mais "quadrados", pois ajuda a respeitar a posição, mas com o tempo você vai posicionar no olho.
Essa é a área que eu vou trabalhar, é uma imagem de 324x191 pixels, separada em pequenos quadrados de 10 pixels.
A segunda parte é determinar a área das informações que serão adicionadas nessa janela, como feito na imagem abaixo:
Feito isso, você atribui algum efeito, imagem de fundo, colorização, enfim, essa parte vai da criatividade de cada um, nesse caso eu fiz uma montagem bem simples, no próprio editor de sprites do Game Maker, embora simples, ficou bem agradável.
Se você quiser adicionar textos na janela, fica mais fácil pro jogador identificar o que está contido nas regiões, no meu caso eu vou colocar só "Informações", "Dragão" e "Personagem", que vai mostrar informações de um RPG (um exemplo):
Informações
Você está no reino de Dacrons. Encontre o treinador do centro da cidade para que ele te ajude a treinar seu novo dragão.
Personagem
Dragão Glacial
XP: 278/350
Dragão
(Poderia ser uma imagem fixa, mas no caso o dragão será mudada ao passar do jogo, por isso tem que ser uma imagem separada)
Finalizamos então a parte gráfica da janela, entra agora a programação. Será usado somente 1 objeto, assim fica mais fácil atribuir efeitos de movimento, fade, ou qualquer outro.
No evento Create do objeto, temos que identificar as variáveis que será usada na janela, no caso são:
- Código:
tahoma=font_add("Tahoma",8,0,0,32,127)
tahoma_n=font_add("Tahoma",8,1,0,32,127)
//As fontes da janela
nome_dragao="Dragao Glacial"
exper_atual=278
exper_max=350
img_dragao=sp_glacial
//Personagem
some=0
msg_missao_atual="Voce esta no reino de #Dacrons.##Encontre o treinador do #centro da cidade para que #ele te ajude a treinar seu #novo dragao."
//Missao atual
Com as variáveis já fixadas, vamos para o evento Draw, que é onde toda a "mágica" é feita, primeiro vamos mostrar a janela do jogo (é uma sprite chamada sp_janela).
- Código:
draw_sprite_ext(sp_janela,0,x,y,1,1,0,c_white,image_alpha)
//será mostrada na posição que for colocada na tela
draw_sprite_ext(img_dragao,0,x+209,y+19,1,1,0,c_white,image_alpha)
//agora a imagem do dragão, na área que ele deve aparecer
- Código:
draw_text(mouse_x,mouse_y,"x="+string(mouse_x)+" y="+string(mouse_y))
Falta agora as informações em texto:
- Código:
draw_set_font(tahoma)
draw_set_halign(0)
draw_text_color(x+26,y+24,msg_missao_atual,c_white,c_silver,c_white,c_ltgray,image_alpha)
//As informações sobre a fase
draw_set_font(tahoma_n)
draw_text_color(x+217,y+138,nome_dragao+"#XP: "+string(exper_atual)+"/"+string(exper_max),c_white,c_silver,c_white,c_ltgray,image_alpha)
//As informações do personagem
No evento create eu coloquei uma variável (some=0) que eu não havia explicado pra que seria usada, pois bem, ela entra agora.
No evento Step:
- Código:
if keyboard_check_pressed(ord('S')) some=1
if keyboard_check_pressed(ord('A')) some=0
if image_alpha<1 and some=0 image_alpha+=0.05
if image_alpha>0 and some=1 image_alpha-=0.05
Por fim, o resultado final será:
Baixar a engine do tutorial
Última edição por Fuzenrad em Sáb 11 Set 2010, 14:01, editado 1 vez(es)
Fuzenrad- Games Ranking :
Notas recebidas : A-A-A-A-B
Data de inscrição : 04/07/2010
Reputação : 46
Número de Mensagens : 1063
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 1
x 0 x 0 x 0
Re: [Tutorial] Janelas Dinâmicas I
Boa ideia de tutorial, e tambem esta bem explicado nota 10
fenanco- Data de inscrição : 16/07/2010
Reputação : 0
Número de Mensagens : 88
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Tutorial] Janelas Dinâmicas I
Ótimo tutorial, é mesmo muito útil se comparado às funções padrões do GM.
Com esse tipo de técnica, como você disse, podemos fazer janelas muito estilizadas para RPG's.
Gostei muito, mas só um detalhe:
Não é necessário fazer uma função para mostrar o lugar do mouse se a janela estará na posição 0x0. Neste caso, podemos usar a própria propriedade da room, em baixo, para ver a posição do mouse. Só um toque!
Com esse tipo de técnica, como você disse, podemos fazer janelas muito estilizadas para RPG's.
Gostei muito, mas só um detalhe:
Atenção:Com o tempo, vai ser muito mais fácil determinar a posição dos itens na janela, uma solução fácil e rápida, é você colocar a janela na posição 0x0 dentro da room e colocar uma função no mouse, pra mostrar a posição X e Y atual:
CÓDIGO:
draw_text(mouse_x,mouse_y,"x="+string(mouse_x)+" y="+string(mouse_y))
Não é necessário fazer uma função para mostrar o lugar do mouse se a janela estará na posição 0x0. Neste caso, podemos usar a própria propriedade da room, em baixo, para ver a posição do mouse. Só um toque!
fonetico- Data de inscrição : 05/10/2009
Reputação : 7
Número de Mensagens : 1830
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Tutorial] Janelas Dinâmicas I
bom tutorial nota 10
continue assim que o forum agradece
continue assim que o forum agradece
kraptus- Data de inscrição : 01/06/2010
Reputação : 6
Número de Mensagens : 111
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Tutorial] Janelas Dinâmicas I
Ótimo, sempre é necessário um script que entendamos, para pder pesonaliza-lo.. Muito bom tutorial, parabens.
Gabreel- Data de inscrição : 02/10/2009
Reputação : 52
Número de Mensagens : 2232
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
- Javascript
- Outros
Re: [Tutorial] Janelas Dinâmicas I
Ótimo tutorial, ele além de ajudar no objetivo do tutorial (Janelas Dinâmicas) nos ajuda a treinar a lógica. Me ajudou a treinar a lógica da programação e a conhecer algumas funções desconhecidas por mim antes.
Continue assim, você e muitos outros programadores daqui do fórum são excelentes programadores, e com ajuda de vocês o fórum crescerá cada vez mais. xD
Continue assim, você e muitos outros programadores daqui do fórum são excelentes programadores, e com ajuda de vocês o fórum crescerá cada vez mais. xD
Luan Maia- Games Ranking :
Notas recebidas : D+C+C+D
Data de inscrição : 01/07/2010
Reputação : 2
Número de Mensagens : 404
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Tutorial] Janelas Dinâmicas I
Adorei seu tutorial é muito bom,vai ajudar muitas pessoas ,parabens pelo seu tutorial
The Wizard- Games Ranking :
Notas recebidas : B
Data de inscrição : 24/03/2010
Reputação : 17
Número de Mensagens : 1129
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 1
x 0 x 0 x 0
Re: [Tutorial] Janelas Dinâmicas I
Ótimo tutorial!
Cara,realmente,ficou muito bom!
Eu não consegui entender essa parte:
Nas partes em negrito que destaquei,por que você colocou o x e y entre aspas?Esse comando não serve só para texto?Poderia me explicar por favor?
Cara,realmente,ficou muito bom!
Eu não consegui entender essa parte:
draw_text(mouse_x,mouse_y,"x="+string(mouse_x)+" y="+string(mouse_y))
Nas partes em negrito que destaquei,por que você colocou o x e y entre aspas?Esse comando não serve só para texto?Poderia me explicar por favor?
Re: [Tutorial] Janelas Dinâmicas I
Dark Maker escreveu:Ótimo tutorial!
Cara,realmente,ficou muito bom!
Eu não consegui entender essa parte:draw_text(mouse_x,mouse_y,"x="+string(mouse_x)+" y="+string(mouse_y))
Nas partes em negrito que destaquei,por que você colocou o x e y entre aspas?Esse comando não serve só para texto?Poderia me explicar por favor?
Mas é isso mesmo que era pra acontecer, como está na função "draw_text". Vou traduzir o que aparecerá na tela, "x=5 y=10", supondo que 5 é a posição x do mouse na tela do jogo e y a posição y do mouse na tela do jogo, entendeu?
Luan Maia- Games Ranking :
Notas recebidas : D+C+C+D
Data de inscrição : 01/07/2010
Reputação : 2
Número de Mensagens : 404
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Tutorial] Janelas Dinâmicas I
AEH fuzenrad, que bom que vc postou um tuto eu tinha pedido outro dia neh xD
E que tuto hein cara
Tem umas coisas que eu só vou entender com o tempo, como o esquema do mouse... e outra, sou péssimo com o evento draw, de todos é o que eu menos sei usar e é justamente o "tchan" da coisa...
Parabéns aí amigo, vc se empenhou e fez um tuto muito bom
E que tuto hein cara
Tem umas coisas que eu só vou entender com o tempo, como o esquema do mouse... e outra, sou péssimo com o evento draw, de todos é o que eu menos sei usar e é justamente o "tchan" da coisa...
Parabéns aí amigo, vc se empenhou e fez um tuto muito bom
GuiEdu- Data de inscrição : 04/06/2010
Reputação : 0
Número de Mensagens : 505
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Tutorial] Janelas Dinâmicas I
Muito bom esse tutorial cara, parabéns.
Esse tipo de "layout" é muito bom pra jogos de RPG, dá um visual mais profissional.
Parabéns mesmo cara!
Esse tipo de "layout" é muito bom pra jogos de RPG, dá um visual mais profissional.
Parabéns mesmo cara!
Re: [Tutorial] Janelas Dinâmicas I
Ótimo tutorial.
É simples, não usa funções complicadas, mas é perfeito para explicar o conceito de janelas. Esse é o primeiro tutorial de uma seqüência de 3, por isso deve ser mais simples, os próximos devem adicionar mais funções (segundo o que é dito no tópico).
Sugestão:
draw_set_font(tahoma) não precisa ser chamado mais de uma vez no draw, a fonte não foi alterada em nenhum outro lugar. Não é necessário mandar mudar a fonte sempre que vai escrever, pois em alguns casos a fonte usada é a mesma da que foi usada anteriormente.
Para os próximos tutoriais dessa seqüência, você pode adicionar como fazer janelas independentes, que você pode arrastar, fechar e que possuem todas essas funções que você citou (botões, texto, etc).
Muito bom!
Ganhou selinho de Qualidade 100%!
É simples, não usa funções complicadas, mas é perfeito para explicar o conceito de janelas. Esse é o primeiro tutorial de uma seqüência de 3, por isso deve ser mais simples, os próximos devem adicionar mais funções (segundo o que é dito no tópico).
Sugestão:
draw_set_font(tahoma) não precisa ser chamado mais de uma vez no draw, a fonte não foi alterada em nenhum outro lugar. Não é necessário mandar mudar a fonte sempre que vai escrever, pois em alguns casos a fonte usada é a mesma da que foi usada anteriormente.
Para os próximos tutoriais dessa seqüência, você pode adicionar como fazer janelas independentes, que você pode arrastar, fechar e que possuem todas essas funções que você citou (botões, texto, etc).
Muito bom!
Ganhou selinho de Qualidade 100%!
Janx- Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios :
x 0 x 0 x 0
x 0 x 2 x 0
x 0 x 0 x 0
Re: [Tutorial] Janelas Dinâmicas I
Realmente, eu havia pensado nisso, acho que vou fazer a parte 4 desse tutorial, que será pra mover a janela e adicionar efeitos mais complexos, como movimento, área em blend, mas foi bom você ter falado, obrigado.
A minha idéia, é quando todos estiverem escritos eu vou juntar tudo e montar um PDF com todas as engines em um ZIP, vai ficar bem completo, acho que vai passar de 20 páginas tranquilo.
Sobre o draw_set_font, realmente quando configurado funciona pra todos os draw_text, mas nada que comprometa o tutorial. Agradeço a todos pelos comentários.
A segunda parte:
[Tutorial] Janelas Dinâmicas II
A minha idéia, é quando todos estiverem escritos eu vou juntar tudo e montar um PDF com todas as engines em um ZIP, vai ficar bem completo, acho que vai passar de 20 páginas tranquilo.
Sobre o draw_set_font, realmente quando configurado funciona pra todos os draw_text, mas nada que comprometa o tutorial. Agradeço a todos pelos comentários.
A segunda parte:
[Tutorial] Janelas Dinâmicas II
Fuzenrad- Games Ranking :
Notas recebidas : A-A-A-A-B
Data de inscrição : 04/07/2010
Reputação : 46
Número de Mensagens : 1063
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 1
x 0 x 0 x 0
Re: [Tutorial] Janelas Dinâmicas I
Maravilhoso seu tutorial Fuzenrad!
Está virando um otimo usuario.
Espero ver um dia você virar um ''Colaborado''.
Continue assim que você será recompensado.
Está virando um otimo usuario.
Espero ver um dia você virar um ''Colaborado''.
Continue assim que você será recompensado.
Super Games- Games Ranking :
Notas recebidas : C
Data de inscrição : 10/06/2010
Reputação : 36
Número de Mensagens : 2800
Prêmios :
x 0 x 0 x 0
x 0 x 1 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
- Java
- Godot
- Javascript
- C ou C++
Re: [Tutorial] Janelas Dinâmicas I
Luan_Maia escreveu:Dark Maker escreveu:Ótimo tutorial!
Cara,realmente,ficou muito bom!
Eu não consegui entender essa parte:draw_text(mouse_x,mouse_y,"x="+string(mouse_x)+" y="+string(mouse_y))
Nas partes em negrito que destaquei,por que você colocou o x e y entre aspas?Esse comando não serve só para texto?Poderia me explicar por favor?
Mas é isso mesmo que era pra acontecer, como está na função "draw_text". Vou traduzir o que aparecerá na tela, "x=5 y=10", supondo que 5 é a posição x do mouse na tela do jogo e y a posição y do mouse na tela do jogo, entendeu?
Entendi sim!
Valeu!
É que eu pensei que ele usaria como uma variável interna!
Mas pelo o que eu entendi,vai aparecer isso na tela:
x = (número da posição x do mouse) y = (número da posição y do mouse)
Estou certo?
Re: [Tutorial] Janelas Dinâmicas I
sem palavras *-* parabens voce explica muito bem !
por favor faz um fanbar que eu quero ser o primeeiro a usar!
por favor faz um fanbar que eu quero ser o primeeiro a usar!
Re: [Tutorial] Janelas Dinâmicas I
Bom tutorial,nota 9,gostei XD.
PS:Voltei galera,eu tava bem sumido né?Pois é,agora eu voltrei.
PS:Voltei galera,eu tava bem sumido né?Pois é,agora eu voltrei.
LeandroDaher- Data de inscrição : 13/05/2010
Reputação : 3
Número de Mensagens : 357
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos