Things I would like to see for the Map Makers

What do you want to see in Armagetron soon? Any new feature ideas? Let's ponder these ground breaking ideas...
User avatar
kyle
Reverse Outside Corner Grinder
Posts: 1876
Joined: Thu Jun 08, 2006 3:33 pm
Location: Indiana, USA, Earth, Milky Way Galaxy, Universe, Multiverse
Contact:

Things I would like to see for the Map Makers

Post by kyle »

I am Just starting a new list. Some of these may exist but here is what I would like to see.

1) PHP coding, I would like to be able to use random variables in my code. Minefield on CT Wield would be a good example of where I would use this. There may be other useful features for this.

2) Different maps for each team. Use this to be able to have a different set of interior walls

3) Ability to choose the team’s fortress Zone(s) and spawn point(s). Use this to make harder maps.

4) Moving walls that are timed on a clock when open and when closed.

5) Different shaped Zones. Use custom points

6) Easy way to make a circle semi-circle or ellipse. Use start angles and end angles.

That’s all I can think of right now. I’m sure some of this has been posted somewhere else on here.
User avatar
philippeqc
Long Poster - Project Developer - Sage
Posts: 1526
Joined: Mon Jul 12, 2004 8:55 am
Location: Stockholm
Contact:

Re: Things I would like to see for the Map Makers

Post by philippeqc »

-ct-kyle wrote:1) PHP coding, I would like to be able to use random variables in my code. Minefield on CT Wield would be a good example of where I would use this. There may be other useful features for this.
Many possible answers:
a) I'm looking to give a bit more flexibility to zone location. This might or might not be used to drop zones at random. But my guess is that it would be klunky to use, and the number of zones would be pre-determined.
b) Scripting for the game is planned.
c) Introducing scripting capacity inside the map, ala php. Well, right now, I think it would double and or hinder the scripting effort for the whole game. But I might be convinced otherwise as I cant found this on any real facts.
-ct-kyle wrote:2) Different maps for each team. Use this to be able to have a different set of interior walls
I keep hearing this, but I dont see how it would be a good idea (says the man who though 2 axes and 1 axes configuration needed to be supported). I keep on having (kool-aid induced) flash back of my childhood, playing tag with bases, of those anoying kids that camped the base only to take on step and run back to the base.

CSS support is planned for map, and from there to XSLT, it must be a simple step to take. An from there to start with one map, and "generate" 3 version, on for the server and one for each team (assuming 2 teams), it seems a moderatly simple step. Of course your idea of moderatly simple might differ from mine. So I'd say it is coming in the long run, but well agains my will ;).
-ct-kyle wrote:3) Ability to choose the team’s fortress Zone(s) and spawn point(s). Use this to make harder maps.
This is what I currently working on during my weekend time.
-ct-kyle wrote:4) Moving walls that are timed on a clock when open and when closed.
Walls are a PITA (Pain In The ... well you know how it goes) to move as they are quite statically inserted in the grid. I'm not saying it wont change, just that you might have more chance doing that with moving zones.
-ct-kyle wrote:5) Different shaped Zones. Use custom points
After I'm done with 3, I should come to this.
-ct-kyle wrote:6) Easy way to make a circle semi-circle or ellipse. Use start angles and end angles.
http://wiki.armagetronad.net/index.php/Map_Making see Tools and Generators. ArmaBell might or might not do this too. Sorry I dont use Windows so I cant check.

-ph

Is this a good time to convince you to pay me a generous salery so I can quick my day job and be free to work on AA? ;)
Last edited by philippeqc on Thu Jun 29, 2006 6:41 am, edited 1 time in total.
Canis meus id comedit.
User avatar
philippeqc
Long Poster - Project Developer - Sage
Posts: 1526
Joined: Mon Jul 12, 2004 8:55 am
Location: Stockholm
Contact:

Re: Things I would like to see for the Map Makers

Post by philippeqc »

oups, clicked on post rather than edit! Sorry

