I, Game Maker: 2008 in Review

As 2008 is coming to a close I wanted to take a moment to summarize what I have done this year to become a better game maker.

Start a blog about making games

I started this blog back in September and have combined Box2D, Lua, OpenSteer into the PopCap Framework to create a game play prototyping engine. Lots of this work is half done and not exposed to Lua but the beginnings are there. In 2009 I am going to develop the asteroids like framework more and then look at posting the code and continuing on from there.

First pass at vector art

First pass at vector art

Play games, write break downs

As I play games I am going to strive to write a bit of a design breakdown for each of them. In 2008 I have a bit of a back log where I don’t have notes, but here are the games I finished (made it through the storyline) in 2008 in ranked order by how much I enjoyed them:

  1. God of War: Chains of Olympus (PSP) – Amazing accomplishment on the PSP. I am shocked that this game is getting snubbed for PSP game of the year awards as it is a shockingly good experience executed superbly.
  2. Uncharted: Drake’s Fortune (PS3) – I was surprised by how taken I was with Uncharted. Great story and something a little new rather than just running and shooting. Brilliantly crafted.
  3. Syphon Filter: Logans Shadow (PSP) – Precise shooting on one of the most difficult control platforms. This shooting experience was so tight it makes me feel like I’m drunk playing Gears of War 2. Best combination of stealth shooting and action I have played.
  4. Call of Duty 4: Modern Combat (360) – I think most people love this game for Multi-player and I only played through the single player campaign which was also VERY solid. This game made me think of a new rule of “variety”. It offers three variations (Nuke Crawl Out Moment, Sniper Level and Shooting from the air) that give distinct different play experiences and make the entire experience more memorable. Brilliant and without that it would have been average for me.
  5. Crysis (PC) – Beautiful. Even though the game didn’t hold me completely this was simply beautiful and made me enjoy owning a PC again. I’m sad it didn’t sell better and I think part of this was due to over complexity in what you have to manage for a shooter. Gears simplified for the mainstream and Crysis was complicated and therefore less accessible (not just for hardware reasons!).
  6. Gears of War 2 (360)See my break down. A very good game.
  7. Bioshock (360)See my break down, love the design but the game didn’t capture me.
  8. Half-Life 2: Episode One (PC) – I’m thinking back on this and ultimately I felt this was a forgetable experience even though I had fun playing it through. Ending was weak and it felt like the reverse of the Half-Life 2 experience (weapon reveal in reverse).
  9. Turok (360) – Pluses: Dinosaurs, Grenades, Knives. Minuses: Uneven difficulty, uneven art quality.

Read up on games

The great thing about games is that even fiction books help! This wasn’t really a year for fiction for me and therefore I thought some of the books I have read might be interesting since most are somewhat game related. These are in order of when I read them.

  1. Painless Project Management with FogBugZ – This is a really good summary book of one of the most common sense, idiot proof and simple task/bug management systems around. If you like the keep it simple stupid mantra, FogBugZ and this book are a great combo.
  2. Zen of Code Optimization – I’m actually reading the Graphics Black Book but it is so big that I had to break out the completion of code optimization into one part. This book is ancient and I don’t think it is relevant to anyone but those of us that loved the ModeX days. Abrash is talented writer and if you are interested in assembly optimization…this is a classic.
  3. Programming in Lua – I wanted to learn a “glue” language and lua seemed like the best choice. I have read the book but I have not learned the language yet. I have to use this more and go over the book again. I think this book is well worth reading and Lua is a beautifully simple language that leverages its own strengths to provide major functionality in a small package. RECOMMENDED.
  4. Simplexity – I got this one on a whim and I think it is entertaining and barely applicable to gaming in that I think they are examples of simplexity. Games are “simple” simulations of complex game elements as well as being complicated if you break down everything under the hood. Since I’m striving to make making games simple, this book was interesting. Only for the science lovers out there.
  5. The Last Lecture – When I was 4 years old I wanted to become a professional video game programmer because of Atari 2600 and games like Yars Revenge and Phoenix. This book made me think back on what I really got into the games industry for and was a huge inspiration for this blog. I think everyone will be inspired by this one: HIGHLY RECOMMENDED.
  6. Droidmaker – I had the opportunity to see the author present this at a Siggraph event in Vancouver (and got my book signed!) with Dr. Alvy Ray Smith. The presentation shocked me in how little I knew of George Lucas’ impact on digital film making and games. I mean…I knew about his involvement in many aspects of the business, but I didn’t realize he was the catalyst for so many things. I thought he got involved AFTER the ground work had been layed rather than fostering an environment for the things to happen. For anyone that was influenced by Star Wars and wants to know how things like Pixar, Lucas Arts and THX are related this is a fascinating read. HIGHLY RECOMMENDED.

