Mapping Guidelines for Natural Selection v3.1 Doc v2.2.1, Last Updated August 17, 2005

Charlie "Flayra" Cleveland (flayra@overmind.org) - original author, performs reviews for content accuracy
Karl "XP-Cagey" Patrick (webmaster@xp-cagey.com) - maintains, edits, and presents current versions (send errata to this address)

Document Change Log
  • 08/17/2005 (v2.2.1) - Bumped NS version to 3.1. Revised Combat upgrade tree and replaced reference to "Pheromones" with "Focus" (oops).
  • 02/06/2004 (v2.2.0) - Bumped NS version to 3.0 (formerly referred to as 2.1). Revised entity limit to 275 under the Resource Limits section. Updated the HLTV Overview section to note that overview files aren't used by NS 3.0 and removed related document links. Updated Official Submission Deadlines with latest status and note that source is required from the author for any official map. Added a separate NS:Combat subsection to Required Entities. Updated the picture in The Minimap Sprite to match current minimap style. Updated File Naming Standards with combat map naming standard. Added team_armory to the entity list. Updated team_command entity with new "starts built" flag. Edited note for team_hive. Retitled information added in v2.1.5 as "command char placement", "hive placement", and "starting nozzle placement". Removed indent from paragraphs containing subheader titles. Made spelling and grammar tweaks. Revalidated 4.01 HTML Transitional.
  • 11/10/2003 (v2.1.5) - Added Special Locations notes on Command Station placement for bile-bomb, and hive placement, and hive-room resource-node placement. Updated Combat section as gameplay has evolved. Update document version to 2.1.
  • 09/28/2003 (v2.1.4) - Added information about including a marine base in Natural Selection: Combat mode, and linked to a .fgd to use for this purpose. Also updated victory conditions. Also updated the submission deadlines page.
  • 09/17/2003 (v2.1.3) - Added note about including a hive at the alien start in Natural Selection: Combat mode.
  • 09/16/2003 (v2.1.2) - Added Natural Selection: Combat section, detailing map creation for this new gameplay mode.
  • 09/09/2003 (v2.1.1) - Added an appendix explaining how to correctly measure the entity limit. Revised the entity limit to 300 under the Resource Limits section. Added "numents" and "entityinfo" to the Console Commands and Cheats section.
  • 07/30/2003 (v2.1.0) - Bumped NS version to 2.0 (formerly referred to as 1.1). Removed references to 1.1 and obsolete cheat codes. Added baseline e-poly number to Resource Limits and an appendix explaining how to measure this new limit. Added note about 1.02 changes to info_mapinfo. Added more detailed descriptions of generation parameters for env_particles_custom
  • 04/21/2003 (v2.0.6) - Corrected notes for trigger_random. Clarified that changes to info_location are for 1.1 and later. Changed filename guideline for text readme files. Fixed extension errors in sample zip file under File Naming Standards and added ns_yellow.res file to sample zip. Added The .res File under Required Support Files. Added a sample res file to the support files. Removed ns from examples' directory paths in File Naming Standards to remove ambiguity--restated that the ns directory shouldn't appear in zip files as a formal standard (this was already in that section underneath the bulleted list, but is now more explicit). Added a .wav file to sample zip to show location.
  • 04/14/2003 (v2.0.5) - Added more notes to info_location,env_gamma, info_player_start, and info_team_start. Updated information in Resource Limits. Changed font for filenames in the text. Changed readme file from a requirement to a recommendation. Noted which cheat commands are going to be removed in 1.1. Changed HLTV doc link to archived copy at valve-erc.com
  • 03/23/2003 (v2.0.4) - Added notes to info_location about changes for 1.1. Added Official Submission Deadlines section, linked it to Technical Requirements. Moved File Naming Standards into a separate subsection of technical requirements and rewrote it. Created text readme template for the Required Support Files section.
  • 03/16/2003 (v2.0.3) - Fully validated document against HTML 4.01 transitional and CSS 1.0. Tweaked tables and overall spacing, broke up long paragraphs, added horizontal rules to break document flow by topic. Turned minimap notes into full section on Required Support Files.
  • 03/13/2003 (v2.0.2) - Grammar and spelling fixes, revised entity guide to match 1.04 settings. Fixed broken links and other known issues. Added building constraints and line of sight back into layout section
  • 02/25/2003 (v2.0.1) - Tinted scheme to match marine theme when displayed on screen (printer remains mostly greyscale). Tabulated all entity information. Moved custom particle tool info to a separate document. Planned image layout and added placeholders.
  • 02/10/2003 (v2.0.0) - Added a Table of Contents and linked document sections. Refactored content according into technical requirements, style guide, entity specification, and cheat guide. Updated html to use CSS1 and updated broken links. Added clarifying comments to several sections in red text. Updated entity sections to reflect NS v1.0 entities. Updated cheats and commands to reflect full game client.
  • 05/14/2002 - Added recommended work process. Updated "performance and style considerations" recommending that mappers use ns.wad.
  • 04/06/2002 - Updated performance section (commander r_speeds limit increased, 4MB texture limit stated).
  • 03/04/2002 - Added docs for info_gameplay.
  • 02/27/2002 - Updated func_resource placement, updated nshulls.txt usage.
  • 02/25/2002 - Updated pre-game section. Added second paragraph to "The marine base". Updated the "alien hive rooms" section. Updated the "compile tools" section. Added "Resource model" section. Added "high-detail only" flag to env_custom_particles. Updated func_seethrough notes. Updated creating the minimap section. Updated "Console commands" section. Added env_fog section.
  • 12/14/2001 - Added new NSTR2 sections on hive placement, hive room and marine start placement, using gamma, NS hulls, trigger presence and commander mode notes. Removed team_leavegame entity and func_dropship notes. Added flag to info_mapinfo.

Known issues:

  1. "How to work on your map for best results" not ported from v1
  2. Field information needs to be finished for the following entities:
    1. env_particles_custom (to be fleshed out in expanded guide to NS particle systems)
    2. func_seethroughdoor (will test in game to answer questions on this entity)
  3. Entity information needs to be added for the remaining buildings and weapons that are now placeable by mappers.
  4. Layout information in the style guide needs to be split into NS and Combat sections
  5. Need to add section linking optional 3rd party executables for NS mappers
  6. Need to update cheats to reflect current 3.0 options
  7. Need to integrate information about gamestartedstatus and round reset into new section about round control
Table of Contents
Introduction

This guide will provide you with the information needed to create levels for Natural Selection; it is the official reference for all game specific entities. It also describes the ideas and philosophies needed to make levels that are true to the game's spirit.

Please join the discussion on the NS mapping forum if you have comments or questions regarding anything here. Good luck! The NS Team can't wait to see what you create.

When creating content for Natural Selection, you may occasionally run across references to the NSTR -- the Natural Selection Technology Release. The NSTR was provided to map authors before the official NS mod release to allow them to create content while waiting for the full client. The release of Natural Selection 1.0 made the NSTR obsolete, and the files that the mod installs include everything necessary to create a Natural Selection map.

