Three screen mode

From DoomWiki.org

Revision as of 03:11, 24 November 2020 by 213.93.23.165 (talk) (Technical details: fixed broken sentence)


A demonstration of three-screen mode as reenabled in Chocolate Doom.

Three screen mode is a feature present in early versions of Doom that uses three networked computers together to play Doom in a "virtual reality" style. The monitors from the three computers are used to show the view of a single player from three different angles: straight ahead (normal view), a 90° offset to the left, and a 90° offset to the right. If the three monitors are arranged appropriately, the player then has a greatly expanded field of view.

Setup

With DOS Doom, three screen mode can only be used in Doom v1.1 or earlier, as the feature does not work in Doom v1.2 or later. This is unfortunate because networking in these early versions includes a number of bugs. The game must be set up using the -net parameter: versions of Doom prior to v1.2 had built-in networking and did not use the IPXSETUP external driver.

The main computer (player's console) is started up with:

doom -net 3

The computer at a 90° offset to the left starts with:

doom -net 3 -left

Finally the computer at a 90° offset to the right starts with:

doom -net 3 -right

Some source ports such as Chocolate Doom add back three screen mode and the -left / -right parameters.

Technical details

The three screen feature may have been inspired by a visit that John Carmack made to Alaska Airlines where he saw one of their flight simulators that used three screens to provide a simulated cockpit. Carmack mentioned the visit in a 1992 post to the MCI-WorldComm BBS and specifically mentioned the three monitor setup [1].

In a three screen mode game, even though only one player is present, the game is technically a network game and will therefore play slightly differently, as items flagged with the netgame-only flag will be present. Similarly, if a demo is recorded, it will only play back correctly if a source port such as PrBoom+ or Chocolate Doom is used with the -solo-net parameter.

From Doom v1.2 onwards, three screen mode no longer worked. It is a common misconception that it was intentionally removed, but analysis of the Doom source code reveal that IPXSETUP and SERSETUP do not support this. Rather, it is more likely that the feature was unintentionally broken by a refactoring of the networking code that took place between the v1.1 and v1.2 releases. The v1.2 release saw Doom's networking support split out into external "drivers" that provided support for different networking protocols, leaving the main doom.exe agnostic about how network data is transmitted.

The shared doomcom_t struct used for communication between doom.exe and external drivers (such as ipxsetup.exe) contains an angleoffset field that purports to be intended to support three screen mode, with the following comment:

   // These are related to the 3-display mode,
   //  in which two drones looking left and right
   //  were used to render two additional views
   //  on two additional computers.
   // Probably not operational anymore.
   // 1 = left, 0 = center, -1 = right
   short               angleoffset;

However, in practice the field is ignored and does nothing. Within the Doom source, it was likely intended to be used to initialize to a global variable named viewangleoffset that controls three screen mode, but it appears that this step was forgotten.

See also