Movies and TV

I’m not going to bore you with a movie list. Instead I am going to say that I have in the last year studied the impact of having a child on my movie watching abilities and this statistic may interest some. In 2007 I watched 90 and in 2008 I watched 52. The scary thing in these numbers is that I count a season of TV as one movie and I watched way more of those in 2007. So I would say having a new born cut my TV time in half. It was well worth the trade off!
For those picky about details, I would say the best two movies I saw this year were The Dark Knight and Ironman. No real surprise!

Onward to 2009

Overall this has been a good year for getting hobby coding back into my life and I plan on really getting this going in 2009!

Posted in Game Breakdowns, Industry Commentary, Uncategorized | Tagged | Leave a comment

Gears of War 2

I finally finished the single player story campaign for Gears of War 2. I did enjoy the experience but it wasn’t the revelation that the first Gears of War provided me. With Gears one, I saw the simplification of a shooter to the main stream audience. Taking away behaviors like jump and focusing on cover and shooting mechanics leveled the playing field and played differently than other popular products. Rather than simplification or innovation Gears 2 followed the bigger, badder, higher body count sequel formula with a healthy dose of doubling down on what people liked in Gears one.

SPOILERS PAST THIS POINT

Gears 2

What Gears 2 did right

  1. More Chainsaw – More variety and bosses where this excellent feature is required. Who doesn’t love the chainsaw!?
  2. Delivering on EVERYTHING in Gears – I don’t think there is a creature that you don’t encounter and kick the crap out of or play as that was in Gears one. The campaign starts strong with massive battles that go from Gears one skirmishes and scale up to actual war/battle encounters.
  3. Epic scale/scope – It felt like half the game was massive battles rather than just being a foot soldier. Being a Brumak or riding on Reaver’s was much better than riding on Gear hardware. The environments and combat zones followed what I call the “anti-claustrophobia rule” of art design. The more limited the play path, the more wide open the visual around the character. Gears one pulled this off but Gears 2 REALLY sells the vistas and cavernous interiors.
  4. Variety IS the spice of life – As mentioned before, the variety in this game is MUCH more than in Gears. From riding creatures to several unique boss fights and over 10 weapons in between means you are constantly toying with new death dealing methods.
  5. Cole…man I love that guys lines – The rest of the story I didn’t really care for (the Marcus/Father story line might bare fruit in the next game), but Cole is a constant fan pleaser. Every rant that Cole went on was delivered and written so well that it brought a smile to my face every time.
  6. Guns and Audio – For a shooter, these guys get every experience of firing a weapon to feel great. Audio and visual effects from gunfire are awesome. Overall the musical score is great as well, if not at a Halo level.

What Gears 2 got wrong

  1. Final Boss was too easy – I think they must have overreacted to the feedback that the final battle in Gears one was to hard. The ending in Gears 2 was a real let down since there is not really a conclusion based on your characters actions and the fight itself was incredibly easy.
  2. Heavy story telling – I applaud the attempt at both war drama story telling and a personal story arc with the characters in your squad and they ALMOST got the story together. I’m sure this is heavily a personal taste area for the story but I think they didn’t quite pull it off so the story felt awkward and grander than the delivery mechanisms. Gears is at its best as a first person meat grinder!
  3. Setting up for a sequel instead of delivering on the present – If you look at the story in gears it was a “follow the bomb” through a bunch of misadventures which borderlined on ridiculous in my opinion. Although I think Gears 2 improved on this, it pulls all of its punches by setting up for a showdown with the Locust queen and never delivers. BOO!

