Pausar jogo quando este estiver minimizado

5 Respostas   732 Visualizações

0 Membros e 1 Visitante estão vendo este tópico.

willsaller

  • *
  • Posts: 39
  • Ouros: 18
Tópico criado em: 29/06/2015 às 19:21

Boa noite a todos!

Antes de mais nada peço desculpas desde já caso já exista um tópico citando a mesma situação, mas vamos lá: considerando os créditos, com texto rolante e BGM, se a pessoa minimizar a tela, a música continua, mas o texto rolante para. Eu gostaria de saber se é possível pausar ambos (todos os eventos sendo processados, incluindo sons, devem pausar), ou fazer tudo continuar rodando (se a BGM não para, o texto rolante nesse caso deveria acompanhar).

É possível fazer alguma modificação para que uma das situações acima seja possível?

Ludo

  • Veterano
  • *
  • Posts: 873
  • Ouros: 1227
  • Um homem não moldado pela dor, ainda é um menino
Resposta 1: 29/06/2015 às 20:12

Boa noite a todos!

Antes de mais nada peço desculpas desde já caso já exista um tópico citando a mesma situação, mas vamos lá: considerando os créditos, com texto rolante e BGM, se a pessoa minimizar a tela, a música continua, mas o texto rolante para. Eu gostaria de saber se é possível pausar ambos (todos os eventos sendo processados, incluindo sons, devem pausar), ou fazer tudo continuar rodando (se a BGM não para, o texto rolante nesse caso deveria acompanhar).

É possível fazer alguma modificação para que uma das situações acima seja possível?
eu acho que isso já é coisa do executável, não sei porque vc pensa em fazer isso mas vou tentar adivinhar.
Talvez você fez seus créditos sincronizados com a música é isso? tal parte dos creditos passa junto com tal parte da musica.
Saiba que o jogo roda por frames, 60 frames por segundo e roda em velocidades diferentes em cada computador, o certo é levar 1 segundo cada 60 frames, mas alguns levam um pouquinho mais, já as musicas não obedecem frames, elas executam e pronto, sua cena de ceditos jamais vai ficar sincronizada.
Também não vejo o porque se preocupar em alguém minimizar a janela durante os créditos pois toda musica repete assim que acaba, e se pergunte porque alguém iria minimizar a janela na hora dos créditos? se alguem não quiser ver vai mesmo é fechar a janela não acha?
é minha opinião
Clique e conheça o meu canal - Canal RPG Maker Zone

willsaller

  • *
  • Posts: 39
  • Ouros: 18
Resposta 2: 29/06/2015 às 20:29

Boa noite a todos!

Antes de mais nada peço desculpas desde já caso já exista um tópico citando a mesma situação, mas vamos lá: considerando os créditos, com texto rolante e BGM, se a pessoa minimizar a tela, a música continua, mas o texto rolante para. Eu gostaria de saber se é possível pausar ambos (todos os eventos sendo processados, incluindo sons, devem pausar), ou fazer tudo continuar rodando (se a BGM não para, o texto rolante nesse caso deveria acompanhar).

É possível fazer alguma modificação para que uma das situações acima seja possível?
eu acho que isso já é coisa do executável, não sei porque vc pensa em fazer isso mas vou tentar adivinhar.
Talvez você fez seus créditos sincronizados com a música é isso? tal parte dos creditos passa junto com tal parte da musica.
Saiba que o jogo roda por frames, 60 frames por segundo e roda em velocidades diferentes em cada computador, o certo é levar 1 segundo cada 60 frames, mas alguns levam um pouquinho mais, já as musicas não obedecem frames, elas executam e pronto, sua cena de ceditos jamais vai ficar sincronizada.
Também não vejo o porque se preocupar em alguém minimizar a janela durante os créditos pois toda musica repete assim que acaba, e se pergunte porque alguém iria minimizar a janela na hora dos créditos? se alguem não quiser ver vai mesmo é fechar a janela não acha?
é minha opinião

