E32 Profiles: Difference between revisions
Hendricks266 (talk | contribs) No edit summary |
Hendricks266 (talk | contribs) |
||
| (5 intermediate revisions by the same user not shown) | |||
| Line 5: | Line 5: | ||
To the editors: Feel free to add content or notes, but please do not delete anything. (MediaWiki does contain a revision history, in any case.) | To the editors: Feel free to add content or notes, but please do not delete anything. (MediaWiki does contain a revision history, in any case.) | ||
Each profile contains in essence tokens similar in function to the available command-line parameters. Profiles can be mixed and matched by modifying the cfg file once parsed, by passing command-line arguments, or in a GUI interface. | ==Overview== | ||
A profile is a unit describing a modification of some sort. Each profile contains in essence tokens similar in function to the available command-line parameters. Profiles can be mixed and matched by modifying the cfg file once parsed, by passing command-line arguments, or in a GUI interface. | |||
Words formatted like "<u>this</u>" refer to the actual commands used in profiles. | Words formatted like "<u>this</u>" refer to the actual commands used in profiles. | ||
==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>name</u>" { }: two names | ||
**"<u>reference</u>" <technical_name> | |||
**"<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 | *********duke3d_atomic_dukedc | ||
******ww2gi | *********duke3d_atomic_nwinter | ||
****''redneck-family'' | *********duke3d_atomic_vacation | ||
*****rr | ******nam-based | ||
*****rrra | *******nam-family | ||
*****redneckdeerhuntin | ********nam | ||
****''paintbrawl'' | ********napalm | ||
***'''sw''' | *******ww2gi | ||
***'''blood''' | *****''redneck-family'' | ||
***'''tekwar''' | ******rr | ||
***'''exhumed-worldwide''' | ******rrra | ||
****''PowerSlave'' | ******redneckdeerhuntin | ||
****''Exhumed'' | *****''paintbrawl'' | ||
****''Seireki 1999: Pharaoh no Fukkatsu'' | ****'''sw''' | ||
***'''witchaven-family''' | ****'''blood''' | ||
****''witchaven'' | ****'''tekwar''' | ||
****''witchaven2'' | ****'''exhumed-worldwide''' | ||
***'''corridor8''' | *****''PowerSlave'' | ||
***'''lo7p''' | *****''Exhumed'' | ||
***'''fate''' | *****''Seireki 1999: Pharaoh no Fukkatsu'' | ||
****'''witchaven-family''' | |||
*****''witchaven'' | |||
*****''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) | |||
***Note: This changes the "Custom game content directory" in the startup window. Perhaps it should be a user setting, off-limits to mods. | |||
**"<u>dir</u>" (-j) | |||
**"<u>grp</u>"/"<u>zip</u>"/"<u>pk3</u>"/"<u>pk4</u>" (-g) | |||
**"<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 110: | ||
**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 111: | Line 130: | ||
commands | commands | ||
{ | { | ||
con_module "con_module.con" | |||
def_module "def_module.def" | |||
} | } | ||
| Line 135: | Line 154: | ||
reference "profile1_2" | reference "profile1_2" | ||
} | } | ||
depend "profile1" // note how the first use of depend here makes it a sub-profile | |||
} | } | ||
| Line 171: | Line 190: | ||
commands | commands | ||
{ | { | ||
con_module "mymod_specialeffects.con" | |||
def_module "mymod_new8bitart.def" | |||
} | } | ||
profile | profile | ||
| Line 184: | Line 203: | ||
commands | commands | ||
{ | { | ||
def_module "mymod_hrp.def" | |||
} | } | ||
tie "duke3d_hrp" | tie "duke3d_hrp" | ||
| Line 206: | Line 225: | ||
dir "vaca_plus" | dir "vaca_plus" | ||
grp "vacation.grp" | grp "vacation.grp" | ||
con_module "Vacation.con" | |||
def_module "Vacation.def" | |||
} | } | ||
| Line 219: | Line 238: | ||
commands | commands | ||
{ | { | ||
con_module "VacaDP.con" | |||
def_module "VacaDP.def" | |||
} | } | ||
tie "dukeplus" | tie "dukeplus" | ||
| Line 234: | Line 253: | ||
commands | commands | ||
{ | { | ||
con_module "VacaXXX.con" | |||
def_module "VacaXXX.def" | |||
} | } | ||
depend "xxx_pack" | depend "xxx_pack" | ||
| Line 249: | Line 268: | ||
commands | commands | ||
{ | { | ||
def_module "vacation_hrp.def" | |||
} | } | ||
| Line 264: | Line 283: | ||
commands | commands | ||
{ | { | ||
def_module "vacation_hrp_xxx.def" | |||
} | } | ||
depend "vaca_plus_xxx" | depend "vaca_plus_xxx" | ||
| Line 272: | Line 291: | ||
==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]] | ||