[Tutorial] Pausar jogo com extrema facilidade

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

[Tutorial] Pausar jogo com extrema facilidade

Mensagem por Gonçalves em Ter 26 Fev 2013, 11:39

Acabo de descobrir uma forma extramente fácil de pausar o jogo, e queria passar pra vocês.

O que você vai aprender: A fazer um sistema de pausa de jogo funcional e facilmente customizável.
O que você vai precisar: Uma room, um objeto e uma variável global
Nível: Iniciante

Primeiramente, crie uma room chamada room_pausa sem background e desative o Draw Background Color.

Agora, no objeto do jogador (ou controle), no evento Key Pressed (a tecla que você quiser, pra pausar) ponha:

Código:
global.my_room = room
room_set_persistent(room,1)
room_goto(room_pause)

A variável vai salvar a id da room que você estava, logo depois você será transferido para o pause.

Agora crie o obj_pausa e ponha na room_pausa. Vai no Draw dele:

Código:
draw_rectangle_color(room_width/2-100,room_height/2+30,room_width/2+100,room_height/2-30,c_black,c_black,c_black,c_black,0)

draw_set_alpha(1)
draw_set_halign(fa_center)
draw_set_valign(fa_middle)
draw_set_color(c_white)
draw_text(room_width/2,room_height/2,"JOGO PAUSADO!")

Isso vai apenas desenhar retângulo com o texto desenhado. Agora no evento Key Pressed (a tecla que você quiser, pra sair da pausa), use:

Código:
room_goto(global.my_room)
room_set_persistent(global.my_room,0)

Que vai voltar a room salva.

Fácil, não?

Fico por aqui, até!

DOWNLOAD: Aqui


Última edição por Gonçalves em Qua 27 Fev 2013, 14:45, editado 3 vez(es)

Gonçalves

Ranking : Nota B
Número de Mensagens : 1013
Data de inscrição : 29/10/2010
Notas recebidas : B + A + C
Reputação : 79
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Tedi Ripper em Ter 26 Fev 2013, 16:31

¬¬
quando voltar a outra room, tera perdido as posiçoes, por exemploo, se tiver na metade da faze, volta ao inicio...
da pra fazer:

Key Press
Código:
game_save("save")
room_goto(room_pause)

e pra sair do pause
Código:
game_load("save")

mas tuto interessante ;D
flw flw

Tedi Ripper

Ranking : Nota C
Número de Mensagens : 765
Idade : 19
Data de inscrição : 21/11/2010
Notas recebidas : C
Reputação : 24
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Gonçalves em Ter 26 Fev 2013, 16:38

Basta deixar a room persistent, já atualizei o tutorial. Obrigado por me alertar!

Gonçalves

Ranking : Nota B
Número de Mensagens : 1013
Data de inscrição : 29/10/2010
Notas recebidas : B + A + C
Reputação : 79
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Livsk em Qua 27 Fev 2013, 15:17

Parabéns pelo tutorial Gonçalves!

Não sabia fazer um pause, quando raramente fazia para os meus jogos utilizava a mensagem padrão do GM, ou então criava uma variável que bloqueasse todos os objetos.

Vai ser bastante útil.

Flw

Livsk

Ranking : Nota C
Número de Mensagens : 364
Idade : 19
Data de inscrição : 02/06/2011
Notas recebidas : C + C + D + D + D + D + B + B + A + C + B
Reputação : 13
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Gonçalves em Qua 27 Fev 2013, 16:17

Adicionei engine pra download e atualizei o tópico.

O sistema está funcionando perfeitamente!

Gonçalves

Ranking : Nota B
Número de Mensagens : 1013
Data de inscrição : 29/10/2010
Notas recebidas : B + A + C
Reputação : 79
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por GameMakerTutoriais em Ter 05 Mar 2013, 02:12


Não conhecia "room_set_persistent()", eu ia dizer a mesma coisa que o Tedi Ripper falou aí... Jogada master dessa função, heim! Esse estilo de pause que você criou ficou show, muito prático e não precisa alterar nada no jogo.

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Kapoty em Ter 05 Mar 2013, 06:51

