ZORK NEMESIS DESIGN DOCUMENT: Part 3 - Preliminary Technical Design

*Note - Ruffini did not have any notes for this section of the design document.

VERION 2.5/3.0 (1995/08/17) VERSION 4.1 (1995/09/27)
3.01 Technical Definitions
The Nemesis game engine [MADE] is an object oriented API. The basic object in the game is a screen frame, which can be thought of as the stage where the action takes place. Anything that can be seen or heard on the stage is an actor. Movies, sounds, music, animations and objects that can be manipulated are all actors:
  • fanfare_1 -- midi file that indicates an object has a potential interaction
  • fanfare_2 -- midi file that indicates object was manipulated successfully 
  • animation_actor -- animation object that plays back when manipulated correctly
  • qt_actor -- digital video that plays back when manipulated correctly
  • midi_actor -- music file that plays back when manipulated correctly
  • audio_actor -- audio file that plays back when manipulated correctly
  • Vr_actor -- animation object that can be rotated interactively
  • cursor_object -- cursor that is carrying an object
  • text_object -- object that requires text
3.01 Technical Definitions
The Nemesis game engine [MADE] is an object oriented API. The basic object in the game is a screen frame, which can be thought of as the stage where the action takes place. Anything that can be seen or heard on the stage is an actor. Movies, sounds, music, animations and objects that can be manipulated are all actors:




  • animation_actor -- animation object that plays back when manipulated correctly
  • qt_actor -- digital video that plays back when manipulated correctly
  • midi_actor -- music file that plays back when manipulated correctly
  • audio_actor -- audio file that plays back when manipulated correctly
  • Vr_actor -- animation object that can be rotated interactively
  • cursor_object -- cursor that is carrying an object
  • text_object -- object that requires text
3.02 Technical Specifications
This section outlines software and hardware standards and protocols. It contains the quantitative assumptions we are making about target platforms and operating systems. It also contains the qualitative assumptions we are making about compression ratios and bandwidths.
3.02 Technical Specifications
This section outlines software and hardware standards and protocols. It contains the quantitative assumptions we are making about target platforms and operating systems. It also contains the qualitative assumptions we are making about compression ratios and bandwidths.
3.03 Data Structures
  • disc format -- CD ROM XA, form 1 and 2
  • file structure -- ISO 9660, levels 1 - 3 interchange
  • effective data transfer rate -- 170.5KB/sec
  • disc capacity -- 757MB
  • audio formats -- general MIDI and Audio Interchange File Format (AIFF)
  • audio resolution -- 16 bit @ 44.1 kHz, 22 kHz per channel stereo
  • audio codec -- TBD
  • video tape format -- HO, 400 lines resolution
  • digital video resolution -- 320 X 240 8b @ 15 fps, Quicklime 2.0 
  • video codec -- TBD
  • image -- 8 bit color depth, 640 X 400 or 640 X 380 image size
  • image codec -- TBD
3.03 Data Structures
  • disc format -- CD ROM XA, form 1 and 2
  • file structure -- ISO 9660, levels 1 - 3 interchange
  • effective data transfer rate -- 225KB/sec
  • disc capacity -- 650MB
  • audio formats -- general MIDI and Audio Interchange File Format (AIFF)
  • audio resolution -- 16 bit @ 22 kHz per channel stereo
  • audio codec -- TBD
  • video tape format -- Digi Betacam, 400 lines resolution
  • digital video resolution -- 320 X 240 16b @ 15 fps, Quicklime 2.0 
  • video codec -- TBD
  • image -- 16 bit color depth, 640 X 400
  • image codec -- TBD
3.04 Content Allocation — TBD
ZORK: NEMESIS is currently slated for two CD-ROMs. However, the use of 16 Bit art and large amounts of Red Book audio will require moving to three CD's. The breaks between CD's will be at Act Breaks so as to minimize CD swapping.
3.04 Content Allocation — TBD       
ZORK: NEMESIS is currently slated for three CD-ROMs.

The breaks between CD's will be at Act Breaks so as to minimize CD swapping.
3.05 Minimum System Requirements
Nemesis is targeted initially at Power Macintosh and MPC2 CD ROM but is designed for portability to the major CD based systems that have been released or announced to date: Sega Saturn, 3DO, Sony PSX, Atari Jaguar and Apple Pippin.

MPC2 system
486 66MHz
Microsoft Windows95
8MB RAM
CD ROM w/ 300kB/sec transfer rate [Double Speed] 8MB free HD
SoundBlaster 16 bit compatible card
SVGA graphics adapter
accelerated local bus 16 bit
3.05 Minimum System Requirements
Nemesis is targeted initially at Power Macintosh and MPC2 CD ROM but is designed for portability to the major CD based systems that have been released or announced to date: Sega Saturn, 3DO, Sony PSX, Atari Jaguar and Apple Pippin.

