I have fond memories of playing these kinds of extremely difficult but satisfying games in my distant youth, but now I'm looking at making one I'm wondering if there are any particular design tips worth bearing in mind...?

For example, going back to these games now, it looks like they have normal levels like in a typical top-down 2D game, with the only difference being that they scroll vertically and have limited movement space. Was this actually how they were made, or would there have been/is there a more efficient way of handling this?

eg. parts of a level are only generated when a player reaches that point, rather than loading a massive map and having the player traverse it.

This all seems pretty straightforward, but I was wondering if anyone had any particular insight or ideas related to this type of game. eg. what modern conventions (like checkpoints) would be worth using?

  • xyz replied to this.

    atomic_toilet Levels in games like Commando are actually quite small. Their sheer difficulty makes them feel much longer. With today's hardware I think you can simply brute force the whole map, putting it all into one scene and just scroll over without any spatial partitioning. But, of course, it depends how much and what type of graphics you cram into it. If it's just sprites, you can have a lot of them without any problems. If this starts to cause bottlenecks, just split it into several scenes and instantiate sequentially as the player advances forward.

      xyz Right, I'd just start with the simplest approach and just load the whole level. Then add a VisibleOnScreenNotifier2D or VisibleOnScreenEnabler2D to either disable nodes outside of the screen or just delete them once they have fallen off-screen behind the player. Or just use a general Area2D and hide everything that isn't near the player. Something like that and things should run fine if it's only 2D.

      Alright so here's a query:

      How can I lock the player to the screen space, as is the case for typical vertical shooters...but in 3D and only along the z axis (since the player is on the ground all the time)...?

      I've seen quite a few tutorials related to this for 2D but can't seem to find anything for it in 3D, or that I can figure out how to tweak to 3D. eg. THIS and THIS

      At the moment I'm using invisible collision boxes but this is frankly awful as the camera follows the player, so when they move towards these invisible walls you can see that there's nothing else in the level - I know I could add set dressing but then the player's going to realise there are invisible walls (ie. "Why can't I access that area just there?").

      • xyz replied to this.

        atomic_toilet Project player's 3D position to 2D screen position and constrain it in 2D. Or project 2D screen edges onto ground and contrain in ground plane.