Difference between revisions of "Wintermute/Plugins"

Jump to navigation Jump to search
6,612 bytes added ,  23:02, 12 June 2021
no edit summary
 
(39 intermediate revisions by the same user not shown)
Line 1: Line 1:
This page lists known plugins for most [[Wintermute/Games|Wintermute games]].
This page lists known plugins for [[Wintermute/Games|Wintermute games]].


Original WME 1.x allows game scripts to automatically import code from DLL libraries named "wme_*.dll".
Original WME 1.x allows game scripts to automatically import code from DLL libraries named "wme_*.dll".


= Standard plugins =
= Steam plugin =
Current plugins are originally developed by Jan Nedoma.


== wme_report.dll ==
== wme_steam.dll ==
Standard reporting library, shipped with WME 1.x.
This is a plugin for Wintermute Engine which allows WME games to access Steamworks API. Currently it provides functions for manipulating achievements and game stats.
 
Source: https://bitbucket.org/MnemonicWME/wme_steam_plugin/wiki/Home
 
GetSupportedClasses() exports one class: '''SteamAPI'''.
 
== 2D games ==
=== [[Corrosion: Cold Winter Waiting]] ===
Steam game ID is '''349140'''.
 
Required property: '''StatsAvailable''' (game waits until it's true)
 
Required method: '''SetAchievement''' (to set 18 achievements, see https://steamdb.info/app/349140/stats/)
 
=== [[Dr. Doyle - Mystery Of The Cloche Hat]] ===
Steam game ID is '''574420'''.
 
Required method: '''SetAchievement''' (to set 35 achievement, see https://steamdb.info/app/574420/stats/)
 
=== [[The Death of Erin Myers]] ===
Steam game ID is '''1064660'''.
 
Required method: '''SetAchievement''' (to set 5 achievements, see https://steamdb.info/app/1064660/stats/)
 
=== [[Oknytt]] ===
Steam game ID is '''286320'''.
 
Required method: '''SetAchievement''' (to set 10 achievements, see https://steamdb.info/app/286320/stats/)
 
=== [[Reversion: The Escape]] ===
Steam game ID is '''270570'''.
 
Required property: '''SteamAvailable''' (game checks if it's true)
 
Required method: '''SetAchievement''' (to set 16 achievements, see https://steamdb.info/app/270570/stats/)
 
Required method: '''IsAchieved''' (game checks "ACHIEVEMENT_TERMINAR_JUEGO")
 
=== [[Reversion: The Meeting]] ===
Steam game ID is '''281060'''.
 
Required property: '''SteamAvailable''' (game checks if it's true)
 
Required method: '''SetAchievement''' (to set 25 achievements, see https://steamdb.info/app/281060/stats/)
 
Required method: '''IsAchieved''' (game checks "ACHIEVEMENT_FINAL")
 
=== [[Reversion: The Return]] ===
Steam game ID is '''281080'''.
 
Required property: '''SteamAvailable''' (game checks if it's true)
 
Required method: '''SetAchievement''' (to set 36 achievements, see https://steamdb.info/app/281080/stats/)
 
Required method: '''IsAchieved''' (game checks "ACHIEVEMENT_TERMINAR_JUEGO_R3")
 
=== [[J.U.L.I.A.: Among the Stars]] ===
Steam game ID is '''257690'''.
Achievements are shared with [[J.U.L.I.A.: Untold]].
 
Required method: '''SetAchievement''' (to set 18 achievements, see https://steamdb.info/app/257690/stats/)
 
=== [[J.U.L.I.A.: Untold]] ===
Steam game ID is '''257690'''.
Achievements are shared with [[J.U.L.I.A.: Among the Stars]].
 
Required method: '''SetAchievement''' (to set 18 achievements, see https://steamdb.info/app/257690/stats/)
 
== 2.5D games ==
=== Alpha Polaris ===
Steam game ID is '''405780'''.
 
Required property: '''SteamAvailable''' (game checks if it's true)
 
Required method: '''SetAchievement''' (to set 18 achievements, see https://steamdb.info/app/405780/stats/)
 
Required method: '''ClearAchievement''' (it is possible to clear achievement using in-game debug CLI)
 
=== The Lost Crown - A Ghost-Hunting Adventure ===
Steam game ID is '''291710'''.
 
Required property: SteamAvailable (game checks if it's true)
 
Required method: '''SetAchievement''' (to set 34 achievements, see https://steamdb.info/app/291710/stats/)
 
= GOG Galaxy plugin =
 
== julia.exe ==
This object is actually hardcoded into WME Lite fork of J.U.L.I.A. games. It allows those games to access GOG Galaxy API. Currently it provides functions for manipulating achievements.
 
Class name is: '''WMEGalaxyAPI'''.
 
== 2D games ==
=== [[J.U.L.I.A.: Among the Stars]] ===
GOG Galaxy game ID is '''48891696681534931'''.
Achievements are shared with [[J.U.L.I.A.: Untold]].
 
Required method: '''InitGalaxy''' (to set game id and key)
 
Required method: '''SetAchievement''' (to set 18 achievements, see https://steamdb.info/app/257690/stats/)
 
=== [[J.U.L.I.A.: Untold]] ===
GOG Galaxy game ID is '''48891696681534931'''.
Achievements are shared with [[J.U.L.I.A.: Among the Stars]].
 
Required method: '''InitGalaxy''' (to set game id and key)
 
Required method: '''SetAchievement''' (to set 18 achievements, see https://steamdb.info/app/257690/stats/)
 
= 3f interactive statistics plugin =
 
== wme_3fstatistics.dll ==
A statistics plugin for WME 1.x by [[3f interactive]].
 
Sources are not public. File resources mentiones c:\Users\Fran\Desktop\Reversion Artwork\svnReversion\game\WintermutePlugins\WME_UsageStatistics\Release\wme_3fstatistics.pdb path.
 
GetSupportedClasses() exports one class: '''Statistics'''.
 
There are 2 known versions of wme_3fstatistics.dll - old one is used at first versions of [[Reversion: The Escape]], later is used in Steam releases of Reversion series and provides extended constructor.
 
== 2D games ==
=== [[Reversion: The Escape]] ===
Old versions of Reversion are using simple constructor: '''new Statistics("http://www.soluciones3f.com.ar/reversioninfo.php")'''
 
New versions of Reversion are using detailed constructor: '''new Statistics("http://www.soluciones3f.com.ar/reversioninfo.php", "1", gameLanguage, DCP_VERSION)'''
 
Required method: '''Send()''' (known stats to send are "Start a new game" and "--Juego Finalizado--")
 
Required method: '''SetRepeat()''' (known options are SetRepeat(0) and SetRepeat(60))
 
=== [[Reversion: The Meeting]] ===
 
Known versions of Reversion are using detailed constructor: '''new Statistics("http://www.soluciones3f.com.ar/reversioninfo.php", "2", gameLanguage, DCP_VERSION)'''
 
Required method: '''Send()''' (known stats to send are "Start a new game" and "--Juego Finalizado--")
 
Required method: '''SetRepeat()''' (known option is SetRepeat(0))
 
=== [[Reversion: The Return]] ===
 
Known versions of Reversion are using detailed constructor: '''new Statistics("http://www.soluciones3f.com.ar/reversioninfo.php", "3", gameLanguage, DCP_VERSION)'''
 
Required method: '''Send()''' (known stats to send are "Start a new game" and "--Juego Finalizado--")
 
Required method: '''SetRepeat()''' (known option is SetRepeat(0))
 
= CLI helper plugin =
== wme_commandlinehelper.dll ==
Commandline helper plugin by [[Corbomite Games]]. This plugin is used to access argv[] parameters.
 
GetSupportedClasses() exports one class: '''CommandLineHelper'''
 
Current reimplementation returns "Pizza.exe DEMO" argv[] line.
 
== 2.5D games ==
=== Pizza Morgana: Episode 1 - Monsters and Manipulations in the Magical Forest ===
Pizza Morgana expects to be run with a launcher executable, that starts WME executable with additional CLI parameters according to license state.
 
Possible expected argv[1]: FULL / FULL_FW / FULLDEMO / FULLDEMO_FW / VALID / VALID_FW / INVALID / INVALID_FW / DEMO / DEMO_FW / other value.
 
Required property: '''Parameters''' (passed to String(), then Split(" ") is called)
 
Currently DEMO is returned, since only game demo is in detection tables.
 
= [TODO] Bink Video plugin =
== wme_vlink.dll ==
Bink Video plugin by [[TML Studios]]. This plugin is used to play *.bik cutscene videofiles.
 
GetSupportedClasses() exports one class: '''CommandLineHelper'''
 
TODO: '''reimplement this for ScummVM''', using /video/ implementation of Bink Video.
 
== 2.5D games ==
=== Sunrise: The game ===
Sunrise: The game plays lots of cutscenes videos using a plugin.
 
Constructor call: '''new BinkVideo(Game.Direct3DDevice)'''
 
Required method: '''SetVolume()''' (known values are 80 and 87)
 
Required method: '''Play()''' (parameter is video path, e.g. "video\M11\Video341.bik")
 
= [TODO] Black & White render plugin =
== wme_blackandwhite.dll ==
Black & White render plugin by [[SPline]]. This plugin is switch render to Black & White or Sepia modes.
 
GetSupportedClasses() exports one class: '''BlackAndWhite'''
 
TODO: '''reimplement this for ScummVM'''.
 
== 2.5D games ==
=== Stroke of Fate dilogy ===
Stroke of Fate dilogy allows render switching.
 
Constructor call: '''new BlackAndWhite()'''
 
Required method: '''Start()'''
 
Required method: '''SetNormalRender()'''
 
Required property: '''SepiaAvailable''' - boolean
 
Required property: '''BlackAndWhiteAvailable''' - boolean
 
Required property: '''WeightedSepiaAvailable''' - boolean
 
Required property: '''WeightedBlackAndWhiteAvailable''' - boolean
 
Required property: '''Weight''' - float
 
Required method: '''SetSepia()'''
 
Required method: '''SetBlackAndWhite()'''
 
Required method: '''SetWeightedSepia()'''


Not a plugin, does not export anything with GetSupportedClasses().
Required method: '''SetWeightedBlackAndWhite()'''


No need to reimplement this for ScummVM.  
= [TODO] Shadow manager plugin =
== wme_shadows.dll ==
Shadow manager plugin by [[SPline]].


== wme_sample_pixel.dll ==
GetSupportedClasses() exports one class: '''ShadowManager'''
Standard "sample_pixel" plugin, shipped with WME 1.x.


Source: https://github.com/retrowork/Wintermute-Engine/tree/master/src/plugin/wme_sample_pixel
TODO: '''reimplement this for ScummVM'''.


GetSupportedClasses() exports one class: '''SamplePixel'''.
== 2.5D games ==
=== Stroke of Fate dilogy ===
Stroke of Fate dilogy allows shadow management.


TODO: reimplement this for ScummVM.
Constructor call: '''new ShadowManager()'''


== wme_snow.dll ==
Required method: '''Run()'''
Standard "snow" plugin, shipped with WME 1.x.


Source: https://github.com/retrowork/Wintermute-Engine/tree/master/src/plugin/wme_snow
Required method: '''Stop()'''


GetSupportedClasses() exports one class: '''Snow'''.
Required property: '''UseSmartShadows''' - integer, e.g. 1


TODO: reimplement this for ScummVM.
Required property: '''MinShadow''' - float, e.g. 0.1


== wme_steam.dll ==
Required property: '''MaxShadow''' - float, e.g. 0.25
This is a plugin for Wintermute Engine which allows WME games to access Steamworks API. Currently it provides functions for manipulating achievements and game stats.


Source: https://bitbucket.org/MnemonicWME/wme_steam_plugin/wiki/Home
Required method: '''EnableLight(lightName)'''


GetSupportedClasses() exports one class: '''SteamAPI'''.
Required method: '''DisableLight(lightName)'''


TODO: reimplement this for ScummVM.
Required method: '''AddActor(actor)'''


= 2D games =
Required method: '''RemoveAllActors()'''
== [[Alimardan's Mischief]] ==
Contains 3 "wme_*.dll" files, but does not actually use plugins:


# wme_report.dll - standard report library, not a plugin
Required method: '''RemoveActor(actorName)''' - seems to be never used
# wme_sample_pixel.dll - standard plugin, exporting "SamplePixel" class that is never used.
# wme_snow.dll - standard plugin, exporting "Snow" class that is never used.


== [[Alimardan Meets Merlin]] ==
Required method: '''GetNumLights()''' - seems to be never used
Contains 2 "wme_*.dll" files, but does not actually use plugins:


# wme_sample_pixel.dll - standard plugin, exporting "SamplePixel" class that is never used.
Required method: '''GetLightInfo(index)''' - seems to be never used
# wme_snow.dll - standard plugin, exporting "Snow" class that is never used.


== [[Beyond the Threshold]] ==
Required method: '''SetDefaultLightPos(x, y, z)''' - seems to be never used
Shipped with wme_snow.dll, which is never used.


=== wme_displacement.dll ===
= [TODO] Displacement plugin =
== wme_displacement.dll ==
A plugin for WME 1.x by Wintermute Engine Forum user metamorphium.
A plugin for WME 1.x by Wintermute Engine Forum user metamorphium.


Line 64: Line 272:
GetSupportedClasses() exports one class: '''Displacement'''.
GetSupportedClasses() exports one class: '''Displacement'''.


Constructor parameters are not documented.
TODO: '''reimplement this for ScummVM'''.


Required method: '''Animate()'''.
== 2D games ==
=== [[Beyond the Threshold]] ===
Constructor call is something like this: '''new Displacement(<entity1subframe>, <entity2subframe>, 3, 4, 7)''', parameters are not documented.


Usage:
Required method: '''Animate()''' (called every 80 msec for constructed object at Door_Closeup scene)
<nowiki>
var e1 = Scene.GetNode("Ent2");
var e1s = e1.GetSpriteObject();
var e1f = e1s.GetFrame(0);
var e1sf = e1f.GetSubframe(0);
var e2 = Scene.GetNode("Ent1");
var e2s = e2.GetSpriteObject();
var e2f = e2s.GetFrame(0);
var e2sf = e2f.GetSubframe(0);
var displobject = new Displacement(e1sf, e2sf, 3, 4, 7);
while(1) {
displobject.Animate();
Sleep(80);
}
</nowiki>


TODO: reimplement this for ScummVM.
= [TODO?] Unused plugins & DLLs =
== Standard plugins ==
Those plugins are originally developed by Jan Nedoma as the sample DLLs and seems to be never actually used in any games.


== [[Corrosion: Cold Winter Waiting]] ==
=== wme_report.dll ===
=== wme_steam.dll ===
Standard reporting library, shipped with WME 1.x.
Standard plugin.
 
Not a plugin, does not export anything with GetSupportedClasses().


Required property: '''StatsAvailable'''
Shipped with 2 games:
* [[Alimardan's Mischief]]
* Pizza Morgana: Episode 1 - Monsters and Manipulations in the Magical Forest.


Required method: '''SetAchievement'''
No need to reimplement this for ScummVM.


Usage:
=== wme_sample_pixel.dll ===
<nowiki>
Standard "sample_pixel" plugin, shipped with WME 1.x.
while(!(SteamAchieve.StatsAvailable)) {
Sleep(20);
}
if(Achievement0) {
SteamAchieve.SetAchievement("corrosion_achievement_0");
}
Sleep(1000);
if(Achievement1) {
SteamAchieve.SetAchievement("corrosion_achievement_1");
}
Sleep(1000);
if(Achievement2) {
SteamAchieve.SetAchievement("corrosion_achievement_2");
}
...
if(Achievement17) {
SteamAchieve.SetAchievement("corrosion_achievement_17");
}
</nowiki>


== [[Dr. Doyle - Mystery Of The Cloche Hat]] ==
Source: https://github.com/retrowork/Wintermute-Engine/tree/master/src/plugin/wme_sample_pixel
=== wme_steam.dll ===
Standard plugin. List of actually used symbols is unknown.


== [[The Death of Erin Myers]] ==
GetSupportedClasses() exports one class: '''SamplePixel'''.
=== wme_steam.dll ===
Standard plugin. List of actually used symbols is unknown.


== [[Oknytt]] ==
Shipped with 2 games:
=== wme_steam.dll ===
* [[Alimardan's Mischief]]
Standard plugin. List of actually used symbols is unknown.
* [[Alimardan Meets Merlin]]


== [[Reversion: The Escape]] and [[Reversion: The Meeting]] ==
Seems to be unused in all of them.
=== wme_3fstatistics.dll ===
TODO


=== wme_steam.dll ===
Currently no need to reimplement this for ScummVM.  
Standard plugin. List of actually used symbols is unknown.


= 2.5D games =
=== wme_snow.dll ===
== Alpha Polaris ==
Standard "snow" plugin, shipped with WME 1.x.
=== wme_steam.dll ===
Standard plugin. List of actually used symbols is unknown.


== Pizza Morgana: Episode 1 - Monsters and Manipulations in the Magical Forest ==
Source: https://github.com/retrowork/Wintermute-Engine/tree/master/src/plugin/wme_snow


Shipped with wme_report.dll, which is the standard report library, not a plugin.
GetSupportedClasses() exports one class: '''Snow'''.


=== wme_commandlinehelper.dll ===
Shipped with 3 games:
Commandline helper plugin by Corbomite Games
* [[Alimardan's Mischief]]
* [[Alimardan Meets Merlin]]
* [[Beyond the Threshold]]


GetSupportedClasses() exports one class: '''CommandLineHelper'''.
Seems to be unused in all of them.


Required property: '''Parameters'''.
Currently no need to reimplement this for ScummVM.  


Usage:
== Other plugins ==
<nowiki>
=== wme_stone.dll ===
global HelperObject = new CommandLineHelper();
wme_stone.dll is mentioned in SpriteEdit.log of reversion3.
global CommandLineParams = HelperObject.Parameters;
global TestLength = 0;
CommandLineParams = new String(CommandLineParams);
...
var paramArray = CommandLineParams.Split(" ");
DEBUG(("params" + CommandLineParams));
var arrayLength = paramArray.Length;
DEBUG(("paramArray[1]: " + paramArray[(arrayLength - 1)]));
switch(paramArray[(arrayLength - 1)]) {
case "FULL":
TestLength = 1;
Game.RegWriteNumber("Registered", 1);
...
</nowiki>


TODO: reimplement this for ResidualVM.
This dll is not packaged with the game, however it exists at least at developer's PC.


== The Lost Crown - A Ghost-Hunting Adventure ==
Seems to be unused.
=== wme_steam.dll ===
Standard plugin. List of actually used symbols is unknown.
234

edits

Navigation menu