wesleyjohnson
Forum Regular
Posts: 675
Registered: 04-09 |
Here is an idea (an aside from the discussion in another thread), that does not require any cooperation from the Zdoom project, or any other port author.
Someone was collecting information on differences between ports.
Let's create a program (call it analyzewad) that looks at a wad and figures out its properties, what port may be needed to run it, and what settings may be required.
It will be run once on any wad, so it can afford to take the time, and double check between linedefs and sectors, and look into things like texture formats, and PNG.
So when a problem wad appears, the user could run anaylzewad on it, and would be informed of the properties, and thus could deduce the causes of the problem.
One option of analyzewad program would be to write a file (let us give it an extension of ".wa" for wad analysis, and let us call it a WA file).
It would be in text format, and can be edited afterwards for customization. The WA file would have the same name as the wad, with ".wa" extension instead, so the two stay together.
Distributed zip files could include a WA file themselves.
The one difference from the previous discussions of database would be that the individual WA files could be manipulated easily and multiple versions could exist for a wad (for game setups ??).
The WA file would point to everything that is needed to play the wad.
The format and content of the file would determined by the analyzewad program, up until a competitor program appears. But still would be
much easier to define (than other proposals), and any port could from load it (fully or partially).
A fully conforming port could be presented with only the WA file, and would load everything that it indicates. It would still be allowed to use other command line switches to load other PWAD files in addition, if the user so wanted to. Interaction with conflicting switches would be up to the port.
Analyzewad can only supply a fraction of the lines defined below, the others are for hand customization. They serve much of the same purpose as other wad descriptions that have been discussed.
As always, any line or flag that is not recognized by a port is expected to be ignored.
By copying a WA file and customizing it, a user can keep a special play setup and use it easily.
Proposed Content of WA file:
# WA file header with version number
WA:V01
# This is the main wad, load it first
WAD: ugly.wad
# This is the game required
# (from list DOOM1, ULTDOOM, DOOM2, PLUTONIA, TNT, HERETIC, HEXEN,
# others added as needed or requested.
GAME: DOOM2
# header starts as Port: ALL
# flags describing discovered facts about the wad
# additional flag defines do not change the version number
HAS_REQ_PNG
HAS_ZDOOM_xxx
HAS_ZDOOM_yyy
HAS_LEGACY_L301
HAS_LEGACY_L302
HAS_EDGE_L302
HAS_EDGE_BARREL
# load these pwad too, after the main wad
LOAD: gothic2.wad
LOAD: simpsons.wad
# PORT specific section, (using Legacy as an example port name)
# if a port does not find its name, it could use the PORT settings
# of a close relative port.
PORT: Legacy V1.44
# everything in here is only loaded by the named port version.
# how the port version is named is up to the port.
PORT: Legacy
# everything in here is only loaded by the named port, upto the next port line
# All versions
# Load the matching PORT section without version, even if a PORT section with version has also been loaded
PORT: Legacy DEFAULT
# load this only if no other PORT section for Legacy has been loaded.
# all version specific PORT sections for Legacy need to precede it
PORT: ALL
# everything in here is loaded by all ports, even if another PORT section has been loaded.
PORT: DEFAULT
# load this only if no other PORT section has been loaded.
Port specific suggestions:
SET: <keyword> <setting>
# These would be port settings. They are port specific keywords.
SET?: <keyword> <setting>
# An optional port setting, should ask the user before executing the
# setting.
#SET?: <keyword> <setting>
# a disabled setting
A launcher could also be created (probably system dependent).
It would read the WA file and try to launch the first port mentioned that is present on the system, (or interactively, present the user with a list of ports to select from),
and launch that port using command line switches to select the game, load the main wad, load the additional pwad, and select the options.
This would generically cover any port that did not implement any WA support.
The launcher could use a user default WA file to enable settings that
the user prefers.
SET-: <keyword> <setting> # user default
# used in absence of other WA setting for the <keyword>
SET!: <keyword> <setting> # user override of WA file for <keyword>
OPTION: <keyword> <setting>
# a command line setting, exactly as it appears on the command line
Example:
OPTION: "-opengl"
# This ability could be part of SET, if a way to denote which keywords could be uses on the command line was invented.
Maybe:
SET-: <keyword> >> <command-line-text>
Example:
SET-: graphicsmode >> "-opengl"
This is first cut at the idea. Please improve on the idea, mention problems, or start another thread if you want to be tiresome.
This is one idea that does not require everyone's cooperation.
Last edited by wesleyjohnson on 10-22-12 at 20:48
|