Difference between revisions of "Freescape"
Neuromancer (talk | contribs) |
Neuromancer (talk | contribs) |
||
(33 intermediate revisions by 3 users not shown) | |||
Line 4: | Line 4: | ||
|companies=[[Incentive Software]] | |companies=[[Incentive Software]] | ||
|usedBy=[[3D Construction Kit]], [[3D Construction Kit 2.0]],<br />[[Castle Master]], [[Castle Master II: The Crypt]],<br />[[Dark Side]], [[Driller]], [[Total Eclipse]],<br />[[Total Eclipse II: The Sphinx Jinx]] | |usedBy=[[3D Construction Kit]], [[3D Construction Kit 2.0]],<br />[[Castle Master]], [[Castle Master II: The Crypt]],<br />[[Dark Side]], [[Driller]], [[Total Eclipse]],<br />[[Total Eclipse II: The Sphinx Jinx]] | ||
|dateAdded= | |dateAdded=2022-11-10 | ||
|release= | |release=2.7.0 | ||
}} | }} | ||
Line 13: | Line 13: | ||
== ScummVM reimplementation == | == ScummVM reimplementation == | ||
Our freescape reimplementation aims to | Our freescape reimplementation aims to reimplement the original one, with the following improvements: | ||
* Three renderers available: TinyGL using software in their original resolution (320x200) and OpenGL in arbitrary resolution (with and without shaders). | |||
{| class="wikitable" | |||
|+Driller in different renderers: OpenGL, TinyGL, and the original game in Dosbox | |||
|[[File:Driller-opengl.png|frameless|231x231px]] | |||
|[[File:Driller-tinygl.png|frameless|192x192px]] | |||
|[[File:Driller-dosbox.png|frameless|224x224px]] | |||
|} | |||
The new ScummVM renderers remove completely the artifacts of the original freescape engine, since they perform computation on floats instead of integers. | |||
* Mouse and mouselook support for every game. For instance, the original Driller only had mouse support for Amiga and Atari, the rest of the releases allowed to use only keyboard or joystick. | * Mouse and mouselook support for every game. For instance, the original Driller only had mouse support for Amiga and Atari, the rest of the releases allowed to use only keyboard or joystick. | ||
* Faster framerate. The original games | * Unified controls: Different releases featured different type of inputs and controls. ScummVM implementation unified them (e.g. some features are exclusive from some releases). | ||
* Faster framerate. The original games run at 10fps (or less) while our implementation aims to have around 60fps or more. In theory, this should not affect the gameplay but this is still an area of research. | |||
* More precise collision resolution to avoid artifacts and bugs. | |||
* Quick save/load shortcuts | |||
* Fixes for original [[Freescape#Bugs| bugs]]. | |||
Optional features: | |||
* Support for alternative controls (e.g. WASD keys or touchpad controls in mobile). This is an upcoming feature. | |||
* Support for high-quality pre-recorded sounds: the DOS releases uses PC speaker sounds, which will not sound exactly the same if they are emulated, so we included pre-recorded version from real hardware. The same will be available for other releases which do not feature sample sounds (C64, ZX Spectrum and AmstradCPC). | |||
* Restored music from different releases: most of [http://vgmpf.com/Wiki/index.php/Freescape_games the Freescape game releases do not feature any music at all] (e.g. the DOS releases). Our implementation will allow, if the user owns more than one release, to replay the music from one release using other one. It will also allow to include restored music in the future. | |||
* Extended [[Freescape#Cheats| cheats]]. | |||
== How to switch different renderers== | |||
The most prominent feature of the ScummVM reimplementation is the use of different renderers such as TinyGL or OpenGL. These can be selected changing the option in "Game 3D Renderer" either in the "Global Options..." (for all games) or the "Game Options.." for the Freescape games. [[File:Scummvm-00000.png|center|475x475px]] | |||
==Roadmap== | |||
The Freescape technology evolved from 1987 to 1992. Our engine will progress supporting the following games/releases: | |||
1. Driller DOS (EGA), Amiga and AtariST releases: Done. | |||
2. Additional Driller releases: DOS (CGA), Amstrad CPC and ZX Spectrum: Done. | |||
3. Dark Side demos (DOS and ZX Spectrum): Done | |||
4. Dark Side (EGA), Amstrad CPC, ZX Spectrum releases: Done. | |||
5. Total Eclipse (EGA), Amstrad CPC, ZX Spectrum releases: Done. | |||
6. Dark Side / Total Eclipse for Amiga/AtariST releases: In progress. | |||
7. Castle Master (EGA), Amstrad CPC, ZX Spectrum: In progress. | |||
8. Castle Master for Amiga/AtariST releases: in progress. | |||
9. Total Eclipse II / Castle Master II: The Crypt. | |||
10. 3D Construction Kit demo game and other games | |||
11. 3D Construction Kit 2.0 demo game and other games | |||
Support for CGA (DOS) and Hercules (DOS) for all the games will be added later. It is unclear if the C64 support could be added, given how hard to obtain the game data from the original releases. | |||
Re-implementing the 3D Construction Kit itself (the program used to create games) is outside the scope of this project. ScummVM will only allow to play games already released, not create new ones. | |||
==History== | |||
The reverse engineering of the original engine and code development | |||
took several decades (!) and includes the following people: | |||
* John Elliott for reverse engineering the file formats for 8-bit games and producing some code for rendering levels (2001) | |||
* Thomas Harte for reverse engineering part of the file formats for 16-bit games as well as creating the original code of Phantasma, which served as initial code for this engine: https://github.com/TomHarte/Phantasma/ (2013). | |||
* Jason "Joefish" Railton for providing some example code on decoding of Atari-ST Neochrome (.NEO) format low-resolution 16-colour images (2016). | |||
* Steven Henk Don for providing valuable information of the reverse engineering of Driller for DOS: https://www.shdon.com/freescape/ as well as code contributions for reading Freescape images. | |||
* Richard Quirk for providing valuable information of the reverse engineering of Castle Master and other Freescape games. | |||
* Chris Allen for providing valuable information and code for reproducing sound effects. He also provided high-definition recorded versions of emulated Driller sounds which are used by this engine. | |||
* Franck "hitchhikr" Charlet for disassembling and documenting Driller for Amiga: https://github.com/hitchhikr/driller (2020) | |||
* Santiago Ontañón for disassembling, investigate and annotate "Castle Master II: The Crypt" for ZX Spectrum: https://github.com/santiontanon/castlemaster2-disassembly (2023) | |||
* Farmboy0 for all the valuable discussion and example code to parse internal Freescape data structure: https://gitlab.com/farmboy0/freescapevr (2023) | |||
==Bugs== | |||
Freescape games allowed a level of freedom in movement that was ahead of their time. As expected, with the increased complexity of their engine, it also included some bugs. This is an incomplete list of bugs in the original implementations, indicating if the bug is already fixed (<span style="color:green;">✓</span>) or not fixed (<span style="color:red;">✗</span>) in ScummVM: | |||
<span style="color:green;">✓</span> [https://wiki.scummvm.org/index.php?title=File:Driller-dosbox.png Rendering artifacts] caused by imprecise computation during screen updates. | |||
<span style="color:green;">✓</span> Approaching geometric objects in different angles results in no interaction at all. This can be reproduced approaching an entrance to another area in a very skew angle. The player will not trigger the entrance, instead it will collided and be rejected by the object. | |||
<span style="color:green;">✓</span> Interacting with corners sometimes results in traveling to the incorrect area. | |||
==Cheats== | |||
The ScummVM reimplementation of Freescape features a number of generic cheats that are implemented for every supported game: | |||
* Avoid failing: this disable falling in edges. The player will not able to complete a movement if it causes to fall. | |||
* Disable sensor: sensors will not shoot the player. | |||
* Extended timer: the game timer will be set to 99:59:59, which should give plenty of time to finish any game. | |||
==External links== | ==External links== | ||
* [https://en.wikipedia.org/wiki/Freescape Freescape article on Wikipedia] | *[https://en.wikipedia.org/wiki/Freescape Freescape article on Wikipedia] | ||
* [https://github.com/neuromancer/scummvm/tree/freescape Old fork of ScummVM on GitHub with WIP Freescape engine] | *[https://github.com/neuromancer/scummvm/tree/freescape Old fork of ScummVM on GitHub with WIP Freescape engine] | ||
* [http://members.allegro.cc/ThomasHarte/phantasma/index.html Old project to re-implement the engine with OpenGL rendering, called Phantasma] | *[http://members.allegro.cc/ThomasHarte/phantasma/index.html Old project to re-implement the engine with OpenGL rendering, called Phantasma] | ||
[[Category:Engines]] | [[Category:Engines]] |
Latest revision as of 19:05, 15 December 2024
Freescape | ||
---|---|---|
Engine developer | neuromancer | |
Companies that used it | Incentive Software | |
Games that use it | 3D Construction Kit, 3D Construction Kit 2.0, Castle Master, Castle Master II: The Crypt, Dark Side, Driller, Total Eclipse, Total Eclipse II: The Sphinx Jinx | |
Date added to ScummVM | 2022-11-10 | |
First release containing it | 2.7.0 |
About
The original Freescape was one of the first 3D game engines, developed by Incentive Software for the game Driller in 1987 and following games, culminating in an easy to use game editor called 3D Construction Kit 2.0 in 1992, which was used to make a few amateur games.
ScummVM reimplementation
Our freescape reimplementation aims to reimplement the original one, with the following improvements:
- Three renderers available: TinyGL using software in their original resolution (320x200) and OpenGL in arbitrary resolution (with and without shaders).
The new ScummVM renderers remove completely the artifacts of the original freescape engine, since they perform computation on floats instead of integers.
- Mouse and mouselook support for every game. For instance, the original Driller only had mouse support for Amiga and Atari, the rest of the releases allowed to use only keyboard or joystick.
- Unified controls: Different releases featured different type of inputs and controls. ScummVM implementation unified them (e.g. some features are exclusive from some releases).
- Faster framerate. The original games run at 10fps (or less) while our implementation aims to have around 60fps or more. In theory, this should not affect the gameplay but this is still an area of research.
- More precise collision resolution to avoid artifacts and bugs.
- Quick save/load shortcuts
- Fixes for original bugs.
Optional features:
- Support for alternative controls (e.g. WASD keys or touchpad controls in mobile). This is an upcoming feature.
- Support for high-quality pre-recorded sounds: the DOS releases uses PC speaker sounds, which will not sound exactly the same if they are emulated, so we included pre-recorded version from real hardware. The same will be available for other releases which do not feature sample sounds (C64, ZX Spectrum and AmstradCPC).
- Restored music from different releases: most of the Freescape game releases do not feature any music at all (e.g. the DOS releases). Our implementation will allow, if the user owns more than one release, to replay the music from one release using other one. It will also allow to include restored music in the future.
- Extended cheats.
How to switch different renderers
The most prominent feature of the ScummVM reimplementation is the use of different renderers such as TinyGL or OpenGL. These can be selected changing the option in "Game 3D Renderer" either in the "Global Options..." (for all games) or the "Game Options.." for the Freescape games.
Roadmap
The Freescape technology evolved from 1987 to 1992. Our engine will progress supporting the following games/releases:
1. Driller DOS (EGA), Amiga and AtariST releases: Done.
2. Additional Driller releases: DOS (CGA), Amstrad CPC and ZX Spectrum: Done.
3. Dark Side demos (DOS and ZX Spectrum): Done
4. Dark Side (EGA), Amstrad CPC, ZX Spectrum releases: Done.
5. Total Eclipse (EGA), Amstrad CPC, ZX Spectrum releases: Done.
6. Dark Side / Total Eclipse for Amiga/AtariST releases: In progress.
7. Castle Master (EGA), Amstrad CPC, ZX Spectrum: In progress.
8. Castle Master for Amiga/AtariST releases: in progress.
9. Total Eclipse II / Castle Master II: The Crypt.
10. 3D Construction Kit demo game and other games
11. 3D Construction Kit 2.0 demo game and other games
Support for CGA (DOS) and Hercules (DOS) for all the games will be added later. It is unclear if the C64 support could be added, given how hard to obtain the game data from the original releases.
Re-implementing the 3D Construction Kit itself (the program used to create games) is outside the scope of this project. ScummVM will only allow to play games already released, not create new ones.
History
The reverse engineering of the original engine and code development took several decades (!) and includes the following people:
- John Elliott for reverse engineering the file formats for 8-bit games and producing some code for rendering levels (2001)
- Thomas Harte for reverse engineering part of the file formats for 16-bit games as well as creating the original code of Phantasma, which served as initial code for this engine: https://github.com/TomHarte/Phantasma/ (2013).
- Jason "Joefish" Railton for providing some example code on decoding of Atari-ST Neochrome (.NEO) format low-resolution 16-colour images (2016).
- Steven Henk Don for providing valuable information of the reverse engineering of Driller for DOS: https://www.shdon.com/freescape/ as well as code contributions for reading Freescape images.
- Richard Quirk for providing valuable information of the reverse engineering of Castle Master and other Freescape games.
- Chris Allen for providing valuable information and code for reproducing sound effects. He also provided high-definition recorded versions of emulated Driller sounds which are used by this engine.
- Franck "hitchhikr" Charlet for disassembling and documenting Driller for Amiga: https://github.com/hitchhikr/driller (2020)
- Santiago Ontañón for disassembling, investigate and annotate "Castle Master II: The Crypt" for ZX Spectrum: https://github.com/santiontanon/castlemaster2-disassembly (2023)
- Farmboy0 for all the valuable discussion and example code to parse internal Freescape data structure: https://gitlab.com/farmboy0/freescapevr (2023)
Bugs
Freescape games allowed a level of freedom in movement that was ahead of their time. As expected, with the increased complexity of their engine, it also included some bugs. This is an incomplete list of bugs in the original implementations, indicating if the bug is already fixed (✓) or not fixed (✗) in ScummVM:
✓ Rendering artifacts caused by imprecise computation during screen updates.
✓ Approaching geometric objects in different angles results in no interaction at all. This can be reproduced approaching an entrance to another area in a very skew angle. The player will not trigger the entrance, instead it will collided and be rejected by the object.
✓ Interacting with corners sometimes results in traveling to the incorrect area.
Cheats
The ScummVM reimplementation of Freescape features a number of generic cheats that are implemented for every supported game:
- Avoid failing: this disable falling in edges. The player will not able to complete a movement if it causes to fall.
- Disable sensor: sensors will not shoot the player.
- Extended timer: the game timer will be set to 99:59:59, which should give plenty of time to finish any game.