Poll

What did you like the most in my botpathing idea (ZDoom)?

The manual process
1 (33.3%)
The repulsion nodes in decoration
1 (33.3%)
The bot nodes added in the middle of the map (other than repulsion ones)
0 (0%)
Simply your goodwill and the way you go for the bots!
0 (0%)
Simply the fact the nodes are added conditionally.
0 (0%)
None (explain why)
1 (33.3%)

Total Members Voted: 1

Author Topic: A ZDoom Bot-Pathing Idea  (Read 1036 times)

Offline Gustavo6046

  • Momentum gets you high. And sometimes a bit too far. Ouch!
  • Commonus
  • *
  • Thank You
  • -Given: 5
  • -Receive: 0
  • Posts: 18
  • Pizza, games! Pizza, games!
    • Firelands, my Portuguese blog
A ZDoom Bot-Pathing Idea
« on: July 19, 2016, 05:06:32 PM »
No, I don't mean Best-Ever's dead service. :P

By the way, who does remember the Quake 3 bot, or the Zeus Bot from Quake 1, or the original Cajun Bot for Doom (the one that acted awesome, until ZDoom autogenerated such nodes in a dumb way)?

These bots were awesome cooperating -- or challenging -- companies to your own ingame character. They were awesome in kicking others' or your a**. Most of them weren't this good though, always failing because of some dumb code, et al.

I do propose however two nice ways of having ZDoom have nodes:
1. Addnode, ExportNodes, ImportNodes and RemoveNode commands. They would have pathnoding manually possible.
[n]2.[/b] Add a node in the center of every sector a bot can crawl into, and also add nodes everywhere a node crosses with another in a grid, as long as it's in some walkable sector or in a sector at all. Also add pickup nodes at inventory items (duh) around. And finally, there must be repulsing nodes placed on any solid decoration placed in the map.

Schematics:
Sorry but you are not allowed to view spoiler contents.
KABOOM!

Chex Quest Fan Forums

A ZDoom Bot-Pathing Idea
« on: July 19, 2016, 05:06:32 PM »

Offline 75

  • [IFOC] Server Admin
  • Multiplayer Team Leader
  • Chex Master
  • *****
  • Thank You
  • -Given: 29
  • -Receive: 26
  • Posts: 4241
    • IFOCSERV
Re: A ZDoom Bot-Pathing Idea
« Reply #1 on: July 19, 2016, 08:41:44 PM »
This video has a pretty good summary of how several games implemented bots, I think Quake 3's and Unreal's bots have some interesting ideas.

<a href="http://www.youtube.com/watch?v=uoYjayrKRDs" target="_blank">http://www.youtube.com/watch?v=uoYjayrKRDs</a>

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

EDIT: The CQFF youtube integration failed mysteriously for this post. I put both the [youtube] tag and the URL in case something weird happens again.
« Last Edit: April 23, 2017, 03:07:20 PM by 75 »
"Give us those nice bright colors, give us the greens of summer, makes you think all the world's a sunny day."

You can find me on the CQFF discord: https://discord.gg/AgNhjem

Offline Gustavo6046

  • Momentum gets you high. And sometimes a bit too far. Ouch!
  • Commonus
  • *
  • Thank You
  • -Given: 5
  • -Receive: 0
  • Posts: 18
  • Pizza, games! Pizza, games!
    • Firelands, my Portuguese blog
Re: A ZDoom Bot-Pathing Idea
« Reply #2 on: April 23, 2017, 11:34:35 AM »
My bad for the necrobump, but I think it wouldn't fit in another topic since this needs context.


In the Perfect Node Algorithm -Quest, I've been looking on how a normal person would play the map. EVERY node plopping must make sure that it plops nodes if and only if there are no nodes closer than 64 to it.

For starts, make a list L that checks for duplicates.

1. For each player start A in the map, for each of the double-sided linedefs in A's sector where the other adjacent sector is walkable (condition Alpha below), do step 2 (using the linedef's normal LenghtOne(linedef.Position - Mean(sector.Vertexes)) and the mean of it's two vertices as position), unless A's sector was already used in step 1.
2. From this normal and position, add nodes every 96 units until it finds a wall or a sector that fits condition Alpha, then plop a node 24 units from that wall.
Condition Alpha is:
  • Having a height of 64 or more; and
  • Having a floor height that is not higher than 24 from the previous node's. (even if the node was placed in a different sector than just the previous one, but then the gaps will be too small because 96 units between nodes)
3.- At the hit sector, and every other sectors traversed by nodes, if the sector is not in L, append it to L and recurse for every double-sided linedef that pertains to the sector, and for each linedef B, if B's other adjacent sector suits Condition Alpha above, repeat the process from Step 2, this time using B's normal LenghtOne(B.Position - Mean(sector.Vertexes)) and the mean of it's two vertices as position.

« Last Edit: April 23, 2017, 11:40:24 AM by Gustavo6046 »
KABOOM!

 


Web Hosting by InMotion Hosting