A tl;dr ramble about my inability to focus on a single project
I started programming as a schoolboy in the golden age of the 80s, making extra pocket money by getting a string of games published in Electron User magazine, but I never managed to scrape together the money for a better computer or even a floppy disc drive! (Insert tales of having to write and test assembly code with tape cassettes). Then I fell ill at university and the and the games market went beyond the reach of a home enthusiast. But more recently there's been a big surge of simple indie and mobile games, I want a piece of the action!
I started by porting (or rather rewriting) an old open source game of mine to Android and actually managed to see that through to what can just about be called "finished". That game is Bombz <http://bombz.sourceforge.net>. I've only ever had positive comments about it, but only by a very few people. Now I want to do a commercial follow-up. I think I've managed to get over all the dithering of which platform(s), programing language and engine to use. I enjoyed working with Java and Eclipse, and Android Studio/IntelliJ is better still, but I've decided that although C++ is a bit more laborious, it has too many advantages over Java to ignore, and I can make code portable to almost any platform. without having to worry about JVMs or translators. Every off-the-shelf engine I've looked at so far has had some disadvantages for what I have in mind, so I've decided to use all my own code except for SDL2 for highly portable input and setting up of a rendering context. I want to target Linux, Android, Rasberry Pi, Windows, Mac OS X and iOS, SDL2 can do all of those. Except that my experiments with the Android version haven't gone well, but I can handle the NDK's API OK and make my code work with both. Hopefully SDL2 for iOS is in better shape.
BTW, Bombz was written with 2D rendering, using OpenGL ES 1.0 for the Android version. I've since been learning OpenGL ES 2.0, I want to use full 3D, or at least "2.5D" now.
Here are the potential projects I can't make my mind up about:
1. A sequel to Bombz, with many more features and 2.5D rendering. Pros: The underlying principle is well-established, the gameplay is still reasonably unique. Cons: Need to write a large number of levels by hand; the original didn't take the world by storm.
I think I could monetise it and keep it "alive" by including a level editor and asking players to send me their levels. The best levels would go into packs I could sell with the authors of those levels getting a share of the profits. I could make it scriptable (eg with lua) so people can add new features into the levels.
2. A game which combines dungeon crawling with the absorption style of gameplay, but using tilt controls. Pros: I think those are all popular features which could work well when mashed together; dungeon-crawling is "in", and I've already written code to generate dungeons algorithmically; potential for IAPs. Cons: Need to think of lots of variety in terms of enemies and power ups etc to keep it interesting; need an alternative control method for non-mobile devices which may reduce the appeal.
3. A modern take on an old RISC OS (Archimedes etc) game called RailPro, in which you control trains in and around a station by switching points and signals. Pros: It was very addictive back in the day; although there are plenty of railway games about already, none are much like it, or as addictive IMO. Cons: Probably less scope for monetisation than the other ideas; also needs some work on hand-written levels.
4. A more graphically appealing port of CurseOfWar. Pros: Gameplay looks good, and well-suited to being changed to touch screen (or mouse clicks); the gameplay logic is already written for me. Cons: Limited scope for monetisation, I'd have to give a share of any profits to the original developer to keep my conscience happy.
Whichever I go for, I don't think I can do the whole thing alone. Coding, yes, and even graphics and 3D assets if I have to, but I think I would need help with things like extra appealing features to go on top of my core ideas, and especially with promoting any finished product.
What do you think I should go for? Or should I accept I'm never going to make any money out of programming and carry on doing it for free and for fun?
And here I expected some lengthy post about bad image processing...
"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"
My journals: dustArtemis ECS framework and Making a Terrain Generator
And here I expected some lengthy post about bad image processing...
Even the intro sold me this would be about 8-bit graphics.
The 'golden age of the 80s' was all about that dithering.
Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]
Go for a small project that is quick to finish. You can always expand on it later.
I want to write a commercial game but I can't keep focused on a single project. I've got long term health problems, incluing depression, so I've never had a real job, and I think it's the depression that's stopping me from getting something finished. I like programming, and think I'm good at it, so always dreamed of making money programming at home.
....
What do you think I should go for? Or should I accept I'm never going to make any money out of programming and carry on doing it for free and for fun?
I recommend being very careful about attributing your failure to complete a project exclusively to depression. Inability to complete a project can stem from many other reasons, including morale, motivation, lack of resources, loss of interest, loss of need, burn out, environmental factors, etc. Again, be very careful about diagnosing why you don't get your projects done -- this can cause you to feel bad about yourself and cause you to beat yourself up, which only makes your sense of self-worth decrease and amplifies your depression. The problem may not be "you", but your circumstances. Try working with someone else on the project. Having someone else who is excited to work on the same project is inspiring and keeps you on track. Also, it's great to work in a working environment where everyone is there to work. That work ethic is contagious, so you don't want to waste time surfing the internet and looking at cat pictures.
DON'T EVER do programming work for free! You're totally undervaluing your work and effort. You've got ~30 years of experience with code. Not many people can say that. You know assembly. That's awesome because its so rare these days. You may feel like you could work for free, but that may be because you enjoy the work and don't feel like you should get paid for it. The things you are capable of doing are valuable, you just have to know how to sell yourself (it's all about the sale! you're the product!). Wouldn't it feel good to get paid like $10k to complete a month long project which you immensely enjoyed? It's 100% possible. All you have to do is sell yourself and deliver on your promises. Do that consistently, and you'll have a flourishing professional career in software development.
Eric Nevala
Indie Developer | Spellbound | Dev blog | Twitter | Unreal Engine 4