Jewel Defender - Need performance testing on physical device

I am working on a game, and before I get too far, I wanted to see how well it performs on a physical device, and importantly, how many enemies it can handle before the framerate takes a serious hit.

Here is a video I made showing how the game currently works in the simulator:

and here is a dropbox link to download the actual game:

The d-pad controls the tank, A button shoots, and B spawns another enemy (obviously not what it would do in the final game). You can also use the crank to quickly turn the tank.

Bottom left shows the enemy count, and bottom right shows the frame rate.

I would like to know

  • Driving around the tank with the d-pad, and no enemies, does it control well and maintain 30fps
  • Using the crank to steer and up to accelerate, how well does that work?
  • Add on some shooting as well, does everything work well
  • Now, pressing B, can you add some enemies and does the game still control well for the previous 3 points? At what point does the frame rate drop down to level where the game really doesn't work out well.

Note: the game is really only half done, and things like z index issues and collisions aren't implemented yet. This is really more about how well the tank controls as additional sprites are moving around.

Thank you for testing this out! :smile:

  1. Yes, the d-pad controls work well. At least on my Playdate there isn’t much tactile feedback from L or R while I’m already holding Up or Down. It’s perfectly playable, but maybe something to keep in mind. Constant 30fps, CPU usage around 10% when idle and 15% while moving (with no enemies).
  2. Works fine but I kind of prefer the dpad for controlling a tank, although the crank allows much tighter/faster turns limited only by physical cranking speed. You might want to try adding “absolute” crank control, i.e. the tank always turns to face the same angle as the crank, but only at the intended turn rate.
  3. Yes, recoil feels a little too strong compared to the tank’s engine maybe. Still 30fps, CPU around 25% when moving, turning, and mashing A at the same time. I can only fire while moving if I’m using the dpad to steer, not the crank.
  4. Yes, FPS starts to drop (only barely) at around 25 enemies when I’m moving/shooting or 30 enemies when I’m stationary. This is also when CPU usage reaches 100%.
    • 45 enemies: 25fps. Still “playable” but this is where the drop starts to become noticeable.
    • 60 enemies: ~20fps. Driving starts to feel a little janky. Occasional stuttering.
    • 80 enemies: ~15fps, frequent stutters.
    • 100 enemies: ~13fps, but looks worse than that, I think the frame timing is no longer consistent.

Just for grins I kept mashing B and got up to 400 enemies, 4fps. With this many enemies onscreen, I noticed that the garbage collector can’t keep up, so memory usage gradually increases to around 13mb, then it freezes (for ~1s) to collect garbage, then memory usage drops back to ~1mb. I don’t think this was an issue at all with <60 enemies.

1 Like

Thank you for the great testing and feedback. That makes me more confident not to spin my wheels on unneeded optimization and not need to hold back at throwing enemies at the player.

I'm thinking of using tilt controls for the turret (and leveling the device aims forward) and keeping with dpad for control. B will switch weapons and a to keep shooting. I will likely leave the crank out of it as I can't see operating it with the other buttons... but maybe for something cool like a gatling gun.

I still find all the games that use absolute crank position to control a bit odd, like I rotate a bit too quick and get lost feeling.. I haven't messed with this yet but I kind of assume setting a steering angle and then moving the crank to a neutral position to drive straight might be a good way to go about things.

where the crank :playdate_happy: in this position would be 0 degrees and then pulling it towards you would turn left and pushing away would turn right.

as long as you never make people pull or push too far it is pretty easy to nudge it to neutral and jump between buttons and the crank. especially on something that is suppose to be a bit clunky like a tank it could be cool and it could turn in place.

I can only really repeat what has been said above as far as my test went. I might add though putting in music at an early testing phase might be wise as that also can drop out and not start again if the machine is getting pushed too hard.

1 Like