Here's a blast from the past I stumbled across the other day.
In 1981, Richard Garriot - using his Lord British nom de plume, -
penned the following article for "The Space Gamer", a magazine
dedicated to roleplaying, wargaming and occasionally the digital
versions of the first two.
In this article, he briefly describes his methods of creating
Akalabeth and Ultima.
I've uploaded a scan of the article (with the graphics used to help
understand how he calculated the 3D graphics of the dungeons) here:
https://imgur.com/9GGYw1W
I thought it an interesting snapshot of the earlier days of computer
gaming and hope some of you might find it interesting as well.
----------------------------------------------------
Designer's Notes: Akalabeth
by Lord British
The Space Gamer, issue 39 (May 1981)
Many games on the market have one or two major flaws. Some have
minimal graphics. And those who have decent graphics often run so
slo-o-o-ow that the game values get lost in the lag time between
moves. When I created Akalabeth (and now Ultima), these were two main
problems I had to address.
Before Akalabeth, fantasy computer graphics were fairly primitive. In
fact, my inspiration for Akalabeth was a game called Escape, which had
low resolution graphics. My objective was to create a game which would
show monsters and dungeon corridors in perfect perspective.
I approached the problem from three angles: the artist's approach
(thanks, Mom!), the calculus approach (thanks, Dad!) and the
trigonometric approach (thanks, Me!). Fortunately, all the paths led
me to a very simple solution. The implementation can get a bit
complicated, but an explanation in layman's language appears below.
Having cleared this hurdle, I started to design the "game". Fantasy
role-playing games generally have elaborate combat systems, with lots
of modifiers and look-up tables. A similar approach often crops up in
computer games, but the result is so slow that a real-time game is all
but impossible.
Though I am a member of the Society of Creative Anachronism, with many
bloodless combats behind me, I thought a simpler approach was
necessary. In Akalabeth, all the complexities of hand-to-hand combat
are covered by a few simple algorithms. Purists will not be happy, for
example, I use "sword" to represent everything from a mighty
hand-and-a-halfer to a springy little epee. But simplifications were
unavoidable, given the game speed I hoped to achieve.
Many games which do have nice graphics aren't worth playing because
the programmer concentrated on the graphics and didn't allow enough
variety. Wary of this pitfall, I stocked my dungeons with thieves who
stole your weapons, gremlins that ate your food, traps that dropped
you to a lower level and mimics which disguised themselves as chests.
An adventurer's life may be short but it is certain to be exciting.
Unfortunately, Akalabeth was not perfect (sigh!). Because I did not
have a disk drive (everyone has to start at the bottom), I could not
include a routine for saving the game. Even when I got a disk drive,
there was no memory left to allow a game storing routine.
Having finished Akalabeth (and having learned much from my mistakes),
I set out to design the most complete role-playing game yet written
for the computer. All but a few of my most far-fetched goals were
reached with Ultima.
Ultima is Akalabeth and more. Players have a choice of four races and
four professions. Magic has been expanded. Technology has been
introduced. A character can eventually buy a time machine or space
shuttle, if he survives long enough.
Ultima is written in Basic and machine language (Akalabeth was
primarily Basic). Basic makes string manipulation easy and is good
enough for the text portions of the program. Machine code, of course,
runs much faster than Basic and /must/ be used for things like
complete hi-res screen updates. By skillfully mixing the languages, a
programmer can combine his own convenience with the players'.
Throughout my efforts, I have emphasized realism, trying to give the
players a character's-eye-view of my fantasy worlds. I use one-stroke
orders to speed input. I have gone to great lengths to make the
graphics as clean and realistic as possible. With this kind of help,
it becomes very easy for gamers to make the transition from reality to
fantasy.
---
Sidebar: 3-D Graphics
One way to draw a dungeon corridor is to use the same technique that
an artist uses to draw a row of telephone poles beside a country row.
First, use diagonal lines to connect the corners of your screen and
draw the horizon through the center (Figure 1).
Place the first pole as shown in Figure 2. I find this looks best at a
place a third or a fourth of the distance from the edge to the center.
Next, draw a line from the upper left hand corner of the screen and
through the point where the first telephone pole intersects the
horizon. The base of the second pole belongs where the line touches
the lower diagonal, as in Figure 3. To establish the base of the third
pole, draw a line from the top of the first pole through the point
where the second pole intersects the horizon. You can continue this
process as often as necessary, placing the fourth pole, the firth and
so on (Figure 4).
For further information, feel free to contact me care of this
magazine.
----------------------------------------------------