O tutorial é bom mas tem outro método pratico para isso, e eu aprendi aqui mesmo na gmbr só não lembro quem ensinou, observe :

Código:
// Pausar

background_7=background[7] // Salva o antigo backgrond 7
screen_save("temp.png") // Tira uma foto do jogo e salva no arquivo "temp.png"
instance_deactivate_all(1) // Desativa todas as instancias menos eu
background_new=background_add("temp.png",0,0) // Adiciona um background ao jogo
file_delete("temp.png") // Deleta o arquivo temporario
background[7]=background_new // Troca o antigo background 7 pelo novo

// Desenhar oque quiser na tela

draw_text(10,10,"Jogo Pausado!")

// Despausar

background[7]=background_7
instance_activate_all()

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: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Gonçalves em Ter 05 Mar 2013, 09:06

Desativar e ativar instâncias pode cancelar alarms (se o mesmo estiver já "rolando"), coisa que com esse método não acontece.

Gonçalves

Ranking : Nota B
Número de Mensagens : 1013
Data de inscrição : 29/10/2010
Notas recebidas : B + A + C
Reputação : 79
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Rodrigo Santiago em Ter 05 Mar 2013, 10:25

Eu nao uso save game, porque pode afetar algumas estruturas do jogo que acontecem no create, exemplo d3d start se perde ao carregar.