Entendo, mas eu toquei no assunto porque pra mim, como programador, imagino que o SO gerencia a execução do jogo em threads, o que permite a música continuar executando enquanto os demais processos do jogo pausam. Não tem como modificar o algoritmo da ferramenta para que eu compile o jogo com todas as threads pausando quando eu minimizo? Eu quero tirar essa dúvida porque pretendo desenvolver outros projetos e talvez eu embarque no mundo do RGSS3, e isso pode fazer parte da minha gama de atividades. Agradeço se for possível para alguém fazer algo a respeito, mas tudo bem se for algo irrelevante também, só fiquei curioso mesmo xD

felipefalcon

Resposta 3: 29/06/2015 às 21:18

Se achar uma resposta, me passe também eu preciso :v

Dúvida muito importante pros scripter's de plantão.

PS: Eu preciso pois eu tenho um sistema de música aqui que fiz para apertar teclas(ele é bem antigo) e o que importa nele é a sincronização. Queria saber se tem como pausar o som se a janela tiver em off.



  

Ludo

  • Veterano
  • *
  • Posts: 873
  • Ouros: 1227
  • Um homem não moldado pela dor, ainda é um menino
Resposta 4: 30/06/2015 às 07:59

Se achar uma resposta, me passe também eu preciso :v

Dúvida muito importante pros scripter's de plantão.

PS: Eu preciso pois eu tenho um sistema de música aqui que fiz para apertar teclas(ele é bem antigo) e o que importa nele é a sincronização. Queria saber se tem como pausar o som se a janela tiver em off.

Acho que encontrei o principio do que vc quer veja bem, o script abaixo pausa tudo até musica apenas pressionando a tecla F6, claro, não é ainda o que vc quer, mas vc pode pedir um scripter experiente para verificar onde está o comando de pause para adicionar no momento de "PERDA DE FOCO" não se esqueça disso. E já aviso, pode ser difícil.
Código: [Selecionar]
###############################################################################
#Pause Script Version 3                                       
# Author: Unsigned_Zero
# Updated by Tsukihime
###############################################################################

# Pause picture should be placed in the Graphics/System folder

module U0_Pause_module

  PAUSE_BUTTON = "F6"
  Pause_Picture = ""

  #dim the screen during pause
  Dim_Screen = false
  Dim_Brightness = 100
  #The bgm to play when paused
  Pause_Music = "Dungeon2"
  #The bgm volume when paused
  Pause_Volume = 60
  # Freeze Time when in pause mode?
  TIME_STOP = true
  PAUSE_BUTTON2 = eval("Input::#{PAUSE_BUTTON}")
  PAUSE_OPACITY = 128 #opacity of the picture

  def stopping
    bgm = RPG::BGM.last
    bgs = RPG::BGS.last
    prev_brightness = Graphics.brightness
    RPG::BGM.stop
    Audio.bgm_play('Audio/BGM/' + Pause_Music, Pause_Volume)
    viewport1 = Viewport.new(0, 0, Graphics.width, Graphics.height)
    viewport1.z = 10000
    pause_sprite = Sprite.new(viewport1)
    pause_sprite.tone = Tone.new(0, 0, 0, 0)
    pause_sprite.bitmap = Cache.system (Pause_Picture)
    pause_sprite.opacity = PAUSE_OPACITY
    loop do
      Graphics.update
      Graphics.brightness = Dim_Brightness if Dim_Screen
      Input.update
      if Input.trigger?(PAUSE_BUTTON2)
        break
      end
    end
    Graphics.brightness = prev_brightness
    bgm.play(bgm.pos)
    bgs.play(bgs.pos)
    pause_sprite.dispose
    pause_sprite = nil
  end

end
#==============================================================================
#  Scene_Base
#==============================================================================

class Scene_Base
  include U0_Pause_module
  alias u0_pause_update update
  def update
    if Input.trigger?(PAUSE_BUTTON2)
      frame = Graphics.frame_count
      stopping
      if TIME_STOP
        Graphics.frame_count = frame
      end
    end
  u0_pause_update
  end
end
Clique e conheça o meu canal - Canal RPG Maker Zone

Star Gleen

Resposta 5: 30/06/2015 às 16:05

É algo de extrema dificuldade. Para isso seria necessário uma modificação no próprio game.exe, pois não existe comando que possa reconhecer está perda de foco.

Disponha