E32 Profiles: Difference between revisions
Hendricks266 (talk | contribs) No edit summary |
Hendricks266 (talk | contribs) No edit summary |
||
| Line 10: | Line 10: | ||
==profile features== | ==profile features== | ||
*loaded from files with .e32 extension containing any number of | *loaded from files with .e32 extension containing any number of "<u>profile</u>" entries | ||
* | *each profile can be toggled on/off | ||
*customizable load order | *customizable load order to the extent that tree hierarchy and "<u>depend</u>", "<u>conflict</u>", "<u>tie</u>", etc restrict | ||
*utilizes def parser (Lua in future) | |||
*command line switch <reference name> to enable profile entries (additive, but subject to changes by the program) | |||
*if a profile is ever force-disabled due to a conflict, its previous on/off status is never lost | |||
* data stored in .cfg for each profile, allowing non-GUI editing (cross-platform cop-out) | |||
**load order | |||
**reference name | |||
**.e32 file name | |||
**on/off state | |||
*descriptive log output for final selections once game is initiated | |||
===acquisition/loading of .e32 files=== | |||
'''This section needs more thought. Any and all input is welcome on the talk page.''' | |||
*all *.e32 in entire subfolder tree of both main directory and any path directories will be parsed | *all *.e32 in entire subfolder tree of both main directory and any path directories will be parsed | ||
*command line switch <filename> to install *.e32 (add to .cfg for parse) | *command line switch <filename> to install *.e32 (add to .cfg for parse) | ||
=== syntax === | |||
*"<u>name</u>" { }: two names, "<u>reference</u>" <name> and "<u>proper</u>" <display name> | *"<u>name</u>" { }: two names, "<u>reference</u>" <name> and "<u>proper</u>" <display name> | ||
*"<u>version</u>" <float>: for each mod, mutator, etc (possibly version checker/downloader?) | *"<u>version</u>" <float>: for each mod, mutator, etc (possibly version checker/downloader?) | ||
*"<u>autoload</u>" flag: default on (HRP, music pack) vs. default off (mod) | *"<u>autoload</u>" flag: default on (HRP, music pack) vs. default off (mod) | ||
*"<u>game</u>" <string>: | *"<u>game</u>" <string>: | ||
**Some method of describing a set of supported EDuke32 games for which a | **Some method of describing a set of supported EDuke32 games for which a profile can run. | ||
**global | **Profiles not matching the current selection of the game tab are simply not shown. | ||
***'''duke3d-based''' | **An incomplete tree follows. In this example any bullet point can be used and all include any descendants. Naming is inexact and for illustration only. | ||
****''duke3d-family'' | ***global | ||
*****duke3d | ****'''Ken-BUILD (Test Game)''' | ||
******duke3d shareware | ****'''duke3d-based''' | ||
*******duke3d shareware v0.99 beta | *****''duke3d-family'' | ||
*******duke3d shareware v1.0 | ******duke3d | ||
*******duke3d shareware v1.1 | *******duke3d shareware | ||
*******duke3d shareware v1.3D | ********duke3d shareware v0.99 beta | ||
******duke3d registered | ********duke3d shareware v1.0 | ||
*******duke3d registered v1.3D | ********duke3d shareware v1.1 | ||
********duke3d registered v1.3D United States | ********duke3d shareware v1.3D | ||
********duke3d registered v1.3D South Korea | *******duke3d registered | ||
*******duke3d registered v1.4/v1.5 | ********duke3d registered v1.3D | ||
*****nam-based | *********duke3d registered v1.3D United States | ||
******nam-family | *********duke3d registered v1.3D South Korea | ||
*******nam | ********duke3d registered v1.4/v1.5 | ||
*******napalm | ******nam-based | ||
******ww2gi | *******nam-family | ||
****''redneck-family'' | ********nam | ||
*****rr | ********napalm | ||
*****rrra | *******ww2gi | ||
*****redneckdeerhuntin | *****''redneck-family'' | ||
****''paintbrawl'' | ******rr | ||
***'''sw''' | ******rrra | ||
***'''blood''' | ******redneckdeerhuntin | ||
***'''tekwar''' | *****''paintbrawl'' | ||
***'''exhumed-worldwide''' | ****'''sw''' | ||
****''PowerSlave'' | ****'''blood''' | ||
****''Exhumed'' | ****'''tekwar''' | ||
****''Seireki 1999: Pharaoh no Fukkatsu'' | ****'''exhumed-worldwide''' | ||
***'''witchaven-family''' | *****''PowerSlave'' | ||
****''witchaven'' | *****''Exhumed'' | ||
****''witchaven2'' | *****''Seireki 1999: Pharaoh no Fukkatsu'' | ||
***'''corridor8''' | ****'''witchaven-family''' | ||
***'''lo7p''' | *****''witchaven'' | ||
***'''fate''' | *****''witchaven2'' | ||
****'''corridor8''' | |||
****'''lo7p''' | |||
****'''fate''' | |||
*"<u>commands</u>" { }: contains list of files/data to load | *"<u>commands</u>" { }: contains list of files/data to load | ||
**"<u>basedir</u>" (-game_dir) | |||
**"<u>dir</u>" (-j) | |||
**"<u>fs</u>" (-g) (short for "filesystem"; add grp/zip/pk3/pk4) | |||
**"<u>con</u>" (-x) | **"<u>con</u>" (-x) | ||
**"<u>def</u>" (-h) | **"<u>def</u>" (-h) | ||
**"<u> | **"<u>con_module</u>" (-mx) | ||
**"<u> | **"<u>def_module</u>" (-mh) | ||
**"<u>rts</u>" (-rts) | **"<u>rts</u>" (-rts) | ||
**"<u>map</u>" (-map) | **"<u>map</u>" (-map) | ||
**"<u>clipmap</u>" (-clipmap) | **"<u>clipmap</u>" (-clipmap) | ||
**"<u>demo</u>" (-d) | **"<u>demo</u>" (-d) | ||
*"<u>depend</u>" <profile>: the profile (or sub-profile) is disabled if the specified dependency is absent or off | *"<u>depend</u>" <profile>: the profile (or sub-profile) is disabled if the specified dependency is absent or off | ||
*"<u>conflict</u>" <profile>: The profile will automatically turn off if the specified one is turned on. (example: XXX Pack vs. XXX Lite) | *"<u>conflict</u>" <profile>: The profile will automatically turn off if the specified one is turned on. (example: XXX Pack vs. XXX Lite) | ||
*"<u>base</u>" flag: Only one profile with this flag can be on at a time. Useful for non-mutator base mods and TCs. | *"<u>base</u>" flag: Only one profile with this flag can be on at a time. Useful for non-mutator base mods and TCs. | ||
*"<u>library</u>" flag: indicates that the profile is a mod library intended for reuse and mashups, such as independent monsters; disqualified from autoload and sub-profiles | *"<u>library</u>" flag: indicates that the profile is a mod library intended for reuse and mashups, such as independent monsters; disqualified from autoload and sub-profiles | ||
*"<u>include</u>" <profile>: like a "<u>depend</u>" but specifically for "<u>library</u>" profiles; silent | *"<u>include</u>" <profile>: like a "<u>depend</u>" but specifically for "<u>library</u>" profiles; silent | ||
==sub-profile-specific features== | ====sub-profile-specific features==== | ||
*displayed indented from the left immediately beneath parent | *displayed indented from the left immediately beneath parent | ||
*sub-profile automatically "<u>depend</u>" on the parent | *sub-profile automatically "<u>depend</u>" on the parent | ||
| Line 92: | Line 102: | ||
**has the capability to allow more than one "<u>base</u>" flagged profile to run (the profile with the tie command is loaded after the specified profile) | **has the capability to allow more than one "<u>base</u>" flagged profile to run (the profile with the tie command is loaded after the specified profile) | ||
**the idea is to reconcile compatibility between mutators that may need it | **the idea is to reconcile compatibility between mutators that may need it | ||
**Always hidden from the GUI unless "verbose mode" is enabled | |||
==implementation strategy== | ==implementation strategy== | ||
| Line 135: | Line 146: | ||
reference "profile1_2" | reference "profile1_2" | ||
} | } | ||
depend "profile1" // note how the first use of depend here makes it a sub-profile | |||
} | } | ||
| Line 272: | Line 283: | ||
==GUI mockup== | ==GUI mockup== | ||
[[File:E32_profiles_mockup.png]] | |||
This image is outdated in the following ways: | This image is outdated in the following ways: | ||
*Ideally, the Duke Plus Extension and "HRP XXX" would be hidden and transparent to the user because they would be <u>tie</u>d to the mutator for which they are a compatibility layer anyway. | *Ideally, the Duke Plus Extension and "HRP XXX" would be hidden and transparent to the user because they would be <u>tie</u>d to the mutator for which they are a compatibility layer anyway. | ||
[[Category:Developer's corner]] | [[Category:Developer's corner]] | ||