Keeping maps interesting - a modest proposal.

Make suggestions for improving one of the best games on the net!
Post Reply
User avatar
The Purple Panzer
Field Marshal
Field Marshal
Posts: 246
Joined: Tue Sep 23, 2003 8:13 pm
Location: Stonington, CT
Contact:

Keeping maps interesting - a modest proposal.

Post by The Purple Panzer »

I was playing on the newer MissleWars map (thx DW), and somebody joined and in the course of conversation said he preferred another map, to which I replied that I thought it had gotten a bit old, as indeed all maps do.

One thing I love about a new map is figuring out the tactical and strategic implications of the map design. If the map design could vary a bit each time the server started up, this would be a fun thing to do each time one played on the new invocation. Some great defensive positions might disappear, others might appear, some jumps might become possible or impossible, etc. Here's a way to do this - it might give a lot of interest without a lot of effort.

The idea is to allow the map server, on startup (and only then - not when a game is running), to select some values dynamically. So I might have in the map file:
variable
name platform_height
values 20 20 30 40
end
and the server would randomly pick one of the listed values for this 'variable', which would be used as a simple macro substitition, so for instance (Version 1 map for simplicity) later in the file one might have:
box
position 0 0 platform_height
..
end
and on readin the selected value of platform_height would be that given for the variable (sort of a read-macro thing, for any Lisp people reading this). Ideally this might apply to options as well, so that shot ranges, reload times, etc. would all be subject to revision on startup. (It might be a good idea to autogen a help page with the current settings, so on joining one could see what the values are - maybe a screen with something like this for each variable:
platform_height 20 20 *30* 40 50
so that it would be clear where in the range the selected value is.

Note that the use of this semi-randomness would be entirely up to the mapmaker, perhaps with an override allowed in a .config file (or, of course, a server admin could just comment out all but the selected single value he wants).

In practice this would mean that maps would be slightly different every time they were started, and so play would vary a bit. This would tend to reduce the advantage experienced players have on a map (they tend to know, for instance, where certain ricochets are likely to go), which is probably a good thing. The main thing, though, is that it would keep maps more interesting to play in the long run. I find more and more I don't play because it's just too boring - after some point I've done everything I can see that's possible, and just repeating it loses it's charm (of course the thrill of the kill sometimes remains.)

P.S. - some time back trepan had a kind of preprocessor that, if it didn't already do this, probably could have without much effort.
User avatar
Tanner
Private First Class
Private First Class
Posts: 575
Joined: Sat Sep 17, 2005 3:46 am
Location: Atl, GA
Contact:

Post by Tanner »

Its a nice idea (not saying that in a bad way or anything). I know that Olympics on norang has been generating maps in a "similar" sense for a while, but never any play-style focused maps, so to say. It would be very interesting to see how such a map would play.

-Tanner
Tanner - Segway HT i180 Red Owner - Random Map Creator - BZStocks - TS Software

Image
User avatar
too much loving
Private First Class
Private First Class
Posts: 94
Joined: Sun May 23, 2004 7:47 pm
Location: Denmark
Contact:

Post by too much loving »

That sounds supercool. Perhaps you can use embedded perl.

Code: Select all

gnalle@quit:~/Desktop$ dpkg -l | grep embperl
ii  libembperl-perl                                         2.2.0-3                     A system for building dynamic websites with Perl

gnalle@quit:~/Desktop$ cat bzflag_test
[- @values =  (20,20,30,40); $platform_height =$values[ rand @values ]; -]
box
 position 0 0 [+ $platform_height +]   [+ "\n"+]
   ...
end

gnalle@quit:~/Desktop$ embpexec bzflag_test
box
 position 0 0 20 
 ...
end

gnalle@quit:~/Desktop$ embpexec bzflag_test
box
 position 0 0 40 
 ...
end

Post Reply