Jump to content

E32 Profiles: Difference between revisions

From EDukeWiki
No edit summary
No edit summary
Line 10: Line 10:


==profile features==
==profile features==
*loaded from files with .e32 extension containing any number of profiles
*loaded from files with .e32 extension containing any number of "<u>profile</u>" entries
*toggle on/off
*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)
*command line switch <reference name> to enable profiles (additive, but subject to changes by the program)
 
*utilizes def parser (Lua in future)
=== 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 mutator can run. 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.
**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''
***'''Ken-BUILD (Test Game)'''
****'''corridor8'''
**profiles not matching the current selection of the game tab are simply not shown
****'''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>conmodule</u>" (-mx)
**"<u>con_module</u>" (-mx)
**"<u>defmodule</u>" (-mh)
**"<u>def_module</u>" (-mh)
**"<u>grp</u>"/"<u>zip</u>"/"<u>pk3</u>" (-g)
**"<u>basedir</u>" (-game_dir)
**"<u>dir</u>" (-j)
**"<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)
*if a profile is ever force-disabled due to a conflict, its previous on/off status is never lost
*reference name, .e32 file name as passed to the game (absolute and relative accepted), and on/off parsed to .cfg in load order
*parse to cfg to allow for non-GUI editing (cross-platform cop-out)
*"<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
*all top-level profiles automatically placed in load order immediately below all of their "<u>depend</u>" statements
*"<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
*descriptive log output for selections


==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"
     }
     }
     subprofile "profile1"
     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.
[[File:E32_profiles_mockup.png]]


[[Category:Developer's corner]]
[[Category:Developer's corner]]

Revision as of 03:18, 28 November 2013