Gary L. Simmons  rev 03/03/06
Home  Marathon  Joke OT Weak  Web Building  Resumé  Lynx  Hobbies  Extra  Site Map Links Page Extra Go to next department

The Battle Cat's Litterbox

Forge Tips | Harper's Tutorials | Stacked Walkways | Heartbeat | Combination Lock | Clock | Pedestal Problem | Zig Zag Stairs | Illusory Bridges | Fake Elevators | Texture Flexing | Untextured Walls | Stacked Windows | Multi-Message Terms | Counters | Level Detector


Counter Revolutionary

Counter Revolutionary
Or, How To Teach Basic Arithmetic Skills To Marathon Creatures
By Jason Harper,
Version 1.0, 4/1/99

The accompanying map illustrates a technique for making your levels count - from 0 to 8 in this case, although it can be extended much further than that. The items being counted could be the number of players present in a solo/co-op level, the number of level goals that have been accomplished, the number of secret areas that have been found, or most anything else.

The techniques developed here build upon previous efforts by myself and other mapmakers, which you'll need to be familiar with to make any use of this information. In particular, you MUST have Mark Levin's Co-op Only Level Bypass Tutorial, it was my immediate inspiration for this map, and contains information on relevant applications and techniques that I haven't bothered to duplicate here.

Extensive use is made of the multi-stop platform technique, which is discussed in detail at the Hastur's Workshop site and in my Missed Island map: A related technique, in that both are ways of making a level that responds more precisely to the player's actions, is given in my Multiple Message Terminals tutorial which in turn builds upon Claude Errera's Task-Sensitive Term Tutorial:

Please take some time now to actually play the map in Marathon Infinity: most of the documentation on the techniques being demonstrated are contained in the map's one terminal. The rest of this document contains details and ideas for further development, that won't make any sense until you've seen the counter mechanism in operation.

As promised in the terminal, here are the parameters for the nine doors in the map that allow them to open and close sequentially in response to events. Please note that this set of parameters will work only for counting up to 8: a 9th activation will reopen some of the earlier doors, and things just get wierder from there.

Common to all doors: Extends From Floor, Deactivates At Each Level, not initially active unless otherwise indicated, floor height 0 WU, ceiling height 9 WU, min height 0 WU.

Door # Initially Extended Max Height Special Platform height at events 0..8
0 no 7   0, 1, 2, 3, 4, 5, 6, 7, 6
1 yes 4 See NOTE 1, 0, 1, 2, 3, 4, 3, 2, 1
2 yes 5 SEE NOTE 2, 1, 0, 1, 2, 3, 4, 5, 4
3 yes 3   3, 2, 1, 0, 1, 2, 3, 2, 1
4 yes 4   4, 3, 2, 1, 0, 1, 2, 3, 4
5 yes 5   5, 4, 3, 2, 1, 0, 1, 2, 3
6 yes 6   6, 5, 4, 3, 2, 1, 0, 1, 2
7 yes 7   7, 6, 5, 4, 3, 2, 1, 0, 1
8 yes 8   8, 7, 6, 5, 4, 3, 2, 1, 0

