Congratulations on shipping! We may be distant cousins, because aside from anything that takes longer than a weekend, I can't ship a side project for the life of me.
This will hopefully change soon however, as I have been diligently coding a game spending an hour or two almost every morning since September 1st - and it is very very close to completion, and aside from a couple features is completely playable now.
So thank you for the inspiration. I hope to soon join you in the ranks of Enterprise developers who managed to ship a non-trivial piece of entertainment...and then on to the next adventure.
>because aside from anything that takes longer than a weekend, I can't ship a side project for the life of me.
I know what you mean, so don't rule out actually spending 48 hours or a week on a game. Game jams can provide a huge amount of motivation for finishing a game in short time period. The combination of a tight deadline, knowing others are working in parallel, and a guaranteed minimum amount of exposure are highly motivating.
I had a blast with 7drl this year and probably coded more in that week than I ever have in a similar time period.
Drone Invaders is surprisingly addictive - the game play has been highly enjoyable. Congratulations on shipping a really fun game!
Just one minor note: I'm left-handed, but the position of the reload button on the bottom left corner means I either have to stop shooting and move my finger down to reload, or else use my comparatively inept right hand to shoot. Again, it's only a small observation but I thought I'd send it your way for consideration.
Actually, the reload is added to make sure you stop the shooting ;)
But, I also noticed that on tablets you would easily use both hands: one to shoot, other to reload, esp. on 10-inch tablet, where the distance is too great.
I guess I'll have to add a left-handed option to reverse the reload button and wave number.
I've been playing it several times a day since you hit the front page of HN. That's very unusual for me with anything other than puzzle type games. I read your entire blog and that, in part, fuels my interest in the game... but aside from that, it's just a darn fun game. There are a few things I'd do differently, but overall, I'm extremely impressed with it.
> developing your game turns out to be the easy bit. Getting people to buy it ... well that's a whole different kettle of ball games
Getting your story listed on the front page of a site like HN can't hurt!
Less flippantly though: this is a significant problem a lot of people ignore or sometimes simply don't believe. "If you build it they will come" doesn't work if "they" don't actually exist, or you don't get news to them that you have actually built it, or they can't see your's because of the tens or hundreds of similar (or at least not obviously dissimilar: your app might have a key feature the other don't but that is the same problem: getting that message to your audience) apps/games listed on the relevant store.
If you intend to sell something (these are moot points for many personal projects of course, as the audience initially might just be yourself for the sake of learning/practising):
1. Know your audience
2. Make sure your audience actually exists in appropriate scale and isn't already over-served by existing projects
3. Find a way of letting your potential audience know that you exist, preferably a non-spamy way
Points 1 and 2 at least need to be part of your design before you get far into coding otherwise you might spend time on something no one wants
As a developer you need to have frank talk with yourself both before and during development to figure out exactly what the motivation is. Are you writing a game to sell? Or are you writing a game for the fun of writing a game?
In an ideal world the two would be compatible, but ...
For me, well, I'm doing this for fun first, money second. As is obvious from my choice to make an Asteroids clone - highly unlikely that's going mass-market.
So why isn't it free? On the off-chance that some money can be made and I can free myself to do something I enjoy full-time. Just like everyone else I can dream ...
I just released my first app on the Windows 8 App Store the other day, but went about it a little differently. I decided to build the absolute simplest app I could think of – the kind of app that really could be completed in 48 hours.
The goal of this app was to get something into the store. Even if I don’t get any downloads, this app served its purpose for me. Now, I have the whole infrastructure in place for my future apps. I have a checklist of what I need to do. My accounts are all set up. I’ve seen some of the potential bumps in the submission process. Having successfully been through the process once, I don’t have that in my mind as some huge hurdle, which could demotivate me from even starting another app.
Now it’s time to focus on building something that solves a problem that people are willing to pay for.
"Most IT projects fail because of scope-creep, bad estimates and being afraid to ship. Single-developer side-projects are no different."
This is dead on. It's too easy to keep adding more stuff once you start to get momentum, and then your project ends up with such a large surface area of features that it becomes difficult to polish and finish. That's where the fear usually sets in.
Some game feedback: I had a lot of fun playing the first few waves, but the more difficult enemies are really hard to deal with since I'm always flying towards them. If I don't start off on the other side of the screen, I usually die as I fly straight towards them.
I'm guilty of nearly everything you listed at the end - on a single project. I've been working on a WWF/Scrabble type game (with some unique gameplay elements) since early 2012 and it continually gets picked up and put down again. I've ended up building a component-based ui engine behind it, keep adding features, try to pick it up without clear goals or tasks in mind and am probably trying to tackle far more than I should be on my first game.
Thanks for the article and inspiration; it's making me take a step back and re-evaluate my approach a little bit. Congrats on shipping!
I've been up to something similar for the last year or so. Man is there a lot of complexity in a simple turn-based word game than I ever imagined.
I threw together a prototype of the basic gameplay in a weekend but to actually ship something you need user accounts, game history, push notifications, error handling, multiple games per user, game creation, a way to get friends into the app to play with you, screenshots, icons, copy, instructions, game win/loss screens, current game state indicators, transitions, a way to quit a game in progress, a way to nudge a dormant opponent, a massaged dictionary, and that's not even getting to the marketing side of things!
Luckily it's almost ready to go... but along with that comes the anxiety that not only do you need to convince someone to play, you also need them to get a friend to install it as well! (unless you want to program a matchmaking process or AI on top of everything else which comes with its own can of worms).
You're echoing my thoughts exactly. Mine started out as a simple proof of concept using the CS area in Khan Academy and then I took it "offline" to flesh it out. That's when I started running into all of the complications you just mentioned; it really is a daunting task. I'm even struggling with a platform. It's HTML5 Canvas right now which opens up Facebook, and mobile using something like Phonegap, but I'm so inexperienced with both that I didn't think about keeping things responsive for different screen resolutions. Ugh!
I'm happy to hear I'm not the only one bumping into reality, though it definitely sounds like you're further along than I. I'd love to check it out once you've shipped.
There must be a framework for all that stuff? I have the same issue. I'm converting a single-player game I have to a multi-player turn-based game -- and man, there is a lot of stuff to do. And don't forget player ratings and other statistics.
A really good framework for building turn-based games I bet would have a decent market.
I went through an earily similar process for a game I'd been developing on the side. I fell for the trap of building my own engine because I thought it would be a fun challenge. It was, but I ended up spending 90% of the time working on the engine and 10% of the time working on the actual game. I eventually published the app, but I'm admittedly a bit frustrated with the end result. I wish I had just gone with an engine like libgdx earlier on in the process. If I had it probably wouldn't have taken me over a year to come up with a simple 2d game.
Also as it turns out pixel art is much harder than I thought.
2y sounds about right. And your advice about avoiding featuritis is golden (and applies even to fulltime development).
I wrote a game in six weeks while my twins were still needing feeding at midnight and 4am (so I took those shifts and ended up using the 3-4h interlude to play games until I got bored of that, and then write my own). The game was intended for iPhone (but the tools didn't exist, so I worked speculatively.) When the toolchain became available it took me two years of spare time to rebuild the game for iPhone.
If you register the app in iTunesconnect then you have 6 months to submit a binary. That can help focus the mind and get it shipped rather than add one extra feature.
Start small, decide what it is you really want to accomplish, and use a realistic timeline. Things I always forget when starting any (side) project.
I only allow myself an hour or so per day to write code on the side, or to play with a new technology or library. If I don't put boundaries around whatever I'm doing (and have an end-game in mind), I end up wasting a lot of time and don't get anything out of it.
So, for those who are into this - for somebody with a little experience in C++ and mostly experience in C# and various dynamic languages, what's the shortest distance between "idea" and "game" in terms of tools? Unity?
Definitely Unity. The forthcoming Unity 4.3 release will feature a new 2d game workflow that should make it easier to create simple games for people new to game development.
Maybe you could still do an RTS, but cut it down to the bare bones of what it needs to have.
Look at a game like Rymdkapsel. It's an RTS, but it cuts a ton of complexity out of the gameplay. By doing that, and focusing on some simple but fun mechanics, and a very simple art style, you've got an RTS that a small team or a lone programmer could implement.
Rymdkapsel cost $4 and they've got at least 10,000 downloads on Android and who knows on iOS so that means they've probably cleared north of $50k to maybe over $100k.
Absolutely, that's the exact genre I'd want to target. The RTS world is way too baroque, I love the minimalists.
The problem is that even a simple RTS has some brutal challenges - pathfinding is hard, and if you want to go multiplayer you have to find a way to get lockstep logic (in C#/Unity this means doing all your simulation math using custom fixed-point numbers and using lookup arrays for all your trigonometry) - that and you need unit-AI.
This will hopefully change soon however, as I have been diligently coding a game spending an hour or two almost every morning since September 1st - and it is very very close to completion, and aside from a couple features is completely playable now.
So thank you for the inspiration. I hope to soon join you in the ranks of Enterprise developers who managed to ship a non-trivial piece of entertainment...and then on to the next adventure.