I had an idea for a cute little game. Race around a shop eating candy, while avoiding the shop keeper. Pretty simple stuff, but with some nice added twists (sugar rush and sugar crashes screwing with your ability to see/control yourself). It had the potential to be actually quite a lot of fun.
I found & tidied up some cute characters. Got a base environment sorted. Draw a maze.
Here’s where it all fell apart. Collisions. Specifically, the player character getting stuck on walls.
I spent, literally, hours, trying to get this to NOT suck. I don’t think I quite succeeded.
- Despite square collision shapes, I would often get collisions on both the side AND top of a tile (at the same time) that was part of a long flat wall
- There’s no way to tell if there’s a tile in a specific location.
- Even with rounded (or softened cornered) collision shapes on the actor AND on the wall, they would “get stuck” on the edges
#1 just makes it unnecessarily harder to tell HOW we’re colliding with a wall. Also, how is it possible to hit the top of a tile in a vertical wall (ie, collide with the -inside- of the wall)
#2 is a problem because if we walk into a long wall, we can’t tell if we’re trying to walk around an edge, or walking perpendicular in to a long wall. The former we should edge around, the latter we should just stand next to/collide with).
#3 is just frickin’ tedious
So really, despite spending the whole day writing code, I couldn’t work my way around this sucking. Simply trying to control your guy moving around the maze feels ugly, difficult, painful. NOT FUN. It’s subtle, and I’m sure to some people it’d be fine, but to me? It sucks. And I can’t fix it. Frustrating.
If I can’t move a guy around a 2d space without these kinds of horrible things making the whole control system ugly, it pretty much screws any kind of 2d top down game. And we’ve already discovered that platformers are horrible.
I feel like the design environment is pushing me into building a very specific set of games. Also not fun.
Oh, it also meant (because I couldn’t get the core loop de-uglified) I didn’t get to building any of the actual real game play. I shouldn’t be wasting so much time battling these super fundamental aspects of game building.
So. An interesting epilogue. I went back the next day (today) and had another look at things. a) I discovered that I can tell if tiles exist (VERY helpful), but b) I tried ripping all my code out, and using a diamond shaped collision zone (among ten or so other things). Turns out, that actually worked pretty well. It’s not super great – you can still get your head stuck on walls etc (which is tedious) but it’s “good enough”. So, while the game itself isn’t really there, at least that’s core progress.