MPC2 system
486 66Mhz DX4
Microsoft Windows95
8MB RAM
CD ROM w/ 300kB/sec transfer rate [Double Speed] 8MB free HD (min. install)
SoundBlaster 16 bit compatible card
SVGA graphics adapter
accelerated local bus 16 bit
Qsound
3.06 Power Macintosh system
RISC Power PC 601 60MHz (6100 level)
System 7.5
8MB RAM
CD ROM w/ 300kB/sec transfer rate [Double Speed] 8MB free HD
Foreign File Access extension
ISO 9660 file access extension
QuickTime 2.0 extension
QuickTime Musical Instruments 2.0 extension
3.06 Power Macintosh system
RISC Power PC 601 60MHz [6100 level]
System 7.5
8MB RAM
CD ROM w/ 300kB/sec transfer rate [Double Speed] 8MB free HD (min. install)
Foreign File Access extension
ISO 9660 file access extension
QuickTime 2.0 extension
QuickTime Musical Instruments 2.0 extension
3.07 Design Language
The game's design language is a terminology set intended to match our understanding of what the game looks like and how it works. The design is primarily object oriented. Adopting this language allows us to construct a logical model of player/game interactions.
3.08 Frames
Frames are the most basic element of content displayed. Each frame has a ID number and name. The number is a four digit numeric. The name is an alphanumeric string <31 characters in length. The naming convention is [cell alphanumeric framenumber frametype]. There are three types of frames:
  • Image
  • QuickTime video
  • Animation
3.09 Image Frames [image_frame]
Image frames are 640 X 400 pixels at 8 bit color depth. The entire frame is active to mouse clicks. The letterbox frame outside the frame is set to black when the game is launched to add to the cinematic experience.
3.10 QuickTime Video Frames
QuickTime video frames are any size, but never larger than 320 X 240 pixels at 8 bit. The entire QuickTime video frame is active to mouse clicks. There are three types of QuickTime video frames:

  • Movies
  • VR transitions
  • VR objects
3.10.01 Movies [movie_frame]
Movies are time-based images in the QuickTime format. QuickTime video frames are reserved for the game introduction sequence, flying logos, portal transfers, the making of Nemesis video, and endgame sequences.

3.10.02 VR Transitions [vr_transition frame]
VR Transitions are sequence-based images in the QuickTime format. MouseDown input in combination with cursor screen location (up, down, left, right) advances or retreats through the image sequences. The effect is as if the player is walking or turning in the game space. MouseUp input stops the image advance/retreat.

3.10.03 VR Objects [vr_actor_frame]
VR objects are sequence-based images in the QuickTime format. MouseDown input in combination with cursor screen location (up, down or left, right) advances or retreats through the image rotation sequences. The effect is as if the player is rotating the object in the game space. MouseUp input stops the image rotation.
3.11 Animation Frames [animation_frame]
Animation frames are any size, but never larger than 640 X 360 pixels at 8b. The entire frame is active to mouse clicks.
3.12 Actors
Actors are time or sequence-based objects that are in a frame (except text actors). Estimates of actor sizes are all based on 10 second durations or 30 step sequences. There are five frame actors:

    2.1    animation actor [animation_actor]
    2.2    audio actor [audio_actor]
    2.3    MIDI actor [midi_actor]
    2.4    VR actor [vr_actor]
    2.5    QuickTime actor [qt_actor]
   2.6    Text which will need translating for foreign languages [text_actor]

3.13.01 Animation Actors [animation_actor]
Animation Actors are image sequences that provide interactive movement to an object in a frame (opening a drawer for example). Animation actors can be as large as 640 X 360 8b , but in most cases are 160 X 100 8b, or smaller. Animation actors are ~3MB (150kB image @ 8 cels).

3.13.02 Audio Actors [audio_actor]
Audio Actors are Audio Interchange Files (AIFF) that are interactively played back. Audio actors are 16b @ 44.1 kHz samples compressed @ 3:1. Audio actors are ~300kB.

3.13.03 MIDI Actors [midi_actor]
MIDI Actors are general MIDI files that are interactively played back. MIDI files will generally be multibuffered music played back and looped when a frame is opened. MIDI actors are ~150kB.

3.13.04 VR Object Actors [vr_actor]
VR Object Actors are sequence-based images in the QuickTime format that are interactively rotated. VR actors can be as large as 640 X 360 8b, but in most cases are 320 X 200 8b, or smaller. VR actors are -4MB (150KB image @ 30 cels).

