Mapping

Map Submission

Introduction #

Momentum’s map submission system is how maps are officially added to Momentum Mod. Once approved, we host all map files and leaderboards, maps show up on the in-game map selector and website, and players are granted XP for playing them (and rank points, in the case of Ranked leaderboards).

Map submission is open to everyone, but we have higher standard than e.g. GameBanana or Steam Workshop. Notably:

...

Map Porting

Introduction #

This guide gives an overview of all the steps required to officially port a map to Momentum Mod.

Porting is open to everyone, but the number one rule for porters is to not significantly change an existing map. We appreciate porting work but the map ultimately belongs to the author, and porters should not make significant visual or gameplay changes on maps without the author’s permission (including Easter eggs, sorry!).

...

Map Review Checklist

This checklist is intended for experienced map porters that already understand general porting concepts.

For more in-depth information on map porting, please see the map porting and zoning guides.

Step 1: Review zones #

  • Zone points are placed precisely and well aligned to map geometry
    • Zone points are snapped to map vertices
    • Make sure to also review all regions if there is more than one
  • Zones are large enough to prestrafe in
  • Start zones encapsulate the restart teleport destination and use them as the target destination entity
  • Zone regions are not overlapping and are a single shape if possible
  • Checkpoints are placed where they can be hit consistently for better split comparisons
    • This means placing them in the middle of hallways rather than after a turn where the player can hit the checkpoint sooner or later depending on how much they cut the corner (see zoning guidelines)
  • The safe height is high enough to encapsulate any small extrusions on the floor, but also below climbable platforms that can give the player an unfair height advantage
    • Explosive weapon modes should generally use the full height while non-explosive modes should use the base height when possible
  • Max velocity should match point_servercommand settings if applicable
  • Cancel zones are used in hub/stage select areas (only needed if it is possible to return to hub area from stages/bonuses)
  • (Optional) Stages and bonuses should have names where appropriate to make them easier to identify
  • (Surf only) Limit ground speed option should be enabled unless you are supposed to bhop in start zones
  • (Surf only) Carefully review intended bhop platforms and add allow bhop triggers if needed
    • Sometimes allow bhop zones are needed for stage end platforms. Use mom_bhop_area_debug 1 to check the geometry.
    • Review WR video for ramp spine bhops or other intended bhop skips

Step 2: Review in-game entities with entity tools #

  • Teleport Velocity Mode Tool: Teleport destinations are marked as “Keep Negative Z” when inside of small player clip cages
  • Boost Triggers Tool: Check boost triggers for exploits (see required entity conversions guide)
  • Gravity Triggers Tool: Gravity triggers should persist gravity changes when the player exits the volume in CS:S maps, but not in CS:GO maps
  • Model Scale Fix Tool: Check for any incorrectly sized props
  • Bhop Trigger Fix Tool (Bhop only): If the map uses mpbhop triggers (triggers that force bhopping with targetname filters), check if they have been converted
  • Bhop Block Fix Tool (Bhop only): If the map uses func_button/func_door bhop platforms, check if they have been converted to func_bhop

Step 3: Other in-game things to review #

  • Refraction textures don’t have a dark tint (requires recompile?)
  • Maps don’t have invalid textures, cubemaps, skyboxes or models
  • CS:GO maps have an env_cascade_light entity if they use CSM shadows

Step 4: Lumper review #

  • Check for invalid entities (“Entity Review” tab)
  • Remove weapon strip entities unless adding/removing weapons is a part of the gameplay
  • Check for Valve assets in the pakfile
  • Check if ambient sounds and music are in the appropriate folders
  • (Surf only) Remove logic_timer entities that teleport players to the jail

Step 5: Submission page review #

  • Description should mostly match GameBanana submission
  • Date created should match the date on GameBanana
  • Credits should match GameBanana submission
  • Screenshots ideally should showcase iconic/memorable parts of the map. Taking similar screenshots to the ones on GameBanana is also recommended.
  • _njv or _fix suffix is removed from the map name
  • jump_ prefix is renamed to rj_ or sj_
  • Required games match what is displayed in Lumper

Map Zoning

Introduction #

Zoning is the process of defining the start, end, checkpoint, and stage areas of tracks on a map. This is required for all maps that are submitted to Momentum Mod. Zoning can be done in-game or in Hammer, both methods are described in this guide.

