Introducing TurtleBrains

August 1, 2014

For the past year I’ve been working on a game development framework that is meant to be used on multiple platforms, currently aimed at Windows and Mac OS X, however I have hopes that Linux will be added in the future and possibly even Android/iOS.

I’ve been writing in C++ and have got a solid portion started and working for Mac OS X and Windows, unfortunately little fill on the game development portion.  If you need to write a real-time application using OpenGL, popup dialog boxes, message boxes and other operating system controls – TurtleBrains is working great, which was part of what I desired with TurtleBrains for easy game development tool creation.

Going forward I’ll be working on the game development part of Turtle Brains, a State Machine, Input, Sprites, Entities, Tile System, Particles, etc.  I still have some things to figure out, such as choosing and applying a license, sharing the code, and keeping things consistent, clean and quality driven.  Hopefully this will become usable for making some of my games by about April 2015, or maybe earlier if I can really put some time into it.


Cracked! Post-mortem

May 9, 2012

LudumDare 23 was held April 20th-23rd.  This was the third event I’ve participated in, and was many firsts for me; First collaboration in an event situation, first time using flash/ActionScript and first time not needing to worry about creating the content.  The following is a post-mortem about the Ludum Dare version of Cracked!

What went wrong?

– We never setup source control until the event started.  This did not cause many issues, but was something that could and should have been ready to use.

– The simple tile editing tool created the week before did not work on joekinley’s computer- different flash versions have different security issues with when something can be copied to clipboard or saved to file.  This fought with us a few times during the weekend until we properly researched the issue.

– The editor saving issue caused us lose a bit of time, creating levels that could not be saved.  It also delayed the level creation process until pretty late in the game- and once we finally got there the game did not play as strategically as initially designed.  Multiple possible causes, but no time to to really fix.

What went right?

– Most of the project went very smooth.  joekinley and I were able to communicate effectively and completely avoid dead-locks (keep busy) while we dealt with time-zone issues and sleeping schedules.


Snake: The Hello World Game

April 17, 2012

During a recent time of being unemployed I had some free-time lying around and decided to pick up this ‘new’ engine everyone has hyped up, Unity.  Well I started by looking at a few video tutorials, but showed too many details I already knew and skipping ahead had the chance of skipping something I didn’t, yet needed to, know.  I tried looking at existing projects to learn my way around, but wound up more confused and went back to the painfully slow video tutorials.

However, since my early programming days, I’ve always been better jumping in head first.  So I scrapped the tutorials and existing projects and jumped in to make a quick game, like most people make a quick “hello world” when working with a new language or platform for the first time.  At the time I did not consider myself to be making a “hello world game”, I simply picked the classic: Snake and started developing it with Unity.  It wasn’t until weeks later at a new job when I was testing out a new engine, GameMaker:Studio, that I realized how great Snake is for a simple Hello World Game.

Snake is extremely simple; an object for food, and object for the snake head, body and tail, and two ’tiles’: grass and rock.  Snake head collides with snake body, tail or rock and the game ends.  Snake head collides with food, and a body part is added to the snake while the food moves to a new random location.

It is possible to make Snake utilize nearly every system/piece in a good engine or framework; graphic/sounds/assets (and pipelines), tiles/maps (level design), objects/entities, scripting, collision, input and timing.  This forces you to gain a little experience with each portion while testing out, or learning a new framework.  However I did notice, while talking with a good friend, that Snake lacks the testing of physics.  This may or may not be of importance, depending on your needs from the framework – but Asteroids or even Break-out might be a good choice to include physics.

For now, I will stick with Snake.  It takes a few hours to make, give or take the learning process, and will show the good and bad of the tools, pipeline and editing with a particular engine or framework.


Animator Project

October 7, 2011

The weekend after Ludum Dare some of my plans fell through so I decided to work on a simple animation project, a major feature I had to cut from my project.  The project was simply joints and bones with simple interpolation between keyframes.  The editor, or lack of, consisted of 10 key frames and a stick man with 11 joints and 10 bones.

After getting the mouse to drag a joint it was clear I needed to make the editor smart enough to keep the joint dragged within the length of the bone as the bones would be growing/shrinking during the animation and messing stuff up.  After adding the limits, it was starting to act how I wanted; although I had to press digits 0 through 9 quickly to see the animation.

While writing the interpolation from frame X to frame Y I came across a bug where I was accounting for an offset I didn’t need to and it resulted in something surprising but cool; stickman into spaceship.


Project Generation Automation

August 19, 2011

During the last several months or more I’ve started several projects, only to abandon them at, or soon after, blank screen.  Mike “PoV” Kasprzak made a blog post about using premake to create a project.  My process had been copy a template directory, with some basic code to get to blank screen, to where I want my new project, rename as needed – create the Visual Studio project and setup everything; include and library directories, debug working directory, post-build events, etc etc…  Two to three hours later I had a blank screen, and rarely had motivation to continue much further.

Enough with that.

I started playing with my “make.lua” premake script first, and my immediate impression was, ‘meh’.  But after an hour I realized the potential it had.  I copied my template directory and used premake to make the project.  During the process I realized it was powerful enough to set include/lib directories, and all the other tedious settings I previously had to do manually.  It also occurred to me that I could use a windows batch file “CreateProject.bat” to automate the process even more.

Quickly CreateProject.bat would copy the template directory to a new location, rename it to the project and call premake to create the project on the spot.  This wasn’t quite enough, I wanted it to build the project in both Debug and Release, and do some find/replace in files as needed for personal preference.  While talking about this automation project with Pekka “pekuja” Kujansuu “sed” was mentioned.  Sed is a stream editor on the unix platform which has find and replace capabilities.  With great help from Pekka and Mike, I was able to get it to do what I needed with renaming.

 