3.13.05 QuickTime Actors [qt_actor] and [video_actor]
QuickTime Actors are time-based images in the QuickTime format that are interactively played back and/or looped . QT Actors can be as large as 640 X 360 8b, but in most cases are 320 X 200 8b, or smaller. QuickTime Actors are -3MB (150kB image @ 15 fps). Some QuickTime Actors will be live action sequence, while others are animations bundled into QuickTime Actors because of complexity. QuickTime Actors which involve live action footage are labeled [video_actor] to differentiate the two types.

3.13.06 Text Actors [text_actor]
Text Actors are pieces of text which provide important content and are required to understand the game. These are noted so as to facilitate less confusion during foreign translations.
3.12 Actors
Actors are time or sequence-based objects that are in a frame (except text actors). Estimates of actor sizes are all based on 10 second durations or 30 step sequences. There are five frame actors:

    2.1    animation actor [animation_actor]
    2.2    audio actor [audio_actor]
    2.3    MIDI actor [midi_actor]
    2.4    VR actor [vr_actor]
    2.5    QuickTime actor [qt_actor]
   2.6    Text which will need translating for foreign languages [text_actor]

3.13.01 Animation Actors [animation_actor]
Animation Actors are image sequences that provide interactive movement to an object in a frame (opening a drawer for example). Animation actors can be as large as 640 X 360 8b , but in most cases are 160 X 100 8b, or smaller. Animation actors are ~3MB (150kB image @ 8 cels).

3.13.02 Audio Actors [audio_actor]
Audio Actors are Audio Interchange Files (AIFF) that are interactively played back. Audio actors are 16b @ 44.1 kHz samples compressed @ 3:1. Audio actors are ~300kB.

3.13.03 MIDI Actors [midi_actor]
MIDI Actors are general MIDI files that are interactively played back. MIDI files will generally be multibuffered music played back and looped when a frame is opened. MIDI actors are ~150kB.








3.13.05 QuickTime Actors [qt_actor] and [video actor]
QuickTime Actors are time-based images in the QuickTime format that are interactively played back
and/or looped . QT Actors can be as large as 640 X 360 8b, but in most cases are 320 X 200 8b, or smaller. QuickTime Actors are -3MB (150kB image @ 15 fps). Some QuickTime Actors will be live action sequence, while others are animations bundled into QuickTime Actors because of complexity. QuickTime Actors which involve live action footage are labeled [video_actor] to differentiate the two types.

3.13.06 Text Actors [text_actor]
Text Actors are pieces of text which provide important content and are required to understand the game. These are noted so as to facilitate less confusion during foreign translations.
3.14 Multibuffering Actors
Multibuffering Actors is the simultaneous, synched or un-synched, playback and/or looping of multiple actors. These actors can be multibuffered in the combinations outlined:
  • Animation, audio, MIDI
  • VR, audio
  • Audio, MIDI
  • Quicklime, audio
3.14 Multibuffering Actors
Multibuffering Actors is the simultaneous, synched or un-synched, playback and/or looping of multiple actors. These actors can be multibuffered in the combinations outlined:
  • Animation, audio, MIDI
  • VR, audio
  • Audio, MIDI
  • Quicklime, audio
3.15 The Cell
Cells are the most basic transition elements. Cells are made up of n frames. Each cell has an ID alphanumeric. The ID is an alphanumeric string <n characters. The naming convention is [location cellnumber celltype]. The number of frames determines the cell type. There are four cell types:
  • 2frame
  • 4frame
  • 6frame
  • VRframe
Frames are numbered in the cell beginning with the facing frame and counting clockwise to six. The facing frame is frame one. The facing right frame is frame two. The right rear is three. The rear is four. The left rear is five. The facing left frame is six.

[image has not been reproduced here]

3.15.01
2frame cells contain two frames — facing and rear. 2frame cells are -440KB. The design symbol for a 2frame cell is:

[image has not been reproduced here]

3.15.02
4frame cells contain four frames — facing, left, right, and rear. 4frame cells are -880KB. The design symbol for a 4frame cell is:

[image has not been reproduced here]

3.15.03
6frame cells contain six frames — facing, left, right, rear left, rear right, and rear. 4frame cells are -1.36MB. The design symbol for a 6frame cell is:

[image has not been reproduced here]

3.15.04
VRframe cells contain 60 frames facing and rear. VRframe cells are -8MB. The design symbol for a VRframe cell is:

[image has not been reproduced here]
3.16 Further Definition of Frames and Actors
Frames and actors further define cells by specifying their type, orientation, and duration. This is an example of a cell's complete notation:
  • [cell_ID]    temple 120027 2frame
  • [frame_ID]    t120027_image_frame
  • [frame_actors]    1 animation actor 1midi actor
    2 audio actors
3.17 Memory Allocation
Memory allocation is calculated for each cell by the sum of the cell type, the frame type, and the actors and their duration (for the purpose of calculating total content, 10 seconds each is assumed unless otherwise noted):

