Upvote Upvoted 0 Downvote Downvoted
1 2
TF bots can airstrafe.
posted in Customization
1
#1
0 Frags +

https://tf2maps.net/threads/getting-tf-bots-to-airstrafe.46057/

https://tf2maps.net/threads/getting-tf-bots-to-airstrafe.46057/
2
#2
85 Frags +

https://upload.wikimedia.org/wikipedia/commons/thumb/0/09/Ajedrez_animaci%C3%B3n_en_passant.gif/220px-Ajedrez_animaci%C3%B3n_en_passant.gif

they added airstrafing to chess!!!

[img]https://upload.wikimedia.org/wikipedia/commons/thumb/0/09/Ajedrez_animaci%C3%B3n_en_passant.gif/220px-Ajedrez_animaci%C3%B3n_en_passant.gif[/img]
they added airstrafing to chess!!!
3
#3
20 Frags +

aimisadick why did you delete your reddit account

aimisadick why did you delete your reddit account
4
#4
4 Frags +

I think that this is pretty cool.

I think that this is pretty cool.
5
#5
13 Frags +

https://youtube.com/watch?v=SRyZNjOEH4A

9 years ago

[youtube]https://youtube.com/watch?v=SRyZNjOEH4A[/youtube]
9 years ago
6
#6
9 Frags +
AimIsADickhttps://tf2maps.net/threads/getting-tf-bots-to-airstrafe.46057/

brother are you a scientist for brain or something how you this smart i dont get it

[quote=AimIsADick]https://tf2maps.net/threads/getting-tf-bots-to-airstrafe.46057/[/quote]
brother are you a scientist for brain or something how you this smart i dont get it
7
#7
53 Frags +

hey brother dont let these euros get you down theyre just mad because bots can now do what they cant

hey brother dont let these euros get you down theyre just mad because bots can now do what they cant
8
#8
2 Frags +

is there an example .bsp and .nav where this works?

also is it actual airstrafing or just they hold a / d when in the air?

is there an example .bsp and .nav where this works?

also is it actual airstrafing or just they hold a / d when in the air?
9
#9
3 Frags +
tommyI think that this is pretty cool.

Thanks!

MILKy_AimIsADickhttps://tf2maps.net/threads/getting-tf-bots-to-airstrafe.46057/brother are you a scientist for brain or something how you this smart i dont get it

I just had a thought that bots only checked for a nav area, and not being grounded. I was right.

batemanhey brother dont let these euros get you down theyre just mad because bots can now do what they cant

Thank you. :)

nowahis there an example .bsp and .nav where this works?

Yes. I have a nav mesh where I implemented the airstrafes: pl_vigil_rc7.nav (for pl_vigil). At BLU spawn, there is a patio, in the back, near the ceiling. I have added a nav mesh route to get to the patio.

(Unfortunately, bot_moveto does not work, so you will have to create an enemy flag (through `ent_create item_teamflag`) to get the bot to move.)

I don't have a .bsp setup ; I probably should one up. (Laziness is getting to me.)

nowahalso is it actual airstrafing or just they hold a / d when in the air?

Airstrafing is holding a / d and looking at a direction, so yes technically. However, I can modify the groundless nav areas to change the way bots attempt to airstrafe. (So I could get bots to crouch while airstrafing, Add multiple routes for airstrafing, etc.)

[quote=tommy]I think that this is pretty cool.[/quote]
Thanks!

[quote=MILKy_][quote=AimIsADick]https://tf2maps.net/threads/getting-tf-bots-to-airstrafe.46057/[/quote]
brother are you a scientist for brain or something how you this smart i dont get it[/quote]

I just had a thought that bots [i]only[/i] checked for a nav area, and not being grounded. I was right.
[quote=bateman]hey brother dont let these euros get you down theyre just mad because bots can now do what they cant[/quote]
Thank you. :)

