Finally the GUI looks decent 😀
We spent the past few days working mostly on the score screen and overall UI. We added the colored towers, made them animate nicely and placed everything where it should be.
It went from prototype to rough in-game implementation to polished in-game screen.
Another little thing we added (that we forgot to add until now) was the life bar expressions following the appropriate Joe. So regardless of where you are in the level, your life bar will basically stare directly at you.
Jumping in and out of the game
Almost any local multiplayer game that is meant to be played on the same screen that I can think of, asks you how many players will there be in the game before you press “start”. You have to input that number of players and press start, that’s what we were doing so far with party mode and that’s what we just got rid of. For a game that is meant to be fast paced and fun that is a very inconvenient thing to worry about, what if a friend comes over and wants to join the game? You’d all have to stop the game, go back to the menu, plug another controller, increase the number of players by 1, lose all the progress in the process and start all over again. Nobody wants to do that, it takes time, it ruins the experience and it restarts everything.
So we’re making a system where you can simply jump in the game by picking a controller up, and the game automatically kicks out players that are inactive, that way people can dynamically jump in an out of the game without interrupting anybody.
How do you know when a player picks up the controller, that’s simple, just check for controller inputs, and if a button has been pressed or a joystick has been moved, spawn a player for that controller.
The problem is: How do you know when a player has stopped playing? This is the tricky part.
Initially we used a timer, we coded it in such a way so, knowing that a player’s life bar drains in exactly 6 seconds, if there is no input for 6 seconds, that means the player is inactive, therefore it should be kicked out. The flaw with this method was, humans make errors, so if any player simply forgets to move because he/she is paying attention to anything else… that Joe will die and the game will kick the player out even though he didn’t meant to be inactive.
Back to the drawing board.
What if check for input while the player is alive, so if the player doesn’t press any button while Joe is alive, we can assume the player is inactive. This works better than the method above however it still has a flaw, if the player isn’t paying attention in the first few seconds of the game and gets killed before he gets to move, the game will assume the player isn’t there anymore, therefore kicking him even though he is still holding the controller and willing to play.
Back to the drawing board.
What if we check for input during the whole mini game, so if the player doesn’t press any button during an entire mini game, we can assume the player is inactive. This works and this is good. It does it’s job of kicking out any inactive player without taking too much time and it also keeps the player in-game while he’s still holding the controller with only one requirement, that the player presses any button during the mini game so the game detects the input and confirms that the player is still there.
Based on the type of the controller used we can go even further. This is only an idea, however we plan on using the Play Station controller’s gyroscope to detect the presence of a player. So if the controller is perfectly still for X amount of time, we can assume it’s on the table and nobody is using it, however as soon as we detect movement/rotation in the controller, we know somebody picked it up (and we can further confirm that with the first button pressed) so that way your Joe will spawn literally as soon as you pick up the controller, which we think is extremely cool and we’re really excited to do this because we haven’t seen any other game do it. 😀
Next thing on the list: Mini game Title Screen , winning screen and actual mini games.