I recently put up a website featuring a Flash game I’ve been working on for a few months. It is entitled, “The Bogstras: The Video Game” and features several of my family members as characters. My reason for creating this game is twofold: First, I wanted to learn more about game development and needed a hands-on project, and secondly, I needed a Christmas gift for my in-laws. The title was a no-brainer. “Bogstra” is a portmanteau of “Terpstra” (my family name) and “Boger” (my wife’s family name). After a few days of jotting down design concepts and cooking up a game plan, the journey had begun!
The object of the game is simple – pick a character, and complete a mission based around that character’s personal interests. Complete each character’s mission and win the game! It seemed like a simple enough idea when it popped into my head last September. I set a goal to release the game the day before Christmas, and provide everyone featured in the game with a hard copy burned to a well-styled CD (with awesome cover art). But alas, as with most software projects, “The Bogstras” fell victim to underestimated time requirements and the game was released in late January. The good news is, my family didn’t mind too much. They were still thrilled to see and play the game, and I managed to learn quite a bit about making games.
Choosing Flash and Actionscript 3 as a development platform was pretty much my only choice. It’s the only language I’m comfortable with that is capable of building decent games. Although even if I was an expert in C++ or XNA or whatever the hip new game platform might be, AS3 would still be the natural choice given the fact that the game is deployable via the web, and everyone has Flash Player installed. I also happened to have a license of Flash Builder 4.6 available from my workplace. And just so you know, a purchased license for Flash Builder allows for installation on 2 personal machines per user. Highly convenient.
With my base language and development tools already sitting in my lap, I went searching for a game framework to help me get started. After reviewing many interesting frameworks, I finally narrowed it down to Flixel and Flashpunk. I’m not entirely certain why, but I chose Flashpunk. After perusing the tutorials, and slapping together a couple prototype levels to test out the code myself, development was fully underway. Flashpunk makes is super easy to get a simple game concept up and running very quickly, as it provides code for the game loop, containers (worlds), entities, collision detection, spritemaps, and so on…
My prototyped levels mainly consisted of little boxes moving around the screen shooting things and bumping into each other. It quickly became clear that I would need some help with graphics. I wanted the in-game characters to resemble the real-life people, so I decided to hire a pro for that. Nearly everything else was harvested from hundreds of Google searches. Of course, no tile set or pixel art collection was ever perfect, so I had to do some pixel pushing myself. I found an amazing free (shareware) tool called GraphicsGale. It’s sole purpose is pixel art and animation. It made working with spritesheets, tilesets, and other pixel-perfect graphics a breeze. I know I only scratched the surface of possible features, but what I did use was invaluable. Although there were times where I needed to do some complex layering, or had to work with large jpeg images. For that, Paint.NET (also free) filled in all the gaps. With GraphicsGale and Paint.NET, I was never left wanting for any gfx editing features.
After smushing together some code and graphics, I was ready to start building levels. Flashpunk has built in functionality to take advantage of grid-based tilesets, and there is a nice tutorial on the Flashpunk website on how to implement this functionality. However, there was also a nice tutorial on how to take some severe shortcuts by using a tilemap generator – namely, Ogmo Editor. With this tool, it is a much simpler task to lay out repeating tiles and design levels from tilesets visually, rather than completely in code. Ogmo exports the layout information in XML format, which is easily read and interpreted by Actionscript. Using Ogmo was a tremendous time saver, and I highly recommend it for use with any 2d, tile-based flash game.
Since all of the background music was composed by talented musicians (not me), sound was pretty much an afterthought. There were a few places were sound effects were necessary to enhance gameplay, and for that I turned to BFXR by increpare. If you need a quick way to generate some bleeps, bloops, chimes, dings and zaps, then there is no better tool. Just keep clicking until you hear something you like, and save it as a .wav file. The only hangup is that sounds must be in mp3 format to be embedded in a swf file, so Audacity‘s batch encoding feature was recruited for this task. Incidentally, BFXR is a derivative project of SFXR by Dr. Petter, but adds quite a few new features, and comes in an installable Adobe AIR package.
Every great triumph has its cast of heroes. The champions behind the aesthetic appeal of the Bogstras (which receives the lions share of praise) are true talents. All nine of the characters, and their corresponding animations were hand drawn by Cecile Souza Santos, of Brazil. I found her through the job postings section in the PixelJoint forums. Her past work was very impressive, and her 16-bit RPG style was exactly what I was looking for. Needless to say, she was a good fit for this project. She is still active in the PixelJoint forums, and on DeviantArt with the handle Clest.
The music tracks were conceived and composed by Jordan B. Sanders – frontman for the Order of Týr. Jordan is a co-worker of mine, and just happens to be an expert chiptune composer. I’ve heard his music, both live and recorded, and knew that his work would be tip-top. And it was.
Last but not least are the countless individuals providing tips, tutorials, sample code, free images, and answered questions on the FlashPunk forums, StackOverflow, GitHub, and elsewhere on the internet. If I were left solely with my own wits, this project never would have happened. It is truly astonishing that I can shout a question out into the world, and no matter how technical or esoteric, I can be reasonably sure it will get answered.
Despite that the game was four weeks late, and has dozens of features left on the cutting room floor, I’m still pretty proud of it. This was my first completed independent game project, and I think it turned out OK given the goals I began with. I’m glad to have this done and behind me, but it also illuminated some interesting paths ahead. There are definitely some game development concepts that need revisiting (A* pathfinding, pixel-perfect collision, Verlet integration, to name a few), and plenty of un-implemented ideas that could easily be retrofitted into a new game. So enough jibba jabba, and back to work! (as soon as I catch that damn dog).