[quote=nowah]is there an example .bsp and .nav where this works?[/quote]
Yes. I have a nav mesh where I implemented the airstrafes: [url=https://github.com/WhyIsEvery4thYearAlwaysBad/SourceNavMeshOverhauls/raw/master/src/tf2/community/pl_vigil/pl_vigil_rc7.nav]pl_vigil_rc7.nav[/url] (for pl_vigil). At BLU spawn, there is a patio, in the back, near the ceiling. I have added a nav mesh route to get to the patio.

(Unfortunately, bot_moveto does not work, so you will have to create an enemy flag (through `ent_create item_teamflag`) to get the bot to move.)

I don't have a .bsp setup ; I probably should one up. (Laziness is getting to me.)

[quote=nowah]also is it actual airstrafing or just they hold a / d when in the air?[/quote]

Airstrafing [i]is[/i] holding a / d and looking at a direction, so yes technically. However, [b]I can modify the groundless nav areas[/b] to change the way bots attempt to airstrafe. (So I could get bots to crouch while airstrafing, Add multiple routes for airstrafing, etc.)
10
#10
9 Frags +
AimIsADickSo I could get bots to crouch while airstrafing, Add multiple routes for airstrafing, etc.

We're one step closer to a training map where you can practice airshots vs bots that strafe like real players. Cool post!

[quote=AimIsADick]So I could get bots to crouch while airstrafing, Add multiple routes for airstrafing, etc.[/quote]
We're one step closer to a training map where you can practice airshots vs bots that strafe like real players. Cool post!
11
#11
0 Frags +

I finally posted a video demonstrating the bots airstrafing. Should have done this better though.

I'll add a link to my dem file. Done! I added a dem file for the example, though you will need the pl_vigil map and my custom nav mesh. (For later versions of pl_vigll, you can just rename the nav mesh to "pl_vigil_<latest version>.nav". The patio route will still align correctly with the map.)

[url=https://tf2maps.net/threads/getting-tf-bots-to-airstrafe.46057/post-490487]I finally posted a video demonstrating the bots airstrafing. Should have done this better though.[/url]

[s]I'll add a link to my dem file.[/s] Done! I added a dem file for the example, though you will need the pl_vigil map and [url=https://github.com/WhyIsEvery4thYearAlwaysBad/SourceNavMeshOverhauls/raw/master/src/tf2/community/pl_vigil/pl_vigil_rc7.nav]my custom nav mesh[/url]. (For later versions of pl_vigll, you can just rename the nav mesh to "pl_vigil_<latest version>.nav". The patio route will still align correctly with the map.)
12
#12
0 Frags +
JwWe're one step closer to a training map where you can practice airshots vs bots that strafe like real players. Cool post!

Yes!

[quote=Jw]
We're one step closer to a training map where you can practice airshots vs bots that strafe like real players. Cool post![/quote]
Yes!
13
#13
refresh.tf
-2 Frags +
JwWe're one step closer to a training map where you can practice airshots vs bots that strafe like real players. Cool post!

i thought you could do that on the mge maps already

[quote=Jw]We're one step closer to a training map where you can practice airshots vs bots that strafe like real players. Cool post![/quote]
i thought you could do that on the mge maps already
14
#14
-8 Frags +
JwAimIsADickSo I could get bots to crouch while airstrafing, Add multiple routes for airstrafing, etc.We're one step closer to a training map where you can practice airshots vs bots that strafe like real players. Cool post!

Just enable bot_mimic 1

Obviously you have to be in the air also though.

[quote=Jw][quote=AimIsADick]So I could get bots to crouch while airstrafing, Add multiple routes for airstrafing, etc.[/quote]
We're one step closer to a training map where you can practice airshots vs bots that strafe like real players. Cool post![/quote]

Just enable bot_mimic 1

Obviously you have to be in the air also though.
15
#15
-8 Frags +
CollaideJwWe're one step closer to a training map where you can practice airshots vs bots that strafe like real players. Cool post!i thought you could do that on the mge maps already

Most MGE maps do not have consistently airstrafing bots though; the bots are static.

[quote=Collaide][quote=Jw]We're one step closer to a training map where you can practice airshots vs bots that strafe like real players. Cool post![/quote]
i thought you could do that on the mge maps already[/quote]
Most MGE maps do not have [i]consistently[/i] airstrafing bots though; the bots are static.
16
#16
19 Frags +

pro tip mr AimIsADick bot is used as an Insult towards Bad or Stupid players (and mge servers dont have bots lol)
pro tip #2 if you want people to be interested in what you are doing maybe don't cite your own laziness (which sounds like an excuse for not actually knowing how to do it, which it is fine to admit lol) and put in the effort to upload a youtube video cuz nobody is going to download a fkn mkv file to watch your proof of concept video

if u want to make a post (on mapping forum or tftv) that people will respect u should instead reach out to a mapper or someone who can help you turn it into an actually useful idea (e.g., tr rocket shooting with bots that strafe, or even a simple map demonstrating the proof of concept, not just a nav mesh that ppl have to download and figure out themselves lol)
the thread on tf2maps u posted these incredibly poorly designed and unnecessary images which demonstrate a concept that a two year old could understand lol, makes it really hard to take you seriously (all u had to say was 'yep it turns out u can have nav meshes in the air and they will obey them! here's a youtube video')

it is an interesting idea and its cool that you're curious about these things and messing around with stuff but i feel like whenever you post it's always half-baked and super naive, if you want people to not shit on you whenever you post you should probably wait until you have a more fully fledged project (or acknowledge that it's only the start and ask questions, rather than declaring things as if you're some all knowing god... the problem is your posts often seem overly confident and authoritative as if you know what you're talking about when most of the time you do not, hence why people call you out)

pro tip mr AimIsADick bot is used as an Insult towards Bad or Stupid players (and mge servers dont have bots lol)
pro tip #2 if you want people to be interested in what you are doing maybe don't cite your own laziness (which sounds like an excuse for not actually knowing how to do it, which it is fine to admit lol) and put in the effort to upload a youtube video cuz nobody is going to download a fkn mkv file to watch your proof of concept video

if u want to make a post (on mapping forum or tftv) that people will respect u should instead reach out to a mapper or someone who can help you turn it into an actually useful idea (e.g., tr rocket shooting with bots that strafe, or even a simple map demonstrating the proof of concept, not just a nav mesh that ppl have to download and figure out themselves lol)
the thread on tf2maps u posted these incredibly poorly designed and unnecessary images which demonstrate a concept that a two year old could understand lol, makes it really hard to take you seriously (all u had to say was 'yep it turns out u can have nav meshes in the air and they will obey them! here's a youtube video')

it is an interesting idea and its cool that you're curious about these things and messing around with stuff but i feel like whenever you post it's always half-baked and super naive, if you want people to not shit on you whenever you post you should probably wait until you have a more fully fledged project (or acknowledge that it's only the start and ask questions, rather than declaring things as if you're some all knowing god... the problem is your posts often seem overly confident and authoritative as if you know what you're talking about when most of the time you do not, hence why people call you out)
17
#17
10 Frags +

he's probably going to respond back to your post another 4 months later

he's probably going to respond back to your post another 4 months later
18
#18
4 Frags +

does he play tf2?

does he play tf2?
19
#19
-10 Frags +
bearodactylpro tip mr AimIsADick bot is used as an Insult towards Bad or Stupid players (and mge servers dont have bots lol)

Oh.

bearodactylpro tip #2 if you want people to be interested in what you are doing maybe don't cite your own laziness (which sounds like an excuse for not actually knowing how to do it, which it is fine to admit lol) and put in the effort to upload a youtube video cuz nobody is going to download a fkn mkv file to watch your proof of concept video

I can't just "put in the effort"; I struggle to complete a task. I have ADHD and I struggle with executive dysfunction; so I struggle with getting enjoyment.

Also, YouTube is a surveillance shithole. I am trying to practice my privacy; because it is easy to identify a person's sensitive information. I avoid YouTube because Google requires a phone-number (which can easily identify someone); I will not freely give my phone number again.

bearodactylif u want to make a post (on mapping forum or tftv) that people will respect u should instead reach out to a mapper or someone who can help you turn it into an actually useful idea (e.g., tr rocket shooting with bots that strafe, or even a simple map demonstrating the proof of concept, not just a nav mesh that ppl have to download and figure out themselves lol)

I don't like working with other people.

bearodactylthe thread on tf2maps u posted these incredibly poorly designed and unnecessary images

How so?

bearodactylwhich demonstrate a concept that a two year old could understand lol

ok. Any person could understand the concept, regardless of age.

bearodactyl, makes it really hard to take you seriously (all u had to say was 'yep it turns out u can have nav meshes in the air and they will obey them! here's a youtube video')

Some people need an alternative explanation or graph to understand a concept. How would I design a YouTube video? Is it really difficult for people to just download a file and play it locally?

bearodactyli feel like whenever you post it's always half-baked and super naive,

Same.

bearodactylif you want people to not shit on you whenever you post you should probably wait until you have a more fully fledged project

If I did that, then I would not have finished the project ever.

bearodactyl(or acknowledge that it's only the start and ask questions

I do.

bearodactylrather than declaring things as if you're some all knowing god...

I dont.

bearodactylthe problem is your posts often seem overly confident and authoritative

How so?

bearodactylas if you know what you're talking about when most of the time you do not, hence why people call you out)

I think I understand the topic I am writing about well enough to write well about it, so I know what I'm talking about.

[quote=bearodactyl]pro tip mr AimIsADick bot is used as an Insult towards Bad or Stupid players (and mge servers dont have bots lol)[/quote]

Oh.

[quote=bearodactyl]pro tip #2 if you want people to be interested in what you are doing maybe don't cite your own laziness (which sounds like an excuse for not actually knowing how to do it, which it is fine to admit lol) and put in the effort to upload a youtube video cuz nobody is going to download a fkn mkv file to watch your proof of concept video[/quote]

I can't just "put in the effort"; I struggle to complete a task. I have ADHD and I struggle with [url=https://wikipedia.org/wiki/Executive_dysfunction]executive dysfunction[/url]; so I struggle with getting enjoyment.

Also, YouTube is a surveillance shithole. I am trying to practice my privacy; because it is easy to identify a person's sensitive information. I avoid YouTube because Google requires a phone-number (which can easily identify someone); I will [i]not[/i] freely give my phone number again.

[quote=bearodactyl]if u want to make a post (on mapping forum or tftv) that people will respect u should instead reach out to a mapper or someone who can help you turn it into an actually useful idea (e.g., tr rocket shooting with bots that strafe, or even a simple map demonstrating the proof of concept, not just a nav mesh that ppl have to download and figure out themselves lol)[/quote]

I don't like working with other people.

[quote=bearodactyl]the thread on tf2maps u posted these incredibly poorly designed and unnecessary images[/quote]
How so?

[quote=bearodactyl]which demonstrate a concept that a two year old could understand lol[/quote]
ok. Any person could understand the concept, regardless of age.

[quote=bearodactyl], makes it really hard to take you seriously (all u had to say was 'yep it turns out u can have nav meshes in the air and they will obey them! here's a youtube video')[/quote]

Some people need an alternative explanation or graph to understand a concept. How would I design a YouTube video? Is it [i]really[/i] difficult for people to just [b]download a [i]file[/i] and play it locally?[/b]

[quote=bearodactyl]i feel like whenever you post it's always half-baked and super naive,[/quote]
Same.

[quote=bearodactyl]if you want people to not shit on you whenever you post you should probably wait until you have a more fully fledged project[/quote]

If I did that, then I would not have finished the project [i]ever[/i].

[quote=bearodactyl](or acknowledge that it's only the start and ask questions[/quote]
I do.

[quote=bearodactyl]rather than declaring things as if you're some all knowing god...[/quote]
I dont.

[quote=bearodactyl]the problem is your posts often seem overly confident and authoritative[/quote]
How so?

[quote=bearodactyl]as if you know what you're talking about when most of the time you do not, hence why people call you out)[/quote]

I think I understand the topic I am writing about well enough to write well about it, so I know what I'm talking about.
20
#20
6 Frags +

Holy mackerel man

Holy mackerel man
21
#21
15 Frags +

aimisadick im gonna be real bro i clicked your link and saw i had to download a demo and decided i didnt wanna do that just to see a bot airstrafe once

also youtube doesnt require a phone number

good job though, getting bots to airstrafe. nobody's done it yet so you are breaking new ground

aimisadick im gonna be real bro i clicked your link and saw i had to download a demo and decided i didnt wanna do that just to see a bot airstrafe once

also youtube doesnt require a phone number

good job though, getting bots to airstrafe. nobody's done it yet so you are breaking new ground
22
#22
-7 Frags +
GrapeJuiceIIIaimisadick im gonna be real bro i clicked your link and saw i had to download a demo and decided i didnt wanna do that just to see a bot airstrafe once

Ok.

GrapeJuiceIIIalso youtube doesnt require a phone number

YouTube does not require a phone number; but Google requires a phone number for me when I try to sign up.

GrapeJuiceIIIgood job though, getting bots to airstrafe. nobody's done it yet so you are breaking new ground

Thank you! :)

[quote=GrapeJuiceIII]aimisadick im gonna be real bro i clicked your link and saw i had to download a demo and decided i didnt wanna do that just to see a bot airstrafe once[/quote]
Ok.

[quote=GrapeJuiceIII]also youtube doesnt require a phone number[/quote]
[i]YouTube[/i] does not require a phone number; but Google requires a phone number for me when I try to sign up.

[quote=GrapeJuiceIII]good job though, getting bots to airstrafe. nobody's done it yet so you are breaking new ground[/quote]
Thank you! :)
23
#23
4 Frags +

local man Schizo Pilled (psa, google can already uniquely identify u even without an account based off ip address and metadata like browser, resolution, ip, etc lol)

there are plenty of video hosting sites like streamable that only need an email address (iirc) which you can easily make fake ones
i would suggest using google voice for a new fake phone number but that would require u to overcome ur fear of Guggle

and sorry about the adhd/executive functioning but everyone has their own shit to deal with, doesnt make it an excuse for spreading misinformation (like on the spy thread or config threads) or wasting people's time lol
also i love the logic 'i think i know what im talking about, therefore, i know what im talking about' (maybe this is what Descartes was on about)

AimIsADickI think I understand the topic I am writing about well enough to write well about it, so I know what I'm talking about.

key word "i think" (if everyone else thinks u do not understand the topic well enough and constantly calls you out for talking out of ur ass, odds are ur the one who's crazy not everyone else)
https://en.wikipedia.org/wiki/Dunning–Kruger_effect

edit: also stop using italics and bold in ur posts it makes u look like a dickhead (guys im so certain about this im going to emphasize it! except turns out im wrong)

local man Schizo Pilled (psa, google can already uniquely identify u even without an account based off ip address and metadata like browser, resolution, ip, etc lol)

there are plenty of video hosting sites like streamable that only need an email address (iirc) which you can easily make fake ones
i would suggest using google voice for a new fake phone number but that would require u to overcome ur fear of Guggle

and sorry about the adhd/executive functioning but everyone has their own shit to deal with, doesnt make it an excuse for spreading misinformation (like on the spy thread or config threads) or wasting people's time lol
also i love the logic 'i think i know what im talking about, therefore, i know what im talking about' (maybe this is what Descartes was on about)
[quote=AimIsADick]I think I understand the topic I am writing about well enough to write well about it, so I know what I'm talking about.
[/quote]
key word "i think" (if everyone else thinks u do not understand the topic well enough and constantly calls you out for talking out of ur ass, odds are ur the one who's crazy not everyone else)
https://en.wikipedia.org/wiki/Dunning–Kruger_effect

edit: also stop using italics and bold in ur posts it makes u look like a dickhead (guys im so certain about this im going to [i][b]emphasize[/b][/i] it! except turns out im wrong)
24
#24
3 Frags +

I respect the commitment to staying off youtube. I want to do the same, but come up with cope just like bear (no offense).
I uploaded the two videos here (with permission): https://www.youtube.com/watch?v=xxqJuzixqbc

I respect the commitment to staying off youtube. I want to do the same, but come up with cope just like bear (no offense).
I uploaded the two videos here (with permission): https://www.youtube.com/watch?v=xxqJuzixqbc
25
#25
7 Frags +
AimIsADickI think I understand the topic I am writing about well enough to write well about it, so I know what I'm talking about.

don't you think that convincing an entire forum that you're a troll because you vehemently maintain you're right even after people who are a trillion times more qualified to talk about the shit you brought up told you you're not over and over is enough of a proof that maybe you don't actually know much at all

[quote=AimIsADick]I think I understand the topic I am writing about well enough to write well about it, so I know what I'm talking about.[/quote]

don't you think that convincing an entire forum that you're a troll because you vehemently maintain you're right even after people who are a trillion times more qualified to talk about the shit you brought up told you you're not over and over is enough of a proof that maybe you don't actually know much at all
26
#26
3 Frags +
tommyI respect the commitment to staying off youtube. I want to do the same, but come up with cope just like bear (no offense).
I uploaded the two videos here (with permission): https://www.youtube.com/watch?v=xxqJuzixqbc

this is actually kinda cool thanks for posting it onto youtube

[quote=tommy]I respect the commitment to staying off youtube. I want to do the same, but come up with cope just like bear (no offense).
I uploaded the two videos here (with permission): https://www.youtube.com/watch?v=xxqJuzixqbc[/quote]

this is actually kinda cool thanks for posting it onto youtube
27
#27
9 Frags +

While we're on nav meshes and airstrafes, this touches on some quite interesting problems in video games and also robotics more broadly.

If you create a map, there are clearly some areas that are not traversible. A human player can find them easily by visual inspection, or by colliding. And we have millions of years of intuition about navigating through 3d space. But how could a robot know which areas those are?

TF2 solves this problem by computing a nav mesh, which is basically a big list of polygons that are "cells," in a datastructure called a graph. Each graph node (a polygon) has some edges that connect it to other nodes (neighboring polygons). Then, if you wanted to navigate from one point to another, you can traverse the graph using an algorithm like A*, which will create an optimal (least distance) path from one point in the graph to another -- and hence, one polygon location in space to another.

If you have ever typed nav_generate on a tf2 map to make a navmesh, you will notice that this task takes your computer several seconds. That's because it has to split the map into a bunch of tiny, probably triangular polygons, with nodes and edges representing how they are joined. Then, when the bots navigate, they can just call an A* algorithm according to their combat logic to move around.

So that is probably how the bots in TF2 move around: precompute a nav-mesh, then do A* (or a variant of A*, there are many). Although I haven't seen the secret sauce.

But there's a special property about robots called holonomicity. Basically, holonomicity says that the movement of the bot through the space does not depend on it's current position. An example of holonomic movement (at least on the 2-D plane) is the bots; you can press WAS or D, and you can stop on a dime and turn completely around regardless of where you are moving. This property makes path planning much more simple, because you don't need to worry about your current velocity vector (or higher order derivatives) when computing your future path. Non-holonomic path planning is much much harder, though: think of an airplane traveling through the air. That is a non-holonomic vehicle. If you want to move from your current position to the position that is just 1 meter to your right in an airplane, you might need to make a series of complicated turns and maneuvers -- you can't just like press a button and move sideways!

If your position at t=1 depends on your velocity and position at t=0, then some areas become inaccessible depending on your velocity at t=0. And, not only that, but the path you take from t=0 to t=1 actually affects your velocity, then if you want to say "I can get from point x0, y0 to point x1, y1" you need to compute many many velocity/position pairs. In fact, you need to compute so many velocity/position pairs that the problem is NP hard at least -- probably worse than NP hard. That isn't even to speak of collision calculation!

So, airstrafing. Airstrafing introduces non-holonomicity. Why? Because during a strafe, you are set to move through the air according to how you jumped or got bounced. Like the airplane, you can't just press "S" and move left of where you are; you have to alter your heading, and then actuate with a movement key, which changes your velocity vector a little bit, and then you're at a new position, thusly influenced.

And even still, there are some areas that are inaccessible to you in an airstrafe. You can't move in like an L pattern for example, like with a sharp bend, there has to be some minimum curvature. Probably, the equations of motion of an airstrafe have some derivative (velocity is the derivative of position, acceleration the derivative of velocity, etc) terms. Which means that an L shape path would violate your equations of motion, as it is not differentiable! You can move through an L-shaped path on the ground: press W for a bit, then S. Not so in the air!

I suspect this is why airstrafing is so interesting and fun as a game mechanic: your motion during an airstrafe is just so much more complex, and it's so much more difficult to find paths, because of all of the aforementioned factors.

While we're on nav meshes and airstrafes, this touches on some quite interesting problems in video games and also robotics more broadly.

If you create a map, there are clearly some areas that are not traversible. A human player can find them easily by visual inspection, or by colliding. And we have millions of years of intuition about navigating through 3d space. But how could a robot know which areas those are?

TF2 solves this problem by computing a nav mesh, which is basically a big list of polygons that are "cells," in a datastructure called a graph. Each graph node (a polygon) has some edges that connect it to other nodes (neighboring polygons). Then, if you wanted to navigate from one point to another, you can traverse the graph using an algorithm like A*, which will create an optimal (least distance) path from one point in the graph to another -- and hence, one polygon location in space to another.

If you have ever typed nav_generate on a tf2 map to make a navmesh, you will notice that this task takes your computer several seconds. That's because it has to split the map into a bunch of tiny, probably triangular polygons, with nodes and edges representing how they are joined. Then, when the bots navigate, they can just call an A* algorithm according to their combat logic to move around.

So that is probably how the bots in TF2 move around: precompute a nav-mesh, then do A* (or a variant of A*, there are many). Although I haven't seen the secret sauce.

But there's a special property about robots called holonomicity. Basically, holonomicity says that the movement of the bot through the space does not depend on it's current position. An example of holonomic movement (at least on the 2-D plane) is the bots; you can press WAS or D, and you can stop on a dime and turn completely around regardless of where you are moving. This property makes path planning much more simple, because you don't need to worry about your current velocity vector (or higher order derivatives) when computing your future path. Non-holonomic path planning is much much harder, though: think of an airplane traveling through the air. That is a non-holonomic vehicle. If you want to move from your current position to the position that is just 1 meter to your right in an airplane, you might need to make a series of complicated turns and maneuvers -- you can't just like press a button and move sideways!

If your position at t=1 depends on your velocity and position at t=0, then some areas become inaccessible depending on your velocity at t=0. And, not only that, but the path you take from t=0 to t=1 actually affects your velocity, then if you want to say "I can get from point x0, y0 to point x1, y1" you need to compute many many velocity/position pairs. In fact, you need to compute so many velocity/position pairs that the problem is NP hard at least -- probably worse than NP hard. That isn't even to speak of collision calculation!

So, airstrafing. Airstrafing introduces non-holonomicity. Why? Because during a strafe, you are set to move through the air according to how you jumped or got bounced. Like the airplane, you can't just press "S" and move left of where you are; you have to alter your heading, and then actuate with a movement key, which changes your velocity vector a little bit, and then you're at a new position, thusly influenced.

And even still, there are some areas that are inaccessible to you in an airstrafe. You can't move in like an L pattern for example, like with a sharp bend, there has to be some minimum curvature. Probably, the equations of motion of an airstrafe have some derivative (velocity is the derivative of position, acceleration the derivative of velocity, etc) terms. Which means that an L shape path would violate your equations of motion, as it is not differentiable! You can move through an L-shaped path on the ground: press W for a bit, then S. Not so in the air!

I suspect this is why airstrafing is so interesting and fun as a game mechanic: your motion during an airstrafe is just so much more complex, and it's so much more difficult to find paths, because of all of the aforementioned factors.
28
#28
-1 Frags +
miwo

Your note about derivatives is why bunnyhopping is still technically possible in TF2. Because airstrafing is "non-holonomic," the increased total distance that comes guaranteed when you airstrafe translates into increasing or decreasing velocity and acceleration.

https://www.youtube.com/watch?v=VoarskhqnrA

This might also explain why w-strafing is "worse" than A/D strafing: An A/D strafe keeps acceleration perpendicular to a player's current velocity because acceleration in Source is based on the keys you're pressing. So by strafing with A or D while moving in some velocity through the air, total distance is increased because you're turning through the air at a different angle than where you're currently headed. And because velocity and acceleration also presumably depend on distance in TF2, increasing your distance pathway through the air increases your velocity and acceleration while in the air as a result.

A W airstrafe, on the other hand, keeps velocity and acceleration together for the player. This results in smaller-angle movement through the air (you can't rotate your velocity as quickly with a w-strafe than with an A/D strafe), and a kind of "pulling feeling" back in the direction of your original rocket jump. These smaller angles result in less gained position in the air, which in turn causes less gained velocity and acceleration.

A/D strafe, where the black arrow is velocity and the red arrow is your strafe key: https://steamuserimages-a.akamaihd.net/ugc/1100293836530956311/3F5B008BE5788665344963CE8A73B904DE20092A/

W strafe: https://steamuserimages-a.akamaihd.net/ugc/1100293836530780512/FA053FBC5D325CA33EC65B1D3C3C8026545DD1CF/

Some more info about airstrafing is here: https://steamcommunity.com/sharedfiles/filedetails/?id=184184420

[quote=miwo][/quote] Your note about derivatives is why bunnyhopping is still technically possible in TF2. Because airstrafing is "non-holonomic," the increased total distance that comes guaranteed when you airstrafe translates into increasing or decreasing velocity and acceleration.

https://www.youtube.com/watch?v=VoarskhqnrA

This might also explain why w-strafing is "worse" than A/D strafing: An A/D strafe keeps acceleration perpendicular to a player's current velocity because acceleration in Source is based on the keys you're pressing. So by strafing with A or D while moving in some velocity through the air, total distance is increased because you're turning through the air at a different angle than where you're currently headed. And because velocity and acceleration also presumably depend on distance in TF2, increasing your distance pathway through the air increases your velocity and acceleration while in the air as a result.

A W airstrafe, on the other hand, keeps velocity and acceleration together for the player. This results in smaller-angle movement through the air (you can't rotate your velocity as quickly with a w-strafe than with an A/D strafe), and a kind of "pulling feeling" back in the direction of your original rocket jump. These smaller angles result in less gained position in the air, which in turn causes less gained velocity and acceleration.

A/D strafe, where the black arrow is velocity and the red arrow is your strafe key: https://steamuserimages-a.akamaihd.net/ugc/1100293836530956311/3F5B008BE5788665344963CE8A73B904DE20092A/

W strafe: https://steamuserimages-a.akamaihd.net/ugc/1100293836530780512/FA053FBC5D325CA33EC65B1D3C3C8026545DD1CF/

Some more info about airstrafing is here: https://steamcommunity.com/sharedfiles/filedetails/?id=184184420
29
#29
7 Frags +

on the topic of bot airstrafing & miwos post there was a super cool project someone in the jump community was working on with using genetic algorithms to do jump/surf maps

demonstration of it 'learning' (they aren't really considered to be 'true' machine learning but its close enough) - https://www.youtube.com/watch?v=YiAl9LVUc0U
stages 1-4 on jump beginner surf map - https://www.youtube.com/watch?v=RzLEOIzrDYI
segmented jump map - https://www.youtube.com/watch?v=qT_yc9nsJBk

was actually going to mess around with trying to get it to work using deep reinforcement learning last year but got too busy, might pick it up as a side project tho cuz its a rly cool problem

found another video of some guy using GAs for quake airstrafing - https://www.youtube.com/watch?v=xBodLDT_yrg

on the topic of bot airstrafing & miwos post there was a super cool project someone in the jump community was working on with using genetic algorithms to do jump/surf maps

demonstration of it 'learning' (they aren't really considered to be 'true' machine learning but its close enough) - https://www.youtube.com/watch?v=YiAl9LVUc0U
stages 1-4 on jump beginner surf map - https://www.youtube.com/watch?v=RzLEOIzrDYI
segmented jump map - https://www.youtube.com/watch?v=qT_yc9nsJBk

was actually going to mess around with trying to get it to work using deep reinforcement learning last year but got too busy, might pick it up as a side project tho cuz its a rly cool problem

found another video of some guy using GAs for quake airstrafing - https://www.youtube.com/watch?v=xBodLDT_yrg
30
#30
1 Frags +

I've dreamed of an RL algorithm discovering c-tapping, if it could discover rocket jumping, c-tapping would be right after. Would be so cool if we discovered a new tech (unlikely but a man can dream)

I've dreamed of an RL algorithm discovering c-tapping, if it could discover rocket jumping, c-tapping would be right after. Would be so cool if we discovered a new tech (unlikely but a man can dream)
1 2
Please sign in through STEAM to post a comment.