It's been a while since my last update here, but I'm super excited to share the stuff I've been working on. If you want to skip the stuff and just watch the trailer, you can scroll to the bottom of the post.
I'll start with the canyon stuff. I wanted to add new content to the game as I was feeling an itch to program some game entities and design some levels. I drew a concept art of a train scene that ended up being the final boss level of the new canyon area. That gave me the inspiration to make a canyon-themed area.
I also had this idea of implementing more realistic liquid simulation, instead of the old animated tile approach that I used in the jungle and desert areas for water and lava respectively. My plan for the canyon area story was for it to be an area where the bad guys have been dumping toxic waste. So there are toxic waste pools and that toxic waste has spawned various slime-like creatures to the area.
The liquid simulation isn't anything new, it's simply a ton of springs placed next to each other, with forces being applied to random ones periodically to produce the waviness. Then the displacement of the spring is distributed along it's neighbours. The end result is pretty cool I feel! I use SDL2 for rendering which doesn't support rendering triangles for an example, so the liquid is rendered simply as rectangles from bottom to top. It's not perfect as you can see some jaggedness somewhere in there, but it's the best I can do without butchering the performance totally by rendering simply lines.
I also wanted to implement conveyor belts to the area as I felt like that was an obvious platformer mechanic I hadn't used yet. To go with the conveyor belts, I added swinging axes. The game has had swinging stuff before, but those objects have spun around constantly, while the axes move back and forth. The conveyor belts proved to be really nice and challenging, and I made a lot of cool and difficult levels with them.
Here's some mario-inspired slime blobs spinning:
There are also some slime drops serve as obstacles on the conveyor belts, but you'll need to experience those yourself by playing the game!
Here's a screenshot of the mentioned train boss-fight.
Then onto the even cooler stuff: Workshop Integration! I had always planned to eventually release the game's level editor. It needed a lot of polish and a few additional features, but at the end of the day it wasn't a massive task to get it into a displayable state. What took most of the workshop integration time was designing and implementing an in-game level browser. It's difficult to make flexible and good looking interfaces when they need to work with mouse, keyboard and controllers. Here's what I ended up with: I'm really proud of it!
It was also very interesting to work with multithreaded sutff again. Workshop item downloading etc. happens obviously on another thread, so as the base game is built basically 99% on a single thread, it was an interesting challenge to design systems that work nicely with asynchronous operations.
Anyways, here's the trailer. Happy shooting!