Introduction to Ricochet mapping Last edited 1 year ago2023-04-17 20:39:35 UTC

You are viewing an older revision of this wiki page. The current revision may be more detailed and up-to-date. Click here to see the current revision of this page.

Introduction to Ricochet mapping

Work In Progress, contributions appreciated
This tutorial is work in progress. Any form of contribution is welcome.
This page explains how to make Ricochet maps in the same style as its official maps.

Ricochet being a "simple" game and the official maps being "simple" as well, there won't be very much to say compared to Half-Life: DeathMatch, Counter-Strike and so on.

It is assumed you already know how to create maps for Half-Life or any mod/game running on the same engine (this page won't tell you how to create brushes, how to tie them to entities...)

Keep in mind that nothing prevents you from doing other and unusual things that Ricochet official maps don't have. If you want to use other textures, another sky, a layout or universe that is completely different than Ricochet's official maps, then go ahead.

Editor configuration

Configuring J.A.C.K. (or Hammer) for Ricochet is the same as configuring it for another mod like Counter-Strike or Day of Defeat except with the following key differences:

Map properties

First thing after creating a new map in J.A.C.K. (or Hammer or TrenchBroom) is to setup its properties.

The first key/value pair to set is the name of the sky. If you want to use the same sky as Ricochet official maps, the value to put is disc.

The second key/value pair to set is "No Arena" to either "Yes" if you want to standard game rules (like rc_deathmatch and rc_deathmatch2) or "No" if you want Arena game rules (like rc_arena) to apply. In the case of an Arena map, an extra key/value pair called "Players per team" must be set as well. rc_arena has this to "1". Anything below than one will query the value of the rc_playersperteam console variable of the server.

Everything else can be left as is.

Map layout

A Ricochet official map is basically a "hollowed" box with the inner faces having the SKY texture which contains various gameplay elements like pads, jump arrows, jump pads, bouncers and teleporters.

The maps tends to be symmetrical by nature and having bouncers that block direct disc throws in order to encourage players to take risks to earn extra points by making bouncy shots.

The lighting is basically a light_environment entity with the color/brightness value of "250 242 218 200" (beige almost white) and a pitch value of "-45" with the rest (including angles) by default.
About that hollowed box
Most GoldSrc level design tutorials and especially optimization ones will tell you that making a giant SKY box around the map (also known as "skybox") is a terrible idea.

That is true because the compilers (especially VIS and RAD) will be wasting time and effort compiling unnecessary visleaves and lighting data thus causing FPS drops for players.

However, in the case of Ricochet and certain other exceptions like "Xen outdoors" in Half-Life, this is inevitable and you will have no choice but to break that rule.

Pad

Pads are basically the platforms where players can stand on. They are 256x256x16 cylinder brushes with 20 faces.

Textures setup is basically: Now that the geometry is created, you need to place an info_target entity 8 units above the pad at it's center and give it a name. This will be used later when making jump arrows and jump pads.

Arena mode has an extra visual feature for red and blue pads: they have beams under them. To mimic this, keep reading or skip to the next part if you don't care.

Each pad beam require 2 info_target entities: one right below in the center and the second being 384 units below the latter. Beams are made with the env_beam point entity and the setup is usually: Don't forget to reference the starting and ending info_target entities as well.

Jump arrows

Jump arrows are tied to the pads and allow players to travel from one location to another.

Geometry wise, those are 80x36x16 blocks which you turn into pyramids using the Vertex tool and the top half cut with the Clipping tool. The arrow texture is +0ARROW1 which you need to rotate in the right direction then press "Fit" and "C" in the texture application window to make everything fit perfectly. Left and right sides uses the +0SQUARE1 texture with 180° rotation and a simple "Fit" should suffice.

To "glue" the jump arrow on the pad, move it so that the face that act as the bottom of the pyramid shape fits the pad, then cut the "excess" from the pad with the clipping tool in order to remove overlapping geometry.

To make the jump arrow work functionality wise, you need to create a 120x16x8 AAATRIGGER block brush. For the placement, if you look at the arrow like it was pointing to the top, then the new brush must be placed horizontally (you might need to rotate it first depending on the arrow direction) and must cover the top half of the arrow itself.

All you need to do is to turn the new brush into a trigger_jump brush entity, set the target to a pad's info_target or a jump pad (covered in the next section) and the height which is the height difference between the two locations (usually 128).

Jump pads

Jump pads are pyramid shapes hanging in the air that help players reaching a pad above their heads.

The geometry is a 112x32x96 pyramid placed 96 units higher than the starting pad. It uses the same +0ARROW1 texture like jump arrows, the back can be textured with BLACK.

You also need to create a 112x32x96 AAATRIGGER block brush placed on top of the pyramid's spike, turn it into a trigger_jump brush entity and set the same values as you would for a jump arrow. Rotate the entire setup if desired/needed.

Finally, put an info_target placed near the spike's origin to act as "destination" from the pad's jump arrow. To describe the exact placement, imagine placing any point entity right above the pyramid's spike and the info_target is placed on top of it and moved twice towards the direction of the starting jump pad.

Bouncers

Bouncers are one of the core components of Ricochet. They make the discs bounce and thus allow players to earn extra points for making ricochets.

You have the freedom to decide the length of bouncers. However, they must be placed 32 units above the pad, 16 units tall and 8 units thick.

Texture setup is TRIM_YELLOW1 with a Y scale of 0.5 on horizontal sides and STRIP1A with a Y scale of 7.5 on vertical sides.

Players should not be able to stand on bouncers. You will need to duplicate the brush, texture all its faces with AAATRIGGER, make sure it's 8 units tall and turn it into a trigger_push with a speed value of 100 and the angles pointing in the direction of the void to make the players fall.

Both brushes should be rotated between 10-45°, be careful to not break the textures while doing so.

Teleporters

Author note: to be written.

Returning discs to players

The map's "wall boundaries" (not the "ceiling" neither the "floor") must be covered by trigger_discreturn brush entities.

Failure to do so will provoke the discs to bounce instead of being returned instantly to the players.

Falling

It's important to have a trigger_fall brush entity that cover the entire playfield so that players who touch it actually trigger their "falling death". The height does not matter, but it must be 200 units under the lowest pad.

Under no circumstances shall players be able to "bypass" that trigger, Ricochet does not have "falling damage" like Half-Life and players would be stuck at the bottom of your map.

Official maps also have a func_wall brush entity that cover the entire playfield near the map's "floor" with the BLUE texture, render mode to "Solid" and render amount to "255". This is likely a trick to make the illusion of player actually falling in the void.

Player spawns

For player spawns, your map must have at least one info_player_start, one info_player_spectator and 6 or 12 info_player_deathmatch for Arena and non-Arena maps respectively.

All of them are placed above a pad (except the info_player_spectator). Worth mentioning that rc_deathmatch uses a "trick" of "stacking" 3 info_player_deathmatch on top of each other since the map has 9 pads.

Power-ups

One item_powerup point entity for disc power-ups should be enough. You can place a second one if your map is big. Make sure they're not easy to get but not too hard as well. You can't decide which power-ups you want, the game will choose at random.

Side notes

Comments

You must log in to post a comment. You can login or register a new account.