-ph
Canis meus id comedit.
User avatar
Lucifer
Project Developer
Posts: 8640
Joined: Sun Aug 15, 2004 3:32 pm
Location: Republic of Texas
Contact:

Post by Lucifer »

I"ll throw in my 2 cents. :)

We've beat around the idea of letting you define attributes of map elements as functions instead. For example, make the radius of a zone a function of game time. Then you could build a zone that fluctuates between 10 and 20 meters every 10 seconds by specifying radius="10 sin(40pi*gametime) + 15".

Now apply that idea to position and you get the idea. Walls doing exactly what you want them to do. Gametime is the only independent variable we've come up with that seems to have much meaning. You could reasonably use a player's cycle's position for some things, and doing that would let you have a zone that followed a player.

The disadvantage to this approach is the level of math required by someone making a map that wants to do these things. I think the advantages outweigh the disadvantages, and that we can provide a number of useful functions for people to use where they can just plug in different constants to get the results they want. But realistically, you'd need what they teach in algebra around these parts, and maybe some trig if you need an oscillating, periodic thing. Actually, trig would be a requirement pretty much, because there's not much useful stuff you can do with functions on a map if you can't oscillate periodically.

For an easy way to use semi-circles and ellipses, and indeed any curve you might care to think of, I'm going to have to say a generator is best. So this should be dealt with in the tools available. Here's why:

First and foremost, on-screen we are limited to what your graphics card can do and what your processor can process. For the "overall gaming experience", it's most reasonable to me that if you see your cycle hit a wall, it does in fact, hit a wall in the simulation. Practically that means that while we can simulate circles and ellipses and other curves to a level of accuracy that a human can't tell the difference, we can't necessarily display that same level of accuracy. Here's some examples to illustrate the point:

Player 1 plays on a 2.4ghz Opteron64. His machine is capable of rendering circular walls at 200fps with up to 120 steps. At most map sizes, 120 line segments used to draw a circle is indistinguishable from a real circle. This player has no problem.

Player 2 on the other hand plays on a 450mhz AMD K6-2 with software rendering. HIs machine is only capable of displaying the same circle with 6 steps. So he sees a hexagon. The result for him is that if he drives straight towards what he sees as a straight wall on a hexagon, heding straight toward the midpoint, he'll hit nothing and die several meters away from what he sees.

Now, there are other options available. For example, we could have an attribute for walls that gives the number of steps to use, and then every machine would use those number of steps in drawing a circle. This would result in map makers telling people to buy new computers to play their maps, of course. :) (Not that we don't already do that, I recall saying it a few times to folks trying to drive in my labyrinths) But it's a circle-only solution (well, and ellipses too). If you curve you want is a sin curve, a step attribute becomes less useful. You'll have to work to convince me that this can be generalized. :) (Or z-man can jump and just tell me it can or can't)

Still, I have a strong preference to keeping what we've got for circles and stuff and addressing it in the tools used to make maps. Somebody else might feel differently, and I can't see us rejecting a patch that provided these things without penalizing the poor guy on a slow computer. :)
Image

Be the devil's own, Lucifer's my name.
- Iron Maiden
User avatar
Z-Man
God & Project Admin
Posts: 11585
Joined: Sun Jan 23, 2005 6:01 pm
Location: Cologne
Contact:

Post by Z-Man »

Adding better support for moving walls is on my agenda.

There are ways to tesselate smooth curves; you just have to parametrize them as Position depeding on Lenght-Like-Parameter, x(s), s running from s_i to s_f. Then you chop the parameter values up in intervals, s_n = s_i + ( s_f - s_i )*n/N. Approximate each segment of the smooth thing, x(s), s running from s_n to s_(n+1) by a line segment from x(s_n) to x(x_(n+1)). You transmit the formula for x(s) and the number of tesselation steps N over the network/put it into the map.

