Jump to content

AE:Plugins: Difference between revisions

3,625 bytes added ,  10 June 2008
plugin examples
(just a wall of text for now: reference for the curious VS clueless)
 
(plugin examples)
Line 1: Line 1:
==Overview==
Plugins are [[dat|instance files]] that do not conform to the "level#_Final" naming convention. The "level ID" field at the beginning of every instance in a .dat file stores a hashed difference between "_Final" and the suffix of the plugin. Instance files can only be used by Oni under the name specified at the time of their creation.
Plugins are [[dat|instance files]] that do not conform to the "level#_Final" naming convention. The "level ID" field at the beginning of every instance in a .dat file stores a hashed difference between "_Final" and the suffix of the plugin. Instance files can only be used by Oni under the name specified at the time of their creation.


Line 11: Line 12:




Now busting a few opinions about how plugins are much cooler than user-side use of OniSplit, shell scripts and delta patches. Of course the fact that you can "just" put the plugin in your [[GameDataFolder]] and play makes it look like it's user-friendlier than OniSplit and somehow "empowers dummies" to access modded content without the need for complicated installation routines, with or without a GUI. However, ''one'' thing plugins are ''definitely not'' is ''foolproof''. They are not "just files" that you put into your GameDataFolder "and see what happens" (and then whine about crashes). They all have their compatibility issues, that imply thorough testing and public release notes. Both the modder and the user should be just as careful when working with plugins as when rebuilding "_Final" levels. One should also be careful not to expect too much from plugins in the big scheme of things.
Now busting a few opinions about how plugins are much cooler than user-side use of OniSplit, shell scripts and delta patches. Of course the fact that you can "just" put the plugin in your [[GameDataFolder]] and play makes it look like it's user-friendlier than OniSplit and somehow "empowers dummies" to access modded content without the need for complicated installation routines (with or without a GUI). However, ''one'' thing plugins are ''definitely not'' is ''foolproof''. They are not "just files" that you put into your GameDataFolder "and see what happens" (and then whine about crashes). They all have their compatibility issues, that imply thorough testing and public release notes. Both the modder and the user should be just as careful when working with plugins as when rebuilding "_Final" levels. One should also be careful not to expect too much from plugins in the big scheme of things.




Line 18: Line 19:
Another issue is that a modder has to provide both a "sep" and a "no-sep" version of every plugin if he wants users of all platforms to enjoy his stuff. Considering all of the above, plugins are not likely to be used on a systematic basis for anything but "100% new" content, and in the scope of projects like the Edition, they hardly make any sense at all, because OniSplit is irreplaceable when it comes to globalization.
Another issue is that a modder has to provide both a "sep" and a "no-sep" version of every plugin if he wants users of all platforms to enjoy his stuff. Considering all of the above, plugins are not likely to be used on a systematic basis for anything but "100% new" content, and in the scope of projects like the Edition, they hardly make any sense at all, because OniSplit is irreplaceable when it comes to globalization.


Also, plugins suffer from a major limitation on the Mac because of how the engine only allows for 16 instance files to be present in GameDataFolder: that means that if the original 15 .dat files are preserved, only ''one'' plugin is allowed at a time (historically, this used to be level0_Tools). In the absence of a fix, an obvious workaround is to group Oni's chapters into "acts", and launch Oni with one "act" at a time.


One thing plugins ''are'' useful for is testing of new content during development. It takes OniSplit much faster to build a small plugin than a chapter level, let alone level0 with full globalization. Note, however, that while working with "hot" file buffers during a modding session, OniSplit can generate a 500-MB level0_Final.dat in about 30 seconds; rebuilding levels ''after a long break'' takes considerably longer.
 
One thing plugins ''are'' useful for is testing new content during development. It takes OniSplit much faster to build a small plugin than a chapter level, let alone level0 with full globalization. Note, however, that while working with "hot" file buffers during a modding session, OniSplit can generate a 500-MB level0_Final.dat in about 30 seconds; rebuilding levels ''after a long break'' takes considerably longer.


The only thing you should be careful about when working with such plugins is dependencies. Typically your plugin will be all the smaller as it uses global content, but whoever you give that plugin to should be aware of the globalized resources involved. Otherwise you'll get pointless crash reports all the time just because you assumed people would only use your plugin in tandem with the Edition, etc.
The only thing you should be careful about when working with such plugins is dependencies. Typically your plugin will be all the smaller as it uses global content, but whoever you give that plugin to should be aware of the globalized resources involved. Otherwise you'll get pointless crash reports all the time just because you assumed people would only use your plugin in tandem with the Edition, etc.
==Examples==
The plugins provided below are for testing purposes only. Apart from "Babel", virtually no plugins should be distributed in the long run, especially those with original game content. Most of the plugins will be generated user-side with xdelta and OniSplit.
===level 0 modules===
The content of level 0 can easily be split into modules like level0_Characters, level0_Music, level0_Speech, level0_Weapons, level0_Levels, etc. The modules are much smaller than a single level0_Final, so they are faster to navigate and to mod. However, when defining such a partition, it's important to come up with a sensible layout early on: this, and the Mac limitation, makes it tricky to design an "official" set of modules to be used by the [[AE|Edition]].
===Babel===
:http://geyser.oni2.net/edition/plugins/level0_Babel.zip
;Description
:Includes a plugin for the PC version. Adds russian versions of menu items, subtitles, text consoles, diary/objective pages and item/weapon descriptions.
;Limitation
:Requires an engine fix (available for PC in the latest Daodan, pending for the Mac) that increases the buffer size for font textures. Without the fix, the original level0_Final will fail to load completely, and out-of-game UI will be screwed up. Things that don't quite work are diary pages and level-specific item descriptions.
===BGI troops===
:http://geyser.oni2.net/edition/plugins/level0_BGI.zip
;Description
:Includes a plugin for both PC and Mac. Adds a set of [[AE:BGI|BGI]] troopers with various fighting styles and an experimental machine gun. Does not replace any existing ONCC or ONWC.
;Limitation
:Only works correctly for a retail version of Oni, with globalized TRAC and TRMA. Otherwise, misses TXMPSUPER_REFLECT (Mukade's env-map texture) and/or various TRAC, some of them not available in the demo. Missing TRAC cause memory corruption.
===HD Griffin===
:http://geyser.oni2.net/edition/plugins/level0_Characters.zip
;Description
:Includes a plugin for both PC and Mac. Replaces the BlackOps Griffin. The new Griffin has a tentative HD head (4 times as many faces) and fights like a Tanker (more so if you update the MELE link in [[CHAR]]).
;Limitation
:Works correctly for a retail version with globalized TRAC and TRMA. Otherwise, misses TRACTanker_animations and BlackOps Griffin's TRMA. Missing TRAC cause memory corruption.
===Level 2 CHAR===
:http://geyser.oni2.net/edition/plugins/level2_OBJC.zip
;Description
:Includes a plugin for both PC and Mac. Slightly modifies the [[CHAR]] for {{C|2}}: Barabas takes part in the initial ambush, and Muro appears later on.
;Limitation
:Works with any version of Oni, as long as Chapter 2 is available.
===Dashing===
:http://geyser.oni2.net/edition/plugins/level0_Animations.zip
;Description
:Includes a plugin for both PC and Mac. Makes all males, Ninja and Furies able to dash. Preserves running animations for Konoko. Provides TRAMai_kon_animations to be used by Evil Konoko, female civilians, etc.
;Limitations
:Works best with globalized TRAM. Otherwise, Elites, Ninjas and Furies won't be able to fight. This is typically a thing that will not stay a plugin forever, and is provided purely for testing purposes.