Page 1 of 2

Proper way to exit game

Posted: Wed Jan 06, 2016 2:40 pm
by Kasperelo
When I press the home button on my phone, the background music of my game keeps on playing. What is the proper way to exit the game whenever the user leaves it?

Re: Proper way to exit game

Posted: Wed Jan 06, 2016 5:07 pm
by Beelz
I don't really dabble in the mobile sector, but I think you're having focus issues.... Think of apps like pandora and youtube. When you return to the home screen pandora will keep playing, however youtube stops when it loses focus. I don't know the specifics, but that's how it seems to me.

Re: Proper way to exit game

Posted: Wed Jan 06, 2016 6:06 pm
by Kasperelo
Yeah, my current code looks like this:

Code: Select all

function love.focus(focus)
    if not focus then
        exit()
    end
end
where exit is the code for stopping all sounds and exiting the game. However, that only seems to work on some phones, like my Xperia Z1, but not my friend's Huawei.

Re: Proper way to exit game

Posted: Sat Jan 09, 2016 1:24 am
by GiveMeAnthony
Haven't tested stuff on mobile yet; however, I would use love.event.quit() to cause the program to abort and use the love.quit callback for cleaning up resources. Try to use love.event.quit() in the love.focus() callback and see what it does on your friend's Huawei.

Re: Proper way to exit game

Posted: Sat Jan 09, 2016 1:34 am
by slime
I don't know about Android, but on iOS Apple will probably reject your app from the app store if you programmatically quit it (as that looks like a crash to the user, and apps are never supposed to quit themselves in the iOS app lifecycle).

Re: Proper way to exit game

Posted: Sat Jan 09, 2016 6:44 am
by undef
slime wrote:I don't know about Android, but on iOS Apple will probably reject your app from the app store if you programmatically quit it (as that looks like a crash to the user, and apps are never supposed to quit themselves in the iOS app lifecycle).
Interesting.
What do you do then on iOS? Just remove an option to exit the game?

Re: Proper way to exit game

Posted: Sat Jan 09, 2016 7:01 pm
by Kasperelo
GiveMeAnthony wrote:Haven't tested stuff on mobile yet; however, I would use love.event.quit() to cause the program to abort and use the love.quit callback for cleaning up resources. Try to use love.event.quit() in the love.focus() callback and see what it does on your friend's Huawei.
That is part of my exit() function. It looked a little like this:

Code: Select all

function exit()
    sfx.stop("music")
    -- Some code for stopping all sound effects
    love.event.quit()
end

Re: Proper way to exit game

Posted: Sat Jan 09, 2016 8:20 pm
by Nixola
I think love.audio.stop stops all playing sources and is automatically called, so you shouldn't need to do that.

Re: Proper way to exit game

Posted: Sat Jan 09, 2016 9:20 pm
by GiveMeAnthony
Kasperelo wrote:
GiveMeAnthony wrote:Haven't tested stuff on mobile yet; however, I would use love.event.quit() to cause the program to abort and use the love.quit callback for cleaning up resources. Try to use love.event.quit() in the love.focus() callback and see what it does on your friend's Huawei.
That is part of my exit() function. It looked a little like this:

Code: Select all

function exit()
    sfx.stop("music")
    -- Some code for stopping all sound effects
    love.event.quit()
end
Alright, so maybe we ought to try something like this...

Code: Select all

local exiting = false -- we can set this to true from a user dialog
local focus_switch = false -- we'll set this when the app goes out of focus

function love.focus(in_focus)
    if not in_focus then
        focus_switch = true
        love.event.quit()
    end
end

function love.quit()
    if exiting then
        -- code to execute for exiting the program
        -- from a user dialog. Perhaps something to
        -- to ask if they'd really like to exit or not.
        return false
    elseif focus_switch then
        love.audio.stop()
        -- optionally, make multiple calls to love.audio.stop(source)
        -- where 'source' is a specific audio source. You can do this
        -- to only stop certain audio if you desire.
        --------------------------------------------------------------
        -- If you must, call sfx.stop("music") and other code instead
        -- for stopping all other audio effects.
        return false
    end
    return true
end

Re: Proper way to exit game

Posted: Sun Jan 10, 2016 11:16 am
by Kasperelo
GiveMeAnthony wrote:
Kasperelo wrote:
GiveMeAnthony wrote:Haven't tested stuff on mobile yet; however, I would use love.event.quit() to cause the program to abort and use the love.quit callback for cleaning up resources. Try to use love.event.quit() in the love.focus() callback and see what it does on your friend's Huawei.
That is part of my exit() function. It looked a little like this:

Code: Select all

function exit()
    sfx.stop("music")
    -- Some code for stopping all sound effects
    love.event.quit()
end
Alright, so maybe we ought to try something like this...

Code: Select all

local exiting = false -- we can set this to true from a user dialog
local focus_switch = false -- we'll set this when the app goes out of focus

function love.focus(in_focus)
    if not in_focus then
        focus_switch = true
        love.event.quit()
    end
end

function love.quit()
    if exiting then
        -- code to execute for exiting the program
        -- from a user dialog. Perhaps something to
        -- to ask if they'd really like to exit or not.
        return false
    elseif focus_switch then
        love.audio.stop()
        -- optionally, make multiple calls to love.audio.stop(source)
        -- where 'source' is a specific audio source. You can do this
        -- to only stop certain audio if you desire.
        --------------------------------------------------------------
        -- If you must, call sfx.stop("music") and other code instead
        -- for stopping all other audio effects.
        return false
    end
    return true
end
I don't really understand your example, sorry. What is the point of exiting and focus_switch exactly? On my friends Huawei, the problem seems to be that the game is still in focus after he has pressed the home button.