Managing Long Term Projects

March 30, 2015


In college I was driven to learn and make the most of the experience. It became common to start a project Friday night only to never touch it again after that Saturday or Sunday. This was great practice, but each projects became a nightmare to manage. Nearly all of them fell to the underdarks to collect dust, never to be built or ran again. Recently, however, I’ve been able to let a project sit on the side for six months and pick it back up like I worked on it yesterday. Read the rest of this entry »

Basic Pong using TurtleBrains

March 27, 2015


Basic Pong was the first game  Read the rest of this entry »

Explicit Constructors

March 24, 2015

I had a bug very recently that took much longer to track down than it needed to.  Actually, it should never have been a bug.  I’ve updated my coding standards accordingly and will make my best efforts to never allow this sort of bug to happen in the future.

I was making Pong, and had some code similar to the following:

enum PaddleType { kLeftPaddle, kRightPaddle };
class Paddle {
  Paddle(const PaddleType& type) : mPaddleType(type) { }
  const PaddleType mPaddleType;

At first glance this seems like acceptable code Read the rest of this entry »

Hiking Barefoot

March 22, 2015

My amazing girlfriend Sonia and I recently went camping in the DuPuis Management Area of the South Florida Water Management District.  It was a quick weekend trip that was quite amazing and I had tried something very new to me, Hiking Barefoot.

Read the rest of this entry »

The Birth of a Turtle

March 19, 2015

About a year ago work began on the first framework I plan to release publicly.  TurtleBrains.  After spending over a decade using C++, studying all material my grubby hands could grab, and creating several games professional, it is about time I release some software for others to use.  TurtleBrains is a framework aimed at helping create two-dimensional games and real-time applications with native controls.  Also, watching baby loggerhead sea turtles waddle into the ocean with Sonia was priceless.

In 2010 I started working on the OverGameEditor Framework, which at the time was planned for a public release.  The OverGameEditor was purpose built to add operating system level controls to a game for an amazing editor experience.  By adding Menus and some simple dialog controls to an “edit area” the native controls made an editor much better than hitting random letters over the keyboard.  However, the framework was never released because I felt it wasn’t feature complete and was built with some wild Windows magic, hacks.

The scope of TurtleBrains is planned to be a lot bigger than what the OverGameEditor ever was.  It is aimed to be a high-quality, multi-platform framework for Realtime Application and 2D Game Development.  Primarily for games with high-quality tools.  TurtleBrains remained in planning for nearly two and half years before a single line of code was written.  When the developer environment was booted up for TurtleBrains in summer 2013, I made a point to start with Error Handling.  The single most important aspect to a framework which, from experience, is often vastly overlooked.

Since that time TurtleBrains has been building up the Application development portion of the framework.  It now opens a Realtime OpenGL window on both Windows and Mac.  A window menu, or context menu can be added.  Powerful and custom dialog prompts can be built with simple controls and best of all it just works.  Write code once, compile it twice, run on both platforms.  TurtleBrains is still not yet ready for public release, but the portion of TurtleBrains dealing with Application development is getting very close and the documentation is available at a temporary site:

I’ve still got a lot to learn, one thing holding back the public release, besides being too immature and untested, is licensing.  There are many good articles and resources that have attempted to teach me the ins and outs of choosing and applying a license, but so far I just walk in circles.  I know my goal with TurtleBrains is to have supply the framework free for personal use and/or with non-commercial projects with an install base of less than 1000 users, but a low, one-time fee, per person on any commercial projects or those with more than 1000 installs.  Mostly to encourage giving back, I don’t plan to get rich here.

Updating the blog

March 17, 2015

The blog is getting a makeover. Nothing will change visually, but the changes should provide more content. Instead of writing an entry now and again when something pops up, the blog will see new content each week, at least one post about what has been happening around here. It is too easy to leave this area of the internet to collect dust and cobwebs from those spiders, but my plan is to change that.

To help with make this change happen easier, more topics will be introduced. Instead of being 100% dedicated to game development, the blog will also contain a sprinkling of posts related to my other interests. Racing, Sim Racing, Camping, Hiking and Nature related posts will be scattered around from time to time. Each post will be tagged so you can filter out all other posts if you are interested only in the programming, or one of the other topics.

It is my goal to provide this blog with more content, although it will remain primarily be about game development.

LD31 Post Mortem of Precise Shot

January 2, 2015


It has been nearly a month and the ratings are out.  I am pretty happy to find out I placed #210 of 1365 compo entries in the category of FUN, arguably the most important category for a game.  That is very close to the top 15%, and although I’d be happier in the top 10% after my failure during LD30 I am certainly stoked.

There were many ups and downs during the development of Precise Shot, and some time that could have been utilized more efficiently.


What Happened

When the theme, Entire Game on One Screen, was first announced I had a minor moment of negativity since this is a technical limitation.  Quickly I started brainstorming ideas and had 3 or 5 games that fit the technical limitation.  Playing with the word screen, my runner up idea was controlling an ant/bug in a puzzle environment on a screen door.  I decided to sleep on the idea since none of them were really pulling too strongly.

After sleeping for 8 hours 18 minutes 58 seconds it became time to eat, while multitasking with a bit of design, before deciding to start working on an arrow shooting game that was becoming quite exciting.  It was 10 hours 40 minutes since the compo had begun and Inkscape opened for the first time to create a very basic bow shape.  Five minutes later the precreated (splash logo / blackscreen) project was opened up in FlashDevelop and the bow was added.  Over the next two hours art for the basic arrow and target were created, aiming and firing the bow and arrows flying through the air colliding into the targets.

With only 4 hours 27 minutes from the time development started the first playable was shared and a 15 minute lunch break required to stop the rumbling stomach.  Immediately after lunch randomized target positions was added to make it feel more like a game, next a limited amount of ammo, and the number of targets hit were tracked.  The final addition of a quick results screen and Precise shot was game complete, 16 hours 59 minutes after the compo began with just over 6 hours of active development, not including design.

The background was bland.  Dark gray.  With the gameplay complete effort was redirected into making it a better experience.  It took 29 minutes to create the first, possibly even the final, version of the background image with the hills and trees.  The bow image was actually pretty good as is, but the arrow needed to pop more, so time was spent on the arrow.  The target needed new art completely.

The initial design of the game had a huge feature that would be extremely tough to pull off,  especially within the 48 hour deadline.  The feature would be amazing and an idea occurred that took exactly 15 minutes to implement, test, see the failure and remove.  Unfortunately it just didn’t work quite that well.

21 hours 5 minutes after the competition started and the first sound effects were being created.  The arrow hitting the target and first attempt at the bow string firing an arrow.  By the halfway point basic sounds and the final music were implemented, it was time for a dinner break.

The second day doesn’t have as many landmarks to go by.  RescueTime still has a record of every minute, but it just doesn’t know what features  were completed and when, so the timeline gets a bit fuzzy.  The entire day was spent to polish and make a better experience for the player.  During lunch it was designed to have pre-determined, playable levels instead of the randomness that was used for playability testing.

The concept of levels actually proved more difficult and much more time consuming than expected, a small intro sequence was required to determine the level, arrow count, number of targets and timing of the level, also needed to design levels and get the game to progress through them.  This was an easy task but a much more time consuming than estimated.  This took slightly more than 5 hours of implementing and the levels were just tossed together for testing the progression, not actually designed for final levels.

The feedback from that playable beta came back and 45 hours 33 minutes after the compo began it was clear that the game was no longer fun.  With only 2 hours 27 minutes remaining the decision was made to cut the levels, a feature that ate 10% of the total time available, cut.  Gone.  All in the name for fun.  Back to randomized targets and the remaining time was spent on the unfinished results screen.

Sounds effects, a background scroll, timed scoring and tallying up the score as well as the reward stars were finished just on time, with the final build being made just 5 minutes before the end of the competition.


What Went Right

