Why Pause is Crucial!
AfterBurnett
Member Posts: 3,474
Okay, I'm an out of work actor who is working in a call-centre part time to pay the bills. This is a mind-numbing, creativity-draining job and all I have to look forward to is playing games on my iPod during the downtime (I work late night weekends). So, after almost an hour of no calls, I was just about to better my top score in Jungle Bug Rock'n Roll and a call came in. And guess what? YOU CAN'T BLOODY PAUSE!!!!! Suffice to say, my bug was squished and I didn't make the score.
Please, Gendai, add pause back in...
Please, Gendai, add pause back in...
Comments
And +1 on the pause.
:-)
""You are in a maze of twisty passages, all alike." - Zork temp domain http://spidergriffin.wix.com/alphaghostapps
I have a descent pause in my game that allows you to save your game and go to the main menu or switch some options like change from joystick or touch to move.
I added towards the end and it didnt take that long.
Maybe an extra 5 or 6 hours or so to add the change attributes int he various actors.
In my case i just have the pause button destroy the actors and then a spawner brings up the puase menus and puts the actors back where they were when you unpause. works great.
When GameStatus is waiting nothing interacts
Player touches screen GameStatus=Playing
Objects Interact
Player Ends level GameStatus=End
Nothing interacts
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
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
Seriously, I was able to pause games back on my trusty Commodore 64... granted, you generally had to spend five minutes searching for the correct key... but it was still in there! LOL.
But my English is okay because I am a New Zealander (Aussies are very hard to understand and all seem to speak in "txt spk" or some other ape-like gibberish).
Note that i did say i 100% agree that we need a pause at the beginning of my post.
I was merely pointing out some workarounds
This meant that everything on the current scene 'froze' - and you could go to another scene (which many people used as their pause screen).
It literally took five minutes. You made a pause scene. You put in a button that returned you to the scene last left.
In your main scene, you put a pause button. On this there'd be a rule that said *go to pause scene - preserve current scene*.
Then there was the update that essentially gave everyone a speed increase in their games! GREAT!!!
Except that it hadn't been tested properly, and it broke the 'preserve current scene' behaviour.
So, instead of fixing the issue, they deprecated it.
Now, I'm not blind. I can see there are work-arounds for this (and James, I really wasn't having a go at you! Honest!).
But some work-arounds require overly complex rules to make pause work. Especially with timers involved. You can find an example on my profile, which was the solution Code Monkey very kindly came up with for me.
It does work. Kinda. But I really don't understand it. And it's a shedload of extra work, effort and testing.
It also adds more rules to your actors, which in theory could slow things down. Logically this would be a side effect.
Yes, I could sit down and try and work it all out. But honestly, who wants to do that when there was a perfectly good system before?
It's like the dev team saying 'We're not going to bother putting arrays in. You can make your own arrays with variables.'
Yes, yes you could. But wouldn't putting in arrays just be easier and simpler for the user?
Personally, I don't want to be making my head hurt every time I make an actor, wondering how to Pause it. I want to make an actor do cool things, without worrying about how to pause the damn thing.
So it's a choice. I choose not to accept the solutions offered. Because they're not as simple or efficient as a system we used to have!
So, you can scoff at my laziness and/or lack of understanding, or you can 'like' my initial comment here: http://gamesalad.com/forums/topic.php?id=5875
Either way, I'll continue to campaign for this. It kills me that on top of no online support (leaderboards/twitter/facebook) my games' feature list is stymied by a lack of something as basic as 'pause'.
It's a large part of why I haven't released anything for months now. Which may, or may not, be a bad thing, depending on your good taste
I'm hoping that with Apple showing off 'Pausing' as one of the key new features of OS4 within a multi-tasking environment that Gendai starts to take the issue a little more seriously.
Phew, another rant done!
QS
Dr. Sam Beckett never returned home...
Twitter: https://twitter.com/Quantum_Sheep
Web: https://quantumsheep.itch.io
So right now, they are trying to fix bugs and improve performance etc. I think they will eventually put "preserve scene" back in but as it is still in Beta and we are all voluntary guinea pigs we kinda are stuck with it until they decide to get around to fixing that bug.
If I recall correctly, the preserve scene functionality was taken out because it was causing problems with the collision detection stuff.
1. We're paying guinea pigs
2. You might be right about the collision detection stuff. Though I remember the main issue I had after the horrid update was that if you paused, it didn't preserve the scene correctly. So when I returned to the scene, enemies had stopped spawning. They were on a timer, so I think the issue was to do with time.
3. On a purely selfish note, I'd rather they get pause in sooner rather than later. I didn't mind the performance. Sure it would slow things down, but that made me save often!
Cheers,
QS
Dr. Sam Beckett never returned home...
Twitter: https://twitter.com/Quantum_Sheep
Web: https://quantumsheep.itch.io
QS
Dr. Sam Beckett never returned home...
Twitter: https://twitter.com/Quantum_Sheep
Web: https://quantumsheep.itch.io
Pause is tricky. The behavior engine is effectively (if not actually) running as a single thread. So if we put in a "pause" behavior... the whole engine stops running... then what? How do you evaluate an "unpause" since all rule evaluation has stopped because of the pause?
Second and somewhat related, why did we remove "preserve scene"?
The iPhone is a memory constrained system and saving and restoring state is quite a hard problem in that environment. Between memory leaks and problems with collision and sound playback, we decided it was better to deprecate the behavior.
It's a problem we wrestle with often: How to create the best solution that benefits the greatest number of users and use cases. What want to do now gather information to make sure we come up with the best solution possible.
So to make this more productive, I'd like to hijack this thread and put these question to the community:
1) Describe how you want to use a "pause" behavior in your game.
2) Describe how you think a pause behavior / attribute should work?
1. I want to pause my game(s) so nothing happens until I "un-pause" them. Make all the thingies stop wherever they are, whatever they were doing, and don't forget the soundtrack. When I "un-pause" make them wake up and start moving or spinning or morphing or tweetling...
2. Why not change the state of the active thread to stopped, with a NEP launched whose entire raison d'etre was to start said thread again? Stop the game clock from ticking, until you start it again and you've done a good pause.
another way would be to temporarily give the active thread a 0 priority...
If a pause feature were integrated...then it seems the game engine should "reserve" enough memory slots for anything that has the pause boolean set to true.
Then if pause is activated...anything that has a pause boolean assigned...then the time, velocity and acceleration properties are frozen into temporary memory slots. Then when the game is resumed...those properties are reactivated and the game engine resumes processing.
I know this is overly simplified and may not fit with the logic in the game engine exactly...but it seems that if velocity (and/or X,Y position), acceleration and time values are the key parameters to preserve and allowing us to control whether to integrate the pause via an actor attribute setting is even better...so that we can reduce the RAM overhead required to pause. This way if we have a "heavy" game...we can elect to not incorporate pause and dedicate the RAM needed for a pause support back to the game engine.
Thx for addressing this. Its posts like this of yours Adent is what I was really calling for months ago. Good to see you guys getting more "open" and "approachable" these days. Keep it up!
Maybe in the future...a "call for opinions" thread once a week constructed similar to your post above that addresses a "common issue" would be a great way to allow the community and the Gendai team to communicate better. Just a thought.
I guess the problem with that, is some people like to pause the game but can still access menu's and stuff, not sure how you would work around that but would be good to see.
Add drinks to the mix this evening, and I won't be able to actually be pro-active on this issue! HA!
BUT - I think Sythesis is bang on the money with his idea. I imagine a pause attribute with a tickbox, underneath 'movement' in an actor's sidebar. It's ticked 'on' as default.
Then have a behaviour called 'Pause' - you can make an actor and have the rule 'When touch is pressed' Then put in the pause behaviour.
In this way all actors with a 'tick' in the pause box will stop what they're doing. EVERYTHING. Including timers, position etc - just like it does if you pause an online version of a GS game.
You can define actors you *don't* want to be paused (such as background/hud stuff that doesn't move) as non-pausable if you like.
This way will ensure there's a balance - you only pause certain actors that you want to pause. And if you *don't* want or need pause, it's a simple click on an actor to turn it off and save some memory.
That's just off the top of my head though, so there's bound to be lots of holes in it.
The thing is, it *used* to work, so I think it *is* possible.
But sincerely, thanks for actually acknowledging the issue and being constructive about it. It feels like I've been yelling into the wind for so long...
Right, I'd better actually get back to work - first impressions an' all that!
Thanks,
QS
Dr. Sam Beckett never returned home...
Twitter: https://twitter.com/Quantum_Sheep
Web: https://quantumsheep.itch.io
Sheep, good luck with the new job fella, give it a week and you can be on here 9-5 again
QS
Dr. Sam Beckett never returned home...
Twitter: https://twitter.com/Quantum_Sheep
Web: https://quantumsheep.itch.io
Still, 45 minutes to pub time!
Pause, eh?
QS
Dr. Sam Beckett never returned home...
Twitter: https://twitter.com/Quantum_Sheep
Web: https://quantumsheep.itch.io