Thursday, March 26, 2009

Randomized Levels in Team Deathmatch - an experiment

I have always been interested in video games that feature randomized elements in their design. Games that are a little bit different each time you play them, are more likely to replayed.

In particular, I'm curious about the implementation of randomized game levels in multi-player first person shooters - such as Quake, Counter-Strike, or the actual subject of this experiment: Wolfenstein: Enemy Territory.

Down Mapping Memory Lane
The first time I tried putting random elements into a multiplayer level was during the development of Baserace, a community map for Wolfenstein Enemy Territory.

Each time a new round began, the mid-field area would undergo some randomization. This was done by instructing large blocks to arrange themselves in one of several possible locations using the the game script. The randomization essentially functioned like a giant slider puzzle.

This method was cumbersome to script, required too many entities to function, and greatly limited the range of randomization that could be achieved. I was eager figure out a better way.

A system already existed that's been used in randomized games for years and years - the tileset. Each location on a grid-space would pick a 'tile' from a library based on certain rules. Different rules and tiles would define what the environment would look like once built. (This also means that a single 'tile' may appear multiple times, which was not possible in the previous solution.) Diablo is one game that uses this kind of randomization.

Okay, cool. But how do you translate this general idea into Enemy Territory using the available entities? I wrote another thread a way back exploring some possible solutions; and with the help of fellow community mappers, came up with a possible method using a combination of .md3 models, and brushmodel entities.

The issue then became time. It was too time consuming to create and skin .md3s, ensure proper clipping, and bring them all together into a final map. Since randomized map elements weren't really a priority, I left the problem as it was - unresolved. By the next beta release of Baserace, random elements were completely removed.



New Interest, New Toolz
After seeing C's ET Model Tool I decided to revisit the randomized map idea. A quick .map to .md3 converter was just what I needed to make this work.

So a big thanks to you, C!

The Dueling Grounds - version 1
Tileset-style randomization in a map! I intend for this to be an ongoing experiment, so this first implementation is very simple. Each round the map is built from a library of .md3 models arranged on a grid, and clipped by 'hijacked' brushmodels.

This map is meant to be played on the 'Last Man Standing' game mode in Wolfenstein: Enemy Territory.

Files
Dueling Ground v1
Wolfenstein: Enemy Territory Full Game Client