I recently bought a wired XBox 360 controller to use with my Steam games on my PC. Â It works very nicely, so of course, I had to use it in my own code eventually.
Here’s the first place I’m using it. Â I made a little library called XController that wraps XInput in a class. Â It makes the interface to the controller a lot friendlier in C++ and does not require you to include the dreaded windows.h (or XInput.h for that matter).
Next, I might try to update StickyInput to use a similar interface. Â Then I could have support for these controllers in all of my games.
You can find XController on Google Code!
I missed it by a few days, but Merry Christmas, nonetheless. Â It’s not really about the day itself, right?
Tonight is New Year’s Eve. Â I guess that means there won’t be another update for either NFont or Sprig this year! Â Regardless, it’s been a good 2011 around here. Â Lots of changes for our family and lots of opportunities that we’re really thankful for. Â Props to Samaritan’s Purse for a great way to give back and show our kids the way it’s done.
I hope you had a great Christmas and have fun in 2012. Â Here’s hoping for some game releases from Blue Dinosaurs…
It’s been a while since NFont was updated. Â While working on GigaSun Jet, I had added a couple of very useful features. Â It seems like it’s time to show NFont some official love.
I started working on the new version yesterday, but I’m nearly done already. Â All the hard work was done before. Â I will be pushing the version number up to 3.0.0 due to some serious changes to the API. Â Most importantly, NFont now controls the surfaces that you give to it. Â It will take care of freeing the memory.
Other nice things should be apparent from this screenshot:
As I’m working on GigaSun Jet’s first campaign story, I had some thoughts about writing stories that I felt like jotting down. Â I’ve decided to treat my time on the story as if I’m writing a novel. Â It really could end up being a real novel (I’m at about 10% of a short novel now, 6000/60000 words) and then I would have some interesting marketing options. Â I wish I could start talking about my story here, but I’ve promised myself that I’d wait at least a month so I could get a solid start.
Writing a story and writing a game are fun creative tasks, but they’re also full of frustration. Â One specific form of frustration that is common to both is simply getting started. Â Without some sort of structure, getting started can be very tough.
This frustration is a symptom of a problem with many creative endeavors: Too much freedom.  That’s why Ludum Dare works so well.  It gives you some restrictions (time and theme, mostly) that focus you into a creative frenzy for a small product.  There are writing competitions that work in the same way, but I’m not quite part of that big community yet.
Of course, books and games have a few major differences that change how well certain limitations work. Â The way that stories are communicated is simply through a collection of specially chosen words. Â There are even fewer natural limitations than a game (though games can have true randomness and procedural content). Â A game has to be logically consistent to some degree since the structure is based upon logic. Â Words in stories, on the other hand, can easily conjure up ideas that can not exist in any reality (i.e. irrational concepts, logical fallacies). Â Sometimes, the author can hide the inconsistencies well enough that they don’t interfere with the story. Â I won’t get into that any further yet. Â That’s a big can o’ worms.
So, my recommendation for you… Â If you’re doing something creative, try to brainstorm up some fun restrictions and limitations. Â That will help you focus instead of reading silly blogs like this one when you should be working.
I’m starting off this month working aggressively on the story for GigaSun Jet. Â It also happens to be National Novel Writing Month. Â I’m not going to officially participate, but the feeling is still the same. Â My “novel” might be half novel, half script and I won’t be crunching to hit 50k words (which sounds crazy!!! Ahhh!!!). Â I’ll just be taking what I already have so far and deepening, expanding, and directing it.
I’m excited about it all. Â I have a great plan for the point of the story and a very high level plot. Â Even just today I made good progress on the ending (that’s where I’m supposed to start, right?).
Concerning the story… Â I’m trying to make it as unexpected yet natural as possible. Â I’ve never read this kind of story and I’ve never played a game which breaks out of the stereotypes of the meaning. Â One big problem lies in how I can write about the story here… Â How much should I discuss? Â Surely I can’t give away the meaning, since that’s vital to the ending. Â We’ll see how I do, either way!
We’re just coming back from a surprisingly widespread power outage around here, and I actually managed to get things done.  This was a big thing, too.
The new GigaSun Jet level editor is done, for now. Â ”New” because I had another one I made long ago. Â ”For now” because it’s far from polished and could be plenty more intuitive.
The old editor was a stand-alone application I started a couple of years ago. Â It could fill map tiles with walls, ships, or turrets. Â That’s basically it. Â Well, it could edit objectives in a limited way, too. Â It was a serious pain to keep the level editor up to date because it used a completely separate codebase. Â It was not much fun to add new features because GSJ was a moving target back then.
Now, I’ve finally cut loose the old editor. Â I mentioned it before, and now it’s gone for good. Â The new one can do way more (actually, just about everything one could do by hand-editing the map files… but now you can see it!). Â There’s also an interesting twist to this accomplishment. Â I used some code from a nearly dead project to try to get a flexible system of buttons in the level editor GUI. Â I struggled with the code for a while, hunting down the logic errors and memory issues until I found it: a way to make it work just as intended. Â To make a long, technical story short, I improved the code considerably and refined its focus so much that it might lead to a revival of that old project (err – when I have the time).
Beside all that, the important point remains that the story can now begin being expressed in the missions. Â What is the story? Â Well stick around and you’re sure to hear.
Hey, I just wanted to point you to gamedesigncenter.org, in case you haven’t heard about it yet. Â If you’re an aspiring game designer, you want to make games in your spare time, or you already make games, I think it’s worth a visit and a bookmark. Â I don’t know exactly what will be happening over there, but it’s building up to be another great resource for game design tips.
I just wanted to point out that the 2012 IGF Pirate Kart has been released.  It’s not very piratey, but it has tons (> 300) of free (and legal) little games in it.  Beware, however, since several games are extremely inappropriate.  There’s a review at Rock, Paper, Shotgun that mentions a few of the ones to avoid.
Also, there was a humorous little Twitter meme going on earlier between some game developers, called #simplegames. Â Here are some of my favorites:
@JonBaker – Farmville: troll friends with incessant updates
@S0phieH -Â Gran Turismo: buy fastest car, use walls to turn.
@JonBaker -Â Tecmo Super Bowl: Touchdown Bo Jackson
@benhowgill – Call of Duty: Point and Click before other players do the same to you.
@Freakcion -Portal 2 : put holes in white surfaces, jump through them to win
But I better not get carried away. Â That does remind me, though, to mention the ways you can keep updated with the news here at Blue Dino Code.
My personally preferred method is RSS. Â There is an RSS feed for the News page (see orange RSS icon?). Â Subscribe to that in your favorite RSS reader (I use Google Reader).
You can also keep up with Twitter. Â You will see links to my new posts if you keep an eye on @GrimFang4.
And the last way is Facebook. Â Well, I can’t help you much here if I don’t really know you… Â But if we are actually friends, then you might see my new posts there.
I’ll probably do something with Google+ eventually, but not right now. Â It is better for keeping personal friends and acquaintances separate. Â Anyhow, see ya around!
I’ve gotten through those interfaces in GigaSun Jet that I mentioned a couple posts ago. Â The game now buffers its level data and loads from that instead of straight from XML objects. Â Since this buffer can now save its data back to XML, this has allowed me to start actual work on the in-game level editor.
I must say I’m pleased with how it’s going. Â I made the old level editor long ago as a stand-alone project. Â It is tile-based and pretty simple (and pretty ugly). Â The menus are not very well thought out, but they’re functional. Â Plus, the last time I touched the level editor code was to merge it with the main GigaSun Jet project.
After all the work I did to refactor the saving and loading, I knew that I needed to rewrite the level editor and make it fit the game better. Â What better way is there than to build it into the game itself? Â It’s been a long time coming, because I need more levels!
When playing a mission, you can press the special level edit key which pauses the game, clears away all the indicator clutter, and presents the level editing GUI. Â Just today, I got some of the object data into text input fields and, most importantly, it works. Â It already feels so much better than the old level editor. Â The interface is so much clearer and more intuitive. Â I’m also just using simple lines and shapes to indicate objects and it seems to work well. Â Once I get all of the object data into the GUI and add control to objectives and event triggers, I can just chop off the old editor code for good.
I’ve used Box2D and in-game level editing for two projects now. Â I’m a likin’ it.
There are two approaches to designing a system for game content. Â They are responses to the question: How much of this type of content should be put into a game?
1) Just enough content
2) Tons of content
The choice might seem obvious until you consider the time it takes to create tons of content.  You might make a decision right there and move on.  However, the difference is even deeper than that.  For any given type of content (art, parts, quests, levels, dialog, sound effects, etc.), a game designer has to choose one of these approaches.  It’s such a natural thing to gloss over that many people naively make the choice for most of their systems without even noticing.  ”It can only be done this way” is the subconscious thought.  Crafting a lasting system of content starts with this choice.  Considering the differences and making the right choice for a particular game can lead to things that have never been seen before.