April 4th, 2013
I’ve used many different programming languages over the years: FORTRAN, BASIC, 6502, Forth, Pascal, C, C++, and Java. I’ve also had to work in lots of different environments: batch processing, custom editors, Macintosh Programming Workshop, Metrowerks, Eclipse, and others. Lastly, I’ve had to learn lots of different platforms: mainframe, KIM-1, Commodore PET, Atari 800, ten different Macintosh operating systems, and of course Java is a platform in and of itself. After all these years, I’ve grown tired of dumping one technology and learning a new one every few years. I really want to settle down to something that I can build on. I had expected that Java would be that environment. After all, Java is the one-size-fits-all language, the universal language of the Internet, the ultimate cross-platform language, right?
Well, that was the plan, but it seems that Apple and Microsoft have torpedoed that idea. They have both made it increasingly difficult for Java programs to run on their machines. And now Apple has, for all intents and purposes, banished Java programs from its App Store. That pretty much blows Java out of the water for me.
So once again I face the problem of finding a new home for my programming efforts. Here are my requirements:
1. I don’t want to spend lots of time learning a new technology.
2. I don’t want to learn technology that I won’t be using in the future.
3. My primary requirement is the ability to create interesting algorithms. That means a full-featured capability for calculations.
4. It must allow me to sell my designs to many people.
Here are some of my options:
Web-based, Java on the server side
This would allow me to put my designs on my own website and make them available to the whole world. Anybody with a browser could play my games. Of course, this would also limit my abilities on the client side; I’d have to keep the graphics fairly simple. Perhaps later I could learn how to write really flashy client-side stuff that would permit better graphics, but for now that’s asking too much.
This strategy would require me to learn server-side Java, which would involve some challenges. I’ve had a quick look at it, and I estimate that it will take me a month to learn the basics, and several more months of intense frustration getting everything working properly.
Several people have suggested that I look closely at this system. It’s a standard system for designing games for all platforms. My preliminary assessment is that it’s a good system for designing conventional games for all platforms. It appears to be optimized for all sorts of great animated 3D crap in which I have zero interest. My guess is that I’d have to learn all sorts of useless stuff, and that I’d find it wanting in the kind of things that are important to me.
This is a general-purpose platform that’s designed for mobile applications. This requires me to ask a big question: will mobile devices replace desktop machines? There’s no question that they’re booming, and the commercial opportunities here are enormous. However, I’m wary of the mobile marketplace; it seems to concentrate on short games that can be played in a few minutes on the subway. That’s not the kind of game I want to make. Remember, my goal is interactive storytelling. For that, I need some horsepower. I realize that the horsepower in mobile devices will be steadily increasing, but will it be a constraint on my work? I’m not sure about this.
A huge problem with all of these technologies is that they are subject to the whims of the developer. I am putting myself into the hands of other people whose financial incentives are to jerk me around with lots of improvements that I may not be interested in. What happens if one of these vendors goes out of business? This, I think, is a killer problem for all except Java; it is the only technology widespread enough to instill confidence that it will be around for the next fifteen years (that’s my time horizon; I figure that I’ll be too senile to write code by the time I’m 78).
Why should I insist on being a lone wolf? That lifestyle was obsolete 20 years ago, yet here I am, plugging along as a lone wolf – more accurately, a lone dinosaur. Shouldn’t I get with the times and recruit a team? It could well be the perfect combination: my ancient design wisdom joined with the up-to-date technical knowledge of bright-eyed, bushy-tailed youngsters. Why not?
Because I don’t have any money to pay them with, that’s why not! The only way I could recruit people for the team would be on speculation, promising them a fair piece of any revenues we make, but that situation gurgles with dangers. What happens if a team member gets a job offer to work on real games for real money? They’d take off, leaving the project in the lurch. Still, the idea has lots of merit and I will definitely spend time developing it.
I really don’t know what to do at this point. It’s obvious that I need to do a lot more research before making a decision. I’ll be writing more essays in this topic over the next few weeks.
April 4th: The Lone Wolf Gets Sociable
April 5th: The ‘More Java’ Option
April 8th: Wading into Java Servlets
April 10th: Oh, my aching head!
April 11th: Embracing my Inner Dinosaur
April 12th: Open Source?
April 13th: Four Doors
April 16th: Decision