Apparently I’ve had a draft post saved here since July 6th, which thinking back sounds about right as the last time I would have been able to even think of anything to talk about. With work getting close to finished now, I finally had a weekend to spend at home and work on my own stuff a bit. I actually deleted the original post since it’s a bit outdated now, but some of what I was excited to talk about back then is still relevant now. Basically I feel like someone hit pause on the rest of my life outside of work and finally a few months later decided to hit play again…
My goal right now is to make a very small, fully playable platformer requiring a minimal amount of asset production and focused primarily on gameplay and atmosphere. The first and probably the most crucial step is to nail down the level creation pipeline, starting with the level editor. In the past, I’ve put together a few tile based level editors for platformers, but I always felt like I spent more time working on the editor rather than on the levels themselves. So this time around I came up with a brilliant solution: Photoshop. Being able to physically draw out my levels in a tool I’m already comfortable with allows me to rapidly iterate through the design process. Plus, the added benefit of not having to worry about proprietary file formats for level data saves me a ton of time early on. Using simple color coding and a bit of logic, I’m able to come up with this:

The system I’ve created is room based, building levels in realtime from a 26×26 map. The size is arbitrary, I can conceivably build any size room I want, using any base tile size I need. I still have a few special case layouts I need to account for but right now all the contours are working properly.

The second and possibly more interesting part goes back to my goal for minimal asset production. Again, in terms of speed it makes no sense for me to spend a ton of time right now trying to make good looking, flexible art assets when there’s still so many other fronts that need to be addressed. So obviously the quickest solution would be to just make everything cubes and call it a day. Unfortunately, doing this would cause me a bunch of other problems down the road so (and this goes back to my original July post) I decided I had to come up with a more efficient system for my tiles.
One of the problems with Blitz (and possibly other engines, I’m not sure) is that a large chunk of overall performance comes down to surface count. Simply put, if I load 50 cubes into a scene, Blitz treats them as 50 separate objects, even if they share the same texture and underlying mesh. This leads to massive slowdown and performance issues, obviously. So the solution and to some extent, a rite of passage for anyone who’s ever worked with this engine before, is creating your own single-surface system. Back in July, I finally created my own to speed up my particle fx, so I decided to build on top of that and port it over for tile creation. Admittedly, getting the system running was a bit of work and is still rough around the edges, but the advantage of having the entire level as one surface gives me a huge amount of flexibility going forward.
The important thing is that I have a solid system in place to start designing the game around. My next step is to hopefully begin prototyping enemies and weapons. That will give me a little more insight into how I should design my rooms and provide a reality check as to whether or not my world scale is correct for the game I want to make.