Official Submission Deadlines

Latest status: 3.0 in publc beta, submissions are closed until the following client release is announced.

  • 2.1 (3.0) - Oct 3, 2003 (closed)
  • 1.1 (2.0) - Feb 14, 2003 (closed)
  • 1.0 - June 28, 2002 (closed)

Any map seeking official status must adhere to all of the technical requirements specified in this document. When map submissions are open, a thread will appear on the NS mapping forum with instructions. You will be expected to provide the full source for any map that becomes official.

Technical Requirements

Before a map can be considered for official status, there are a few technical requirements that must be met. Every alien vs. marine map has a set of entity requirements to allow proper 16 vs. 16 gameplay. In addition, limits have been placed on map resource usage (e.g. texture memory) to allow the game to run smoothly on target systems and required support files and file naming standards have been specified.

Required Settings
  • It is strongly recommended that you use version 1.7 or later of Merl's build of Zoner's Half-Life tools for compiling your map.
  • All NS maps must use the CSG switch "-hullfile <half-life path>/ns/nshulls.txt" when being compiled for player clipping to work properly.
  • All NS maps must place any textures used in one of three locations: NS.wad, <ns_yourmapname>.wad, or compiled into the map. If you use a custom wad, it must have the same name as your map file and be placed into the ns directory.
