Saturday, November 5, 2011

[SBX] The end of a journey

We'll go right into the game topic.  This has been an exciting journey spanning several months of development.  I can finally say the game is at a place where I can call it a semblance of "complete".  The eighth level is complete and the win credits have been added.  Every item is able to be unlocked and used.  As I get feedback I'll put more things into the game and fix some under powered weapons.  But all the core elements of the game are there and I am going to begin serious work on the sequel, SBX2.  It has been a long project and I've learned many, many... MANY things.  I'll go over a few topics I'd like to reflect on and the things I've learned.

As SBX became larger, I realized that many things were extremely inefficient.  The way collisions were handled with parents wasn't as good as it could have been.  I didn't bother to change it, but in my new project, I am already planning out an extensive network of parents that will make things BUNCHES easier.   File organization as well could have been a bit better on SBX.  Things were all over the place and in folders that didn't accurately reflect what they were some times.
Also my code / drag and drop was extremely messy.  I used hashed together strings of code with drag and drop icons in weird places.  In SBX2, other than for very, very simple single tasks, I use code entirely.  If I don't know the right code that corresponds what I want to do, I am looking it up instead of using D&D.  It makes things so much easier to edit and comment.  Condensing what used to code me with 10 lines into 2-3 helps a lot too.  Which leads me to the next topic:

I didn't really iterate anything in SBX, I just made separate objects for anything I wanted.  Part of the GMC Jam helped me learn a bit more about it as well.  In ghosting laws, each level was randomly iterated by using a for loop that set each tile in the room to a 2d array, then placed those on the screen.  The result was easily creating new types of levels in minutes rather than hours placing objects in a room.  This is going to be applicable to SBX2 in that I'll store certain types of things in arrays or adjust certain values to change the image of an object based on certain conditions.  The mounted gun on the top of the Ship is like this.  In SBX I had objects for each and every weapon... now there were only 40 different items in the game... but WTF that took forever!  This time around I simply passed in a variable that determined which number of weapon the Ship was using.  Then the mounted gun simply selects the proper sprite and uses that index and the rest of the code is contained in that one object... instead of 20.  These kinds of things that I've learned will make this next project both easier, and quicker.

When SBX started I didn't intend to have a story.  I threw one in there and hashed it together when people where like, "WTF mate, whats going on?"  I love to write, but didn't want to spend the time putting a story in. Now I admit, the story is still just text, but it grew on me.  I began to form a plot in my mind.  And the story grew.  In SBX2, you will meet the pilot, Jack R. Hawk.  I plan to have a much more engaging story line, perhaps optional, but we'll see.  I have to admit, the story in SBX didn't make much sense until I went back and re-did it a bit.  I might still go back and edit things so that it engages the reader more.

In another blog post, I talked about the graphical upgrades I  made to the game at one point.  I learned a lot at one point in the development about making planets sprites easily in Photoshop  (I use Paint.NET, good enough for simple stuff).  It added new depth to the levels and I re did a lot of the asteroid sprites with the same type of shading.  I will admit I am not the best graphics artist, but I do like to develop my own sprites.  In SBX2, I am keeping the simplistic graphical theme, as I like it.  It makes it arcade style.  With the backgrounds being more detailed and interesting, the player feels separated from the background.  I plan to spend more time working and reworking the graphics as well, and keep uniformity in the objects.

In SBX I just tested as I went and it took a while to figure things out, and check if they worked, especially if I had to play through a level over and over.  I must have played each of my levels in SBX 100 times over.  In SBX2 I am trying a different approach.  I want to get a strong core to the game first before developing my first level at all.  I am trying all sorts of things to make a nice engine.  I am testing out different styles of collision between the ship and enemies, and how much actual physics I want to use.  I considered giving everything a mass and making everything use physics formulas, but I might not do that this time around.  Whether or not I do, I have a testing room that I can try out new weapons and program them all in before I actually put together the game.  I am using this tech demo to try out all sorts of new items, see their effects, their strengths, do they do what I want?  SBX never had a test room, so I had to test everything in the actual game.

Reflection and Planning:
This post is a big part of the things I have learned.  I took an online course in Unity, which I have yet to finish (It's work on your own), but they talked a lot about reflecting on your work and seeing what you could have done better.  These past weeks finishing up SBX I have seen a lot of ways I could have done something in a much more efficient way.  Iteration is a big part of this, but other things as well.  Planning out my work is also a big things I am even still learning more about.  I can't tell you how many pieces of paper I've used making SBX.  I draw out my plans, then implement them, but they could be organized better.  I've got a few notebooks set aside for SBX2 to keep my notes in one place, where I can flip through all the information.  Recording my thoughts in this blog is a part of it as well, as it gives me time to think... "What am I doing, and what do I want to do after this?".   I find that I am much more motivated after I make myself a ToDo list.  As I check off each item, I feel like I have accomplished something for the day.  Staying motivated on my projects is tough some times, but I truly love developing games, regardless of the times where no one wants to play my game and it sits for 2 weeks without a single comment on the forum.  I love what I do, and THAT is the most important thing.

In retrospect:
This has been a fun year.  I started SBX sometime in February or March, serious work at least.  It picked up as the spring went on, and I was full steam in the summer.  It is tough to put aside the time to program, and with my new job, it will prove even harder as I'll have longer hours and I'll be trying to work as much as possible to save.  Game Design is my passion and someday I will join up with a company that can pay me for my work, but until then, I will keep programming, designing and having fun.  As I move forward, I'll look back at SBX as my first serious completed project.  Since I was young I've made games on various platforms, but nothing ever to this extent.  This is my first step to my goals.  My portfolio has it's first major piece.  I doubt any of my games will ever make any money, but who knows ;D.

Well, it has been a fun journey, and to those who have played SBX and/or have read this blog:  Thank you!

To all those who tested my game, mainly:  TheUltimate, smashball, Enter_Name_Here, as well as a few others:  A BIG THANKS!

Stay posted for more news as SBX2 goes into development.

Sayounara Minnasan!



  1. Great self-realisation and everything you said is so true of nearly all early creative endeavours. Sounds like you've learnt some valuable things in terms of iteration and organisation. Best of luck with SBX2!

  2. Thanks Bjorn! Glad you read my post, ha, SBX2 is going slowly, I just started a new job, but it's definitely more organized :)