Skip to content

Freescape

Solid 3D worlds you could walk round on an 8-bit micro

Incentive's 3D system, built by its in-house team Major Developments from 1986 and first used in Driller in 1987. It drew solid, shaded objects in true perspective from wherever the player stood, on the Spectrum, Amstrad CPC and Commodore 64 and later the Atari ST, Amiga and PC, and ran four Incentive games before the company sold it to the public as the 3D Construction Kit.

Freescape was Incentive Software’s 3D system, and its selling point was that the player could walk round anything they could see. In Driller, the first game to use it, a building on the Spectrum screen was a solid block in true perspective, and if you drove behind it, tilted your view up at it or flew over it, the program worked out what it looked like from there and drew it again. CRASH passed on Incentive’s own image for it: “a large transparent bubble with the player pinned at the centre”, able to “rotate in all directions, allowing you to look out and examine objects at any angle, even from behind and below”.

Incentive advertised the result with the line “It’s just like being there!” The team’s working name for the system had been Being There.

Who built it

Chris Andrew, the brother of Incentive’s founder Ian Andrew, had the idea in 1985. Sean Ellis, who later worked on the system, told Retro Gamer that 3D games such as Elite had already been published, “but they all used wireframe graphics. Chris realised that there was just enough power to draw solid 3D polygons.”

Incentive formed an in-house team, Major Developments, to build it: Chris Andrew, programmer Stephen Northcott and artist Paul Gregory. In 1987 the team was known by its handles, Linefeed, The Bug and Waferthin, and asked who designed Freescape, Ian Andrew told Your Sinclair it was “mostly the product of our in-house programming team” and that “the basic program design was all Linefeed’s work”. Looking back in Retro Gamer, Sean Ellis said Chris had been “employed full time to come up with a 3D system”. In the 1987 interview Ian Andrew also said that Incentive had first offered the job to “a couple of other groups of programmers, and they turned it down as being impossible”. Writing began in September 1986 on an Amstrad CPC, Chris’s own machine, which Paul Gregory said suited the work because it came with a built-in disk drive.

How it worked

Ian Andrew described the pipeline to Your Sinclair in December 1987. The team first wrote a set of CAD programs “in which we could create scenes and shapes just from plan views, side views and front views”. The finished scenes were compressed “so that we can fit larger scenes, and more of them, into the Spectrum’s memory”. A Freescape editor, “a sort of word processor for 3D objects”, let them change an object’s colour and animation, such as a sliding door.

At run time the program had three hard jobs.

  • Transforming the objects. Every object was moved into the player’s view with “3D Matrix Transformation formulae, which contain a lot of 32 bit maths, for greater accuracy”. The Z80 that did this work on the Spectrum and Amstrad has no multiply instruction. Zilog’s own manual shows the standard answer, a 16-bit multiply built from a loop of 16 shifts and conditional adds, and a 32-bit multiply costs more again.
  • Clipping. An object half on the screen was calculated “up to that point and clipped or sliced at the place where it falls across the screen boundary”.
  • Sorting and filling. CRASH reported that the objects were “priority-sorted, so one object can obscure another in true 3-D perspective”. Sean Ellis told Retro Gamer that sorting was “probably the thing that evolved the most” over the engine’s life, and that the inner loops, “triangle filling, mainly”, were “optimised to within an inch of their lives”.

Memory was as tight as speed. “Trying to get a 3D engine, together with all the game logic and environments, into just 48K was a real problem,” Ellis said. “In order to save space, the geometry representation was very high level with relatively low precision.” That helped speed as well, because the team could choose shapes that were cheap to process. The game logic was stored in a compact scripting format, the Freescape Control Language, so that designers could build levels without bloating the data.

What it cost in speed

Every move meant recalculating and refilling the whole view, and players saw it happen. Your Sinclair noted “a slight delay between ‘screens’, as the picture updates itself for a change of view”. CRASH called Driller “an amazing achievement, considering that whenever you move all the graphics have to be recalculated and filled in again”, and admitted that “after a couple of hours you don’t notice the jerkiness of the graphics”.

Freescape gave the player a way to live with this. You set the step size, how far each move or turn would take you. The Games Machine reported that it ran from 1 to 250 in Driller: a large step covered ground quickly in big jumps, and a step of one was smooth but “very slow”. The speed also depended on the machine. The Spectrum version of Driller ran slightly faster than the Amstrad one, “because there is less to shift around”, and faster again on the Spectrum +3. On the Spectrum the world was drawn in one colour with cross-hatched shading; the Amstrad version was in colour; the Commodore 64 version used solid colours instead of shading.

