Open main menu

Wintermute

Revision as of 00:23, 17 October 2020 by MetaFox (talk | contribs) (more changes per ResidualVM merge)
Wintermute
Engine developer somaen, t0by, Fury
Companies that used it Dead:Code Software
Games that use it Dozens 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.

Once complete, this engine would add support to more than fifty 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 of which they dream.

Features

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:

  • 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.
  • Sound effects like SoundFXEcho().

This port does reimplement a few of these features, currently:

  • 3D characters. WME Lite only supports 2D games.
  • Sprite frame mirroring - WORKS.
  • Sprite rotations.
  • 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:

  • 'File' script object - ScummVM doesn't have any easy way to write/read arbitrary files.
  • Debugger/Compiler - weren't properly accessible in WME Lite anyhow.
  • CD-numbering support in .dcp-files - was never used.
  • 'SaveDirectory'-property of 'Game' will not return anything usefull to the game-scripts (saving is handled through SaveFileMan)

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.
  • 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.
  • 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.

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 COMPLETED 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.

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 but have issues that make them problematic or not completable:

Gameplay broken:

  • J.U.L.I.A. (Full game) (julia) - Requires sprite-rotation for a puzzle.

Non-critical:

  • East Side Story (eastside) - wants "framd.ttf"

General known issues:

See Wintermute TODO list.

See Also

External links