Kieron Woodhouse

Ludum Dare 48

My first jam!

This was my first ever game jam. I entered the Compo and had a lot of fun. The game I made is Canyoneer - PLAY+RATE here!

This tutorial video I put together should give you a rough idea of what I got done in the time.

https://youtu.be/Nwg7aT8RQ9Y

I've really enjoyed reading all of your blog posts, so I thought I'd just share a bit about how my jam went too! I'd love to hear any advice you have and maybe you even have knowledge about some of the problems I faced along the way!

How it went

First, my idea: I thought about using a physics-based rope to negotiate a rocky environment where falls kill you easily.

I started with a simple ground sprite, slapped on a 2D physics collider and started playing around with a few movement mechanics: jumping, walking, and eventually using a rope to descend and swing.

Screenshot 2021-04-25 at 19.15.31.png

Once I had some satisfying movement mechanics and rope physics down, I looked into terrain generation (more on that below). I also really wanted to try out an idea I had for an ever-shifting, programatically-generated background. It might not have been the best use of my time, but I like the effect!

Screenshot 2021-04-25 at 19.17.12.png

Next, a bit of code to place ledges randomly down the canyon on each playthrough. With the core gameplay mostly sorted (but a bit buggy), I tried to pretty it up a bit, and cracked on with putting together some simple UI. I finished day 1 with this:

Screenshot 2021-04-25 at 19.24.47.png

Day 2 flew by, with time spent making sound effects (SFXR to the rescue), music (with Beepbox), a title menu, and the tutorial/intro scene. I also spent a lot of time playtesting and fixing bugs. The physics were particularly glitchy, so I had to do a lot of tweaking to mass, forces and find just the right position and rotation to instantiate each segment of the rope.

I also added a little bonus music and visuals for anyone who makes it to the bottom of the canyon! I've only managed it once, it's hard! Most of the time, I end up like this poor guy...

Screenshot 2021-04-25 at 22.08.10.png

All in all, I'm pretty happy with how it turned out in the time!

So, the specific problems?

Rope physics

The rope is simulated using Unity's 2D physics simulation. It works well most of the time, but occasionally behaves really weirdly. I think it happens when it can't meet the constraints on the joints between each rope segment. This sometimes causes the rope to violently shake, usually killing the player if they try to dismount.

I think the fix is to reimplement the rope physics another way. I tried implementing it with Verlet integration. It actually worked fairly well, but I had trouble getting it to interact nicely with Unity's 2D physics engine. I think I'd need to do quite a lot to get this to work. I'd love to hear from you if you've tried to make something similar!

Terrain generation

This is the first time I've tried procedurally generating any kind of terrain. My approach was to generate a height map from a 1D Perlin noise for each wall of the canyon. That gives a fairly nice shape to the canyon wall, but there's not much there for the player to actually stand on.

I'd love to have come up with an algorithm for placing features like caves, ledges and forks. In the interest of time, I settled for just placing ledge prefabs randomly in the canyon, aiming for a distribution that is usually somewhat playable. You still sometimes end up with gaps you can't actually negotiate without dying, which is really frustrating to play. I know I barely scratched the surface of terrain generation, so this is definitely a topic to revisit and experiment with some more. If you've got any ideas for how I might improve it, let me know in a comment!

Finally, if you made it this far, thanks for reading! Don't forget to play+rate Canoyneer, and I've been loving playing everyone's games, so drop me a comment and I'll check out yours.