If you haven’t played See the Light, check it out on the Xbox Live Marketplace. There’s a free trial, and it only costs $1 anyhow, which is just as good as free.
See the Light (StL) was my “first” XNA game. I put first in quotes because it was the first I finished, but Word Duelist and Mr. Oliver Penguin (unreleased) had already seen significant progress before StL was ever even conceived.
StL was developed as a fluke. I had just lost my job and was prototyping ideas; I was making progress on the basis for Zombies Need Love Too, a small zombie puzzle game, before I decided that that game was turning out to be rubbish. The general gameplay mechanics weren’t coming together well, and although I still adore the concept, I decided to scrap it in favor of starting something fresh.
Zombies Need love Too wasn’t a complete waste. Because of it, I already had a level editor and some code suitable for an item placement style puzzle game in place, so deviating from that seemed natural. I started hacking around with with light manipulation, and StL developed naturally from there. A little over two months later and I had a game.
Before I get into the “What Went Right” and “What Went Wrong,” I feel like I should note that StL is not a success by any external definition of the word. It’s making very little money, and its ratings are sitting firmly around the average marker. Still, I liked the final product, and as a learning experience I feel it’s worth talking about. So here we go.
What Went Right
The Right Tool
I’ll lay it out right here: the tile editors available online are all less than ideal. They are each lacking in one crucial feature or another; how 20+ years of tile-based games hasn’t pushed the technology to be perfected is beyond me, but perfect it ain’t. I recognized this early on and said to myself, “I can make something better in 3 days.” Well, that wasn’t strictly true - the tile editor I created (in 3 days) is a mess of spaghetti code and has a few bugs, but it has every feature I want and works pretty well.
More importantly, since the tool was mine, it was easy to modify the code when I recognized an absolute need for rapid iteration. When creating/testing levels, especially for a puzzle game, it is of paramount importance that you be able to make small changes and instantly see results lest iteration time sucks away your life. This was not a hard feature to add - in my case just allowing the level file to be auto-copied to the right directory and having a little in-game code to reload it - but it was a feature that wouldn’t be so easy with the tools out there.
Free fonts. Free SFX. Free music. Free UI images. Free is a word that characterizes much of this game’s content. I don’t have competency in a lot of areas necessary to make a game, but I’ll be damned if that’s going to stop me. And I’m not sure there’s a problem there.
Personally, I see little need to ever hire an SFX person for an indie game. There are so many free SFX (or SFX libraries for purchase) floating around the internet that putting a person on it is a waste of time and money. Nobody is going to innovate on UI clicks. Gun shots are about as generic sounding as they come, and little misc sounds are a lot more common than you think. More specialized SFX might need some love, but I’m not making audio based games here, so that hasn’t been an issue. The same is true for fonts. There’s even a lot of music if you know where to look, though you have to be careful to keep your game from sounding like all the others.
I’ve developed a lot of code over the years. Zach has seen me rewrite my ‘core’ classes quite frequently to meet new needs/new coding paradigms. It turns out that framework has become pretty flexible. I was able to put a lot together quickly with very few bugs, and I had very little trouble expanding even for unplanned features. And at the end, the game passed peer review on its first try, which even I didn’t expect. Not bad.
This game wouldn’t exist if I simply jumped into full development for Zombies Need Love Too, and ZNLT wouldn’t have been that good. StL was far better by comparison. It was hard, but sometimes you just have to scrap something until it can be done right. I think ZNLT will resurface in a different form some day.
What Went Wrong
I don’t know how to market a game like this. I sent word out to every site I could find that reviews XBLIG games. It’s even gotten a couple favorable reviews. But in the end, it’s still selling pretty poorly. Sales virtually dropped off once it was removed from the New Arrivals list. Maybe a trailer would help? Promoting on popular game dev channels? I considered making a website, but then I have to promote the site enough that it gets hits. Even this site, which has been around for upward of 5 years, still doesn’t get many visitors. Short of paying money for advertising, I just don’t know.
My UI code is rubbish, and making UI modifications took entirely too much time. It’s not data-driven and very little of it is automatic, leaving me with a *lot* of repetitious code uglying the code base. This point will resurface in the Word Duelist postmortem too. UI creation took up a lot more than I expected, and it’s very important to get this code right early on or you’ll be fighting with it forever.
No Early Feedback
Three people saw this game before its release: me, Ricky, and Laura. Ricky only saw the early prototype very briefly, leaving Laura as the primary feedback channel. There are some bits that people have critiqued which could have been caught earlier - the tutorial could use a bit of love (I stressed endlessly over that tutorial), the controls could use a little improvement, and some of the color selection is less than ideal on some TVs. The XNA Creator’s Club has a Playtest mechanism specifically for getting feedback from people, but I admittedly didn’t utilize it, and that was probably a mistake.
Making Puzzles is Hard
I underestimated how much time it would take to make good levels. Back when Zach and I were making Penguin Push, the general level making strategy was “draw something random and try to beat it,” and that took us quite a bit of time to make 30 levels. StL has 64 levels and a lot more variety than Penguin Push.
My mind doesn’t just see tricky puzzles. I basically had to play around - drawing random things - and if I couldn’t beat the level after some amount of time, I needed to give the user a little more slack. When you’re making easy levels this process doesn’t turn out so bad, but when you want to make more challenging levels this becomes very difficult to get right. And very time consuming.
It was hard-fought, but as I moved on I would discover little tricks that players could employ to get past certain obstacles, and I could build on these to progressively make levels more complex. Having a good idea of these kinds of things during the design would probably have made development go a bit smoother and would have allowed for more levels in the same amount of time. 64 was always the ‘plan’ - I was hoping for more if possible, but after 64 I was pretty much tapped.
I have a tendency toward making small, tight puzzle games, so See the Light was a natural fit for my first XNA game. Development was mostly smooth, albeit with a fair share of hiccups along the way. I’m pleased with the final result, and I expect future games will benefit from the experiences gained here.