Don't get me wrong. I love quantumsheep probably more than I should, and I do feel a pause feature should be included. But Can I just say, this is all a big pile of missguided mucky stuff.
(sorry to those who've heard this rant)
GS will always only be half a development platform for as long as it doesn't have a proper debug environment. No professional developer would touch a platform that didn't have one, and there's a reason why. Bullying work arounds in the dark is not the way to produce quality games. A bit of a UI task to make it as transparent and friendly as the build interface, but totally completely nessasary, and achievable. 0.8.7? It's not even 0.5!
I know this won't be a popular request, people want features they can add to their games. But a proper debug environment will reduce dev times, improve quality, reduce support requests, increase creativity, and make the entire process more enjoyable. But yeah if you really think a pause feature is better....
EDIT
DEV : Okay GS i want you to collide this object with this object. GS : OK! DEV : Ah, OK. That's good but i also want you to change colour. GS : OK! DEV : Err, you're changing colour most of the time, which is good, but i need you to change colour ALL of the time. With every collision. ok? GS : OK! DEV : right, perhaps i didn't make myself clear. when an object collides, change the colour GS : OK! DEV : No, no, your still not... When object A hits object B, change the colour. GS : OK! DEV: When B hits A? GS : OK! DEV : When colour is red and object hits anything? GS : OK! DEV : Every 0.1 seconds check if object A hits Object B. and if Colour A is NOT equal to colour B then change to colour B. GS : OK! DEV: Right... Game.colourA = 0, Game.colourB = 0, Game.SomethingHit = 0. Every 0.1 secons. if Game.SomethingHit <> Game.LastSomethingHitvalue and colour... oh for gods sake why won't you work?!!!! tell me!!! GS : OK! DEV: I'm going to throw my computer in the bath, and paint my bottom green. GS: OK! would you like me to send a crash report to Gendai? They can't improve the software without proper reporting you know.
adent42Key Master, Head Chef, Executive Chef, Member, PROPosts: 3,159
Seriously, I feel your pain. We're still in the process of polishing what we already have, so I think it will take a while to get around to the proper debugging you're looking for. Just know that we've been thinking about that problem, and are itching to get around to it.
For request where people "just want pause" do you want to customize the pause? Menu screens during pause? Just a big pause button and a dimmed screen when the game is paused? Do you want to be able to pause the main action and start a mini game? That's the kind of info we're looking for. Not just "what" you want, but "how" and "why" you're going to use it.
I really like QS's suggestion. It's a really interesting solution, and combined with actor tags, could take care of a lot of cases. Good luck on the new job @quantumsheep!
i would like to be able to have a menu system. e.g. pause, then you can change weapon from a mini menu. Not really fussed about being able to play a mini game but i guess it would still be good to be able to. Thanks
I'll give my 2c on the Pause desires by answering adent42's questions directly:
"do you want to customize the pause?" -It would be nice, but it's certainly not necessary at the moment. If there was a default pause "screen" that would stop the action and was generic enough to work with most game art styles it would suffice for now. It certainly would be something we'd want in the future, but now I think anything is better than nothing for us. Though if a little customization is easy we would appreciate it for the first iteration of pause controls.
"Menu screens during pause?" -Again, would be nice but not necessary immediately. If the level progress is lost when you go to menu or Home Screen then so be it. Right now we just want the Pause menu to actually pause action, or have it pause when a phone call comes in.
"Just a big pause button and a dimmed screen when the game is paused?" -The general idea here is ok, though let's not do something tacky. Smaller and generic would be preferable if we are not able to make our own pause screen image. But the theory here is what would be appreciated right now - just a simple stop action method.
"Do you want to be able to pause the main action and start a mini game?" -Heck no. Pause should stop the action, and hold your game state while there. If it can save the entire "state" to allow you to resume exactly there later then great! But no, if you want to stop your game and play a minigame, make it a new scene for now.
My overall thoughts:
Pause is pause - yes I know that's not very definitive, but we just want to stop the action momentarily. We don't need frills beyond that yet. I say "Yet" because we would appreciate more in the future, but we just want a way to actually give the user a better experience while they are playing right now.
I think many would agree, give us the functionality at the lowest level necessary for now. Give us something we can use now while you all work on better solutions for this.
I do apologize if I spoke for all, I should reiterate that these are my feelings/thoughts not necessarily everyone's.
quantumsheep said: I'm going to resist the urge to destroy the dissenters, as I kinda like them
I'm very happy for you and Vmlweb. There are certainly instances where you can insert a simple pause system. Yay!
However, my games can get quite complex. Notice I didn't say 'Better'. Just more complex. There are enemy spawns to handle, using timers, interpolate, and stuff like that. There are timers within timers within timers. Putting in a simple 'if paused' don't move or fire rule isn't enough.
I think 'Pause' is a very subjective matter. Indeed, any feature request is. Its importance really depends on whether it affects you or not.
There are feature requests I've heard like:
'Put a grid in so we can place actors in a scene easier.' 'Make GS more stable.' 'We need pixel based collision.' 'Give us more fonts.' 'Give us arrays.' 'Make GS for android.'
You know, I've got an answer for all of those. And there are many, many others, by many other people, that to me, personally, are insignificant, or have simple solutions.
But they're important to others. And I get that.
Working through a game and inserting attributes and testing it properly would take a lot longer than 6 hours for me. It'd add a significant amount of development and testing time, for something that took five minutes and used to just work.
And let's be honest, too few GS devs spend enough time on testing...
If I want to go back in time and update an old game, it's just not feasible. It's old code, done nearly a year ago. It's hard enough going back through that, trying to work out what I did, without adding the extra burden of working out how Pause is going to work now that they've taken it out.
I know that GS is kinda listening. The recent survey asking what was important to work on (Twitter/Facebook, Pause, Online leaderboards) was a bit disingenuous though. Putting it in with the other two very highly sought after features is just setting it up to fail.
I've been banging on about this for many months now. To some people I'm sure it's a joke. 'Here comes Quantum with another rant about Pause'. Fine. Think like that if you like.
But to me, it's an obstacle that needs to be overcome. And that's simply not good enough. Arrays is an interesting one. It *can* technically be done, but it's such a hassle most people don't bother.
And if it's so easy to implement, why does Jungle Bug not include it? Surely ALL games should have pause. It's supposed to be a standard bloody feature.
The whole concept behind GS is that it removes the barriers to making games. 'Game creation for the rest of us.'
Adding a barrier to pause and thinking it's ok goes totally against that. And while I'm tired of writing out essays like these, I absolutely will not stop till it's back in.
You can all thank me later
QS
Thank You! Pause is essential and so is a Save State/Resume behavior.
Seriously, I feel your pain. We're still in the process of polishing what we already have, so I think it will take a while to get around to the proper debugging you're looking for. Just know that we've been thinking about that problem, and are itching to get around to it.
For request where people "just want pause" do you want to customize the pause? Menu screens during pause? Just a big pause button and a dimmed screen when the game is paused? Do you want to be able to pause the main action and start a mini game? That's the kind of info we're looking for. Not just "what" you want, but "how" and "why" you're going to use it.
I really like QS's suggestion. It's a really interesting solution, and combined with actor tags, could take care of a lot of cases. Good luck on the new job @quantumsheep!
Thanks for the feed back, keep it coming!
I think a good start would be a plain pause and resume function. If you can implement it like quantum said, where it is a Boolean selection on each actor, it would be great. After that, you can work on adding a more customizable version that lets us bring up a custom pause screen or launch a mini-game/scene.
adent42 said: I really like QS's suggestion. It's a really interesting solution, and combined with actor tags, could take care of a lot of cases. Good luck on the new job @quantumsheep!
Thanks!
The idea sort of came to me when I read the your post before I set out to work, and by the time I'd got there, Synthesis had pretty much written what I was thinking at the time!
If it helps, I'll try and find some time to write up a design document for you
I have only been skimming the posts, so if this has been mentioned already, sorry!
Apparently there was already at some point a simple "pause" feature and it just simply worked. When everyone here says it simply worked, I assume they mean all moving actors were stopped, timers stopped, gravity no longer in effect, ect.., so I say just make this feature available once again, the exact same way it worked before; however, add a global boolean game attribute game.paused and when everything pauses like it should, automatically change to true.
Our control actor(s) can keep track of this and with simple rules (when game.paused is true, do this) and we can now customize exactly what else the game does once paused, such as add a pause menu (or whatever tickles our fancy). Kinda the way we do it now, but implemented automatically with the pause feature that just works!
If this was the way it was before, I have wasted your time, sorry!
-Kyle
adent42Key Master, Head Chef, Executive Chef, Member, PROPosts: 3,159
@POLYGAMe Oh, I really don't think you want to see our callouses, they're quite frightening.
@iPhoneDevForMe We've never had a "pause" feature as requested here. What I think was being alluded to was the old "save state" flag (or whatever it was called), that allowed people to leave a scene and come back with it restored as when a user left. That was used by some people for pause. Unfortunately while it worked in many cases, it came to cause more problems than it solved as the system became more complex and optimized (it never really "just worked" as there were bugs even in older implementations).
@all So another consideration (which I think @qs' solution handles). Does anyone want a case where you pause, but the music keeps playing during the menu (like in a lot of side scrolling action games I used to play)?
I think generally, background music files are 30-45 second loops. I don't think it matter if the music were stopped and then resumed from its beginning. If there was a setting in the Pause game or scene settings, to assign what music track to play on resume...then you could specify it there...or just have it automatically stop the music and resume the last music played...similar to the resume music function.
I would think it should be an option to continue playing the music or stop the music on pause. If stopped...when the pause is lifted...the music loop simply restarts from the beginning. This seems like it could reuse the stop and play music code logic with the memory allowances only reserved for the music file pointer.
How you handle sound effects seems like another matter though. For example...if there was a screaming bomb drop sound FX in play that lasts 5 seconds and you pause at second 2, how do you resume that at mid sound? This seems more challenging to me...and I'm guessing to you too (Adent).
Then just implement the actor pause attribute feature next to the physics feature (default should be OFF!!!!!!!!!). Then we elect to include said actor into the pause RAM allowances. Perhaps there can be a way then to determine what actor attributes then to assign to the pause temporary memory allowances...such as velocity, position, color, etc.
@all So another consideration (which I think @qs' solution handles). Does anyone want a case where you pause, but the music keeps playing during the menu (like in a lot of side scrolling action games I used to play)?
YESSIR! But I'm happy for the music to stop too... both would be good. LOL.
Music already has good controls. You can pause and resume playback etc. You don't need to change this.
Defining what can be paused within each actor will give everyone the flexibility to keep music playing. As per my suggestion:
Say all your actors have the pause variable ticked - if you want your music to carry on playing, then make a 'music control' actor and don't check the pause variable.
If you want it to pause, then check the pause box, or put in the pause controls as they are now in relation to the music playing.
Some games may want to use music in different ways. I like the way music controls work right now.
Anyway, I'll try and write something up over the weekend - glad people are contributing to this thread in a positive way though
@QS, sounds like the way to do it for a quick fix and im glad this issue is being addressed. Now ... you're the new boy, go make the tea and get back to work
For pause, hold all objects but keep music playing.
For debug, just dump actor-rule title to txt file. Have game.debug=true so atleast we can see if rules are not being fired. Variable dump would be nice also.
synthesis said: Then just implement the actor pause attribute feature next to the physics feature (default should be OFF!!!!!!!!!). Then we elect to include said actor into the pause RAM allowances. Perhaps there can be a way then to determine what actor attributes then to assign to the pause temporary memory allowances...such as velocity, position, color, etc.
I'd argue that you need the default to be on! I guess it depends on how the function is called.
Probably the simplest way would be to have 'Pause Action' and 'Resume Action' behaviours.
You'd make a pause button and insert a rule:
>If touch is pressed >Pause Action
Pause would have to be checked as 'on' for all new actors, just like 'Moveable' is now. The reason being that if you have a behaviour called 'Pause Action' you'd expect it to work right off the bat.
Again, it'd be like having 'Moveable' checked as off by default. Putting in movement behaviours in your actors wouldn't work unless you KNEW there was a 'Moveable' box to check 'on'.
To avoid confusion, behaviours should really work with all actors by default.
So, put in a movement behaviour into and actor and it just works unless you specify that it shouldn't. Put in a pause behaviour into an actor and should just pause if that behaviour is called.
Anyway, tired and probably rambling and not making much sense...
Comments
(sorry to those who've heard this rant)
GS will always only be half a development platform for as long as it doesn't have a proper debug environment. No professional developer would touch a platform that didn't have one, and there's a reason why. Bullying work arounds in the dark is not the way to produce quality games. A bit of a UI task to make it as transparent and friendly as the build interface, but totally completely nessasary, and achievable. 0.8.7? It's not even 0.5!
I know this won't be a popular request, people want features they can add to their games. But a proper debug environment will reduce dev times, improve quality, reduce support requests, increase creativity, and make the entire process more enjoyable. But yeah if you really think a pause feature is better....
EDIT
DEV : Okay GS i want you to collide this object with this object.
GS : OK!
DEV : Ah, OK. That's good but i also want you to change colour.
GS : OK!
DEV : Err, you're changing colour most of the time, which is good, but i need you to change colour ALL of the time. With every collision. ok?
GS : OK!
DEV : right, perhaps i didn't make myself clear. when an object collides, change the colour
GS : OK!
DEV : No, no, your still not... When object A hits object B, change the colour.
GS : OK!
DEV: When B hits A?
GS : OK!
DEV : When colour is red and object hits anything?
GS : OK!
DEV : Every 0.1 seconds check if object A hits Object B. and if Colour A is NOT equal to colour B then change to colour B.
GS : OK!
DEV: Right... Game.colourA = 0, Game.colourB = 0, Game.SomethingHit = 0. Every 0.1 secons. if Game.SomethingHit <> Game.LastSomethingHitvalue and colour... oh for gods sake why won't you work?!!!! tell me!!!
GS : OK!
DEV: I'm going to throw my computer in the bath, and paint my bottom green.
GS: OK! would you like me to send a crash report to Gendai? They can't improve the software without proper reporting you know.
Seriously, I feel your pain. We're still in the process of polishing what we already have, so I think it will take a while to get around to the proper debugging you're looking for. Just know that we've been thinking about that problem, and are itching to get around to it.
For request where people "just want pause" do you want to customize the pause?
Menu screens during pause? Just a big pause button and a dimmed screen when the game is paused? Do you want to be able to pause the main action and start a mini game? That's the kind of info we're looking for. Not just "what" you want, but "how" and "why" you're going to use it.
I really like QS's suggestion. It's a really interesting solution, and combined with actor tags, could take care of a lot of cases. Good luck on the new job @quantumsheep!
Thanks for the feed back, keep it coming!
Edit: I'll be damned if I can make them pause, though
Dr. Sam Beckett never returned home...
Twitter: https://twitter.com/Quantum_Sheep
Web: https://quantumsheep.itch.io
"do you want to customize the pause?"
-It would be nice, but it's certainly not necessary at the moment. If there was a default pause "screen" that would stop the action and was generic enough to work with most game art styles it would suffice for now. It certainly would be something we'd want in the future, but now I think anything is better than nothing for us. Though if a little customization is easy we would appreciate it for the first iteration of pause controls.
"Menu screens during pause?"
-Again, would be nice but not necessary immediately. If the level progress is lost when you go to menu or Home Screen then so be it. Right now we just want the Pause menu to actually pause action, or have it pause when a phone call comes in.
"Just a big pause button and a dimmed screen when the game is paused?"
-The general idea here is ok, though let's not do something tacky. Smaller and generic would be preferable if we are not able to make our own pause screen image. But the theory here is what would be appreciated right now - just a simple stop action method.
"Do you want to be able to pause the main action and start a mini game?"
-Heck no. Pause should stop the action, and hold your game state while there. If it can save the entire "state" to allow you to resume exactly there later then great! But no, if you want to stop your game and play a minigame, make it a new scene for now.
My overall thoughts:
Pause is pause - yes I know that's not very definitive, but we just want to stop the action momentarily. We don't need frills beyond that yet. I say "Yet" because we would appreciate more in the future, but we just want a way to actually give the user a better experience while they are playing right now.
I think many would agree, give us the functionality at the lowest level necessary for now. Give us something we can use now while you all work on better solutions for this.
I do apologize if I spoke for all, I should reiterate that these are my feelings/thoughts not necessarily everyone's.
The idea sort of came to me when I read the your post before I set out to work, and by the time I'd got there, Synthesis had pretty much written what I was thinking at the time!
If it helps, I'll try and find some time to write up a design document for you
QS
Dr. Sam Beckett never returned home...
Twitter: https://twitter.com/Quantum_Sheep
Web: https://quantumsheep.itch.io
GET SOME CALLOUSES ON THEM CODING DIGITS!
Apparently there was already at some point a simple "pause" feature and it just simply worked. When everyone here says it simply worked, I assume they mean all moving actors were stopped, timers stopped, gravity no longer in effect, ect.., so I say just make this feature available once again, the exact same way it worked before; however, add a global boolean game attribute game.paused and when everything pauses like it should, automatically change to true.
Our control actor(s) can keep track of this and with simple rules (when game.paused is true, do this) and we can now customize exactly what else the game does once paused, such as add a pause menu (or whatever tickles our fancy). Kinda the way we do it now, but implemented automatically with the pause feature that just works!
If this was the way it was before, I have wasted your time, sorry!
-Kyle
@iPhoneDevForMe We've never had a "pause" feature as requested here. What I think was being alluded to was the old "save state" flag (or whatever it was called), that allowed people to leave a scene and come back with it restored as when a user left. That was used by some people for pause. Unfortunately while it worked in many cases, it came to cause more problems than it solved as the system became more complex and optimized (it never really "just worked" as there were bugs even in older implementations).
@all So another consideration (which I think @qs' solution handles). Does anyone want a case where you pause, but the music keeps playing during the menu (like in a lot of side scrolling action games I used to play)?
I would think it should be an option to continue playing the music or stop the music on pause. If stopped...when the pause is lifted...the music loop simply restarts from the beginning. This seems like it could reuse the stop and play music code logic with the memory allowances only reserved for the music file pointer.
How you handle sound effects seems like another matter though. For example...if there was a screaming bomb drop sound FX in play that lasts 5 seconds and you pause at second 2, how do you resume that at mid sound? This seems more challenging to me...and I'm guessing to you too (Adent).
Then just implement the actor pause attribute feature next to the physics feature (default should be OFF!!!!!!!!!). Then we elect to include said actor into the pause RAM allowances. Perhaps there can be a way then to determine what actor attributes then to assign to the pause temporary memory allowances...such as velocity, position, color, etc.
Music already has good controls. You can pause and resume playback etc. You don't need to change this.
Defining what can be paused within each actor will give everyone the flexibility to keep music playing.
As per my suggestion:
Say all your actors have the pause variable ticked - if you want your music to carry on playing, then make a 'music control' actor and don't check the pause variable.
If you want it to pause, then check the pause box, or put in the pause controls as they are now in relation to the music playing.
Some games may want to use music in different ways. I like the way music controls work right now.
Anyway, I'll try and write something up over the weekend - glad people are contributing to this thread in a positive way though
Dr. Sam Beckett never returned home...
Twitter: https://twitter.com/Quantum_Sheep
Web: https://quantumsheep.itch.io
Dr. Sam Beckett never returned home...
Twitter: https://twitter.com/Quantum_Sheep
Web: https://quantumsheep.itch.io
For pause, hold all objects but keep music playing.
For debug, just dump actor-rule title to txt file. Have game.debug=true so atleast we can see if rules are not being fired. Variable dump would be nice also.
QS
Dr. Sam Beckett never returned home...
Twitter: https://twitter.com/Quantum_Sheep
Web: https://quantumsheep.itch.io
Probably the simplest way would be to have 'Pause Action' and 'Resume Action' behaviours.
You'd make a pause button and insert a rule:
>If touch is pressed
>Pause Action
Pause would have to be checked as 'on' for all new actors, just like 'Moveable' is now. The reason being that if you have a behaviour called 'Pause Action' you'd expect it to work right off the bat.
Again, it'd be like having 'Moveable' checked as off by default. Putting in movement behaviours in your actors wouldn't work unless you KNEW there was a 'Moveable' box to check 'on'.
To avoid confusion, behaviours should really work with all actors by default.
So, put in a movement behaviour into and actor and it just works unless you specify that it shouldn't. Put in a pause behaviour into an actor and should just pause if that behaviour is called.
Anyway, tired and probably rambling and not making much sense...
QS
Dr. Sam Beckett never returned home...
Twitter: https://twitter.com/Quantum_Sheep
Web: https://quantumsheep.itch.io