Garry's Mod

Garry's Mod

Not enough ratings
"Postpone" gamemode map-making guide
By Blue
In this guide, I will show you how to set up a map for the gamemode "PostPone."

For more information, please see the actual gamemode:
https://steamhost.cn/steamcommunity_com/sharedfiles/filedetails/?id=3014949126
   
Award
Favorite
Favorited
Unfavorite
The Game Mode and Conceptualizing a map for it
The Gamemode
In PostPone, there are 2 phases of each round:

Peacetime, where all players are neutral and can make preperations,
and Wartime, in which players are randomly assigned to "Destroyers" or "Protectors" teams-
the former of which is tasked with stopping the latter from postponing an inevitable map-wide disaster (known in-game as "the event").

Depending on the design of the map, The Protectors must complete a multi-step task in order to delay the disaster, while also fending off the destroyers' attempts to foil them.

If the Protectors succeed, the round resets to peacetime. If the destroyers succeed- everyone dies from the inevitable disaster! (and then the round resets to peacetime, cause you know, the game has to keep going.)

During peacetime, players are equipped with only a crowbar that they cannot hurt eachother with, and during wartime, everyone also gets a pistol and can harm the opposing team.

Conceptualizing

Before doing anything, you must first think of how you want the map to play.

What is your map about?

What are the Destroyers trying to make happen, and likewise, the Protectors trying to prevent?

How long will they have to accomplish their task during Wartime, and how long will they have to attempt to prepare for it during Peacetime?

Think about these things before you start implementing the logic entities, as everything you do in the map's design will rely on this.
Setting up core map logic
First, we'll need to set up the basic logic for the game-mode to function within the map. please note, it is important that NONE of these trigger or run eachother unless specifically stated- otherwise, some very bad things may occur.

  1. create a logic_auto
  2. create a lua_run and name it: setup_run
  3. set the code of "setup_run" to:

    gamemode.Call( 'SetupRoundTimes', WARTIME,PEACETIME)

    Replace WARTIME and PEACETIME with the number of seconds you want them to last within each round respectively

  4. on the logic_auto, create the following output:



  5. create 5 logic_relays with the following names:
    win_relay
    lose_relay
    wartime_relay
    peacetime_relay
    restart_relay

  6. create a lua_run named "win_run" with the code:

    gamemode.Call( 'WinGame','' )

  7. create something with this output towards win_run, like a math_counter that counts the steps required for the Protectors to win the game:



  8. create another lua_run named "restart_run" with the code:

    gamemode.Call( 'RestartGame','' )

  9. on lose_relay, create a series of outputs that act as "The Event." this should be some kind of catastrophic event that is deadly to most, if not all, the players. make the moon explode or something. be creative! additionally, you should prevent the Protectors from succeeding late by locking everything down (buttons, etc.) there is only one required output, which is as follows (the delay should be a few seconds after everything else):



  10. on win_relay, create outputs that specifically indicate that the Protectors have succeeded. for example, if The Event in your map is something like a giant bomb with a burning fuse, this might put the fuse out with a very audible hiss and visible smoke.

  11. on wartime_relay, create outputs that unlock the Protector team's ability to do the Event-delaying task. this can be unlocking button entities, opening doors, etc- ideally, you should also use this to activate a visual or auditory map-wide indicator that wartime is active, so that players know that they must either delay or cause The Event, depending on their team. for example, this could start flashing lights and alarms, and start the fuse burning for a giant bomb.

  12. on peacetime_relay, create outputs that lock down the event-delaying-task, and indicate that it is now peacetime. such as stopping the alarms in the above example.

  13. finally, on restart_relay, create outputs that reset the map to a livable state. this will mostly be disabling trigger_hurt entities and other stuff that acted to kill all the players during the "cutscene" enacted by lose_relay... essentially, this should reset the map to a state like what it was before The Event occured at all. Not to be confused for the function of the peacetime_relay, which will also trigger if the Event was postponed by the Protectors.
Refining Gameplay: Things To Consider
Once you have set up the core gameplay and logic of your map, there are some other nuances of the gameplay to consider:

  • Give the players something to do during peacetime, such as activating defenses ahead of time, doing roleplay-like busywork in the map, or socializing in a game of tennis. be creative!
  • Since players have a very limited arsenal by default during Wartime, you may concider adding weapons to the map that can only be obtained during wartime. You can hook weapon locker doors up to the wartime_relay's outputs, for example.
  • because players might be anywhere in the map at any time, you might want to take that into consideration when choosing the lengths of wartime and peacetime. Play-testing the map with friends might help to narrow down a good amount of Wartime to allow the Protectors to do the multi-step delaying task, if unopposed by the Destroyers. likewise, choose a Peacetime length that allows players to prepare for wartime if desired, but not so long they get bored of nothing interesting happening.
  • Players should not be able to delay The Event before wartime, nor should they be able to after The Event has decidedly begun. this isn't 100% necessary, but the game-mode is designed with this map design in mind, so its generally a great idea to avoid potential problems.