Skip to main content

Solve For The Actual Problem

Recently I posted about how I created a finished game loop right away for my side game project.  I have continued to work in the same way I talked about then and have had time to reflect on why this is working for me.  Simply put I solved my biggest problem first.  Everyone and every game has different problems, but sitting down and being honest with myself at the very start allowed me to address this right away.

As progress moves forward I still maintain this reflective thought process.  I look at what is actually stopping or slowing down my progress and then I solve that problem, in the most simple way as I can.  That means I solve only that problem and not problems that I think will arise down the road.  These are also tending to be my workflow problems so completely unique to my current situation.  For example when I completed the finished game loop I had a few different game objects like triggers to enter new rooms, player spawners and dart traps.  When I made these objects they were put together in the most simple way as possible so I hand built each and everyone of them and just duplicated them around the room.  Then in a new room I would hand build them again and repeat.  This only took a few minutes to do and for the finished game loop I only had two rooms, which was the bare minimum to solve the problem I was working on at the time.

Then when it was time to add in some more rooms I found my self slowing down.  I would think of an idea I wanted to see and start hand building the objects.  While this only took a few minutes after about two rooms I was starting to get bored with doing this over and over.  It was tedious and repetitive work and I didn't want to do it.  So I spent the time thinking about how it was taking time away from actual design work.  So I took the time and built some quick macro like buttons to just give me each of my game objects already setup in a single button click.  Then I only needed to hit one button, and place the object where I wanted.  Automating even the short setup like this also meant I removed any human error from the setup process.

I found my self trying out more gameplay ideas quicker then before and more willing to throw out the work completely because it now took no time to start building it up again.  I was in the iteration loop of actually working on gameplay.  I had solved my actual problem.  Now that I was able to make rooms faster and easier I hit the next problem and it was one I had not even thought about.  While I keep making new rooms the list of rooms is growing really quickly.  The room transition triggers use this list to select the room to transition to and wit the list getting bigger it is harder to make sure I pick the correct room to transition too.  This problem is only going to get worse the larger the game gets.  I had a new problem.

Just like before I thought about the actual issue and how to solve it in the easiest way possible.  I thought, well if I am tagging the trigger with the room why can't I add a button right there by the room tag that takes me to that room in editor.  It was simple enough to put in, only a few lines of code that took me maybe 5 minutes.  A side effect of this is I can easily follow the flow of dungeon that the player will take in editor using the actual game data so I don't even have to leave the editor to make sure the room links are linking to correct rooms.  Now I can quickly make new rooms with new gameplay, link them together AND quickly test that they link together correctly.  

So simply put having this kind of honest conversation with my self during the development cycle is a huge productivity booster.  It is also exposing the actual problems that need to be solved right then and there to move the entire game forward, not just a single part of the it.  It is about being honest with your self and looking for the actual problem in that moment in time that you are facing.  Each problem I encounter is unique to my game, my tools, my data, my setup and my workflow.  So spend the time working to help yourself during the development cycle and spend the time to think about the problem and how to solve it, it will speed you up the long run.

Comments

Popular posts from this blog

Plunder Bunny | Flash Game Character Mockups

Another collection of design/mockup sheets for a personal project.  The game was a very simple 2D platformer in the vain of Super Mario.  I got pretty far with the game but ended up getting busy with some contract work and the project feel into the ever growing abyss of personal projects.  When I get some more free time I'd like to try and re-visit it. The visuals were really fun to work on.  Inkscape was used to flesh out my initial sketches.  Each character was broken up into pieces like a paper puppet.  After Saving the pieces out at high resolution they would then be put back together in Blender 3D where they would be animated.

Level Buddy | Blender Addon

An old-school CSG inspired level editor add-on for Blender 3D. The add-on is still very much a work in progress but fairly solid for blocking spaces super quickly.  Just because graphic fidelity has gotten insanely good and hyper detailed doesn't mean we shouldn't look back how older games were put together, at least that is my opinion.  One thing I always come back to is how quickly the tools in the first 2 versions of Unreal Ed 2 and Doom level editors allowed anyone to block out a level, iterate on feedback or try an idea out.  So I just took some time to put together a similar pipeline right in my 3d package of choice.  I wanted to keep it simple and quick to try out level design ideas.  You can use it for simple white boxing of your level, break it up into multiple static meshes and import them into your game engine of choice or  you can use that as your starting point to start more detailed modeling .  When you build the map you get a single static mesh th

Data First Project

Last post I talked about a project I started using the approach of designing the data first.  It is my current pet project and one that I will keep exploring and playing with because it is so much fun.  So here are some snippets of code the show the structure of my data and some of its values. One thing you might have noticed is that I am using the JSON data structure.  JSON is a great format and pretty much every language already has a JSON parsing library so it really let me focus on the design of the data and how each piece would reference/connect to other bits of data.  Just like code you spend a good chunk of time very early on iterating your data design.  My first attempt I found that I was nesting things way more then I really needed.  Since there was no code at this point it was super easy to just move things to new sections and make large sweeping changes until everything started to make logical sense for what I wish to accomplish.  As the data structure started to grow