  • The scope of Precise Shot was perfect.  Having the game complete after only 6 hours of development was critical to success.  A single, simple, playable feature that could be tuned and perfected and polished for fun.  This will be something to aim for in future jams.
  • The fun was proven, and it doesn’t come naturally.  The bow controls and arrow forces were tuned for at least 30 minutes, and honestly may have needed a bit more time, but the design of Precise Shot was exciting and developing it was fun, as was the 2 hours 54 minutes of play testing.
  • Cutting features as needed.  A lot of time was dedicated to level based design with moving and rotating targets that got cut in the final hours.  This was a hard decision to make given the amount of effort, but it is clear this made Precise Shot more fun than it would have been otherwise.


What Went Wrong

  • Estimating time when planning the features and areas to polish during the last 8 hours, moving and rotating targets and level progression were grossly underestimated, and didn’t end up in the final version.
  • Feature creep happens on every project, a 48 hour project is no exception, but several of these features cost time that was not initially planned for, like when the Master Bow ‘difficulty’ was re-added as a separate mode.  Although cut, level progression, and moving/rotating targets fall into the feature creep also.
  • Player feedback was more confusing than expected, the first attempt at controlling the bow was unintuitive, most players didn’t understand the scaling power level or dropping/releasing of the arrows.  For next time the design of a feature will need to take feedback into consideration a bit more.

November OneGameAMonth Goal

November 9, 2014

It is pretty late into the month already.  I failed to make a single game since I’ve joined @OneGameAMonth in September, I should have two by this point in time!  So November is going to be different.  Initially I was going to jump into NaNoWriMo and do some creative writing, but game development is important to me, and I need to work out those muscles.

With that, I’ve announced that I will complete a game during November.  I had a short discussion on twitter about this, that initially I’ve had issues with “just creating a game”.  I basically set the bar of standards too high for myself.  It was set at an achievable level, however I’d become overwhelmed and give up before putting any effort in, so I have now lowered the bar.

In November, my game is going to be a top-down racing game.  I have set the following as a minimum feature set to consider the project a success.