Breakdown vs. Commentary
After playing Gears, I didn’t really feel like breaking down anything in the sequel as a game design element. If anything I will return to the innovations in gears in a future post as I believe it brought more to the table.

Conclusion
Overall Gears 2 was a great epic adventure shooter that delivered much more of the same as gears. If you want your sequels bigger and badder this game delivers. However, if you are like me and want to be taken through a character progression in terms of skills and gameplay moments, the GOW acronym really rests with God Of War.

Posted in Game Breakdowns, Industry Commentary | Tagged , | 1 Comment

Input controls design and defines your audience

The largest barrier to entry in games is control. People sometimes take for granted the years of experience they may have behind a controller, keyboard or mouse and an interface convention breaker like Wii really helps get more people on board. If input is proven as a huge limiting factor for hitting an audience then you have to be as careful as possible that your input choices map to the audience range you are targeting.

starscapeMy input system has started being largely based on the input in a game like Starscape (great indie game you should check out either on steam or their site). This hasn’t been an active decision, just the quickest method for me to get the ship flying around and shooting rocks. But now that my game is off the ground what input methods “should” I consider and how would this affect the game and its future growth ability? I see three options: keyboard controls, mouse+keyboard and predominantly mouse with hot keys.

starcontrol2If I go with the method I currently have, I believe that I am targeting people that are fairly technically inclined with the keyboard and are used to driving a character with at least 5 buttons. I would have the left/right movment, acceleration and deceleration as well as some kind of firing button. The games that I would be similar to that I enjoy are Star Control II (one of the best games of all time and you can get an open source version here), Starscape, Crusader and many more. I find that this method is somewhat easy to learn but I wouldn’t consider it a casual friendly interface and I would say that it tends to fit in the action/skill category where people need to learn how to fly each potential ship that the game would have. The melee mode in Star Control II would be the sort of target for my design if I went in this direction. The controls would allow for me to make unique flight characteristics and weapons firing modes as the core of the experience. One thing to note is that if I was mixing any other game experience in like an adventure or navigation component, I would most likely still be using the mouse.

abuseOption two is the combination of both. The most interesting combinations of this for me in the indie gaming community are Crimsonland and Alien Shooter. Both of these games require the movement from the keyboard and shooting with the mouse. Abuse was probably the first game I recall playing like this and it was a great ambidextrous combination of killing might. For me this method of dealing death has some sort of arcadey rewarding feeling and it maps to a gamepad fairly well. So even though there may be more going on, it can feel more intuitive when learned and offers greater control over shooting direction with minimal additional “buttons” to learn. This combination of controls would make me push my game in the firing upgrades as the primary growth avenue and movement as the secondary. I would want more enemies to target.

ScavengerFinally there is the most casual approach of all. If you stick to the ethos of mouse control (preferably with it being possible to use just one button) then you get into the realm of games like Diablo or even RTS like control. The advantage here is that you clearly have a design rule that you can do everything with the mouse and it makes sure that almost anyone that uses a computer should be able to at least play your game. You can also layer in more hotkeys or movement controls if you want to ala Scavenger (another great indie game) or even like Diablo. If I went this route, there would be less arcade action and it would be more about target selection and upgrades to your ship/character.

Thinking of input decisions is making me start to think of my target audience and the experience I want to create. The funny thing for me is that in my game history the games that have stuck with me the longest offer multiple mechanics, but typically keep the interface to them the same (Star Control II, X-Com, Starscape and many more). Currently I am leaning towards trying to implement a mouse only version only because it would be the most accessible and “pure” design but I think it would take the game away from action. I will let you know what I decide and that might be by trying them all!

Posted in Game Design | Tagged , , , | 1 Comment

A dash of art goes a long way…

First pass at vector art

First pass at vector art

Last post I was talking about contracting out the art and today the need to make some artwork and put it in hit me. So rather than drawing lines my code is now drawing images. Now that I have some artwork in I want to put in some more polishes and game like functionality on my asteroids clone before moving onto another game type which is a good thing since I usually leave stuff unfinished.