This all took several, eight to twelve, hours but the next, or any future, time I need to make a project, is is a matter of typing  “CreateProject MyNewProject” inside command-line and all the magic happens.  My final step will be to setup a script to add the project to a subversion repository, but that will be a few weeks or whenever I get around to it.  I am amazed at how rewarding this feels.

The files that do the magic are here, although probably needs quite a bit of work to generate a project that would be useful to your needs:

  • CreateProject.bat – This is the main access point that gets the automation rolling.
  • make.lua – This is used by premake to setup the solution and project as needed.
  • build.bat – This is a small bat to build from command-line with VS2010.

Over Game Editor

November 12, 2010

Originally Posted around mid-July 2010:

During development programmers often have to make a choice between spending time making an editor or just programming away. Often they choose a middle ground, where objects can be manipulated in a horrible fashion which can in the worst cases be counter-productive. After finding many of my projects go down this road I’ve decided to make a framework to quickly create an editing environment for designers of the game. This gives the benefits of an intuitive Win32 interface, while giving full power to the programmer.

Currently three areas can be controlled by the developer using this framework. The Menu Bar is setup quickly by the developer calling MenuBar_AddItem(). The developer can also enable, disable, check or uncheck the menu options as well as change the name if they decide to later. A callback passes the ID of the item when it is clicked, and thus should be handled. The Status Bar is a nice touch allowing the developer to set the status of the application. If something is loading, or time consuming this can be updated to show the end-user what is going on. Finally the Edit Area allows for edit controls to be added. Currently controls can be added for: bool, float, int, uint and string although I have plans to add custom controls. The developer calls EditArea_AddItem() for each item they want. If the selected object/type changes they just clear it and add again. All tracking/updating is automatically handled by the editor framework, although I want to add callbacks to this area.


Scrapyard Racing! Week 1 Wrapup

October 9, 2010

Now it has officially been a week since I started the project.  I must say I am pleased with the progress made so far, although things need to start moving along a little quicker.  I am still knee deep in the editor, although wow, has it come a long ways in a single week.  If I must say so, this is likely the best editor I’ve ever made.  It has almost complete undo/redo support.  I can’t say I am pleased with the code behind the editor.  Maintaining this will end up being a nightmare, I can feel it already.  A lot of copy/paste code segments for things like add/delete checkpoints / track nodes and other bits of information.

Since I last wrote a progress update, I have added the checkpoint system, which will be used to verify the car went around the track properly, and for timing the lap.  I’ve also added camera control to the editor, which involved making the engine support the mouse wheel for zooming in/out.  Also the track nodes now contain a width modifier, that can change the width of the track in a particular area.

Finally I’ve added a start grid tool, which can create evenly spaced grids for the starting position of the car.  Only 9 tasks remain on the editor and track environment and then I will be onto a new task.  I still don’t have a good name for the project so “TBR: The Best Racer” is sticking for now.  Or it could be Tim Beaudet’s Racer…

A current screenshot of the editor with a textured track, checkpoints and starting grid.

My current plan of attack is to add objects / sprites to liven up the environment.  Trees, haybales, cones, crowds and other common trackside objects would really liven the place up.  After that I need to implement saving/loading of the track, and a car/world editor to assist when I start making the actual gameplay.  More to come in the following days.  If I have a miracle session tonight, perhaps the editor will be completed?  Ahahaha…


Scrapyard Racing! Track Editor and Tools

October 5, 2010

Well progress has been coming since I last posted the Splash screen.  I have been working on some tools, in particular the track editor.  I remain vague about my game idea for the current time, but it will be a racing game; for all intent and purposes.  I am focusing efforts on being unique, and a thorough google search only brought up 2 other “personal” projects/attempts at what I am doing.  I am hoping that serves to my advantage, but I am happy to know I have an idea that is more original than just making an Pac-Man clone with different theme.

So about this track editor; I spent my day Sunday working on starting it, and Monday night after work I lost about 3 hours of productivity.  I was beat, muscles aching, etc… and couldn’t concentrate.  However I did manage to get a few productive hours and managed more than I expected for the night.  Undo/Redo capabilities for all current actions:  Add/Delete TrackNodes as well as the ability to Move/Edit the node.  This editor is within the game*, however it will likely be stripped from the release build.

An editor under development for my Sell-a-Game Challenge.

I have been wondering quite a bit whether or not I should implement undo/redo.  I estimate it will take 3x or so longer to maintain the actions, but I also believe it will save time when designing/developing more tracks.  I plan on a minimum of 5 tracks, but hope for more than that.

Tonight I’ve started by writing this post, soon I will begin working on building the actual track from the nodes above.  I am hoping that doesn’t take me all night.  I want to do more than just that, but at this time I have nothing else planned, as I can’t think what comes next.

*Although it is within game, I have an EditorFramework that acts as an external editor; giving me advantages of a professional looking interface, menus and more.

A few hours later. . .

Well, I did manage to get somewhere tonight.  Even further than just getting the track surface built from the nodes.  Although, I didn’t get the track textured, yet, I did manage to build it quickly.  Also I sent it off to a partner of mine, and fixed several small editor ‘issues’.  Added saving/loading of editor settings for convenience , undo/redo still fully working.  (Redo for the move action was previously broke!)  Here is a small image of the track being built from the nodes:

A track being built from the nodes!