General Guidelines #

  • If a zone region’s location has a map teleport destination entity, we highly prefer that it is used (rather than a custom arbitrary region destination coordinate) so the spot corresponds to a map teleport destination.
  • Make sure each region teleport destination is inside the region.
  • Avoid overlapping or touching regions for the same zone which could just be one region.
  • Make sure points are placed precisely and aligned well with geometry.
  • Fill stage/bonus teleport hub areas with a cancel zone for safety.
  • Checkpoints should be placed where they can be hit consistently for better split comparisons. This means placing them in the middle of hallways rather than after a turn where the player can hit the checkpoint sooner or later depending on how much they cut the corner.
  • Stages and bonuses should be given names if it helps make them more identifiable (either use the mapper’s name or the stage’s name if it has one).

Checkpoint Placement Suggestions

...

Ammo System

The ammo system allows mappers to control how many shots the player can fire from weapons that use ammo. All defrag weapons, the RJ rocket launcher, the sticky bomb launcher, and concs can be controlled with separate ammo types. The default state for the player is infinite ammo, but the player’s ammo can be changed with player IO inputs and entities. Additionally, an ammo limit can be set that doesn’t allow the player to have more than a certain amount.

...

Collectibles

This guide covers how to use collectibles in Momentum Mod. Collectibles are a tool that lets mappers create non-linear, staged maps.

Prerequisites #

To follow this guide you should:

  • Be on Momentum 0.8.7+
  • Have a working Hammer install with the Momentum FGD
  • Some experience with entity I/O and filters

What are Collectibles? #

Collectibles are any entity that the player must interact with to continue in the map. They can be thought of like pickups, but any entity can be a collectible, so long as the player can interact with it to “collect” it. The entity filter_momentum_collectibles is used to control entities based on how many collectibles the player has gathered.

...

Creating Surf Ramps

Ramp Guide Header

Note: This guide assumes that you have a basic working knowledge of the hammer editor and the tools used.

Basic Surf Ramps #

Planning #

devstage header

Before you start to create your ramps in hammer, there are a few factors you should consider:

  • How steep do I want the ramps to be?
    • A ramp that is too steep / wide may be considered awkward to board.
    • People tend to use a 5:4 ratio for the dimensions of their ramps
  • What size do I want for my ramps?
    • People may find themselves sliding off the bottoms of small ramps.
    • They may feel like they are going slow on oversized ramps, it is important to find a balance.
  • How do I want to detail my ramps?
    • Will models be needed to achieve the visual style, or can it be brushes?

These characteristics of your ramps will inevitably be refined through testing, but it is a good idea to start off with a plan for how you want the surf to feel. Look at different surf maps that you enjoy and try to get an idea of how exactly you want yours to pan out.

...

Giving Players Powerups

Two powerups are implemented: Haste and Damage Boost. They can be given or removed with these inputs:

SetHaste (time in seconds)

SetDamageBoost (time in seconds)

If time = 0, the effect will be removed. If time < 0, then the effect will last indefinitely until removed.

There are also powerup entities: momentum_powerup_haste and momentum_powerup_damage_boost. They both take a ResetTime key like the weapon spawner entity. The haste powerup takes a HasteTime key, and the damage boost powerup takes a DamageBoostTime key. They are both specified in seconds the same way as the inputs.

...

Hammer++ Setup

Background #

Momentum Mod ships with a customized build of Hammer (named “Strata Hammer”) which includes some, but not all of Hammer++’s features. Our development has been geared more towards stability than new features, with a focus on porting to Qt for cross platform UI and bug fixing. While Strata Hammer should be perfectly usable (and we appreciate testers), it will be a while until Hammer++ features like accurate lighting preview are fully implemented. If you prefer using Hammer++, that is completely reasonable and this guide should get you set up.

...

Parallax Corrected Cubemaps

Cubemap Guide

This page covers Momentum’s implementation of Parallax-Corrected Cubemaps, created with a combination of custom entities and materials.

Thanks to Brian Charles for his work on this feature.
More technical information can be found on the Valve Developer Wiki Page.

Prerequisites #

To make use of this page, you should:

  • Be proficient in using the Hammer Editor
  • Have the momentum.fgd in your Hammer configuration
  • Know how to use the developer console

Components of a Parallax-Corrected Cubemap #

In Hammer, Parallax-Corrected Cubemaps need two entities to function correctly:

...