memory    (cell type + frame type + frame actors)
3.18 The Background
The Background is an invisible layer that exists behind all frames. The background contains fields that hold and pass values and/or objects to any given frame.
3.19 Fields
Fields are invisible containers that hold and pass values and/or objects from one frame to another or from a frame to the background. The game state [game_state] is an example of a value passed from a frame to the background.
3.20 The Cursor
The Cursor is a visible container. It can hold and pass values and objects to frames and frame actors. Rotating a VR object is an example of passing a value to a frame actor from the cursor (X,Y screen location). Lighting a candle animation actor with a match cursor is an example of passing an object.

The Cursor functions as a screen guide for the player. Moving the Cursor to the edge of the screen will indicate if a direction of travel is possible. When a Cursor passes over an object which may be seen in detail or handled in some way, the Cursor will indicate this but changing slightly. When the mouse button is pressed, the Cursor will also change slightly to indicate this interaction.
3.20 The Cursor
The Cursor is a visible container. It can hold and pass values and objects to frames and frame actors. Rotating a VR object is an example of passing a value to a frame actor from the cursor (X,Y screen location). Lighting a candle animation actor with a match cursor is an example of passing an object.

The Cursor functions as a screen guide for the player. Moving the Cursor to the edge of the screen will indicate if a direction of travel is possible. When a Cursor passes over an object which may be seen in detail or handled in some way, the Cursor will indicate this but changing slightly. When the mouse button is pressed, the Cursor will also change slightly to indicate this interaction.
3.21 Movie/Animation Playback
Movies and animations playback when the player's actions or game state indicates that the program should initiate a sequence. Most hard core gamers find these playbacks laborious on second viewing; they also slow down game play. The player may stop playback of most sequences in the game by entering the cancel key combination. Under Windows, the combination is CTRL-C. On the Macintosh, the keys are X-. (Command period). Clicking, common on some adventure games, will not stop playback on either machine so as to avoid accidentally stopping a movie. For the consoles (which do not have keyboards), a multi-button sequence will be used (TBD).
3.21 Movie/Animation Playback
Movies and animations playback when the player's actions or game state indicates that the program should initiate a sequence. Most hard core gamers find these playbacks laborious on second viewing; they also slow down game play. The player may stop playback of most sequences in the game -by entering the cancel key combination. Under Windows, the combination is CTRL-C. On the Macintosh, the keys are X-. (Command period). Clicking, common on some adventure games, will not stop playback on either machine so as to avoid accidentally stopping a movie. For the consoles (which do not have keyboards), a multi-button sequence will be used (TBD).
3.22 Object Manipulation
ZORK: NEMESIS has a limited object list necessary for completing some of its puzzles. The idea of a complex inventory has been eliminated to veer away from the tendency of game players trying every conceivable combination of objects in an ever frustrating and increasingly complex cycle. Players may only carry one object at a time. Once an object is used, it is either fused to the mechanism where used or destroyed; in other words, no object is needed to solve multiple puzzles. Typically, if an object is used on the wrong puzzle, no interaction occurs (a few exceptions exist as specified later in this document). All object locations will be tracked, and all objects will remain in their locations, even when their land is left. Object locations are also stored in save games.
3.22 Object Manipulation
ZORK: NEMESIS has a limited object list necessary for completing some of its puzzles. The idea of a complex inventory has been eliminated to veer away from the tendency of game players trying every conceivable combination of objects in an ever frustrating and increasingly complex cycle. Players may only carry one object at a time. Once an object is used, it is either fused to the mechanism where used or destroyed; in other words, no object is needed to solve multiple puzzles. Typically, if an object is used on the wrong puzzle, no interaction occurs (a few exceptions exist as specified later in this document). All object locations will be tracked, and all objects will remain in their locations, even when their land is left. Object locations are also stored in save games.
3.22.01 Multiple Objects
If a player clicks on an object which may be carried while holding another object, the new object becomes the cursor and the old one is dropped.

If an object is only a temporary cursor object (like the electrode prods in the Aslum Examaination Room or sand bags in the Conservatory Stage), the previous object remains the cursor at the end of the interaction with the temporary item. So, in Kaine's Castle, if the player is carrying the sword [cursor_object], and reads the battle plans (a detail object only), the sword is still the [cursor object] at the end of viewing the plans; it is not dropped at this point.
3.22.01 Multiple Objects
If a player clicks on an object which may be carried while holding another object, the new object becomes the cursor and the old one is dropped.

If an object is only a temporary cursor object (like the electrode prods in the Asylum Examination Room or sand bags in the Conservatory Stage), the previous object remains the cursor at the end of the interaction with the temporary item. So, in Kaine's Castle, if the player is carrying the sword [cursor_object], and reads the battle plans (a detail object only), the sword is still the [cursor object]at the end of viewing the plans; it is not dropped at this point.