9

During the 70s and 80s there were a number of books about how to write your own games for 8-bit computers, usually in BASIC. Three examples of these books are How to Create Adventure Games by Christopher Lampton, Golden Flutes and Greate Escapes by Delton T. Horn, and Creating Adventure Games On Your Computer by Tim Hartnell. What books and approaches did people take to writing adventure/RPG games?

I want to write a game myself since I'm a much better programmer now than I was when I learned BASIC on my Apple II. My goal is to write something that runs on real hardware similar to what was written at the time. For an adventure game 8-bit hardware isn't that much of a constraint since speed and graphics are much less important.

What books are available to help me do so?

closed as too broad by JAL, wizzwizz4 Jun 13 '17 at 18:11

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 5
    Check out the free Usborne PDFs (at the bottom of the page). Questions looking for list answers aren’t really suited to StackExchange. – Stephen Kitt Jun 12 '17 at 15:24
  • @StephenKitt View this question more as a discussion than a list, the approach to games back in the 70s/80s was very different than today. Even a commercial RPG like Ultima V could focus more on gameplay than graphics, so the goals of game design would vary more than now. – Michael Shopsin Jun 12 '17 at 15:27
  • 2
    Discussions also don't fit the Stack Exchange Q&A format. Also, Ultima V was very much focused on graphics. Given the limitations of the hardware of the time, it was a very nice piece of eye candy. – Ross Ridge Jun 12 '17 at 17:06
  • 2
    You didn't really specify what 8-bit platform you are targeting. You mentioned Apple II in the past but is that the platform you're choosing now? Also, I don't agree with the statement of 8-bit hardware not being an issue for adventure games. Unless you are going for a pure text adventure, programming an 8-bit game is all about constraints! That's why it's fun. But even text adventures can be challenging. Especially if you do a custom language like Zork did so that your game is multi-platform. At any rate, I wish you luck on your game. The world needs more 8 bit games. – cbmeeks Jun 12 '17 at 19:04
  • 1
    If you want to go more top of the line for that day, you should probably study Zork/ZIL, as it can fit more of an adventure than with just basic. the ZIL was not just about cross platform - it was about being able to fit a bigger adventure in a smaller size. like, with that approach you can fit the game into a smaller size than doing than scripting the entire thing in assembler. if it's just a basic game you want, you could do most of the development on whatever but beware memory limitations anyways.. – Lassi Kinnunen Jun 21 '17 at 6:55
6

What books and approaches did people take to writing adventure/RPG games?

Alright, you asked for history. Here we go.

Basically (sic), one would start with some of the books/magazines that had listings of games in them. All kind of games, not only adventure/RPG.

Then you'd sit down and type those listings in. It took a while, you made errors, but at the end you'd have typed (and thereby also internalized) the whole source code. In about 75-90% of cases the game, then, even worked and you didn't have to go through all of it, multiple times, to find that one typo.

Later, they went and changed it to hex encoded strings with checksums, especially if machine code was involved, but at that time there was not much of anything to learn anymore (the magazines I had tended to include the assembler files as well, IIRC, so you could at least try to follow what happened).

After a while, you would dabble in your first own games or other programs. There were printed books about all parts of the 8-bit computers (BASIC, assembler, graphics/sound chips, overall system architecture, the actual hardware, and so on) in technical reference formats - what an engineer would expect; very detailled but you had to kind of figure out how to use all of it. Magazines regularly had great series where they sat down and walked you through major components and how to program them (e.g., video processors, sound etc.).

Magazines also were a great source for specific components of specific game types - e.g., one could expect a series about data management in a RPG, how to parse the crude text languages in an adventure, or how to store the "rooms" and such. Most of these was concerned not with advanced things like OOP (what we would have today), but how to use shortcut after shortcut to implement it in the very limited space and with no particular programming libraries in existance.

Then there was the demo scene, which gave you ideas about what the upper limit was regarding video and sound effects. The demos usually did not come with source code, so you had to use a disassembler. The demo code was also in my experience not much use for anything else as it usually relied on very exact timings (the code was timed to run in sync with the actual monitor being built up not only frame-by-frame but line-by-line or even pixel-by-pixel, often controlling the "actual" color of the electron beam more or less directly without even bothering to store any image in video RAM, which would have been much too slow to do it for every refresh cycle).

After a while, you just sat down and "did it". The complexities then started to arise when RAM got full - that happened rather quickly with BASIC; you had to start paging 256-byte chunks of RAM in and out and whatnot. Assembler was an option, but it got overwhelming pretty quickly - there were none of the comfortable toolchains around; having a text file editor (instead of something that used line numbers) was not necessarily standard. There were fables about wild guys using PASCAL or even C dialects on 8-bits, but I'd guess something like 99.999% of all games were either straight BASIC (maybe precompiled/obfuscated), assembler or a mixture. Wikipedia says that Ultima 1 was BASIC and Ultima 2 and on were 100% assembler. That should also explain why Richard Garriott made it into space and is a half maniac. :-)

Keep in mind that even the most complex of games back then were incredibly simple by todays standard. Of the thousands of 8-bit games, there are a handful of exceptions (Ultima, Elite ...). If one of the other games was great, then due to the artful execution (game idea, graphics, sound...) within the limits imposed.