With images rendering I now have some interesting choices to make. What is next?

  • Clean up code to post?
  • Look through legal contracts to see what I can post?
  • Add in particles/explosions
  • Add in scoring?
  • Convert data driven format to be run by lua rather than XML?

I’ll let you know what I decide. Today I’m leaning more towards fun with making a game. Who knows what tomorrow will bring.

Posted in Technical, Uncategorized | Tagged | Leave a comment

Art and Audio contracting looks easier than code and design

IndieGame, a great place to find contracts:

In order to build a game you need to be good at lots of things. One of the things I was originally planning to do was try and do everything myself here at this site. With the progress that I am making on the code (or lack there of) I started to look at some of the Art portfolio’s on IndieGamer.com. Looking at these has got me excited that for a few thousand dollars you can get some really professional looking art. I wouldn’t say that it is cutting edge “next generation” but it is definitely professional looking and competitive in the casual gaming market. The biggest benefit I got reading through the forums was finding out that art and audio are more readily available than coding contracts. Since this matches with my own skill set this is a “good thing” in that my weakest areas can be compensated with cash.

The lack of contracts posted for gaming or design in the indie space made me wonder if most projects are actually programmer driven and if so, how different of a creative space it is vs. mainstream games that seem to be more design driven. Perhaps this is why I am so entertained by Indie games?

After finding that information, it made me feel that I was on the right path with just getting together a tool set for prototyping games and got me excited about working on the engine again. Which leads me to another progress update.

Where am I supposed to be at?

  • Add in Steering library code and expose engine to lua (Nov 16-23rd)

In my previous planning post I laid out my next objectives as exposing the engine to Lua and getting the Open Steer library into the project by November 23rd. I’m a little behind on that in two ways. First off it is the 30th and secondly I have decided not expose everything to Lua because of the pkg file work involved. Where I am at right now is simply having all of the libraries (Box2D, Lua, SexyAppFramework/Popcap and OpenSteer) compiling together under Visual Studio Express 2005.

Next up is supposed to be:

  • Clean up code for posting, read through various licenses to determine restrictions on posting (Nov 30th-Dec 7th)

I am interested in looking at this soon but I think the next post will still be about engine progress rather than license research. I want my demo to be a little more playable before I post the code and therefore the license stuff isn’t relevant until I am ready to post. I am still very excited that I might post the code before the new year!

Posted in Game Design, Industry Commentary, Technical | Tagged | Leave a comment

Visible Progress that I’m not proud of…

One of the main things I am trying to get over by blogging is the fear of showing incremental or in progress work that I find embarassing. Why? Because otherwise I don’t know if I would ever post since I’m never happy with how things go. Posting this stuff makes me want to improve it more and I hope that actually gets more work done.

As I alluded to in my previous post, I found a way to generate stills out of a recorded play session. That gave me the idea to post the first movie of my silly little test game (based on asteroids). The movie is especially dull for the first few seconds and plays in sloooooowwww motion because my game is outputting 100fps and I encoded at 30fps because I was to lazy to find the frame rate options. With those caveats out of the way, enjoy:

Posted in Uncategorized | Tagged | 1 Comment

Profit, Film vs. Games and a progress report

I have three thing I would like to talk about today: Profit, Film vs. Games and a progress report.

Profit
There was an article claiming that roughly 4% of games make money that I saw linked from Bluesnews. That doesn’t sound like very good odds! I’m still interested in pursuing this someday and I have a great respect for people that are giving this industry a go on their own. A friend of mine is giving the indie thing a go and he just crossed a threshold that would scare me: he is spending money (not just time) on his game and hiring an artist! He has a great blog over at Streaming Colour and I really do think he will be in the 4% so join me in wishing him luck.

Note to self: With a 4% chance at making money, you better be making something you love!

Film vs. Games
Streaming colour linked to a blog with a link to an article about making games that touch people. The quote pulled out was this:

“Perhaps the problem is that we so deeply rely on reference points like film, which require stories progressing over time, when we could be referring to things like sculpture or painting, which require no timescale and people find just as moving.”\

Personally I have found arguments about these kinds of things are of the “everyone is right” variety. My take on it is that a game designers intent for a game can be broken into two categories: Immersion based and mechanic based.