  • Minimum of a single track and single car for the player.
  • “Hot lapping” for the best lap time, with saved best lap time.
  • Lap Validation, no wheels off, and completed a full lap.

This is certainly a short list, but is a fair amount of stuff to get done, considering the time I’ve set a side and effort in the past months.  I hope to build this so that for future @OneGameAMonth’s I can perhaps create additional game modes, and/or add significant features.  If not obvious, racing is amazing.

Two months later, zero games!

November 1, 2014

Ouch.  That hurt.  I’ve joined @OneGameAMonth two months ago and I have zero games.  Actually, upon making the announcement I failed to put any more time or energy into it.  I’m rebooting though, and hoping to make something count for November.  I’d really like to get TurtleBrains working a bit better before LudumDare 31, coming this December 5th-8th!

I’ve yet to decide what to make, pong? snake? asteroids?  Or should I slap the old Scrapyard Racing project back into drive and do a “simple” top down racer.  I am addicted to speed, and that would likely hold my interest longer, so it is tempting, but it is also overwhelming because I don’t want to just create a game…

Part of my issue is making the commitment, and even those small games take time to polish.  I don’t want to just throw out some game and call it “my finished game this month”, I want to finish games that pop.  I am after-all a professional game developer, how hard can it be to make a game in a month?


But in November I will work on TurtleBrains as little as possible, mostly just enough to get better sprite handling and possibly sounds, but my focus will be on a game.  Yet to be decided.  I should have something started this weekend.

Time to workout!

August 29, 2014

It is time to start working out a bit.  I’m not talking about going to the gym and pumping iron, or waking early to go for a jog, although those are not bad ideas.  I’m talking about game development.  I’ve been participating in LudumDare events for several years now, and recently LD30 took place so making a game was on the list of things to do.  The weekend was quite a failure for me, the theme had beat me and left me to dry.

After the theme was announced, no game ideas came.  It was a struggle to find something that might become fun.  I tried three different ideas from a runner, to an action shooter, to a twist on snake.  At approximately halfway through the weekend the result was a version of snake with place-holder art and was not actually fun to play.  I abandoned the project and went on a downward spiral, after 15 years of making games this was all I was able to come up with?  It felt awful.

When you fall down, get back up.


It would be easy to stay down, but it is time to get better.  Practice.  Work on the game development skills that I’ve dried up upon.  I feel good about my programming skills, but I certainly lack some subtleties that are extremely important for game development.  I’d like to be able to make a game in 48 hours and have it be something that comes out looking reasonable and playing reasonably well.

So I’ve joined the #OneGameAMonth community in hopes to create a basic game every month, and look forward to both the challenge and the learning experiences that will come.  I will be building upon my #TurtleBrains framework that is aimed to be a high-quality C++ framework for 2D game development and real-time applications.  #OneGameAMonth will also allow me to work on my artistic skills which currently stand far below that of the average five year-old.

Having joined #OneGameAMonth it is time to get a jump start.  This weekend I will be working on my failed LudumDare in an attempt to make a playable, and possibly fun version of Snake.  My focus will not be on design, or programming complexity, my focus will be on the art, and polish.  Snake is an extremely simple game that I’ve used for prototyping and framework testing before, so polishing it should be a good first exercise.