Also, all hardware components of an 8-bit computer are vastly, vastly simpler than even the most mediocre PC you have today. There is really almost nothing to it. Sit any 15-year-old down with a lot of curiosity and a heap of books and a lot of time, and he or she can easily grasp everything there ever is to know about them.

I want to write a game myself since I'm a much better programmer now than I was when I learned BASIC on my Apple II.

I did not write such a complex game as Ultima or Elite myself, obviously, but I did dabble a bit; I recall breaking the BASIC RAM limit plenty of times, and having incredible fun (sic) in assembler, frequently freezing the machine on which I was developing while running the program under development, occasionally losing all source code, and so on.

So I'd say the biggest challenge aside from physical limitations was to keep track of all the data without growing crazy, while writing the code in assembler language from scratch, with no meaningful toolchains, debuggers and whatnot.

If you edit on modern machines, cross-compiling into that environment, with all kinds of resources at your fingertips (see the links in other answers), maybe even a useful debugger, you have a huge benefit already. From there on, I'd say it's the same as learning any new environment these days - figure out how to do stuff step by step, and then simply start doing it.

  • 1
    +1. Great answer. However, the Mac II didn't have the same CPU as the C64. lol. I can reflect your experiences as well. I quickly learned that BASIC couldn't handle the games I wanted to make so I went to 6502 ASM pretty early on (for C64). I remember the day I figured out how to get dozens of colors on the C64 by rapidly flicking them in ASM. Ah those were the days. – cbmeeks Jun 13 '17 at 13:09
  • Cheers, thanks for spotting my error, @cbmeeks. Fascinatingly enough, the wikipedia page en.wikipedia.org/wiki/Macintosh contains the quote " including faster memory and two Apple II CPUs (6502s) dedicated to I/O processing.", although en.wikipedia.org/wiki/… correctly lists no 6502 at all. ;-) – AnoE Jun 13 '17 at 13:25
  • 1
    Anoe: That article references the IIfx and the two 6502's that were used for I/O controllers. Neither of the 6502's were used as the main CPU. But, I guess technically, it could be said the Mac has 6502 CPU's in them. However, that's like saying a Commodore PET is the same as a Mac because they had 6522 VIA's in them. Plus, those articles refer to the 6502 as the "core of Apple II machines". Implying that the 6502 was designed for the Apple II. Finally, the article implies that the IIfx could run Apple II software. Since it has it's "core". lol. – cbmeeks Jun 13 '17 at 13:33
  • @AnoE I never got to ASM on the Apple II before I switch over to programming Pascal on the Mac. Great answer to my question, thanks. – Michael Shopsin Jun 13 '17 at 14:20
  • Yeah, no worries, just a detail. The Macs were out of my price range at that point in time. :D I've removed the mention of specific CPUs in the answer. @cbmeeks – AnoE Jun 13 '17 at 15:00
8

Fortunately, for all of us, Jimmy Maher, aka The Digital Antiquarian, has been tackling your question for years and in extravagant detail and style. I would urge you to take a look at Jimmy's eBook Library, beginning with the year(s) that most directly relate to the game-play experiences you hope to recreate. All of the eBooks are broken up by year, and the publications have progressed in roughly chronological order. The latest publications are late 1980s/early 1990s.

For each game that has been tackled, the publications tend to do a thorough and deep-dive into game-play innovation, technology, platform, and business climate. It is all quite compelling to read, and should address your rather broad question far, far, better than can be done with a "pithy" answer.

In addition to all the great writing on the 1980s Adventure and CRPG games, you might want to pay particular attention to this article about the Adventure Game Toolkit - AGT.

Best of Luck in your programming!

  • 6
    Nox Archaist is an example of modern Ultima-style RPG for the Apple II, but applying modern techniques to make it far more advanced. It will be released with source when it is completed, which might give you some pointers about how it can be done. – peter ferrie Jun 12 '17 at 17:20
  • 1
    +1 for mentioning Nox Archaist. – cbmeeks Jun 12 '17 at 18:59
  • 1
    now I want Nox Archaist! – Thomas Jun 12 '17 at 23:56
  • 1
    Jimmy's eBook Library is, wow, a lot of information. I doubt that I knew half as much as that in the 80s when the games were new. Thanks for your help. – Michael Shopsin Jun 13 '17 at 14:22
4

Not sure if this should be a comment or an answer, but here's a book that I, personally, remember reading (in its Hungarian translation) in the early '90s (it was way too late by then of course), and its full text is available on Archive.org: enter Writing BASIC Adventure Programs For The TRS-80 by Frank DaCosta.

It is a very well-thought-out book for beginners, since it includes material on the technical aspects (including general, introductory-level programming advice) as well as text adventure game design tips.

  • 1
    +1 That's an awesome book. I miss those days when books like that is all we had to teach us. That and pure dedication an experimentation. – cbmeeks Jun 13 '17 at 13:03
  • 1
    @Cactus I'll check out the book, thanks for the link. – Michael Shopsin Jun 13 '17 at 14:21

Not the answer you're looking for? Browse other questions tagged or ask your own question.