When I was 11 or 12, Atari 2600 games and select coin-ops were on my mind constantly. I wasn't interested in whatever the teacher was talking about, for instance. I'd sit there and invent video games instead of listening to the lecture or doing the workbook exercises.
These tentative games were brought from my mind to notebook paper via drawings and lists of plots and rules. I even got blank-screen-drawing down to a science; the edge of a notebook cover was the straight-edge against which I drew the four lines. Then -- wow! A blank screen on a piece of paper! My mind would reach anywhere and everywhere to come up with neat ideas. I got more creative experience and confidence from these self-imposed activities than any lesson or quiz.
I obtained a Commodore 64 around that time, and immediately learned BASIC. I found out that it was a pretty slowly executing language, and from reading Compute! and other magazines, I learned that machine language was what I needed to make fast action games. But it seemed really hard, so I continued to make games in BASIC, always thinking, "I'll learn machine language someday..."
Someday is here, folks, and I still haven't learned machine language with any real skill or savvy. I've managed to understand the basics (no pun intended), and I've made a couple half-assed attempts at code, but I've never really attacked Assembly with the tenacity I applied to those first months of developing a style in BASIC. Garry Kitchen's GameMaker by Activision was really my savior, and I designed a lot of games on that well-made tool right up into the mid-90s.
Eventually the Amiga entered my world (courtesy of a certain Mr. A. Trionfo), and I attempted to make games in AMOS (a drastic upgrade of the ideas behind BASIC). But I was soon confronted with the same sort of revelation: It wasn't a fast enough or dependable enough language with which to create great games. So now I'm looking toward Blitz BASIC. In other words, fifteen years into my era of very intense involvement with computers, I still haven't fulfilled my childhood dream: to make a really, really good video game that has longetivity. Selling it is beside the point, y'know?
Are any of you like this? I thought it would be interesting to try and figure out why a lot of people who know the basics of programming don't get motivated or confident enough to sit down with a low-level language (meaning better and faster than BASIC or whatever), design the game of their dreams, and go through with all the coding. You folks who have actually created good games in your rooms or garages: Shut up. We're mad at you.
I'm going over the possible reasons because I feel that therein lie the solutions. Realize that this is as much a lecture to myself as other would-be world-creators.
1. A computer is a mean, confusing monster that will only run Myst or Office with any friendliness.
I'm starting out with the most new-user-ish reason. People think computers are mysteries, not realizing that they're like calculators or musical instruments: You get results that are directly congruous with the effort you put into learning how they work. And they work in a sensible, logical way. There's no mystery. They do only what they're told. It's an exact science, of course -- but a very tangible, understandable one.
2. Machine language (or insert your own bane here) is too hard to learn; I need more free time than I currently have.
Well, how does one usually learn something? By taking a month off work, staying home and doing nothing but reading up on the subject? Nope. You gradually accumulate the knowhow you need. Sit down with a language manual and a computer once in a while. You don't even have to use up all of your spare time. Just learn bit by bit and monkey around on the ol' keyboard. As your knowledge of the subject increases, so will your enthusiasm -- it'll go faster and faster. Saying "it looks really hard" is like calling yourself stupid. Give yourself some credit, for godsakes! You came this far with the machine, didn't ya?
3. What's the point? The game industry is corrupt anyway, so I won't be able to sell anything unless I get really lucky.
Well, true. But if you're not creating a game that you would want to play yourself, it won't come out good anyway. And if you're not doing this mostly for your own enjoyment -- regardless of how nice it is to have an audience -- you should write-off the project as a pipe dream. Without your own interest, your work won't come out good.
Besides, not trying to get your game to a lot of potential players is another laziness to be confronted. Send your original programs away to Aminet (Amiga), Shareware.COM or Download.COM (PC), an 8-bit FTP site (Atari or C-64), the online Loadstar magazine (C-64), or any of the companies that release CD-ROM compilations of public domain software. Get the address off the back of one of the compilation CDs you find in the software store.
4. I can't afford to buy the language software.
Well, save up! Put money away like you did for your game software, or your Playstation, or your N-64, or your latest CD player. Because creative hobbies take priority over everything else if you're good to yourself and you're hoping for a rich, full life -- using your brain to its fullest renders much greater rewards than beating the bad guy at the end of someone else's game, or sitting there listening to someone else's music.
Pull out a piece of notebook paper, design a game, choose a language, and entertain yourself. For one thing, it's easier than it looks. I mean, we all know that. There's no magic program farm that all the old, famous software designers knew about. There was nothing special about them that you lack, no mysterious alchemy they'd mastered but wouldn't spill the beans about. There's no reason your own creations can't stand up to theirs. Whatever you achieve in life, even something seemingly trivial like a video game, you'll always have that. That accomplishment, that thing you created with your own head and hands, will never go away. (Well, provided you make a backup copy.)
It's easiest to discern where an idea to write a utility program comes from: the need to take manual control of a situation, of a lack in your available library of tools. You start by thinking, and usually at a time when you're not looking for ideas, "Man, I wish there were a program that did such-and-such." And then you're suddenly thinking, "Wait a minute! That wouldn't be too hard to write, now, would it!" It's almost like having a new game at hand -- programming is like a puzzle or brain game, and it's really exciting when you start working on a program, because it's like a big, blank crossword puzzle -- but with looser, more lenient dimensions.
But getting an idea for a game is completely different -- or is it? Sure, the designing of a game isn't based on a practical need for anything, other than a craving to create. Games are mainly based on wanting to pull your imagined visions into reality, to play inventor or God. But that's based on the same kind of need as the conception of a utility program, and it's the simplest, most basic idea wellspring of all: "I want to play this sort of game. I would buy something like this if it were available." It's like writing songs you'd want to hear, or writing the kind of story you'd like to read.
And it really is that simple. What sort of game do you want to play? Is that game around yet? Well, then, write it yourself! The only people who can't do these things are people who are convinced, or who've allowed themselves to be convinced (mostly in their formative years, I'm sorry to say), that they can't.
And once somebody's pegged a language and completed a few things, resting on his laurels is the worst thing he could do. Keeping an open mind and a curious imagination is vital, no matter how successful your last project was. Why bother attaining any self-importance about it? You have fun doing this stuff. What other reason is there?
Some people would say "the money." And let 'em say it. A good game is a good game and a shitty one is a shitty one. What matters to the person playing your game, and to you when you're playing it, is how much fun is being had.
Trust me: You'll surprise yourself with how capable you really are at writing your own programs. It's like a lot of creative talents: It's easier than it looks. As long as you're interested in it and you have the necessary degree of motivation, you can learn and apply this stuff.
What's been a matter of debate for some time is this. Programming: art or science?
It's a little of both. That's what makes it so appealing. Both sides of your mind are engaged. You get to dream up a wild idea; but then you have to program it. But coding -- using your sense of logic and structure -- draws from raw creativity as well, like those brain games I mentioned. You're using the proverbial left brain and the right. And everyone has both of those! -- CF