|Hacking the Marathon Infinity Engine|
|Engine Hacking is much more than wrestling with the choke knob as you start your old 46 flat head Ford on a frosty North Dakota morning. Engine Hacking extends far beyond taking a fire ax to that same engine when it won't start after 10 frustrating minutes of red faced swearing and teeth grinding. Engine Hacking doesn't even refer to the internal combustion engine at all you confused noddling twit! Engine Hacking is the term Hamish Sanderson uses to describe the process of profoundly changing the Marathon resources into something completely custom. This is a must see for total conversion scenario makers. - gls|
There's a whole heap of stuff that can be done to the Marathon Infinity engine using ResEdit and/or Fux! Some mods are 'necessary' due to changes to weapon types (where you'd want to alter the names in the inventory to match). Others are great if you're doing a more radical conversion where you want to give Marathon Infinity a 'different look' to some (or even a large) extent. For the really insane folks, it's worth realizing that it's quite possible to customize the Marathon Infinity engine using the existing tools until even its own mother wouldn't recognize it! (I've done this sort of thing myself.)
The main resources to know of are:
The entries are:
* Unless you've changed it with Fux! Fux allows you to select any color from this list to be used as ammo energy bars (you could very probably tack extra colors onto the end of this CLUT for use via Fux if you wished).
+ This is probably best left set to black. BTW, funny stuff happens with borders around the Main Controls screen when playing in 256 colors. I think it has something to do with Marathon Infinity referring to the CLUT for the Main Controls screen instead of to this CLUT (I guess it's a bug). I suspect it has something to do with the in-game CLUT having black positioned 19th and the engine being hard coded to look to this position for its 'global' black. It seems that after quitting a game, the engine seems to continue looking at the 19th entry of the current CLUT (in the Main Controls screen, this means the main controls screen CLUT found in the Images file). It's really rather bizarre, and a bit unpleasant visually, although I suspect it could be gotten around by tweaking the relevant [e.g. main controls screen] CLUTs so they have black in 19th position instead of at the end (doing this shouldn't have any side-effects, AFAIK).
++ If changing these, you may want to remember that these correctly reflect the player colors in net games (unless you've been changing those in the Shapes file and Team/Player color menu in the Preferences too). It's common practice these days for folks to modify map colors and change the color of the player in the automap, but bear in mind that those colors do serve a useful purpose in net games (i.e. lets you see who's who when you're looking for a [un]friendly face to frag).
One other note: bear in mind that if changing any of these colors, the Marathon Infinity engine is limited in 256 colors as to what it can display. So it's best to pick new colors that match the Marathon Infinity palette if you don't want unpredictable results.
[Editor's Note: Hamish Sanderson, when queried about the nonexistent "Custom Icons and Unique Creator Code section" in his Anvil tutorials said, "Sorry, that bit never got written." It could have been worse, God could have said the same thing concerning the last 3 of the 10 Commandments! Fortunately for us God found the time to jot down all the Commandments and much like Moses and God, Chris Komarnicki has collaborated with Hamish and together they have finally completed the long lost Custom Icon section. I guess this is more like Indiana Jones and the lost Ark actually, only with out all the arrows, snakes, flying wings and Nazis. Hmmm... actually I suppose it is more like just two computer geeks out-wonking one another. - gls 01/16/2001]
Also note that menu ID#129 contains the Main Controls screen options (New Game, Quit, etc). Although you never see the menu itself, you can add/remove/alter the keyboard shortcuts for each item, should you wish. e.g. If your project is solo-only and you've gone to the trouble of hiding all the Netgame options in the Main Controls screen and Preferences so they can't be used, then you'll probably also want to remove the keyboard shortcuts from this menu so that net play options can't be accessed that way either.
ID#129 - filenames of Marathon Infinity's various support files, preferences file, recorded film (Marathon Infinity stores a film of the last-played game in the System Folder's Preferences folder; this is what gets played when you select 'Replay Last Game'). Note that the Shapes.16 and Sounds.16 entries don't work (presumably these are leftovers from a feature that didn't make it into the final release).
If you're releasing a scenario that uses modified copies of the original Shapes, Sounds and Marathon application, rather than a simple map add-on which will happily sit in the end-user's Marathon Infinity folder and work with the default support files, then I'd _strongly_ recommend that you assign unique Preferences and Recording names (e.g. "<your scenario's name> Preferences"). This will avoid any Marathon Infinity screw-ups which tend to occur when you have more than one copy of Marathon Infinity on your Hard Drive, each in different folders and using unique support files in those folders if such applications have a common Preferences then one version of Marathon Infinity can end up using another's support files, as the paths to those files seem to be stored in the Preferences (along with the filenames themselves). This sort of behavior can have lots of nasty side-effects, from maps appearing in somebody else's texture sets, to hard crashes (when the Shapes file being used by accident doesn't contain all the collections/sequences of the one that should have been).
The 'Movie' filename is for a feature that presumably was cut at some point from Marathon Infinity itself - the ability to play a QuickTime movie as a cut scene intro to the first level when the player hits 'Begin New Game'. This feature is entirely functional (and has been used by scenarios such as Evil to provide a simple intro movie), though I have to say it would have been of much more usefulness had the cut scene movie been made to play at the _end_ of a scenario, not at the start. Personally, I think that this feature is vastly overrated by some folks, given its restricted use [it makes little sense to me to have the glitziest cut scene at the start of a map and not at the end], and adding a QT movie to a scenario can easily bloat the package's size dreadfully when it comes to distributing it, without actually adding to the game play itself in any way. I firmly believe that the effort required to create a good-quality cut scene movie would be _much_ better spent on making a kick-ass scenario, rather than indulging in such irrelevant novelties. Nuff said.
ID#135 This contains the text that appears in the top and bottom terminal status lines. You will very probably want to modify/remove this if you are working on a non-Marathon project. Note that the last entry ('%H%M %m.%d.%Y') is the 'date/time clock' reading that appears whenever you read terms and appears to change over time. In fact, all it really does is advance a bit whenever you logon to a terminal; you can replace this string with regular text if you like.
ID#137 These are the weapon name strings that appear for the currently-used weapon as displayed in the HUD. If you change weapon types then you'll probably want to change the names to do with them.
ID#150 These are the weapons, ammo and retrievable items [S'pht key card and insertion chip] names that appear in the HUD's inventory. Again, you'll want to modify this string if you change any weapons/ammo/items in your project.
BTW, you'll find that these strings are referred to in the internal Items table which you can access via Fux (though you're very unlikely to need to mess with these unless doing some pretty unusual mods).
ID#151 These are the names that appear in the HUD for each section of the inventory (though it's probably unlikely you'll want to change these).
Fux allows you to modify various internal tables in the Marathon Infinity application - these are lists of various preset values determining the behavior for some Marathon Infinity features, and thanks to Fux these can now be easily altered. Some tables are of more practical use than others; I've included a complete list of them here but you should refer to Fux's Readme for more specific details. Some of these are definitely worth exploring if you're doing scenario work, especially where you want to modify various types of behaviors to make things a bit different.
I wouldn't recommend trying to change platform switches to tag or light switches, etc. although it's straightforward enough to change between types of Tag switches. I've changed the Water set's Oxygen Recharger to a 3x Shield Recharger without any trouble though (bearing in mind that this was for a project without and O2-draining media in set 1).
Map lines, Map polygons, Map text
(see also Miscellaneous below)
Media, Media colors
The detonation/emergence Effects fields refer directly to the Effects entries in the PM (which are counted, sensibly, from '0', BTW).
You might find this useful, but unless you've got a good reason for altering these settings I'd suggest leaving them as they are; most Marathoners will be well familiar with them already.
On a more practical note, this is chock-full of useful stuff as regards scenery behavior, and very useful for putting that competent finish to modifications. Well worth exploring.
The 'Animated' flag is ignored, BTW. The Fux Readme
is quite correct in its assumptions.
Note that if you need to add extra ammo bar graphics to the HUD then this is entirely possible; you'll need to paste the extra graphics into the Interface collection, and then do the Sequences trick that you also use for adding extra textures to ensure that the additional bitmaps are loaded by Marathon Infinity.
There's not many other things you can do to the Marathon Infinity application, apart from try to disassemble it and hack modifications directly into it (something only for really good programmer/hackers to try, and generally illegal under the terms of the software license!). In theory, you could do one or two other things, such as alter what weapons/ammo/shield power are initially present when you start a new game (although this is much easier to do by adding said items to the map and kludging it there). The 'Marathon Universal Patcher' utility might be worth checking out though if you're trying to do something a bit different (allows addition of a 'Save Anywhere' function, should you wish to dispense with Marathon Infinity's Pattern Buffer system, for example - note that if you use the Pause function as the 'Save' key, you can then change the keyboard shortcut used for this by altering MENU resource ID#128 to suit [it's a neat trick, even if you do lose the Pause function]).
Last word on application mods
Well, if it's not listed here as being supported, I think it's safe to say that it can't realistically be done - not without that Holy Grail of source code, anyway...
Finally, one very important reminder; even if you've totally replaced the entire contents of Shapes, Sounds, Images and Map files to the point where you can distribute those complete, it is quite definitely illegal to distribute a complete copy of the Marathon Infinity engine, even in modified form, unless you have explicit permission from the authors (Bungie) to do so. Please do remember this when distributing engine mods, and use a patcher for the job - it's better to be safe than sorry, you know.