Difference between revisions of "Wintermute"

Jump to navigation Jump to search
2,176 bytes removed ,  20:39, 27 June 2021
Slight grammar fixes.
(→‎Games targeted by the engine: Wikified and sorted all games and added several known 2D games)
(Slight grammar fixes.)
(23 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{EngineDescription|
{{EngineDescription
        name=Wintermute|
|name=Wintermute
        developer=[[User:somaen|somaen]]|
|developer=[[User:Somaen|somaen]], [[User:T0by|t0by]], [[User:Fury|Fury]], [[User:Lb_ii2|lb_ii]]
        companies=[[Dead:Code Software]]|
|companies=[[Dead:Code Software]]
        usedBy=Dozens of games|
|usedBy=[[Wintermute/Games|Hundreds of games]]
        dateAdded=Not Yet|
|dateAdded=2012-09-04
        release=N/A|
|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 is being added by the GSoC student [[User:somaen|somaen]] to ScummVM as part of the GSoC 2012. Adding this engine would add support to more than fifty 2D 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 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]].


==Features==
Subengines for Wintermute forks were added by [[User:Lb_ii2|lb_ii]] to run games developed by [[Gingertips Game Studio]] and [[HeroCraft]].
This port of the Wintermute Engine (WME) is based on WME Lite, which lacks the following functionality
originally found in WME: (from http://res.dead-code.org/doku.php/wmelite:start)


The following features of WME 1.x are NOT supported by WME Lite:
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.
* 3D characters. WME Lite only supports 2D games.
* Sprite frame mirroring.
* Sprite rotations.
* Sprite blending modes.
* Video playback.
* Plugins.
* Calling external functions from DLL libraries from scripts.
* Game Explorer support.
* 'Directory' script object.


This port does reimplement a few of these features, currently:
==Features==
* Sprite frame mirroring - WORKS.
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)
* Video playback - Theora PARTIALLY WORKING. (Slow, and doesn't support seeking)


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.
* 'File' script object - ScummVM doesn't have any easy way to write/read arbitrary files.
{| class="wikitable"
* Debugger/Compiler - weren't properly accessible in WME Lite anyhow.
|+
* CD-numbering support in .dcp-files - was never used.
Comparison of different WME forks
* 'SaveDirectory'-property of 'Game' will not return anything usefull to the game-scripts (saving is handled through SaveFileMan)
!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.
* Most VKey-combinations might still be missing (as they already were in WME Lite)
* 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.
* UTF8-support is not ported, which means only games with western charsets will work for now.
* Games that select language by moving .dcp-files around still need a bit more handling on detection/load adding support for those languages on a language-by-language basis.
* 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 atleast 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 COMPLETED games should have their md5s and gameids properly added, IFF
All known games should have their md5s and gameids properly added.  
they don't require 3D.
 
3D games may also be added, for the purpose of giving the user feedback
as to why their game won't run, but at this point, any such MD5 should
be added as a comment only, to avoid confusion, as no mechanism for giving
the user feedback about 3D-games not being supported is currently added.


==Games targeted by the engine==
==Games targeted by the engine==
Line 87: Line 144:
*[http://www.mobygames.com/game-group/game-engine-wintermute MobyGames short list]
*[http://www.mobygames.com/game-group/game-engine-wintermute MobyGames short list]


Since the feature-set of WME Lite differs from that of the full Wintermute Engine,
See [[Wintermute/Games|Wintermute Games]] for a list of known games and their current state of support in the engine.
games will need to be targeted on a case-by-case, feature-by-feature basis, this is
a list of the games that are currently known to work (although perhaps with minor
issues) through to completion:
 
* [[Chivalry is NOT Dead]] (chivalry)
* [[Dirty Split]] (dirtysplit)
* [[J.U.L.I.A.]] (Demo) (julia)
* [[Pigeons in the Park]] (pigeons)
* [[Rosemary]] (rosemary)
* [[The Box]] (thebox)
* [[The White Chamber]] (twc)
 
Untested, but start:
* [[Actual Destination]] (actualdest)
* [[East Side Story]] (Demo) (eastside)
* [[Five Magical Amulets]]
* [[Ghost in the Sheet]] (ghostsheet)
* [[Reversion - The Escape]]
 
Totally untested:
* [[Beyond the Threshold]]
* [[Fairy Tales about Toshechka and Boshechka]]
* [[Five Lethal Demons]]
* [[Hamlet]]
* [[James Peris: No Licence Nor Control]]
* [[Looky - The Adventure]]
* [[Mirage]]
* [[SHABAN]]
* [[Space Madness]]
* [[The Colour of Murder: A Carol Reed Mystery]]
* [[The Shine of a Star]]
* [[The Trader of Stories]]
* [[Wilma Tetris]]
 
==Games with known issues:==
Certain games will work mostly fine with this engine, but can still
be impossible to complete for various reasons, this is a list of games
that technically qualify (as in they do not require the 3D-parts of the engine)
but have issues that make them problematic or not completable:
 
Might work after the change to libPNG:
* Five Lethal Demons (5ld) - Requires support for interlaced PNGs
* Five Magical Amulets (5ma) - Requires support for interlaced PNGs
* Kulivočko - Requires support for interlaced PNGs
* Reversion (reversion) - Requires support for Non-V1.1 JPEGs and interlaced PNGs
* Mirage (mirage) - Tries to seek in a vorbis-stream inside a ZipStream
* Hamlet or the last game without MMORPS features, shaders and product placement (hamlet) - Requires support for interlaced PNGs
 
Gameplay broken:
* J.U.L.I.A. (Full game) (julia) - Requires sprite-rotation for a puzzle.
 
Non-critical:
* Ghost in the sheet (ghostsheet) - uses Non-V1.1-JPEGs
* East Side Story (eastside) - wants "framd.ttf"


==General known issues:==
==Known issues:==
See [[Wintermute/TODO|Wintermute TODO]] list.


Mostly a TODO-section, to not forget fixing outstanding general issues:
==See Also==
* Save/Load-screens are not shown during save/load this is probably a result of reducing the amount of redrawing done during save/load, and I'm not sure it should be put back, if that means making saves slower again.
* [[Wintermute/Controls]]
* Font-sizes are wrong enough to allow Dirty Split to draw text that is hidden in the original game (most visible on the coin-interface)
* [[Wintermute/Versions]]
* Alpha-masks for Theora-videos are broken on big-endian platforms


==External links==
==External links==
736

edits

Navigation menu