In today's video games, the open world is now commonplace - a single, continuous gameplay area that offers a vast canvas for developers to populate, to varying degrees of success. At the most fundamental level, what makes these sandbox games work is their ability to stream in world data on the fly as you play, with no loading whatsoever to disrupt the flow during traversal. What is now the norm was once the most ambitious of gaming concepts - one that initially came to fruition in the console space with the classic Legacy of Kain: Soul Reaver for the original PlayStation.
The title released during a difficult period for PS1 gaming. The Dreamcast was just around the corner in the West and The Legend of Zelda: Ocarina of Time on N64 had redefined expectations of how ambitious an action adventure could be. Despite this, Soul Reaver managed to leave its mark as one of the most technically accomplished releases the PlayStation would see during its lifespan. With vast worlds to explore, fluid animation and superb audio production, Crystal Dynamics' epic is still highly regarded today, 18 years later.
Key to its success is how it transplanted what we know today as 'Metroidvania' elements into a vast (for its time) 3D world - the idea being that the player focused on obtaining new abilities in order to unlock new routes through previously explored areas. Crystal Dynamics' Gex engine - named after its 3DO platforming mascot - pushed back boundaries here, not just in its background world streaming technologies. With N64 Zelda as the benchmark, Soul Reaver increases resolution to 512x240, up from Nintendo's 320x240 - and it targets 30fps as opposed to the 20fps cap of the competition. Despite running from a cartridge, Zelda still had what you might call loading time pauses - presumably where data pulled from the cart is decompressed into system memory. It was fast enough, but Soul Reaver's open world had no in-game loading at all - aside from a short pause when first loading the title or restarting a saved game.
It was a significant technological achievement, but the core foundation - storage and lots of it - was already available. The PlayStation used CD-ROMs, offering copious amounts of space and the option to push audio and video to the next level. Unfortunately, with just a double speed drive installed, the system is limited by meagre data transfer speeds. The result? In most games, loading screens were a harsh reality. The original Blood Omen - Soul Reaver's predecessor - was just a 2D game, but it's perhaps one of the worst offenders. This just wouldn't work on a sequel, so a real-time data streaming system was employed to conceal loading. Essentially, the game continued to stream in new level data as you played.
So how does it work? Essentially, the game is broken down into a series of units, with each unit representing a room, hallway or path to other rooms. Once the game is running, Soul Reaver stores three of these units in memory at any point - the room the player is standing in and the two adjacent units. As the main character moves into a new unit, the furthest one from the player that resides in memory is cleared and the next one loaded. Maps are designed so that loading a new unit into memory requires less time than it takes the player to cross the current unit. Clever, right?
Factoring in the CD-ROM drive's slow seek and transfer speeds, additional tricks are used to improve data throughput. For one thing, each map unit has a list of object types used in a scene - each object is loaded just one time and the list informs the system how many copies should be placed in a certain area. This is extended to models and environment data as well, which have a list at the start of each file that the game can loop through storing references along the way. Essentially, it becomes possible to quickly look up skin, animation or polygon data from any model using these pointers.
Another memory saving technique lies in its use of colour look-up tables. All textures use these palettes to define an appropriate color and different parts of a texture can use different look-up tables enabling richer color schemes. Per-vertex colouring is also used to bring further variety to the world. This allows the developer to utilise a single texture in a variety of situations with varying results.
On top of this, due to ample storage space on the disc, file duplicates are placed all over the CD enabling faster access to specific assets when needed. These days, with hard drives, it's less critical, but there was a time when data placement on a disc could have a huge impact on retrieval speed - and this data duplication technique was used extensively right the way up to Xbox 360/PS3 generation titles.
Further complicating level streaming, the design for Soul Reaver also called for dimensional shifting. During gameplay, players swap between the spectral and material planes - a key gameplay concept that ties in closely to both puzzle-solving and storytelling. Loading two different versions of the map would have placed too much strain on an already heavy system, but Crystal Dynamics' solution was elegant, innovative and efficient. The same basic map data is utilised, but geometry is mapped to different coordinates in each version of the level. Shifting between planes interpolates from one set of geometry to the other. Per-vertex colour data is also modified when shifting between planes, adding further to the illusion.
Ultimately, these elements come together to allow the Gex engine to deliver a fully functional data streaming system using hardware that simply wasn't designed for the task. It was possible to run from one end of the world to another without seeing a single loading screen while shifting between two map states. The work poured into this powerful engine would continue to serve the developer well after the release of Soul Reaver, and also impacted other areas of the game.
For example, the PlayStation's CD drive was often deployed to play so-called Redbook audio - effectively audio CD-spec. With the drive entirely tied up with level streaming, this wouldn't be possible for Soul Reaver, so SNES-style sequenced audio was used instead. Crystal Dynamics took advantage of the set-up in order to dynamically alter the music during playback - context driven based entirely on what was happening during gameplay at the time. The sound quality is superb, but the storage and memory footprint was tiny - musician Kurt Harland's soundtrack from the game remains a highlight.
Soul Reaver was eventually released on three platforms - PS1, Dreamcast and PC - so what's the best way to play it today? Head over to GOG and there's a version of the game you can buy which still works OK on modern PC hardware. It powers past some of the PS1's profound hardware limitations - like affine texture warping and low resolution - but the game has a 30fps cap, and there's no support for today's analogue joypads, making control challenging. Additionally, the dynamic soundtrack is absent - the music is present, but loops instead of changing according to context. Playing the Dreamcast version is definitely a viable option though. It targets 60 frames per second and features limited geometry and texture upgrades along with a longer view distance - but you're still limited to 640x480 resolution, limitations with the controller are an issue and performance isn't as consistent as you may like.
Emulation can power through most of the Dreamcast's frame-rate drops and controls can be remapped, but this approach results in some presentational issues. So, from our perspective, it's a toss-up between using original hardware or emulation tool Demul in order to deliver the best Soul Reaver gameplay available right now. It's a title well worth revisiting, though the experience may prove bittersweet: although a sequel was released, plans for a third game have never come to fruition. As things stand, a brilliant franchise lies dormant, and we can only hope that Square-Enix decides to revisit the series at some point in the future. After all, Crystal Dynamics remains a key developer in its line-up of internal studios...