Required Entities
NS Mode Requirements
CO Mode Requirements
Resource Limits
  • peak w-polys (r_speeds #) under 1000 for the commander view
  • average w-polys under 700 for the commander view
  • peak w-polys under 700 for all other players
  • average w-polys under 500 for all other players
  • peak baseline e-polys under 2100 for all other players
  • ~4MB maximum texture memory usage (all texture memory used, not just the amount stored in the BSP as TEXINFO)
  • fewer than 275 runtime entities used on the map (fewer than 200 recommended)
Required Support Files

Every Natural Selection map must be accompanied by a set of support files that allow it to work properly in the game. See the section on file naming standards for an example zip file layout that includes each of these required files.

NS_Caged's minimap (scaled)

The Minimap Sprite - The marine and commander interfaces feature a simplified top-down view of the map that acts as a radar for showing the positions of units. This top-down view is stored as a sprite in the sprites/minimaps directory and should be generated by the map author. To create a minimap sprite, start Natural Selection, enable cheat mode, and type buildminimap in the console. Your machine will lag a bit for a few minutes while a bar at the bottom of the screen displays sprite creation progress. When the process is finished, the sprite will be placed in the directory where it belongs.


The HLTV Overview - Natural Selection 2.0 made use of a full-color map overview for Half-Life TV spectating, but more recent versions have replaced it with a detailed, easy-to-read minimap for spectators. The overview files are no longer necessary.

This is no longer a file requirement for NS maps; this section of the guide has been retained to prevent confusion about whether this requirement still exists.


The .res File - When a Half-Life server downloads custom files to clients, it requires a file named <your bsp name>.res in the maps directory that contains a listing of the files to send. Without this file, any person who hasn't downloaded your map before connecting to the server won't be able to play. Including this file with your map makes life much easier for server admins; they will be more likely to add your map to their server rotation if they don't have to worry about disconnecting clients.

The .res file should contain a plain text list of file names to be downloaded to clients if they don't already have them, with one file name per line. Names should be specified relative to the ns directory (so they look identical to how they are stored in your zip file--see File Naming Standards below). A sample .res file is available here for reference.


The Text Readme - In addition to the files required by the game, it is standard to include a text file in your map's zip file that provides author and backstory information about your map. Many people include an acknowledgements section and compile information as well. For consistency, the file must be named <your bsp name>.txt, and must be located in the maps directory with your BSP file. There is a recommended template for these files located here (right click to save), which can be modified to suit your tastes.

Unlike the other files in this section, inclusion of this file is recommended rather than a strict requirement.

File Naming Standards

The following standards apply to any map that is seeking official status. All examples are for a map named "Yellow":

  • All filenames must be completely lowercase.
  • All filenames must be specified relative to the ns directory (don't include the ns directory in your zip paths)
  • Your BSP file's name must be in the format ns_<map name>.bsp for an NS mode map (maps/ns_yellow.bsp), or co_<map name>.bsp for a Combat mode map.
  • Any custom sprites, models, and sounds must be in directories named after your BSP: (sprites/ns_yellow/mysprite.spr, models/ns_yellow/mymodel.mdl, sounds/ns_sounds/mysound.mp3).
  • Any custom textures must be included in the BSP or placed in a wad named after yor BSP: (ns_yellow.wad).
  • No file in the standard NS distribution may be overwritten (including setting files such as titles.txt or sounds/materials.txt and standard ns sound, model, or sprite files).
  • Naming standards for each type of required support file can be found above.

Your BSP file must be bundled with its support files into a zip file for distribution. Do not create an installer for your map. Include the full directory structure relative to the ns directory (not the half-life directory or any other directory). The zip file should be named after the BSP file (ns_yellow.zip). In the sample case, the contents would be as follows:

  • maps/ns_yellow.bsp *
  • maps/ns_yellow.res *
  • sprites/minimaps/ns_yellow.spr *
  • maps/ns_yellow.txt
  • ns_yellow.wad
  • models/ns_yellow/mymodel.mdl
  • sprites/ns_yellow/mysprite.spr
  • sounds/ns_yellow/mysound.mp3
  • sounds/ns_yellow/myothersound.wav

* - required

The ns_yellow.res file that would be included in this zip is available here for reference.

Style Guide

There are some design philosophies that should be observed to make cohesive maps that work well for Natural Selection. This document assumes that the reader has a basic understanding of NS gameplay (read the About NS page and FAQ at www.natural-selection.org and the FAQ at www.readyroom.org for more information).

It is recommended that maps seeking official status use ns.wad for texturing to maintain a common look to the textures. You may be asked to retexture a submission that uses custom textures before it is accepted as an official map.

Layout
NS_Tanith's Layout

Use Web-like Layouts - The alien starting point should be unpredictable, and the three hives should be roughly equidistant from the marine starting location. These requirements, combined with the desired intentional, committal and strategic nature of gameplay, promote a circular, interconnected design. Multiple linear paths leading to each hive from the marine start could also work if the aliens can move from hive to hive without needing to go through the marines.

The desired initial behavior for marine players is advancement in groups while spreading out to find the alien base. The map should create an atmosphere where a minimum of losses are more important than speed; the marine players should spread out to find the aliens' starting point with some urgency, but not at a high resource cost. The marines should have to commit to one or more sections of the map at the beginning of the game; a squad that has chosen one branch of the web should not be able to quickly fall back and regroup with members that chose another path. The aliens should have the ability to cut squads off from each other.

Due to Natural Selection's emphasis on research and scouting, it should take a marine with his default loadout a minimum of 30 seconds to reach the nearest hive, and a minimum of 30 more seconds to travel between any two hives. This spacing should ensure that maps aren't scouted by marine players within the first five minutes of a match, making the game more interesting.


Avoid Level-Over-Level - Natural Selection's commander mode places special limitations on its level designers. The largest restriction is the inability of maps to have rooms over other rooms. If one room is built on top of another, the commander can't give orders in or see into the lower room. Because of this problem, overlapping hallways and areas that cross over other areas should generally be avoided.

This restriction hasn't stopped level designers from creating great maps in other games--Counter-Strike's de_torn doesn't cross over itself but still provides lots of height changes and level-over-level style gameplay. Girders, catwalks, balconies, pipes, and other smaller areas can cross over each other to provide level-over-level gameplay as long as they don't block commander access to the area below them.

Although the commander's viewpoint is always from the same height (specified in the map's info_mapinfo), level designers can use height changes to keep the map interesting. Ramps, pits, and elevator shafts can all be used so long as r_speeds remain under the specified limits and the commander can select players easily in all areas for giving orders.


NS_Nothing's Layout

Create Choke Points - There should be one or more good choke points between the marine starting point and each hive room enabling the marines to build a safe area and have logical locations for deploying siege weaponry and phase gates. Ideally, there should be at least one marine-accessible location outside each hive room that can be used to attack the hive--the marines shouldn't have to run into the final room and engage the aliens in close combat on their turf.

The marines should have the opportunity to fortify an attack point by welding vulnerable openings shut and deploying siege cannons with marines on defense. The aliens should prevent this from happening by evolving to anti-siege forms.

Between choke points there should be relatively safe areas where marines can cover each other and leapfrog forward, interconnected by narrower, more dangerous passageways. The level should promote organized marine movements by squad with players advancing and covering each other.


Determine Line of Sight - Natural Selection computes line of sight for the commander based on the other marines' line of sight. A commander scrolling over an area will only be able to see enemies and enemy structures visible to his teammates:

The commander looks down at an area where a hive might be while his squad pauses behind a large door nearby. The commander sees only an empty room until one of the marines opens the door, revealing a hive to his squad--the hive then pops into view for the commander, too.

The effect is the same for both enemy players and enemy structures. Sounds and weapon effects are still played for the commander normally; the commander can deduce information about an area that he can't see using these hints. If he's hovering over a ventilation shaft with a noisy alien inside, he'll be able to hear the alien if he's close enough. If the alien fires a weapon, the commander will see his weapon effect, but not the alien itself. The commander can also use a scanner sweep to reveal areas outside of the team's line of sight for a few seconds if the team has built an observatory.


Constrain Buildable Areas - Marine commanders and alien builders both have limitations on where they can place buildings. These limitations allow mappers to decide exactly where each team should be able to fortify their positions.

Marines can't build on ground that is...

  • sloped more than 45 degrees
  • too small an area for the building to fit
  • under too low a ceiling for the building to fit
  • under a liquid (water, lava, slime) or sky
  • part of a func_seethrough or func_seethroughdoor
  • blocked by a func_nobuild
  • textured with the NOBUILD texture from ns.wad

Aliens can't build on ground that is...

  • sloped more than 45 degrees
  • too small an area for the building to fit
  • under too low a ceiling for the building to fit

Avoid Outdoor Spaces - Natural Selection gameplay is balanced for interior environments and small spaces. In an open air map, flying and crawling aliens pose special problems that don't have a clear solution. If outdoor areas are used in a map, some explanation must be given why boundaries exist on the sky (these boundaries should not be invisible, and they should not be a texture that crawling aliens can wall-walk on. A map can have exterior views without causing these problems, and solutions like biodomes are recommended (but not encouraged) over open-air environments.

Special Locations
A command station

The Marine Base - The marine base is where the command station is located. There should be at least two exits leading out of the base and it should be relatively defensible. There should be a maximum of one alien only route into this area unless the others can be secured relatively early in the game. The area should be well lit and should have space to allow the commander to build a base. There will be heavy traffic in the base area as players spawn, teleport through phase gates, equip themselves, repair structures, and regroup.

Most maps place initial marine spawn points at the marine base so they can easily find the command station. The marines could also enter in a more cinematic fashion (via dropship, elevator, etc.) as long as it's simple for the marines to get to the command station. There should be only one direction to go, and the distance should be short because marines will spawn at the marine start when a distress beacon is used.

Previous versions of this document referred to an optional pre-game sequence on a marine dropship--this idea was dropped because there wasn't time for it to be implemented.

Command Chair Placement - A gorges must be able to bile bomb the command station from an area near cover. The gorge shouldn't be able to bomb from around a corner, but must have a chance to retreat if attacked. This guideline is for balance and to prevent prolonged end games (this is important for Combat as well).


An alien hive

Alien Hive Rooms - Hive rooms should be medium-sized areas suitable for alien spawning and a giant alien hive structure (the hives have a 256 unit wide, 320 unit high main body). The exit point of the hive should be facing the middle of the room, and marines shouldn't have a clear line of sight to the hive from other rooms. Hive rooms should favor defensive fighting, with short passageways and cover suitable for flanking, turning and enveloping. A significant vertical component gives an advantage to the aliens with their crawling and flying abilities.

There can also be some ground that is unbuildable for marines to make it harder for marines to fortify. When doing this, however, keep in mind that aliens should be able to build at the hive sites. There should be multiple passageways in and out of hive rooms, possibly including ones that link to adjacent hive rooms and are only accessible by aliens. Travel between hive rooms, however, should usually require going partway back to the marine base.

Hive Placement - Hives should be hang low to the ground so that they can be easily healed by gorges and knifed by marines. This is important for game balance.


A resource node

Resource Nozzles - Resource nozzles are designated by placing a func_resource entity in the map. Rooms that contain a nozzle should be slightly open to make the area defensible and allow building. A map should generally have 7 to 12 nozzles, placed so both sides have the same number roughly equidistant from their starting positions. For a longer, closer game, you could place fewer func_resources and place them closer to the starting bases.

If you're having problems placing these resources, take a look at some RTS games (like Starcraft) to see how resources are placed around their maps. Many maps have resources at player start positions, a short distance from the player start, and in the middle of the map to promote conflict. It would be nice to show pipes that transport nanite goo around the ship, connecting nozzles with floors, or revealing pipes intermittently within room geometry, but don't worry about integrating them when first building the level since their placement could change when the map is playtested.

Starting Nozzle Placement - Hive rooms and the marine start should both have their initial resource nozzle inside the room, and not far from away (within 1000 units or so). Starting locations with the nearest nozzle in another room, or too far away are difficult to defend and are generally are a disadvantage.


An info_join_team texture

The Ready Room - The ready room should be an unconnected area of the main map, far enough away from the main area so ambient sounds from one area aren't heard in the other. There should be at least four exits from this room with the following labels: "Join Marines", "Join Aliens", "Auto-Team", and "Observe game". These exits should use the appropriate entities to place the player into the game (alien/marine, auto, and spectator).

Make the room dramatic, and make the routes to each door an inviting choice. Maybe an animated hologram of a marine or an alien inviting players to their doors will get people into the mood of your map. Use animated lights on runways, spawn point facing, railings, and other hints to lead players into the game. Try placing the spectator door up a small stairway to a balcony that implies the height needed to adequately watch the game in progress. Have klaxons going off at the beginning of the round for dramatic tension.

There should be 32 player start positions in the ready room so there isn't any telefragging when playing on a full server. The player spawns should be at least 128 units apart to avoid the problem of players getting stuck in each other. This can take a very large area when dealing with 32 starts.

Make sure that one or two bad players can't prevent other players from choosing the team or doorway they want. All hallways and doorways should comfortably accommodate two or three players side by side to prevent this.

Gameplay Considerations

Create Alien Only Paths - The basic layout should include areas where the aliens can take alternate paths not accessible to marines. Try to make areas that accommodate and promote the various alien movement types (wall-running, gliding, flying, leaping, and blinking) and reward skilled alien players with routes that are difficult but not impossible to take by using these methods. Ventilation shafts, electrical tunnels, and power conduits should allow aliens to ambush and flank vulnerable marines. These alien only routes should connect the alien hive rooms with each other and allow aliens to travel between adjacent web branches. They shouldn't be overdone; the marines must be able to understand which openings should be watched or blocked off if they want to fortify an area. There can be occasional hidden openings, but most entrances and exits from alien paths should be obvious--gratings, still fans, holes, and access tunnels. The aliens should be encouraged to use areas accessible to marines about half the time. Making tunnels more difficult to access or longer than the regular hallways can help to encourage this behavior. There should also be shortcuts through the map available to marines with jetpacks that have advantages over normal routes, rewarding the commander for research on jetpack technology.


Direct Onos Movement - The largest alien has a bounding box that measures 64x64x108 units. Because they are almost double the size of other players, these aliens require special consideration when constructing levels. Make a few wide hallways near the alien hives so an Onos doesn't have trouble defending, and connect the hives and marine start with at least one Onos-friendly path. Making smaller hallways that aren't accessible by large aliens can help balance choke points.


Include Welding Points - The aliens' advantages come from their evolution into forms that have better adapted to the environment. The marines' advantages stem from adapting their environment to themselves. Marines should have the ability to protect and fortify choke points and cut off secondary routes through the level with their welders. The func_weldable entity can allow marines to open or close off new areas of the level. Some care is required to balance the welder with the alien's movement advantages.

A marine welder


The commander's 'hacker mode' icon

Plan for Commander Interaction - The marine commander has access to the ship or station electronics, which allow him to "jack into" his location, performing diagnostics and light repairs. As a result, the commander can operate any "useable" door, lift, switch or other entity. If he clicks on it, the entity is "used", exactly as if a switch was thrown from the ground. The way the game determines this is by running through all the entities in the level, and marking all the "useable" entities and their targets.

Any "marked" entity can be used by the commander. For example, if a button opens a door, the commander could click the button or the door to open or close it. Note that generally, map-makers won't have to do anything extra to activate "hacker mode", it will just happen automatically. It's not currently possible for a map-maker to make a door that is only activateable by players on the ground (for instance, a door that requires two buttons to be pressed at the same time to be opened). A special naming scheme could be added to prevent the commander from using a certain entity. In this case, the entity should show the reason why the entity isn't linked up to the ship network, via sparking cables or an open control box.


Promote Player Coordination - Natural Selection attempts to have memorable and cinematic games that strengthen the bonds between players. Games where you say, "Remember when you punched the elevator button and backed away and as it slowly opened we saw the elevator was FULL already and turned to run....". One way to accomplish this is to have sections of the map which cause a group of players to pause and look in the same direction, or to wait for another player to do something--events that cause players to realize that, for a moment, that they're all doing the same thing.

The marines in particular should be watching each other often. Create areas wide enough for multiple players to walk, fly or scuttle through at once, or a quadruple-wide ladder that multiple players can use. Create somewhat noisy freight elevators, loading bays, and doors that can only be opened by having two buttons being pressed by two players at once. Use clocks that show when an event is going to happen--anything that helps players recognize the effects of others' actions or makes one player dependent on another. These cooperative elements are more important for the marine players, as alien players generally will lead coordinated but separate attacks.

Tasks that require two players could potentially be performed by the commander and a single marine.


Create and Name Landmarks - Creating areas with a distinctive theme makes it easy to describe parts of the map during or after the game, simplifying coordination by both sides. Landmarks and player coordination (above) promote interaction between teams and teammates, making the games more enjoyable and memorable. Try to add at least a few of these elements per map, especially around choke points. Use the info_location entity to name landmarks.


Add Gameplay Related Sounds - Gameplay related sounds help players to understand and react appropriately to the environment. If the marines hear a bay door opening and they're all in line-of-sight, they will know the aliens have breached the area and can react. If the aliens listen for a tram to start up, they can visualize where the marines are and try to track them (or the marines can outwit them by hitting the button and then not using it).

Atmosphere

Data Core Delta in NS_HeraDepict Alien Infestation - The map's look and feel should gradually change between the marine and alien starting points, becoming more "alien" as players move closer to the hives. This continuum will really help players know where they are, and get them to feel the tension they should as they leave their territory. Choose an artistic style for each side, for example:


  • Make it as though the jungle-like aliens have somehow transformed their areas of the ship into their natural habitats from their homeworld. A flooded boiler room could be decorated with draped cables and floating debris to simulate a "bog". A hive room could have treelike structures with connecting "branches", formed by fallen transmitters and posts.
  • Make the marine base completely dry with some dripping water nearby; add puddles of standing water close to the hive rooms with the hive rooms be flooded with waist deep water.
  • Make the marine side "dead" and the alien parts "living"; keep the marine side quiet (good for marines to hear the alien growls and squeals) then create a massive fan room and generators that drone out voice communication and scare the marines as they get farther away. Have little "ambient movement" on the marine side, then have moving fans, malfunctioning elevators and unexpected gusts of steam erupting from pipes as the marines get closer.
  • Consider choosing two drastically different colors or lighting schemes and slowly morphing between them as the players travel from one area to the other. Use only ambient lighting and lights coming from fixtures on the marine side, shifting to only ominous texture lights towards the aliens. Try making the marine side technological and controlled, the alien side organic and primal, then see how slowly you can transition between the two.

Eclipse Command in NS_EclipseUse High Contrast Lighting - Strive to make the lighting feel dark without being dark. A near-dark corner or two is fine, but never make areas that are completely dark. This promotes replay and reduces general frustration. Use high contrast areas to promote a feeling of darkness. The env_gamma entity can increase the contrast of otherwise washed out maps.


Add Inaccessible Details - Creating small, detailed areas that can be viewed but not entered is a great way to create powerful custom effects. Create a little side-passage with a half of a broken electrical door showing exposed wires, puddles and blinking lights behind it. Create wire gratings that only partly conceal a detailed mess of pipes and and wheels. A hole in an elevator shaft that reveals a cafeteria that's now a grotto. A crack in the wall that shows a hollowed out area filled with cables. Crinity is the true master of this and it makes a huge difference in enhancing the ambiance of and creating wonder in his maps.


Avoid Terror and Gore - Natural Selection is about lush, atmospheric sci-fi environments, cooperative strategy, and intense battles. It isn't about scaring the player or horrific environments. The aliens will still be scary, but very dark environments, flickering florescent lights, bodies slumped on rafters, and other staples of the horror genre don't help Natural Selection achieve its goals. Don't place dead colonists anywhere (slumped against walls, in piles, etc.). Pools of blood and dismemberment are also to be avoided. The game doesn't avoid blood and gore completely, but doesn't display lingering dead bodies and gibbed alien flesh. In fact, NS is less gory than Half-Life. This may seem like a senseless guideline, but it will help the game appeal to more people--hopefully resulting in more players, more add-ons, and a broader community.

Entity Specification

This specification is meant to bring knowledgeable Half-Life mappers up to speed with mod-specific changes made for NS. If you are looking for a specification of general Half-Life entities, try the Valve Editing Resource Center.

New Entities
env_gamma (point entity)
Purpose: adjusts light levels to tweak contrast (see simulated images)
Ready Room in NS_Bast
value = 1.0
Ready Room in NS_Bast
value = 1.4
Ready Room in NS_Bast
value = 1.7
Fields: Smart Edit Name Field Name Description
Gamma Ramp desiredgamma Overbrightening factor (between 1.0 and 2.0)
Notes:

This entity should probably be named env_overbright instead of env_gamma, as it really changes your monitor's gamma ramp for your map, not the gamma (brightness). Half-Life engine games don't modify your monitor's settings, so they have an effective gamma slope of 1.0. Making your gamma ramp steeper will make your colors more vibrant and will give more contrast to your maps. Quake III does this to great effect (John Carmack calls it "overbrightening").

This entity is meant to enhance lighting, not replace it. Make sure your map isn't too dark to play with an env_gamma of 1.0. To test different values, enable cheats (sv_cheats 1) and type setgamma x (where x is between 1 and 2) into the console.

There may be compatibility problems with large values on some hardware--a value of 1.7 will generally look good on all systems.

env_particles_custom (point entity)
Purpose: adds a particle system to the map
Fields: Smart Edit Name Field Name Description
Particle Sprite pSprite Sprite used to draw particle. Additive sprites work best, other modes may not work properly.
Animation Frames In Sprite pSpriteNumFrames Number of frames to display during sprite's lifetime. Animation is timed to cycle once.
Particle Size pSize Spawn size for particles in game units.
Scale Particle Over Lifetime pScale Scale factor for final sprite size: 1.0 to stay same size during lifetime, 2.0 to gradually double in size, 0.5 to shrink to 1/2 original size, etc.
Name name Allows system to be targeted. Triggering the system will toggle it on and off.
System Lifetime pSystemLifetime Time in seconds that this particle system will create new particles. Use -1 for infinite time.
Particle Lifetime pParticleLifetime Time in seconds that each particle is drawn before disappearing. Use -1 for infinite time.
Max Alpha pMaxAlpha Particles will be drawn with a max alpha equal to this value. If you want a subtle or faint particle effect, you could enter a value of 0.4 here. The default is 1.0.
Render Mode pRenderMode There are five blend modes that particles can be drawn in, but additive mode currently provides the best results.
Particle Generation Rate pGenRate Number of particles generated per second by the system. If Particle Density flag is checked, this rate is per 1,000,000 cubic units per second. Otherwise, it's total particles per second.
Maximum Particles pNumParticles Limit on total particles visible at once. Overrides generation rate.
Generation Entity pGenSource Optional entity used to determine the origin of the particle system and its size. This will generally be a func_illusionary with Render Mode additive and Render FX set to 0 (so it's invisible) but it can be any entity you want. The shape of the particle system is determined by the Generation Shape and Generation Shape Parameter settings. The particle system will follow the origin of the Generation Entity if it moves, but will not rotate with the Generation Entity.
Generation Shape pGenShape This can be one of the following: Point, Box, Sphere or Blob.
Shape Parameter pGenShapeParams Affects scale of generation shape - used as the standard deviation for blob shape type.
Particle Velocity Shape pGenShape This can be one of the following: Point, Box, Sphere or Blob.
Particle Velocity Parameters pGenShapeParams 7 comma delimited values that control how the velocity shape is sized and positioned. See notes for what each values does for each velocity shape. All 7 values must always be specified.
Particle System to Generate on Collision pGenShape If you type the name of any other particle system name here and check the Collide flag, than particles that hit the world or a player will die and generate a new particle system at that point. For best results, use particle systems with a generation shape of "Point" here, as the point will represent the point of contact.
Flags: Name Flag Value Description
Start On 1 System doesn't need to be triggered at map start
Particle Density 2 If checked, Particle Generation Rate scales linearly with Generation Entity volume. Base rate is 1 particle/second/1,000,000 cubic units in bounding box
Fade In 4 If checked and particle lifetime > 0, particles will fade from 0 to Max Alpha over their lifetime.
Fade Out 8 If checked and particle lifetime > 0, particles will fade from Max Alpha to 0 over their lifetime. If both Fade In and Fade Out are checked, each particle's alpha will go from 0 to Max Alpha to 0 once over its lifetime.
Use World Grav 16 If checked, particles will be pulled downward by gravity
Tri, not quads 32 If checked, each particle will be drawn using a triangle instead of a quad, roughly halving the performance hit of the particle system. The texture coordinates for each triangle are <0,1>,<0.5,0>,<1,1>.
Constrain pitch 128 Particles won't rotate up or down to face the player. This can look better for some types of "falling" effects.
Collide 256 Particles disappear when they touch the world. If a collision particle system is specified, it will spawn at the collision point.
High-Detail Only 512 Users can turn off high detail particle systems in the menu system for better performance. Used for atmospheric effects that are not meant to directly affect gameplay.
Face Up 1024 Draws particles facing straight upward instead of facing the player (e.g. scanner sweep effect).
Notes:

Float precision is currently limited to 1/8th increments due to packing of network data. This means if you enter a value of 0.2, it will be truncated to 0.125. For best results, enter all floats as multiples of 0.125.

Particle systems can have a big impact on frame rate, but don't be afraid to try out systems with tons of particles. Experiment and see what actually affects your frame rate; you'll probably be surprised at the result. Size, drawing type, number of particles, and collision all affect frame rate to some extent.

If using this entity is causing a crash, make sure the fields are filled in properly--there isn't a lot of bounds checking done here. Better checks should be added in the future.

Generation Parameter by Shape
Point [unused]
Box [unused]
Sphere outer_radius
Blob std_deviation
Velocity Parameters by Shape
Point origin_x,origin_y,origin_z,[unused],[unused],[unused],[unused]
Box min_x,min_y,min_z,max_x,max_y,max_z,[unused]
Sphere [unused],[unused],[unused],min_radius,max_radius,[unused],[unused]
Blob [unused],[unused],[unused],std_deviation,[unused],[unused],[unused]
func_nobuild (brush entity)
Purpose: prevents marine commander from building
Fields: Smart Edit Name Field Name Description
Name targetname For killtargeting?
Notes:

Unlike the TFC entity of the same name, this entity clips players -- this is by design.

func_resource (point entity)
Purpose: provides location for a resource node
Fields: Smart Edit Name Field Name Description
Target On Build targetOnBuild Points to target to trigger when a node is built on this resource.
Target On Destroy targetOnDestroy Points to target to trigger when a node is destroyed on this resource.
Notes:

The resource model has been greatly simplified since early development. This entity originally had finite resources, could be sped up, and had variable initial rates--the additional complexity was scrapped in favor of simplified gameplay.

func_seethrough (brush entity)
Purpose: brush that is ignored by commander selection code, usually invisible to commander
Fields: Smart Edit Name Field Name Description
Alpha for Commander commanderAlpha Texture mode alpha for commander (0-255)
Alpha for Players playerAlpha Texture mode alpha for players on the ground (0-255) In 1.0x, func_seethroughs that have a player alpha < 255 won't block bullets.
Notes:

This entity is necessary for commander mode to work properly. This is most commonly used for detail work in ceilings, so the commander can see down through them.

func_seethroughdoor (brush entity)
Purpose: door that is ignored by commander selection code, usually invisible to commander
Fields: Smart Edit Name Field Name Description
Alpha for Commander commanderAlpha Texture mode alpha for commander (0-255)
Alpha for Players playersAlpha Texture mode alpha for players on the ground (0-255)
Name name Used for triggering the door
Speed speed Movement speed
Target target Target to use on open
Kill Target killtarget Target to remove on fire
Master master If master is off, door won't fire
Delay Before Fire delay Amount of time between triggering door and initial movement
Delay Before Close wait Amount of time door stays open (-1 to stay open)
Fire On Close netname Target to use on close
Health health If > 0, doing health damage to door will cause it to open
Damage Inflicted If Blocked dmg If a player or building blocks the door, it will do this much damage per second
Lip lip Amount that door sticks out of wall when open
Move Sound movesnd Looping sound played while door is in motion. Selected from presets.
Stop Sound stopsnd Sound played when door fully opens or closes. Selected from presets.
Locked Sound locked_sound Sound played if door is triggered and master is disabled.
Unlocked Sound unlocked_sound Sound played if door is triggered and master is enabled.
Locked Sentence locked_sentence Message to display if door is triggered and master is disabled not functioning?
Unlocked Sentence unlocked_sentence Message to display if door is triggered and master is enabled not functioning?
Minimum Light _minlight Minimum amount of light to use when rendering the object
Flags: Name Flag Value Description
Start Open 1 Door is initially in the open position
Don't Link 4 If checked, blocking one door won't stop other doors with the same name from moving. If unchecked, all doors with the same name will be blocked.
Passable 8 If checked, door won't block player movement
Toggle 32 If checked, door will either open or close (1/2 cycle) when triggered
Use Only 256 If checked, door requires use key to activate. Doors currently require triggers anyway.
Monsters Can't Activate 512 If checked, only players can activate this door. Left over from vanilla HL/useless in NS?
Notes:

This entity combines the properties of a func_seethrough with a normal door.

func_weldable (brush entity)
Purpose: brush that marine welder can turn on/off (also can trigger other effects when welded/broken)
Fields: Smart Edit Name Field Name Description
Name targetname Used to toggle weldable functionality -- if the weldable is disabled, welding will have no effect.
Health health Amount of damage weld can take before breaking (use -1 for infinite)
Seconds to weld weldableTime Number of seconds marine must use welder to trigger effect.
Explosion Material material Duplicates field on func_breakable: gibs will be specified material if broken.
Target On Finish targetOnFinish Fires target when the marine has finished the weld.
Target On Break targetOnBreak Fires target when the weld brush is broken.
Target On Use targetOnFinish Fires target when the brush is used.
Flags: Name Flag Value Description
Start Enabled 1 Brush can be welded without triggering first
Weld opens, not closes 2 When marine uses the welder, the brush disappears instead of appearing.
Notes:

This entity uses the standard brush entity render fields for determining appearances for gratings, glass, etc.

Create the world geometry for an open weld, then add this entity to represent the closed state.

info_gameplay (point entity)
Purpose: changes map gameplay type
Fields: Smart Edit Name Field Name Description
Team One Type teamone Alien or Human. Currently must be set to Human
Team Two Type teamtwo Alien or Human. Currently must be set to Alien
Notes:

Multiple info_gameplays aren't supported, and will cause undefined behavior.

info_join_autoassign (brush entity)
Purpose: ready room trigger that assigns player to team with fewest players
Notes:

Entity is invisible; combine with a func_illusionary to create the "join random team" sign for your ready room.

info_join_team (brush entity)
Purpose: ready room trigger that adds player to specified team
Fields: Smart Edit Name Field Name Description
Team teamchoice Team player is assigned to when triggered
Notes:

Trigger will be disabled if team balance requires players to join the other side first.

Entity is invisible; combine with a func_illusionary to create the join signs for your ready room.

info_location (brush entity)
Purpose: trigger that gives player name for area inside the brush
Fields: Smart Edit Name Field Name Description
Location Name locationname Text to display to clients / for hive names.
Notes:

Uses X and Y bounds instead of brush shape to determine boundaries. Z information is disregarded, so making the brush "short" can reduce the map's size without hurting the effect. Make info_locations 8 units tall to reduce compile time and .bsp file size. info_locations should NEVER overlap in XY.

This entity doesn't count towards the overall entity limit.

Use of the NULL texture on this entity can reduce the amount of light data in your map, especially if the brush is large.

info_mapinfo (point entity)
Purpose: defines parameters for commander mode
Fields: Smart Edit Name Field Name Description
View Height viewheight This is the height that the commander will view the world from. There should be no brush entities at this height. The entire readyroom should be placed above this height so it doesn't contribute to w-polys.
Minimum Map Z minviewheight Defines the height where the black background is drawn to avoid HOM. Entities below this height are hidden from the commander but still contribute to w-polys.
Minimum X minx Defines how far left the commander can scroll.
Maximum X maxx Defines how far right the commander can scroll.
Minimum Y miny Defines how far down the commander can scroll.
Maximum Y maxy Defines how far up the commander can scroll.
Top down XY cull distance culldistance See notes.
Flags: Name Flag Value Description
Don't draw background 1 Use if you already have the commander inside a map "shell" and don't need to avoid HOM
Notes:

If the distance between a brush entity's origin and the commander's current viewpoint is greater than the XY culling value along the X or Y axis, the entity won't be drawn in the commander view. Larger values will increase w-polys, but a value that is too small will cause brush entities to disappear when they near the edge of the screen. The proper setting will vary for each map depending on the commander's height and the size of the brush entities in the map.

The cull distance affects all players' views as of the NS 1.02 server patch. The maximum distance along the X or Y axis at which any player other than the commander will see an entity is approximately twice the cull distance value.

info_spectate (brush entity)
Purpose: ready room trigger that adds player to spectators
Notes:

Entity is invisible; combine with a func_illusionary to make the "spectate" sign in your ready room.

info_team_start (point entity)
Purpose: team spawn point during game
Fields: Smart Edit Name Field Name Description
Team teamchoice Human or Alien
Notes:

This entity doesn't count towards the overall entity limit.

target_mp3audio (point entity)
Purpose: plays a mp3 sound file in game
Fields: Smart Edit Name Field Name Description
Name targetname For targeting -- plays sound when activated
Sound Name soundname MP3 filename relative to ns directory
Volume soundvolume Relative to volume sound was recorded at
Fade Distance fadedistance Controls how far away the sound can be heard -- it will be completely inaudible at the distance specified. Overridden by flag.
Flags: Name Flag Value Description
Don't Fade Volume 1 Overrides Fade Distance -- sound will be heard at the same volume everywhere.
Looping 2 Sound will loop indefinitely until turned off.
Start On 4 Sound begins playing when the map is started.
team_armory (point entity)
Purpose: initial location for a marine armory
Flags: Name Flag Value Description
Start Built 1 This building is active and available for marine use when each round starts.
team_command (point entity)
Purpose: initial location for a marine command chair
Fields: Smart Edit Name Field Name Description
Command Login 1 commandstationuse1 Target to fire when a member of team one logs into the chair
Command Login 2 commandstationuse2 Target to fire when a member of team two logs into the chair. Unused until marine vs. marine maps are supported.
Command Logout 1 commandstationlogout1 Target to fire when a member of team one logs out of the chair
Command Logout 2 commandstationlogout2 Target to fire when a member of team two logs out of the chair. Unused until marine vs. marine maps are supported.
Command Destroyed 1 commandstationdestroyed1 Target to fire when this chair is destroyed if it's owned by team one
Command Destroyed 2 commandstationdestroyed2 Target to fire when this chair is destroyed if it's owned by team two. Unused until marine vs. marine maps are supported.
Flags: Name Flag Value Description
Start Built 1 This building is active and available for marine use when each round starts.
team_hive (point entity)
Purpose: location for an alien hive
Fields: Smart Edit Name Field Name Description
Spawn Distance maxspawndistance Radius to search for info_team_starts linked to this hive for spawning.
Target On Spawn targetonspawn Target to fire when hive spawns (toggle)
Target On Death targetondeath Target to fire when hive dies (toggle)
Notes:

NS Mode maps should have exactly three of these entities. CO Mode maps should have one.

trigger_presence (brush entity)
Purpose: brush that allows selective triggering based on team and entity type
Fields: Smart Edit Name Field Name Description
Name targetname For killtargeting
Master master If master is off, entity won't activate
Activation Target targetenter Target to toggle when someone enters the area
Deactivation Target targetleave Target to toggle when everyone leaves the area
Momentary Target momentarytarget Optional momentary_door target
Momentary Open Time momentaryopentime Time for momentary_door target to open fully
Momentary Close Time momentaryclosetime Time for momentary_door target to close
Flags: Name Flag Value Description
No Clients 1 Trigger ignores players.
No Monsters 2 Trigger ignores monsters.
No Pushables 4 Trigger ignores pushables.
Team One Only 8 Trigger will ignore team two.
Team Two Only 16 Trigger will ignore team one.
Notes:

This entity is designed to track whenever 1 or more entities of a given type are within its bounds. Activation target is fired when the count goes from 0 to 1+, and Deactivation Target fires when the count drops back to 0.

trigger_random (point entity)
Purpose: Fires one target from a list -- can be set to fire with random delays
Fields: Smart Edit Name Field Name Description
Name targetname For triggering
Shortest Fire Time minfiretime Minimum time between trigger and firing of target.
Longest Fire Time maxfiretime Maximum time between trigger and firing of target.
Tournament Target balancedtarget Target to use for tournament play--if present, this target will always be used in tournament mode so the map will remain balanced from round to round. Only necessary if the trigger_random's effects can alter gameplay between rounds.
*none* *varies* See notes.
Flags: Name Flag Value Description
Start On 1 Trigger activates when the round starts.
Toggle 2 Once activated, the trigger will continue firing at irregular intervals until triggered again.
Remove On File 4 The trigger kills itself after a single activation.
Notes:

This entity works like a multimanager: place the names of its targets as fields with a delay as the value. The trigger_random will select one entry out of the set you provide when triggered and fire it after the delay has passed.

Modified Entities
func_door (brush entity)
Purpose: generic sliding door
Changes:

In vanilla Half-Life, unnamed doors automatically open when a player approaches. This behavior has been removed--all doors must be explicitly targeted and triggered in Natural Selection.

func_illusionary (brush entity)
Purpose: visible brush without clipping
Changes:

It's now possible to make a func_illusionary invisible in the commander view or visible only in the commander view. Two new flag values have been added to accomplish this: check flag 1 to make the brush invisible from the top down, check flag 2 to make the brush invisible from the ground.

info_player_start (point entity)
Purpose: ready room spawn point
Changes:

This entity has changed from a general purpose/single player spawn to ready room use only. Use info_team_start to place team spawn points.

This entity doesn't count towards the overall entity limit.

Console Commands and Cheats

To use cheats, the console variable sv_cheats must be set to 1. If sv_cheats is 0, the console will respond with "unrecognized command", even though it IS a recognized command. When cheats are enabled the game will start when any team has one or more players and the round will never end.

Console commands listed here are NS specific. Additional Half-Life testing commands and cheats can be found elsewhere.

  • In-Game Tools
    • setculldistance # - used to find the minimum culling distance needed for commander mode.
    • setgamma # - sets the current env_gamma level, where x is a number from 1.0 to 2.0. This affects all players.
    • toggleeditps - displays particle editing interface
    • editps <name> - selects particle system to edit
    • listps - lists all particle systems in NS and in the map
    • buildminimap - generates a new minimap. Very CPU intensive. Saved in the ns/sprites/minimaps directory.
    • numents - lists the number of runtime entities on the map
    • entityinfo - lists runtime entity counts by type
  • Game Event Commands
    • startgame - starts game immediately (untested for a while)
    • endgame (#) - ends the current game (as a victory for team #, defaulting to team 1).
    • tooltip <name> - adds a tooltip named <name>. It will translate this tooltip from titles.txt if found.
    • givepoints - gives you some points
    • testevent - plays a "you just got points for killing the enemy" event
    • alert - generates a random alert.
    • deathmessage <weaponname> - sends test death message to all, e.g. "deathmessage machinegun", "deathmessage bitegun"
  • General Map Testing Cheats & Commands
    • jointeamone - causes player to join team 1
    • jointeamtwo - causes player to join team 2
    • spectate - causes player to join spectators
    • autoassign - automatically assigns the player to a team
    • getnumplayers - Reports the current number of players
    • killall - Kills all players in the game with your current weapon (won't kill teammates unless FF is on via tournament mode)
    • invul - Toggles invulnerability for self.
    • highdamage - All damage is x100 vs. buildings, x10 vs. players
    • slowresearch - Research takes full time instead of normal 2 seconds when cheats are enabled
    • detectall - for testing motion tracking and marine blips
  • Alien Map Testing Cheats
    • spawnhive - If alien, adds a new random hive for your team
    • killhive - If alien, removes a random hive
    • addcat # - Adds an upgrade category, as if you had built an upgrade chamber
      1. defense
      2. offense (no longer used)
      3. movement
      4. sensory
    • removecat # - Opposite of addcat.
    • redeem - Makes it easier to test redemption
  • Marine Map Testing Cheats
    • startcommandermode - Teleports to the first command station it finds and starts commander mode. This will sometimes teleport you inside geometry.
    • stopcommandermode - Drops out of command mode
    • bigdig - Buildings are built instantly when placed
    • hightech - Research happens almost instantly
    • orderself - Gives your commands to yourself so you can logout and see how they look on the HUD. There's no way to stop doing this after you've started.
    • killcs - Kills all command stations.
    • setskin x - Sets the player's skin (0 for white marine, 1 for black marine)
Appendix A: Baseline E-Polys

Most of the resource limits specified in this document are self-explanatory but the "baseline e-poly" value requires clarification. The value that the Guidelines give (2100 polys) should not be compared to the r_speeds number during map testing. The e-poly number displayed by r_speeds is an indication of how many model polygons (loaded from mdl files) are currently being rendered on the screen. The mapper has no control over how high this number can go during a game because it includes polygons from any buildings, players, and equipment on the screen.

Baseline E-Polys
team_command 802
team_hive 1395
func_resource 638

Instead of attempting to limit the total e-polys on the screen at once, the guidelines set a limit on the number of model polygons that the mapper can place in any one area. By limiting the mapper's contribution to e-polys (the "baseline" value), the Guidelines are attempting to keep the total value low while still giving the mapper some flexibility. Any custom map model polygons in a scene count toward this limit. The worst-case number of polygons caused by the following entities are also counted: team_command, team_hive, and func_resource. These numbers are given in the table on the right. The player's weapon and any models spawned during the game (e.g. dropped weapons) don't count towards the limit.

If you don't place any custom models in your map, you don't have to worry about this limit if you stick to the following maximums: no more than 1 hive viewable at once, no more than 2 nodes viewable with a command chair, no more than 1 node viewable with a hive, and no more than 3 nodes viewable at the same time from any angle. Don't count command chairs placed by commanders in the limits.

Appendix B: Runtime Entities

The guidelines limit the runtime entity count for a map, but this number isn't the same as the entity count displayed by an editor. The following entities that are removed when the map loads can be ignored for the purposes of this limit:

  • info_player_start
  • info_team_start
  • info_location
  • info_null
  • light without any "targetname" (Name in Hammer's object dialog)
  • light_spot without any "targetname"

There are two developer commands that mappers can use to assist in staying under the runtime entity limit: "numents" and "entityinfo". "numents" displays the current runtime entity count--running this after a map as first loaded will give the number to use for comparason to the limit. "entityinfo" displays a listing of loaded entity types with the detected count of each; mappers can use this command to find out what types of entities are contributing most heavily to the total count to help them optimize.

Appendix C: Natural Selection: Combat (alternate gameplay mode)

This appendix details the creation of an alternate gameplay mode of Natural Selection. NS: Combat is a simple, combat-focused version of NS without any resources, structures, or commander. It isn't meant to replace standard NS gameplay, but has been designed to be a "starter" mode to introduce NS concepts more gently. Since it is less complex, NS: Combat will also allow small groups of people to play together (ie, at a cyber cafe, at the office or home, etc.). NS: Combat is slated for inclusion in NS 2.1.

Game Summary

NS: Combat is a simpler, easier-to-learn, smaller scale combat experience that introduces players to the technology and weapons of Natural Selection. Players start as marines or skulks in short timed games. As players kill enemies, they gain experience toward "levels" that allow them to choose from better weapons and armor, improved abilities, tech upgrades, or evolutions to higher lifeforms. Players start at level 1, and can earn up to 9 additional levels.

Death and Respawn - Dead players respawn in "waves". Whenever a player dies, a respawn timer is started. When the timer expires, all dead players immediately respawn at their base without losing any levels. Additional deaths that occur when the timer is active do not cause it to reset, but if all the players on a team are dead at the same time, that team immediately loses.

Scoring - The scoreboard shows every player's current level and number of kills. Team scores are the sum of team member levels.

Winning Conditions - If the marine team destroys the alien hive, they win. If the aliens destroy the marine command chair, they win.

Player Abilities

When a player gains a level, a menu allows them to choose which improvement, upgrade or new equipment they want. Marines can change their weapon type, get an equipment upgrade (e.g. weapon upgrades), upgrade their armor type, or resupply ammo or health to themselves and nearby friendly players. Aliens can unlock the next level of alien abilities (normally linked to hives), purchase a level 3 upgrade, or evolve to a higher lifeform.

Example marine upgrade menu
  1. Upgrade weapon to shotgun (-> grenade launcher, -> heavy machine gun)
  2. Upgrade armor to jetpack (-> heavy armor)
  3. Upgrade armor bonus (-> damage bonus)
  4. Resupply (-> motion tracking -> scanner sweep)
  5. Welder (-> hand grenades -> mines)
Example alien upgrade menu:
  1. Unlock next hive ability
  2. Morph to Gorge (-> Lerk, -> Fade, -> Onos)
  3. Evolve Carapace (-> Regeneration, -> Redemption)
  4. Evolve Focus (-> Scent of Fear, -> Cloaking)
  5. Evolve Celerity (-> Silence, -> Adrenaline)
Combat Map Requirements

Maps for NS: Combat are simpler than regular NS maps, and have slightly different entity and design requirements. Unless stated in otherwise this section, all mapping guidelines in this document apply normally to Combat maps. Please submit Combat maps to the NS team as you would a normal NS map.

  • Make sure you have the latest .fgd which will allow you to place structures in your map.
  • Combat maps should be named with a "co_" prefix, instead of a standard "ns_" prefix. This prefix tells NS that it's a Combat gameplay map. Examples: "co_hera", "co_eclipse", etc.
  • Place one team_command, one team_hive, and one team_armory in the map, but no func_resource
  • Create a standard ready room and team join portals.
  • Place 16 info_team_start entities for each team. The aliens start at the only available hive in this mode.
  • The overall size of Combat maps should be smaller then the average NS map, roughly matching the size and complexity of Counter-Strike maps. Combat maps should play well for small groups (1v1, 2v2, etc.).
  • Maps should have fluid, DM-like connectivity to promote intense combat and movement.
  • Concentrate on making maps as simple as possible while providing strategic depth. Since Commander Mode isn't used in NS: Combat, level-over-level play is encouraged!