Immersion based design – These are games where there is explicity a story or an experience that the designer wants to take the player through and they work very much like a movie where you have to think of how the audience will react to your film/game and you have to use all your creative tools to guide the player to do what you want them to. I think that Valve is on the forefront of studying players and guiding them through this.
Mechanic based design – Give the users a fun game experience and let them create the story around the experience. I think this is the method that most “games that could be board games” fall into. The focus of the designer is on a great set of rules and you can leave the “story of play” to the player. Puzzle games I think fall into this category.
To me the block buster games are the ones that sort of combine the two. This broad categorization is enough for me to pull the elements out of games that are explicitly there for immersion vs. what is there for the actual game mechanics. If you don’t follow or don’t agree with my division, please let me know and I will post some more concrete examples, otherwise I have to get back to work!

Progress
So I was hoping to have my game exposed to lua through tolua++ by tomorrow night. I have had some major progress by getting lua integrated into my game. I am reading configuration variables and calling an update function in my main loop now. Next steps are to figure out how to use tolua++ the most effectively for the time I have. I ran into a snag with this.
tolua++ requires a cleaned up .pkg file that contains a stripped version of what you want to expose to lua. Since I’m all about the biggest bang for the buck with the least effort, I think that I am going to expose things on an as needed basis in my pkg files so I’m going to let tolua++ sit while I refactor my main loop. Path of least resistance.

I also found a very cool feature with Popcap that you can pass -record on the commandline, play your game then run it again with -play and it plays the experience back. I may use lua to toss in a screenshot toggle so I can make a video of the play and post it as a gif! I’ll let you know how that goes.

Posted in Game Design, Industry Commentary, Technical | Tagged | 3 Comments

Flash Games and the Apple App Store

I was saddened yesterday when I found out that a site I follow (PowerOf2Games) is never going to ship anything. It seems that more and more people that are trying to make a go of console game development or even hand held systems aren’t making money. It has made me wonder what my long term target should be for both my engine and for my own professional development. If there isn’t money in console download games and handheld, other than PC where can indie developers turn?

I personally believe that you should “follow what you find fun” so I thought about some of what I like to play. I’m a little addicted to a flash based tower defense game called Xeno Tactics. These games have a very low cost of entry and really provide a great experience. I also like the pop-cap free online to play games like bookworm and bookworm adventures. I think the combination of an online preview plus being able to download and play and enhanced version offline is a powerful business model.

At some point I am going to have to pick up and learn how to make web based programs, but currently that would be categorized as a technical distraction. In the meantime, anyone know of any articles on web/indie based business articles? I think there is a great deal of money being made in the app store right now, but can it sustain? There seems to be a FLOOD of casual games out there on PC and it almost looks like the portal sites are as “lock and key” as cell phone companies for getting new product out there. Sort of looks like there isn’t an easy hit a market formula which goes back to the make something you want to play idea.

On a design side I think that these follow the sort of “Diablo rule of simplicity” where you can do anything with the click of a mouse button. So many really good games have an interface that boils down to pointing and clicking. Restricts the design but increases accessiblity.

While I am cooking away on a prototype engine platform I’m planning on writing out a list of games that I like that I think I could actually make something like. Stay tuned for that.

Posted in Game Design, Industry Commentary | Tagged | 1 Comment

Scripted Lua Exposure With toLua++

Last week I talked about adding Lua exposure to the engine. I am currently thinking of going a step further and having my game update be written primarily in Lua and having all supporting functionality in C. That is the current theory, but since I have never done that before I reserve the right to change my mind. In order to make that happen I need to do a few things

  1. Find a way of automating C/C++ exposure to Lua
  2. Add in a flow that allows me to initialize and update the “lua world” of the game
  3. Add a place to clean this up

1. Automating C/C++ Lua exposure
What options? Which should I use?
Well based on my new attitude of just get things done, I did a quick search for Lua and Box2D and it looks like someone already used tolua++ to expose Box2D to lua. In my new non-scientific evaluation mentality that is “good enough for me” and I will attempt to do the same. One small catch though…I actually have to download and install SCons to make tolua++. I appreciate sites with compiled binaries but I will have to chalk this one up to learning. So what should be a simple download and use turns into a half hour of downloading applications:

  • Download tolua++ source (needs SCons to build)
  • Download and install python (needed for SCons)
  • Download and install SCons