There is another reason not to take smooth curves as collision objects apart from the collision/rendering mismatch: It's computationally hard for arbitrary functions. It's all right for lines and splines up to a certain order or lines and circles (not circles and splines), but plainly impossible to do exactly for arbitrary functions. And there is no way I can think of that allows topological safety; with line segments alone, there is a way to be absolutely certain nobody can tunnel through walls (and we follow it most of the time). Add any kind of curvature, and things get horrendeously difficult; we'd have to get rid of the possibility to make cycles pointlike objects to compensate for the inevitable accuracy loss. The circly zones are OK, you can always easily check whether you are inside or outside of a circle.

To generalize the shape of zones to arbitrary objects (not approximated by line segments), the zone shape creator will have to provide:
- a zone boundary function, a parametrization of the boundary, like x=cos(phi)*R+x_0, y=sin(phi)*R+y_0 for the circle
- a zone interior check, like (x-x_0)^2+(y-y_0)^2 < R^2 for the circle
- for collision optimization, some well defined other boundary object, like a bounding box or bounding circle
Luke-Jr
Dr Z Level
Posts: 2246
Joined: Sun Mar 20, 2005 4:03 pm
Location: IM: [email protected]

Re: Things I would like to see for the Map Makers

Post by Luke-Jr »

-ct-kyle wrote:I am Just starting a new list. Some of these may exist but here is what I would like to see.
Just a reminder, since it seems on these topics-- it is currently UNSUPPORTED to have walls that *affect*, but do not *appear* to (or, more common, vice-versa) the same player. So the whole "2 maps" business is not supported.
-ct-kyle wrote:1) PHP coding, I would like to be able to use random variables in my code. Minefield on CT Wield would be a good example of where I would use this. There may be other useful features for this.
Scripting is planned for the future, though not within the context of simple resources, since clients should not be required to support scripting.
-ct-kyle wrote:2) Different maps for each team. Use this to be able to have a different set of interior walls
Probably won't happen, but you might be able to get the same thing by using walls which only appear and are visible to a certain team/player.
-ct-kyle wrote:3) Ability to choose the team’s fortress Zone(s) and spawn point(s). Use this to make harder maps.
Definitely needed at some level, but it needs some abstraction. For example, you shouldn't be able to say "this is Team Blue's spawn point", but rather "this spawn point belongs with this fortress/zone and this formation"
-ct-kyle wrote:4) Moving walls that are timed on a clock when open and when closed.
Should be possible with plans for tValues and the configuration redo.
-ct-kyle wrote:6) Easy way to make a circle semi-circle or ellipse. Use start angles and end angles.
ShapeCircle and Point should be more interchangable-- it would allow custom zone shapes and circles within Walls.
-ct-kyle wrote:That’s all I can think of right now. I’m sure some of this has been posted somewhere else on here.
How about an option to "fill in" bounded areas? eg, so they appear completely solid from above.
Luke-Jr
Dr Z Level
Posts: 2246
Joined: Sun Mar 20, 2005 4:03 pm
Location: IM: [email protected]

Re: Things I would like to see for the Map Makers

Post by Luke-Jr »

philippeqc wrote:CSS support is planned for map, and from there to XSLT, it must be a simple step to take.
XSLT isn't. Its purpose was taken by Alternatives.
philippeqc wrote:An from there to start with one map, and "generate" 3 version, on for the server and one for each team (assuming 2 teams),
Actually, he would need to generate 2 versions, and have the server apply each one to its respective team.
philippeqc wrote:
-ct-kyle wrote:6) Easy way to make a circle semi-circle or ellipse. Use start angles and end angles.
http://wiki.armagetronad.net/index.php/Map_Making see Tools and Generators. ArmaBell might or might not do this too. Sorry I dont use Windows so I cant check.
But those aren't real circles/ellipses/etc, and generate a very complex wall. It should be possible to do <ShapeCircle> instead of <Point> within a <Wall>
Don't tell me OpenGL lacks real circles? o.O
User avatar
Jonathan
A Brave Victim
Posts: 3391
Joined: Thu Feb 03, 2005 12:50 am
Location: Not really lurking anymore

Post by Jonathan »

