I have been working on this game somewhat sparsely for the past three years or so. However, it is still in a very early stage, and there is a lot of work to do.
One of my friends encouraged me to post about it here, since he felt people might find interesting how I don’t use any libraries for it.
The game can be played on a browser by virtue of WebAssembly. There are native ports using either MiniFB or SDL2, but you have to build those yourself.
I decided to write the game in C because I feel like it is a simple language that a lot of people can understand well enough, and I didn’t think I needed anything more involved or complicated.
Over time, the game’s code became complicated, and I decided to use advanced features such as coroutines and higher order procedures, besides general overly engineered abstractions.
But then, over time I grew to feel like a lot of those abstractions didn’t really add anything to it, and just made it more complicated (and oftentimes more buggy) than it really needed to be, so a few weeks ago, I made a significant refactoring to it to remove all of those abstractions without removing almost any features from the game.
Milestones are released effectively whenever I get the game’s code to a decently presentable state. Sometimes, this means there are a lot of changes and big refactorings, but sometimes it means there are only a few small changes.
The game uses a simple 2D model system to generate images for the character’s animations dynamically during initialisation. (The source code can be browsed using a web browser on its page.)
The character can be controlled using the arrow keys or “WASD” (“A” and “D”) (double-tap a direction to jump).
* If you look at jump king, getting over it, games like that that pull it off really well, something you'll notice is that the aesthetic is very different than other games in their respective genre. The player sprite in jump king for example is a lot more squished than you would find in a usual platformer. This is actually very important, the graphics do a lot to inform the player on what they should expect; if they see a generic looking platformer, they will expect generic platformer controls, even if told otherwise.
* Similarly, animation is a good way to give feedback to the player. Currently the only way I know I can jump is to try to jump. Again, looking at jump king, the player knows they can jump when the sprite is crouched down.
* I'd either add a slight delay after the first keytap before moving, or try to get the controls to be more "sticky". Currently a lot of the time when you try to jump you just end up running off the platforms. A lot of platformers actually have a small amount of extra collision off of the platform, so players can run slightly off it and still be on it, that would probably go a long way to helping. You obviously don't want it to be easy, but currently it feels less frustrating (which I imagine is what your going for, like those other games) and more confusing.
Other than that, solid work!