Right now, I’m facing a few issues. One of them is the collision handling: some objects can’t pass through others, some can pass through them but not through the solid level blocks, others only ever need to react to a collision with a specific other object… It’ll take some thinking to get that all straight.
Right now, I’m looking towards a system that assigns a type value to every collision object, so when movement is being checked, only the types that the moved block should not be able to pass are taken into account. For example, a block of type ‘character’ doesn’t pass through ‘solid’, but it shouldn’t be hindered by ‘item’ objects.
I’m also going to add a collision check, without movement information attached, which sends every entity that collides with the given object a message. I assume that’s going to be a lot of messages, so adding a ‘listen to messages’ property to collision objects sounds like a good idea.
The second test level. Using some old Half-Life textures I once made to test some visual styles. This is probably not what I’m going for.
Besides collision handling, I’ve been working on the design document. Writing the design down helps ordering my thoughts on it, and I’ve been able to flesh out a few aspects. For example, each level will have multiple exits, and each of these exits unlocks the route to a next level. The player selects which level to play next on a map, that shows how these routes and levels are connected, and which ones are unlocked and played already.
I’ve also thought about the story and the visual style of Tar!. I’ve played Metal Slug recently and it’s visuals have really impressed me. There’s a very free feeling to it, unlike grid-based games. It’s like comparing Tomb Raider to Half-Life, for example. Of course, such a visual style means a heavy payload for artists, so I’ll stick to a tile-based engine, but I am thinking about supporting additional sprites in the file format directly, instead of through an entity, to make inserting additional sprites easier. It’s a sort of trade-off between a total free-form and a grid-based approach, I think. Let’s see how well it works. :)