OpenGL can only do 'flat' shapes. I think quads might be different, but they're drawn as two triangles by all implementations I've seen. It simply makes for easy and therefore also fast rasterizing.
User avatar
wrtlprnft
Reverse Outside Corner Grinder
Posts: 1679
Joined: Wed Jan 04, 2006 4:42 am
Location: 0x08048000
Contact:

Re: Things I would like to see for the Map Makers

Post by wrtlprnft »

-ct-kyle wrote:1) PHP coding, I would like to be able to use random variables in my code. Minefield on CT Wield would be a good example of where I would use this. There may be other useful features for this.
Ever been on my race server? I know, it's quite complicated to do it, you need your own repository and an extra management script, but scripting maps is perfectly possible. Here's a tutorial I wrote.
There's no place like ::1
Luke-Jr
Dr Z Level
Posts: 2246
Joined: Sun Mar 20, 2005 4:03 pm
Location: IM: [email protected]

Post by Luke-Jr »

Jonathan wrote:OpenGL can only do 'flat' shapes.
So... 2D objects in a 3D environment?
I don't see how the cycle can be flat...

On low-end systems that could only do the 6-part circle, perhaps a 5-part instead and a 6th horizontal in the circular shape on the floor?
User avatar
Jonathan
A Brave Victim
Posts: 3391
Joined: Thu Feb 03, 2005 12:50 am
Location: Not really lurking anymore

Post by Jonathan »

I mean flat as in not bent. But actually things are pretty much drawn in 2D, with a few calculations on the pixel level to get depth and texture coordinates and such.
User avatar
kyle
Reverse Outside Corner Grinder
Posts: 1876
Joined: Thu Jun 08, 2006 3:33 pm
Location: Indiana, USA, Earth, Milky Way Galaxy, Universe, Multiverse
Contact:

Re: Things I would like to see for the Map Makers

Post by kyle »

wrtlprnft wrote:
-ct-kyle wrote:1) PHP coding, I would like to be able to use random variables in my code. Minefield on CT Wield would be a good example of where I would use this. There may be other useful features for this.
Ever been on my race server? I know, it's quite complicated to do it, you need your own repository and an extra management script, but scripting maps is perfectly possible. Here's a tutorial I wrote.
Yes i have been to your server a few times

and I was just thinking about how to make it again. and i think i have it figured out without the tutorial. At least for the most part.

I don't know what i was thinking when i wrote that.

Thanks for the help
User avatar
Your_mom
Match Winner
Posts: 653
Joined: Sun Jun 06, 2004 1:45 am

Post by Your_mom »

A quick hack for moving walls might be a coordinate based invincible bot, tell the bot to go back and forth in a rectangle shape, then tell it to move right after a certain time and make the same rectangle blocking a tunnel in the map(looping infanitly). Seems like a good idea to me. I like the idea of reusing objects already available in game. Like fortress(sumo...etc), the shot system, mines, and deathzone... which where all pretty much a reimagining of the original win zone. Mabey (an example like) Luci/sickbot-0.0.1.aacombot.xml for programming or mabey even include them in maps. I can just imagine maze maps with moving walls to constantly confuse those playing.
User avatar
Z-Man
God & Project Admin
Posts: 11585
Joined: Sun Jan 23, 2005 6:01 pm
Location: Cologne
Contact:

Post by Z-Man »

Yes, AI players following patterns would be a good thing to add to maps. You should be able to choose whether they are invincible and follow their pattern no matter what, or whether they turn into normal AIs once they have enemy contact.
Luke-Jr
Dr Z Level
Posts: 2246
Joined: Sun Mar 20, 2005 4:03 pm
Location: IM: [email protected]

Post by Luke-Jr »

z-man wrote:Yes, AI players following patterns would be a good thing to add to maps. You should be able to choose whether they are invincible and follow their pattern no matter what, or whether they turn into normal AIs once they have enemy contact.
Perhaps we should also use this to simulate real moving arena walls for versions of the game that don't support it.
Post Reply