Hope Descending


About the Game Play

Hope Descending is an infinite platformer largely based on Probability 0: the player descends through an endless map of platforms looking for paths within safe fall distance and avoiding monsters.  Taking damage is more punishing from the loss of control than the loss of health.

The major difference is Hope Descending is much more stingy on attack ammunition but experience is provided through collectables rather than fighting the monsters so ammunition can be reserved for when its needed.  Extending the game play is the second ascent mode with a second character that handles very differently.

And it has edge grabs (Commander Keen and Blackthorne managed to implement them in the 1990's--what's our excuse for leaving them out?).

About the Implementation

I'm generally satisfied with how this works under the hood.  All of my normal nitpicks with platformers are handled (though it can be somewhat simpler to do so with the strict grid layout of the map and no moving platforms): edge grabs are implemented, collision is never handled by letting the player clip into a wall and kicking them out, and jumps follow nice parabolic arcs.  The trick in this case is only letting anything move one pixel at a time--the game's logic runs at about twice the rate of the rendering on screen to support this.  The player's motion is handled by a state machine which keeps the logic of what the player can do in certain states and what sprite should be displayed clear.

Originally the graphics were implemented using a similar method to HoloYacht, where the WASM module built a bitmap in memory to be displayed on the canvas.  However, unlike HoloYacht where much of the screen can be rendered once and memcopy'd each frame, Hope Descending has a lot of the screen the redraw.  This might have been solved with a ring buffer of rendered map rows and more efficient WASM blitting, or maybe not, as Hope Descending can have a lot more sprites on screen and makes use of transparency.  However since everything on screen is simply sprites, doubling the source images and letting HTML Canvas handle the actual drawing is working out fine.

Next Steps

I have a few thoughts on where to take the skill system. As it stands the list gets clogged up with skills you decided not to take and you need a very long session to hit the higher-tiers ones like IRyS's goomba-stomp-enemies or Bae's banked-dash-charges. I'd also rather have some sense of tradeoff--where you can't skip over a skill and come back to it when you want it later.

Sound effects could be better; the current ones are just random blips from sfxr.  But that's leading into a whole nother rabbit hole of scriptable audio toolchains.

And a few other minor things that may get addressed in the future; Bae has two skills fewer than IRyS (though ascend mode is significantly harder so I'm not sure anyone will notice).  I have a few appropriate song lyrics and possible upgrades, but nothing I really feel is worth putting in.  There should be more to be done with the fixed-design rooms; but implementing something like a boss fight is complicated that they player could have no ammo (IRyS) or no attack (Bae).

Files

HopeDescending_20231002.zip Play in browser
Oct 03, 2023

Leave a comment

Log in with itch.io to leave a comment.