Building upon the success of the original “SEGA Mega Drive Classics Hub” on Steam, SEGA tasked us to enhance the experience further by porting the title across multiple platforms and adding a variety of new features, including online multiplayer.
The d3t Solution:
d3t faced the significant technical challenge of porting the SEGA Mega Drive Classics experience to 5 new platforms (PS4, Xbox One, Switch, Linux and Mac), and 3 VR platforms (Vive, Oculus, PSVR). In addition to this, a multitude of new features were proposed together with performance optimisations to allow the experience to run smoothly on each platform.
Understanding the capabilities of the game engine and the challenges that we might face when working with each platform really helped us to architect our systems efficiently.
The 3D hub in the initial Steam release of the title wasn’t originally conceived with VR in mind; so, whilst the geometry all looked great from a fixed head position, once the player had the freedom to move around inside the space, a significant redesign of the 3D space was required to make sure the room look great from any angle.
Here’s a summary of the work done:
- Expand the Steam build to support both Mac and Linux
- New console builds for PS4, Xbox One and Switch
- French, German, Italian, and Spanish now supported
Multiple region ROMs*
- Selectable from the ‘Game Library’ menu
- All games are played using the English release ROM. For some games, it is also possible to switch the ROM for a version in a different language.
- Oculus Rift
- HTC Vive
- Peer to peer online multiplayer**
- Achievements and challenges system
- Rewind and fast forward features
- Leader boards
- Favourites system for the ‘Game Library’
- More customisation for both Hub and emulator settings including a selection of full-screen emulator borders, filters, and an option to horizontally flip the emulator (a feature used in one of the challenges)
- Updated ROM’s
- Lighting overhaul
We had no real control over any of the data in the ROM games so creating features such as rewind and adding in-game achievements presented significant technical challenges.
Achievements were developed by dumping the games’ memory to a text file before and after a specific achievement event and inspecting changes in the data, for example, the achievement for 500 rings in Sonic: if the user had 10 rings we would dump the memory, then collect a ring, then dump the memory a second time and look for changes in a number going from 10-11 at an individual memory address. There is a lot of data in a game, and sometimes it can be difficult to track down such events; some numbers in games can even be created via equations or on the fly rather than being stored in a variable, which could also make things difficult to track down. We used a similar method for developing leader boards.
We architected the rewind feature by saving a history of whole-game emulator states as the game is played. We stored around 2000 of these states in a fixed size array, and when the rewind key is held, set the current state to the rewind frame that was currently being iterated through; if the key is held longer than the amount of frames then it would stop at the last frame. This may sound like it would require a huge amount of memory but it’s actually only just over 1.6MB per frame.
Due to the hardware and software limitations of the Nintendo Switch, some systems needed to be refactored to allow them to run smoothly on the console. The lighting system was converted from real-time to a mixed solution of real time lighting from the sun and moon, and lightmaps baked from those lights contained within the room. The game boxes on the shelves were better optimised to reduce the load on the GPU. This was supplemented by using smaller framebuffers and upscaling while in handheld mode.
*A ROM is a self-contained game e.g. Sonic. Each region ROM will provide in-game text and character voices in that language, something we have no control over.
**Available for games that support multiplayer only.
Sega Mega Drive Classics was a large project delivered by a small team. There were many difficult obstacles that we had to overcome. The biggest of these came from the fact that we had no real control over the game ROMs.
The complexities in working in such a restrictive system have been a great learning opportunity for the team.