NOTE: Doors 1 and 2 have to be specially handled. If they were set according to the same pattern as doors 3 thru 8 (which would mean max heights of 1 and 2 WU, respectively), they would initially open at the right time, but would open again at inappropriate times before the count reached 8. In particular, door 1 would alternately open and close on every event! To give these doors a sufficiently long operating cycle, their max heights are increased by 3 WU. They are initially active, but an adjacent platform (not visible to the player) deactivates them after they've moved by 3 WU, thus leaving them at the proper initial height. This all takes place within the first half second of starting the level, so you'll never notice it (and it takes more than half a second for the moving creatures to reach the trigger platform, so this doesn't create a problem with counting events even if they occur precisely at the start of the level).

To extend the counting range somewhat beyond 8, you'd need to add similar initialization platforms for more doors, and also increase the amount by which the existing initialization platform allows Doors 1 and 2 to move. If you increase the range to more than 9, you'll have to either make the floor height negative, or have doors that move less than 1 WU per count, due to Forge's -9..9 WU height limits. Exercise for the reader: extend the chart of platform heights to the right (note that the numbers simply go back and forth between 0 and the door's max height), to see what the door positions would be for counts beyond 8. A position of 0 (as will happen for Doors 1 and 3 on the next count) indicates an inappropriate reopening of the door.


    This was the original intended application that lead to the development of this technique, but please note that there would be problems in using the complete counter mechanism (as shown in the demo map) for this purpose. You might think of interesting ways in which to use an exact player count (for example, having more monsters appear if there are more than 3 players), but consider this: what happens if a co-op player dies, and regenerates on a starting location that hasn't been used yet? (I'm assuming that regeneration locations are randomly selected, but I've never actually played a co-op game.) After sufficient player deaths in a co-op game, the counter is going to be set to 8 regardless of how many players there actually are. This should be mostly fixable by disabling the counter (perhaps by closing a door between the Bobs and the trigger platform) after enough time has passed to have counted the initially used player starting positions, but I think that co-op players could still inflate the count by intentional suicides in the first few seconds of the level.

    A simple solo vs. co-op determination (count of 1 vs. more than 1) wouldn't suffer from this problem, and could be implemented with total of 3 or 4 platforms. See Mark Levin's map for the design of the two doors. You'd also need a control platform, and perhaps a separate trigger platform if you can't arrange for the Bobs to walk directly over the control platform to trigger it.

    Let's say that you have a level with various secret areas (we'll assume 8 of them, to match the demo mechanism), and want to reward the player based on how many he managed to find. Each secret area would contain one of the event triggers, and the counting doors would be at the very end of the level. Perhaps Door 0 could have something nasty behind it, to punish the player for not having found anything. Doors 1 thru 3 wouldn't exist, since that's not enough secrets found to justify a reward. Doors 4 and up would have a rocket launcher, with one additional rocket 2-pack for each door beyond #4. And Door 8 would reveal your Ultra Secret Hidden Terminal, accessible only to the true masters of the game who have uncovered all your secrets (and to those who have examined your map in Forge, but there's not much you can do about that...).

    The same basic idea could be applied to any non-linear level, to create a predictable sequence of results (such as combat with increasingly difficult foes) regardless of the order in which the level's goals are completed.

    Note that when applying these ideas to a solo level, it would probably not be physically possible for any two of the events to occur without a fair amount of time passing between them. Therefore, you wouldn't need the Bobs & Ticks: the events could directly trigger the control platforms without any danger of missing an event. You'd only need a serialization mechanism if the level could be played co-op, or if some of the events could happen without the direct presence of the player.

    This doesn't have much to do with counting, but I think it would make for a very nifty level so I'm going to include this suggestion anyway.

    Imagine that you've got a non-linear level, with several goals that the player can complete in any order, and you want to keep the player informed as to which goals still need to be done. In some central location, that the player can get to most of the time, make a checklist out of several map text items. It might initially look like this on the automap:

    Repair igniter mechanism
    Restart coolant pumps
    Eliminate enemies in turbine room
    Download reactor control program

    Now, let's say that the player has managed to restart the coolant pumps. In the process of doing so, he will somehow trigger a Bob outside of the visible portion of the map: perhaps via a monster trigger polygon, perhaps via opening a door that allows the Bob (previously activated by other means) to finally move somewhere. The Bob will run through corridors measureless to man, down to a sunless... oops, sorry, wrong storyline. Anyway, have the Bob travel through a corridor unconnected to the player-accessible portions of the map (probably at a height of -9 WU, so it can easily be hidden via Forge's Height window), to a point just to the left of the corresponding checklist text item. There, a crushing platform or other fatal condition kills the poor Bob (or he could simply fall into a hole he can't get out of), leaving his blinking blue locator dot permanently on the automap at that location. Now, the automap will look like this:

    Repair igniter mechanism
    * Restart coolant pumps
    Eliminate enemies in turbine room
    Download reactor control program

Get the idea? If the particular type of Bob used does not otherwise appear on the level, you might consider increasing its movement speed in the physics model, so that the blue dot appears in the right location sooner.

Jason Harper

Skully is revolutionary

Counter Revolutionary

Download Jason Harper's example map and tutorial.

Forge Tips | Harper's Tutorials | Stacked Walkways | Heartbeat | Combination Lock | Clock | Pedestal Problem | Zig Zag Stairs | Illusory Bridges | Fake Elevators | Texture Flexing | Untextured Walls | Stacked Windows | Multi-Message Terms | Counters | Level Detector

Top of page

Back to the Litterbox