Eu jja pensei em usar:
No draw do objeto pause
(desenhar sprite de pause, nao precisa ser da tela)
while !(keyboard_check_pressed(vk_enter){
//Nada
}
instance_destroy()

Assim nao precisa desativar nem perde nada em concorencia de eventos e acoes, nem precisa redesenhar a tela ou criar uma imagem(background,sprite) dela porque o nenhum evento vai acontecer.
Sera q da problema?

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Dr.XGB em Ter 05 Mar 2013, 11:07

Rodrigo Santiago escreveu:...Eu jja pensei em usar:
No draw do objeto pause
(desenhar sprite de pause, nao precisa ser da tela)
while !(keyboard_check_pressed(vk_enter){
//Nada
}
instance_destroy()
[...]

...Sera q da problema?

Quando a gente usa essas condições com loop, não é bom deixar o bloco vazio senão o jogo trava porque ele acaba entrando em um "Loop Infinito". Mesmo você apertando Enter no meio desse loop, ele não vai mais responder.

Dr.XGB

Ranking : Nota B
Número de Mensagens : 54
Idade : 25
Data de inscrição : 22/02/2013
Notas recebidas : B
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por GameMakerTutoriais em Ter 05 Mar 2013, 11:19

Rodrigo Santiago escreveu:Eu nao uso save game, porque pode afetar algumas estruturas do jogo que acontecem no create, exemplo d3d start se perde ao carregar.

Eu jja pensei em usar:
No draw do objeto pause
(desenhar sprite de pause, nao precisa ser da tela)
while !(keyboard_check_pressed(vk_enter){
//Nada
}
instance_destroy()

Assim nao precisa desativar nem perde nada em concorencia de eventos e acoes, nem precisa redesenhar a tela ou criar uma imagem(background,sprite) dela porque o nenhum evento vai acontecer.
Sera q da problema?

Um loop que não faz nada e fica durante muito tempo 'rodando' não é muito bom. Alguns tipos de PC's mais modestos não lidam bem com isso. Você pode travar a máquina do cara, principalmente se ele estiver usando algum modelo antigo do Celleron, por exemplo. Nesse caso, usa keyboard_wait().

flw

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Rodrigo Santiago em Ter 05 Mar 2013, 13:58

Eu coloque sem testtar, mas ia da erro mesmo, devia ter colocado keyboard wait no lugar de nada.

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por theguitarmester em Ter 05 Mar 2013, 14:08

Esse sistema usando o Room persistent não é bom(para min), porque aí você já perde o sistema room_persistent(depende), e você precisa fazer uma room só para pause, o que é desnecessário.


Acho melhor criar um obj_pause, e quando pausar, ao invés de ir para outra room, desativar as instâncias, e quando voltar ao jogo, reativá-las.

theguitarmester

Ranking : Sem avaliações
Número de Mensagens : 1908
Idade : 21
Data de inscrição : 28/02/2012
Notas recebidas : B
Reputação : 80
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 2
   : 2
   : 1

http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Jiraya em Ter 05 Mar 2013, 15:31

pausar jogo com extrema facilidade
create:
Código:

pause=false;

draw:
Código:

while(pause)
{
screen_refresh();draw_clear(c_white);
//desenha seu menu aqui
if(keyboard_check_pressed(vk_space)){pause=false;keyboard_clear(vk_space)}
sleep(1);
}
if(keyboard_check_pressed(vk_space)){pause=true;keyboard_clear(vk_space);}

Jiraya

Ranking : Nota A
Número de Mensagens : 1134
Data de inscrição : 20/03/2010
Notas recebidas : A+A
Reputação : 108
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

https://www.facebook.com/seito.washiro.7

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Gonçalves em Ter 05 Mar 2013, 16:02

Ainda prefiro meu jeito... Sei lá, a maioria de vocês, ao invés de falar no que posso melhorar nessa mais uma forma de pausar um jogo etc., veio falar que essa forma é uma porcaria, que você têm uma forma melhor de fazer, que é fodão etc... mas que merda hein... Criava um tópico então!

Valeu! nervoso

Gonçalves

Ranking : Nota B
Número de Mensagens : 1013
Data de inscrição : 29/10/2010
Notas recebidas : B + A + C
Reputação : 79
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Rodrigo Santiago em Ter 05 Mar 2013, 16:32

Desculpa ai kara, mais aqui e um forum, ter todos estes metodos de pausa num so topico ira ajudar muito, nao existe regra pra isso. Lembre-se o objetivo e ajudar e aprender nao e ser o melhor, isso vc, eu, todos nos temos que tentar SOZINHOS.

Rodrigo Santiago

Ranking : Nota B
Número de Mensagens : 1281
Idade : 20
Data de inscrição : 28/07/2012
Notas recebidas : C + C + B
Reputação : 73
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 1
   : 3

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por TRFN em Ter 05 Mar 2013, 16:32

Gonçalves escreveu:Ainda prefiro meu jeito... Sei lá, a maioria de vocês, ao invés de falar no que posso melhorar nessa mais uma forma de pausar um jogo etc., veio falar que essa forma é uma porcaria, que você têm uma forma melhor de fazer, que é fodão etc... mas que merda hein... Criava um tópico então!

Valeu! nervoso

Calma, contenha-se, senão vou ter que tomar medidas. Entendo que estejam te enchendo apenas criticando, mas se você postou, você deveria estar disposto a receber críticas positivas e negativas. Quanto a outros sistemas postados e se acharem, o que tem de mais? Ora, tem pessoas que desconhecem "humildade", isso é, em todo lugar é assim. E também não se preocupe, porque se você fez um bom sistema e sabe disso, você não deve temer que mostrem outra forma de fazer. Gonçalves, querendo ou não, nesse fórum quase sempre todos querem mostrar que são melhores, eu sou muito assim, tento ser o melhor, mas e sempre com humildade. Concluo esse mero "aviso" com uma pergunta a você: Porque o "stress"? Relaxa.

Desculpa ai kara, mais aqui e um forum, ter todos estes metodos de pausa num so topico ira ajudar muito, nao existe regra pra isso. Lembre-se o objetivo e ajudar e aprender nao e ser o melhor, isso vc, eu, todos nos temos que tentar SOZINHOS.
Concordo até certo ponto e falei sobre acima. Agora não concordo sobre o sozinhos, já que se pensarmos juntos vamos longe.

A propósito sugiro a você rodrigo que escreva direito porque é um pouco difícil de entender quando "vc iscrevi asim".


Sobre o sistema funciona sim, mas sempre tem como melhorar.

___________



TRFN

Ranking : Nota C
Número de Mensagens : 970
Idade : 21
Data de inscrição : 16/01/2012
Notas recebidas : C
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

http://trfnsite.com

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Jiraya em Ter 05 Mar 2013, 17:19

Ops, acho que interpretaram mal o meu post
eu não postei aquilo para dizer que é a melhor maneira, só quis dizer que tem outras maneiras fáceis também, desculpem pelo incoveniente.

e não foi para mostrar que sou "fodão", na minha opnião, "fodão" é esse pessoal que tem mestrado em ciência da computação, eu sou apenas um estudante aspirante à programador.


Jiraya

Ranking : Nota A
Número de Mensagens : 1134
Data de inscrição : 20/03/2010
Notas recebidas : A+A
Reputação : 108
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

https://www.facebook.com/seito.washiro.7

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por PedroX em Ter 05 Mar 2013, 17:24

Gonçalves, eu também prefiro o seu método. Ele é o mais personalizável, além de não interromper eventos. Com uma room própria, é fácil personalizar o menu, colocando backgrounds, instâncias, tudo pelo editor de rooms.

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Dancity em Ter 05 Mar 2013, 18:22

Muito bom seu tutorial, gonçalves! Gostei pelo mesmo motivo do PedroX, com uma room fica mais fácil de personalizar o menu. Acho que seu tutorial deve ser adicionado ao FAQ, bem como o do Jiraya. O importante mesmo é que ambos podem contribuir muito pra comunidade, são códigos diferentes, sendo assim., aplicações diferentes.

Abraços!

Não deixem que esses pequenos conflitos gerem uma discussão, tá tudo resolvido, bola pra frente e continuem avaliando o pause do nosso amigo gonçalves.

Dancity

Ranking : Nota A
Número de Mensagens : 1339
Data de inscrição : 11/01/2009
Notas recebidas : A
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   :
   :

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Gonçalves em Ter 05 Mar 2013, 20:21

Bom, sobre toda essa discussão tenho duas coisas a dizer: Foi mal e obrigado.

Foi mal pelo mimimi todo, não havia necessidade, de certo ponto.

Na verdade eu levei na boa os comentários "negativos" mas, fiquei p*** com isso...

Pausar jogo com excelente facilidade:

Meu jeito simples e perfeito bem melhor que isso

Não tem como entender mal isso porquê só se tem um entendimento sobre isso: menosprezo da parte de quem escreveu.

Tipo, descobrir algo legal que pode acrescentar alguma coisa à alguém, vir correndo postar no fórum e simplesmente ler uma mensagem que dá a entender como "perdeu seu tempo vindo aqui, ô mané" é uma bela facada no peito, kkkk.

Não queria/quero gerar discussões mas fiquei meio bolado mesmo, mas refleti já que estou errado também, rs. E também não ficou p***nho com ninguém, não sou disso.

Obrigado aos comentários positivos-mesmo-que-negativos (os que acrescentam algo).

Até mais! elephant

Gonçalves

Ranking : Nota B
Número de Mensagens : 1013
Data de inscrição : 29/10/2010
Notas recebidas : B + A + C
Reputação : 79
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por The Wizard em Ter 05 Mar 2013, 20:29

Eu também gostei, aliás com isso, é possível fazer um inventário e um menu de opções de um modo muuuito mais fácil mesmo, é bem simples, e funciona muito bem, e achei melhor pela mesma razão que Dancity e PedroX, é mais prático e bem mais fácil, até =)

The Wizard

Ranking : Nota B
Número de Mensagens : 1129
Idade : 18
Data de inscrição : 24/03/2010
Notas recebidas : B
Reputação : 17
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://awesomewizards.deviantart.com/

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Kapoty em Ter 05 Mar 2013, 20:31

Opa então me desculpe Gonçalves, não queria rebaixar seu método, apenas queria mostrar outro método que eu usava, como disse "usava", de agora em diante vou usar o seu, parece ser melhor ;)

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: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por TRFN em Qua 06 Mar 2013, 08:49

Gostei muito do seu método, é bem prático revendo bem.
Eu uso algo parecido no meu jogo, só que faço uso de um save-game temporário, para não perder nada. Mas seu método demonstrou ser funcional, Muito bom mesmo Happy

At+

___________



TRFN

Ranking : Nota C
Número de Mensagens : 970
Idade : 21
Data de inscrição : 16/01/2012
Notas recebidas : C
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

http://trfnsite.com

Voltar ao Topo Ir em baixo

Re: [Tutorial] Pausar jogo com extrema facilidade

Mensagem por Conteúdo patrocinado Hoje à(s) 12:28


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