The Commodore 64 was the hardest machine to convert to. The code was optimised Z80 assembler, which Ellis called “not a good basis for translation”, and the 64’s own processor had to do all the 3D work. ZZAP!64 still found that the screen update “looks remarkably slow, but when you’re playing it feels quite fast”. The Atari ST and Amiga versions, which Ellis wrote in 1988, benefited from 16 colours, 32-bit arithmetic in single instructions and much more memory, which let the team “trade size for more speed”.

Each game after Driller was a little faster. CRASH measured Dark Side as “only 5% faster than its predecessor”, and found Total Eclipse “slightly faster (5-10%)” again. Ellis recalled a speed gain of around 5% per game, from a new collision detection routine written for the 16-bit versions and ported back to the 8-bit ones, and from better transformation and sorting code.

The games

Game Year CRASH Issue
Driller 1987 97% 47
Dark Side 1988 93% 54
Total Eclipse 1988 93% 60
Castle Master 1990 85% 76

Castle Master II: The Crypt followed in 1991, on the Virtual Worlds compilation; CRASH described it as “Castle Master with a couple of new screens”. CRASH’s own 1991 recap gave Dark Side’s score as 95%, although the review printed 93%.

The magazine’s enthusiasm cooled as the games kept coming. In 1987 CRASH predicted that Freescape would “have more success on the Spectrum than Ultimate’s Filmation isometric 3-D technique” ever could. By Dark Side in 1988 one reviewer hoped the next game would “use Freescape in a different fashion”, rather than become “just another Driller variant”. By Castle Master in 1990 Nick Roberts wrote that Freescape “stopped impressing me after Dark Side”, though he still scored the game 80%.

The engine for sale

In 1991 Incentive sold the engine itself as the 3D Construction Kit, published by Domark at £24.99. The Freescape games, CRASH explained, “were created by typing in lists of coordinates (a very tricky business)”; the kit replaced that with menus and a pointer. Its review describes the engine’s vocabulary:

  • Shapes from a list including “hexagons, triangles, cubes, lines and pentagons”, which you could stretch, shrink, turn, shade and position.
  • Areas: each part or room of a game was a separate area, “as many areas as memory will allow”.
  • Global objects: because storing objects repeated in every area was “very memory hungry”, a global object such as four walls and a ceiling could be defined once and used in every room.
  • Conditions, attached to objects: “IF SHOT THEN GOTO AREA 2, for example”.
  • Sensors, which made something react when the player came near.
  • An adjustable view window: “The smaller you have it the faster things will scroll by.”

Sean Ellis went on to write a new engine. It became known as Superscape, and Incentive’s sister company Dimension International sold it for virtual reality and business use. He described it to Retro Gamer as “conceptually, a direct descendant of the Freescape system, but with more flexible geometry, larger scene sizes, and more colours”.

In 2023 ScummVM 2.7.0 added a reimplementation of the Freescape engine that runs Driller from its original data files; Dark Side followed in its development builds that September.

Sources

  • CRASH issue 47, December 1987, pp. 24–25: Driller review (the bubble, priority sorting, recalculation, jerkiness, the comparison with Filmation).
  • Your Sinclair issue 24, December 1987, “Programming” feature: interview with Ian Andrew (the 1985 idea, September 1986 start, Major Developments’ handles, the CAD tools, compression, the editor, 32-bit matrix maths, clipping).
  • Your Sinclair issue 25, January 1988: Driller review.
  • Sinclair User issue 69, December 1987: Driller review and the Major Developments team.
  • The Games Machine issue 2, December 1987, p. 98: Driller reviews (step size, relative speed of the versions, the C64 version’s solid colours).
  • ZZAP!64 issue 33, January 1988, pp. 12–13: Commodore 64 Driller review.
  • CRASH issue 54, July 1988, pp. 77–78: Dark Side review; issue 60, January 1989, pp. 32–33: Total Eclipse review; issue 76, May 1990, p. 42: Castle Master review; issue 88, May 1991, pp. 38–39: 3D Construction Kit review; issue 91, August 1991: Virtual Worlds compilation.
  • Zilog, Z80 CPU User Manual (UM008011-0816), p. 31: Table 3, “Multiply Listing” (a 16-bit multiply in software).
  • “Freescape: The Complete Lowdown”, Retro Gamer issue 22, 2005, pp. 26–29: interviews with Sean Ellis and Paul Gregory (origins, the CPC, memory and speed, Freescape Control Language, the ports, per-game speed gains, Superscape).
  • ZZAP!64 issue 72, April 1991: Dimension International, “a sister company of Incentive”, and its Superscape system.
  • ScummVM release notes, version 2.7.0, 26 February 2023, and ScummVM news, 25 September 2023 (web, secondary). https://docs.scummvm.org/en/latest/help/release.html

See also

Checked. Verified against primary sources and signed off by a person.