Skip to content

Mapping for Fortress Royale

Mikusch edited this page Dec 27, 2020 · 2 revisions

Mapping for Fortress Royale

This document briely explains the different aspects of creating a Fortress Royale map. If information is missing or outdated, feel free to contact the repository owners.

Map Design

Fortress Royale maps use the same map design philosophy as other battle royale games. A good map typically has a "hot spot" containing a lot of good loot and evenly spaced out buildings or places surrounding it.

Verticality is encouraged, don't make your map one flat plane. But make sure that players have enough ways to traverse your map. Similarly, make sure that Snipers don't have infinite sightlines. Place obstacles around your map without making it feel too cramped.

Skybox

In order for the battle bus to spawn and players to be able to parachute down properly, you will need to leave a large open area above your map.

When creating a 3D skybox, it is advised to place it above the map, to avoid having the death zone clip into it.

Map Size

The gamemode supports maps of any size, but a playable area with a diameter between 10,000 HU and 15,000 HU has proven to work best. It is recommended to put around 5,000 HU of additional space on the outer sides of the playable area (e.g. a body of water) so that the zone can start there.

Top-down view of br_battleroyal_72

Spawn Points

During the "Waiting for players" period at the start of a map, players are allowed to join the BLU team and fight eachother. Make sure to place 32 BLU spawn points around your map, or build a small lobby that players can spawn and fight in.

Placing Loot Crates

Loot crates containing weapons and items can be placed in two different ways:

  1. Using Hammer Editor
  2. Using the in-game crate editor

1. Using Hammer Editor

Mappers are able to place loot crates using the Hammer editor and compile them into their map.

Pros:

  • Allows for precise crate placement
  • Can be done without a server running the gamemode

Cons:

  • Editing crates requires a recompile

To place a default loot crate, put a prop_dynamic or prop_dynamic_override and give it the name fr_crate (can be changed through map config). The crate may be created at any point during the game, allowing you to spawn them using point_template.

It is also possible to place loot crates containing different or specialty loot, for example a crate that only contains health kits. All they require is a different name, as defined in the configuration. There are a few premade crate types available for you to use, you can check them in the global configuration.

Settings of a crate in Hammer

Most medium-sized maps tend to have around ~200 static crates but that number isn't a strict guideline. Place as many as you think you need. Keep in mind that you will have to recompile your map if you want to edit the crates.

2. Using the in-game crate editor

Fortress Royale offers an in-game editor that allows you to place, move and remove crates in the map. To use the editor, use the sm_editor command while the plugin is loaded. You will need admin access to use the command.

Pros

  • Easy-to-use crate editor
  • Editing crates only requires config changes

Cons

  • No precise crate placement
  • Requires the gamemode to be set up on a server

Placing Driveable Vehicles

The vehicles in Fortress Royale are based on prop_vehicle_driveable. In order to place this entity through the Team Fortress 2 Hammer Editor, you will need to modify your tf.fgd, located in the bin directory of your installation.

@BaseClass base(Targetname, Origin, Global, prop_static_base) = BaseVehicle
[
	vehiclescript(string) : "Vehicle Script File" : "scripts/vehicles/jeep_test.txt"
	actionScale(float) : "Scale of action input / framerate" : "1"

	// Inputs
	input Action(float) : "Set the speed of the action animation"

	input TurnOn(void) : "Turn on: Start engine & enable throttle"
	input TurnOff(void) : "Turn off: Stop engine, disable throttle, engage brakes."

	input Lock(void) : "Prevent the player from entering or exiting the vehicle."
	input Unlock(void) : "Re-allow the player to enter or exit the vehicle."
]


@BaseClass base(BaseVehicle) = BaseDriveableVehicle
[
	VehicleLocked(choices) : "Start locked" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]	

	// Outputs
	output PlayerOn(void) : "Player entered the vehicle"
	output PlayerOff(void) : "Player exited the vehicle"
	
	output PressedAttack(void) : "Player Pressed attack key"
	output PressedAttack2(void) : "Player Pressed attack2 key"

	output AttackAxis(string) : "State of attack button [0,1]"
	output Attack2Axis(string) : "State of attack2 button [0,1]"
	
	// Inputs
	input HandBrakeOn(void) : "Turns the handbrake on"
	input HandBrakeOff(void): "Releases the handbrake"
	input Steer(float) : "Steer the vehicle +/-1"
	input Throttle(float) : "Throttle +/-1"

	spawnflags(flags) =
	[
		1 : "Always Think (Run physics every frame)" : 1
	]
]

@PointClass base(BaseDriveableVehicle) studioprop() = prop_vehicle_driveable :
	"Generic driveable studiomodel vehicle."
[
]

In order to have Fortress Royale hook your vehicle, simply place a prop_vehicle_driveable and give it a model that matches an existing model in the configuration. The gamemode will automatically infer the vehicle you want, no special targetname required!