For me I thought this would really work after this but it turns out that for me the scons version 1.1.0 windows installer doesn’t actually create a scons executable but instead just installs the scripts for python. I love the internet because someone else ran into this and pointed out I just need python and the scripts in my path. Great! What a short list:

  1. Setup vsvars32
  2. Add Python and Python scripts to path
  3. Add lua to INCLUDE
  4. Add lua to LIBPATH
  5. No lua.lib file or lualib.lib file. I was about to dig into this when I found the proj file! I gave up on getting it to compile from the commandline. This was just adding the lua path and renaming the lib in the project settings and I was good to go. Had I noticed this it would have saved me a 1/2 hour.

Now I am just ready to try and use it and I am out of time. So at the end of the day, again rather than writing code I end up just downloading and installing applications in preparation of writing code! Knowing that this will save hundreds to thousands of functions being generated makes it all worthwhile.

I’m also finding that link times on my laptop are in the order of minutes. I also hope that this can help my turn around time or I may have to look at buying a new laptop (or looking at my compiler settings). With the rate thigns are going it is going to be challenging to hit my goal of getting lua integrated, but there is no harm in trying.

On the bright side, tonights endeavor did move my engine one small step forward. When I get Lua up and running I’ll post a screenshot.

Posted in Technical | Tagged , | Leave a comment

Sickness, recovery and technical distractions force a plan

This last week I missed my minimum goal of posting once a week on Sunday because my entire family was out of commission with the flu. Being bed ridden gave me some time to sit and think about what I would write. The thing that has become very clear to me about my own character is that I am very easily distracted by technology. In the last week alone I have wanted to do all of the following:

  • Article on Steering Behaviors
  • Finish build script and test build system times against each other
  • Read up on iPod development
  • Write an optimized fluid simulation function
  • Do a study based on this blog of controller lag
  • SPU optimization
  • Cross platform compiling

There isn’t anything “wrong” with all the things that I want to write and learn about and they all slowly work towards making a game. The issue is that I feel that I am to distracted by short term interest projects rather than focusing in on long term goals for my blog and more importantly, for the game making tools and advice that I ultimately want my blog to force me to write. I’m spending 90% of my time writing, 9% thinking of what I could write on and 1% doing any real coding. With only an hour a week, that is only a couple of minutes of code!

How do I clear this up? Based on this great article that took four years to build an engine, I’m going to try and set some realistic goals and deliverables to drive me to completing game project work rather than getting distracted by technical “candy” along the way. The goal of this site for me is to be able to make a game from top to bottom, not to push the boundaries of engineering. It also isn’t to write my own engine and learn. I want to make a game as efficiently as possible in terms of time to delivery.

So what are the high level goals?

  • Step 1: Get an open source 2d game engine posted as fast as possible with a small example prototype
  • Step 2: Prototype a few games concepts, based on this plan a full game
  • Step 3: Build a full game

Since I don’t believe in planning more than a few months out, I’m going to only break down Step 1 into more specific goals which I plan on having as my blog posts in the weeks to come.

  • Add in Steering library code and expose engine to lua (Nov 16-23rd)
  • Clean up code for posting, read through various licenses to determine restrictions on posting (Nov 30th-Dec 7th)
  • Probably my only chance before the new year to post engine – Stretch goal to have 0.1 version out at this time (Dec 14th)
  • Creating an interesting demo of the engine technology (Christmas/January)
  • Post first version of engine that may be “usable” (February 1st)
  • Evaluate if Step 1 has been a success (Summer 09)

So what happens if I have stray thoughts in the next three months? Either I shut myself up and focus on the above, or I spend extra time to put ideas down that excite me. I have set some aggressive goals for myself, lets see what I can do!

A sad example of a technical distraction is that I spent about a 1/2 hour trying to get the board and app classes out of the Sexy namespace and into my own. At the end of the day, does it really matter? Path of least resistance is to keep it “Sexy”. Revert.

Posted in Technical, Uncategorized | Tagged | 2 Comments