Difference between revisions of "Wintermute"
Praetorian (talk | contribs) |
|||
(20 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
{{EngineDescription| | {{EngineDescription | ||
|name=Wintermute | |||
|developer=[[User:Somaen|somaen]], [[User:T0by|t0by]], [[User:Fury|Fury]], [[User:Lb_ii2|lb_ii]] | |||
|companies=[[Dead:Code Software]] | |||
|usedBy=[[Wintermute/Games|Hundreds of games]] | |||
|dateAdded=2012-09-04 | |||
|release=1.7.0 | |||
}} | }} | ||
The '''Wintermute Engine''' (Copyright (c) 2011 Jan Nedoma) is a set of software tools and a runtime interpreter (game engine) primarily designed for creating and running graphical adventure games. The full engine is open-source (on demand), as well as some of the tools. | The '''Wintermute Engine''' (Copyright (c) 2011 Jan Nedoma) is a set of software tools and a runtime interpreter (game engine) primarily designed for creating and running graphical adventure games. The full engine is open-source (on demand), as well as some of the tools. | ||
The lead developer rewrote the runtime interpreter to make it a bit portable in 2011, for the 2D part of the engine only. | The lead developer rewrote the runtime interpreter to make it a bit portable in 2011, for the 2D part of the engine only. | ||
This engine | This engine was added by the [[Summer of Code|GSoC]] student [[User:somaen|somaen]] to ScummVM as part of the [[Summer of Code|Google Summer of Code]] in [[Summer of Code/GSoC2012#Wintermute integration in ScummVM|2012]]. Its functionality was extended by the GSOC student [[User:t0by|t0by]] as part of the [[Summer of Code/GSoC2013#Improving Wintermute Engine|GSoC 2013]]. | ||
The 3D part of the engine was implemented by the GSOC student [[User:Fury|Fury]] as part of the [[Summer of Code/GSoC2020|GSoC 2020]]. | |||
Subengines for Wintermute forks were added by [[User:Lb_ii2|lb_ii]] to run games developed by [[Gingertips Game Studio]] and [[HeroCraft]]. | |||
Once complete, this engine would add support for hundreds of 2D and 2.5D games, would give the users a nice way to create games supported by ScummVM, and would bring to Dead:Code the portability they are dreaming of. | |||
This port | ==Features== | ||
This port of the Wintermute Engine (WME) is based on WME Lite, which lacks some functionality originally found in WME: (from http://res.dead-code.org/doku.php/wmelite:start) | |||
In addition, this port removes a few additional features that were never/rarely used | In addition, this port removes a few additional features that were never/rarely used. | ||
{| class="wikitable" | |||
|+ | |||
Comparison of different WME forks | |||
!Feature | |||
!WME 1.x | |||
!WME Lite | |||
!ScummVM | |||
|- | |||
|3D Characters | |||
|Yes | |||
|No | |||
|Yes | |||
|- | |||
|Sprite frame mirroring | |||
|Yes | |||
|No | |||
|Yes | |||
|- | |||
|Sprite rotations | |||
|Yes | |||
|No | |||
|Yes | |||
|- | |||
|Sprite blending modes | |||
|Yes | |||
|No | |||
|??? | |||
|- | |||
|Video playback | |||
|Yes | |||
|No | |||
|Partially (Theora is slow and doesn't support seeking) | |||
|- | |||
|Sound effects like SoundFXEcho() | |||
|Yes | |||
|No | |||
|No | |||
|- | |||
|Plugins | |||
|Yes | |||
|No | |||
|For most games, reimplemented - see [[Wintermute/Plugins]] | |||
|- | |||
|External functions from DLLs | |||
|Yes | |||
|No | |||
|For most games, reimplemented - see [[Wintermute/Externals]] | |||
|- | |||
|'Directory' script object | |||
|Real files listing | |||
|Real files listing | |||
|For most games, static lists - see script_ext_directory.cpp | |||
|- | |||
|'File' script object | |||
|Real files access | |||
|Real files access | |||
|Implemented with SavefileManager | |||
|- | |||
|Game Explorer support. | |||
|Yes | |||
|No | |||
|No | |||
|- | |||
|Debugger | |||
|Yes | |||
|No | |||
|No | |||
|- | |||
|Compiler | |||
|Yes | |||
|No | |||
|No | |||
|- | |||
|CD-numbering support in .dcp-files | |||
|Yes | |||
|Yes | |||
|No, was never used | |||
|- | |||
|VKey values | |||
|MSDN Keycodes | |||
|SDL Keycodes | |||
|MSDN / SDL Keycodes (specific per game) | |||
|- | |||
|Non-Unicode string encoding | |||
|OS-specific | |||
|OS-specific | |||
|Target language-specific | |||
|} | |||
==Additional limitations== | ==Additional limitations== | ||
Line 42: | Line 117: | ||
* TTF-fonts might behave a bit differently, owing to both the change to FreeType in WME Lite and the change in dpi in this port of WME. | * TTF-fonts might behave a bit differently, owing to both the change to FreeType in WME Lite and the change in dpi in this port of WME. | ||
* The window-caption-setting in-game will be ignored, for the sake of concistency with ScummVM. | * The window-caption-setting in-game will be ignored, for the sake of concistency with ScummVM. | ||
* Since we don't use FreeImage, some games might use odd files that weren't expected when the image-decoders in ScummVM were written. One example here is interlaced-PNGs. | * Since we don't use FreeImage, some games might use odd files that weren't expected when the image-decoders in ScummVM were written. One example here is interlaced-PNGs. | ||
* Most games assume the availability of the Windows-fonts (particularly arial.ttf) at this point no fallback has been put in place for using FreeFonts as replacements, simply for lack of having them easily accessible to the engines at this point. So, at least arial.ttf should be put in either the game-folder or made available through the extras-folder for now, otherwise kGUIBigFont will be used as a replacement. | * Most games assume the availability of the Windows-fonts (particularly arial.ttf) at this point no fallback has been put in place for using FreeFonts as replacements, simply for lack of having them easily accessible to the engines at this point. So, at least arial.ttf should be put in either the game-folder or made available through the extras-folder for now, otherwise kGUIBigFont will be used as a replacement. | ||
==Advanced engine-features== | ==Advanced engine-features== | ||
At this point the engine implements the following "advanced engine features": | At this point the engine implements the following "advanced engine features": | ||
Line 63: | Line 134: | ||
==Detection== | ==Detection== | ||
Since Wintermute has authoring tools available, there will at any point in | Since Wintermute has authoring tools available, there will at any point in time be at least a few games that are works-in-progress, and as the authors of these games might want to test their games in ScummVM, the engine has to be able to detect arbitrary Wintermute-games, to this end the detector code in this engine will check any folder containing "data.dcp", and try to read "startup.settings" and "default.game" (or optionally any other .game-file defined in startup.settings), the Name/Caption fields in the .game-file will be used as gameid/title (prefixing the gameid with "wmefan-" to avoid confusion with any other WME game that might happen to have taken that id. | ||
time be | |||
of these games might want to test their games in ScummVM, the engine has | |||
to be able to detect arbitrary Wintermute-games, to this end the detector | |||
code in this engine will check any folder containing "data.dcp", and try to | |||
read "startup.settings" and "default.game" (or optionally any other .game-file | |||
defined in startup.settings), the Name/Caption fields in the .game-file will | |||
be used as gameid/title (prefixing the gameid with "wmefan-" to avoid confusion | |||
with any other WME game that might happen to have taken that id. | |||
All | All known games should have their md5s and gameids properly added. | ||
==Games targeted by the engine== | ==Games targeted by the engine== | ||
Line 85: | Line 142: | ||
*[http://res.dead-code.org/doku.php/games:start Dead:Code list of games] | *[http://res.dead-code.org/doku.php/games:start Dead:Code list of games] | ||
*[http://forum.dead-code.org/index.php?board=2.0 Dead:Code forum announcement thread] | *[http://forum.dead-code.org/index.php?board=2.0 Dead:Code forum announcement thread] | ||
*[ | *[https://www.mobygames.com/group/4026/game-engine-wintermute/ MobyGames short list] | ||
See [[Wintermute/Games|Wintermute Games]] for a list of known games and their current state of support in the engine. | See [[Wintermute/Games|Wintermute Games]] for a list of known games and their current state of support in the engine. | ||
== | ==Known issues:== | ||
See [[Wintermute/TODO|Wintermute TODO]] list. | |||
==See Also== | |||
* [[Wintermute/Controls]] | |||
* [[Wintermute/Versions]] | |||
== | |||
==External links== | ==External links== | ||
*[ | *[https://en.wikipedia.org/wiki/Wintermute_Engine Wikipedia article on the Wintermute Engine] | ||
[[Category:Engines]] | [[Category:Engines]] |
Latest revision as of 19:04, 28 June 2023
Wintermute | ||
---|---|---|
Engine developer | somaen, t0by, Fury, lb_ii | |
Companies that used it | Dead:Code Software | |
Games that use it | Hundreds of games | |
Date added to ScummVM | 2012-09-04 | |
First release containing it | 1.7.0 |
The Wintermute Engine (Copyright (c) 2011 Jan Nedoma) is a set of software tools and a runtime interpreter (game engine) primarily designed for creating and running graphical adventure games. The full engine is open-source (on demand), as well as some of the tools.
The lead developer rewrote the runtime interpreter to make it a bit portable in 2011, for the 2D part of the engine only.
This engine was added by the GSoC student somaen to ScummVM as part of the Google Summer of Code in 2012. Its functionality was extended by the GSOC student t0by as part of the GSoC 2013.
The 3D part of the engine was implemented by the GSOC student Fury as part of the GSoC 2020.
Subengines for Wintermute forks were added by lb_ii to run games developed by Gingertips Game Studio and HeroCraft.
Once complete, this engine would add support for hundreds of 2D and 2.5D games, would give the users a nice way to create games supported by ScummVM, and would bring to Dead:Code the portability they are dreaming of.
Features
This port of the Wintermute Engine (WME) is based on WME Lite, which lacks some functionality originally found in WME: (from http://res.dead-code.org/doku.php/wmelite:start)
In addition, this port removes a few additional features that were never/rarely used.
Feature | WME 1.x | WME Lite | ScummVM |
---|---|---|---|
3D Characters | Yes | No | Yes |
Sprite frame mirroring | Yes | No | Yes |
Sprite rotations | Yes | No | Yes |
Sprite blending modes | Yes | No | ??? |
Video playback | Yes | No | Partially (Theora is slow and doesn't support seeking) |
Sound effects like SoundFXEcho() | Yes | No | No |
Plugins | Yes | No | For most games, reimplemented - see Wintermute/Plugins |
External functions from DLLs | Yes | No | For most games, reimplemented - see Wintermute/Externals |
'Directory' script object | Real files listing | Real files listing | For most games, static lists - see script_ext_directory.cpp |
'File' script object | Real files access | Real files access | Implemented with SavefileManager |
Game Explorer support. | Yes | No | No |
Debugger | Yes | No | No |
Compiler | Yes | No | No |
CD-numbering support in .dcp-files | Yes | Yes | No, was never used |
VKey values | MSDN Keycodes | SDL Keycodes | MSDN / SDL Keycodes (specific per game) |
Non-Unicode string encoding | OS-specific | OS-specific | Target language-specific |
Additional limitations
- Only .OGG and RAW-.WAV sounds are supported at this point
- TTF-fonts might behave a bit differently, owing to both the change to FreeType in WME Lite and the change in dpi in this port of WME.
- The window-caption-setting in-game will be ignored, for the sake of concistency with ScummVM.
- Since we don't use FreeImage, some games might use odd files that weren't expected when the image-decoders in ScummVM were written. One example here is interlaced-PNGs.
- Most games assume the availability of the Windows-fonts (particularly arial.ttf) at this point no fallback has been put in place for using FreeFonts as replacements, simply for lack of having them easily accessible to the engines at this point. So, at least arial.ttf should be put in either the game-folder or made available through the extras-folder for now, otherwise kGUIBigFont will be used as a replacement.
Advanced engine-features
At this point the engine implements the following "advanced engine features":
- RTL ("Return to Launcher") support
- Global options dialog support
- Listing savestates via command line or Launcher
- Loading savestates via command line or Launcher
- Deleting savestates via the Launcher and GMM
- Savestate metadata support
- Loading/Saving during run time
and NOT the following:
- Enhanced debug/error messages
Detection
Since Wintermute has authoring tools available, there will at any point in time be at least a few games that are works-in-progress, and as the authors of these games might want to test their games in ScummVM, the engine has to be able to detect arbitrary Wintermute-games, to this end the detector code in this engine will check any folder containing "data.dcp", and try to read "startup.settings" and "default.game" (or optionally any other .game-file defined in startup.settings), the Name/Caption fields in the .game-file will be used as gameid/title (prefixing the gameid with "wmefan-" to avoid confusion with any other WME game that might happen to have taken that id.
All known games should have their md5s and gameids properly added.
Games targeted by the engine
This engine potentially targets a very large amount of games:
See Wintermute Games for a list of known games and their current state of support in the engine.
Known issues:
See Wintermute TODO list.