Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Navigation Agent #28116

Closed
MunWolf opened this issue Apr 17, 2019 · 16 comments
Closed

Feature: Navigation Agent #28116

MunWolf opened this issue Apr 17, 2019 · 16 comments

Comments

@MunWolf
Copy link
Contributor

MunWolf commented Apr 17, 2019

Proposal for a native solution to a NavigationAgent system that hooks into the existing Navigation classes (but still be seperated so people can easily run their own system if they want).

This would be implemented as a parent node that uses a NavigationAgentDispatcher (better name TBD) that collects all instances of the NavigationAgent node in its children. These NavigationAgents would then be able to query the dispatcher for information so they can resolve their Behaviour resources, example implementations of the Behaviour base class would be Seperation, Cohesion and FollowPath.

These behaviours could either work on the whole set of agents or define groups / tags to only act based on those (FollowPath would not define this as it doesnt act based on other agents).

An extra functionality would be to connect the Navigation to the NavigationAgentDispatcher to support a kind of KeepInsideNavMesh behaviour (better name TBD).

All behaviours will have weights and agents can have multiple behaviours, on every physics update of the agent it takes these behaviours, resolves them, multiplies by the weight and adds them together and sends the resulting force vector to a signal.

I plan on working on an implementation, but any suggestions are welcome.

@groud
Copy link
Member

groud commented Apr 17, 2019

Please, describe a little bit more what you want... Opening an issue with only a title and no explanation is not acceptable.

@MunWolf
Copy link
Contributor Author

MunWolf commented Apr 17, 2019

Sorry, it accidentally posted it, I am editing it atm.

@groud
Copy link
Member

groud commented Apr 17, 2019

Sorry, it accidentally posted it, I am editing it atm.

Ok, no problem then :)

@MunWolf
Copy link
Contributor Author

MunWolf commented Apr 17, 2019

@groud Can I somehow assign this to myself or would I need to wait until I have contributed enough to get permissions for it?

@volzhs
Copy link
Contributor

volzhs commented Apr 17, 2019

you don't need to wait. go ahead~ 👍

@MunWolf
Copy link
Contributor Author

MunWolf commented Apr 17, 2019

I don't see a way for me to self-assign anywhere 🤔

@volzhs
Copy link
Contributor

volzhs commented Apr 17, 2019

I would if you want it. 😄

@groud
Copy link
Member

groud commented Apr 17, 2019

@groud Can I somehow assign this to myself or would I need to wait until I have contributed enough to get permissions for it?

Sadly, we cannot assign issues to people that are not member of the godotengine Github organization. And because its member have a little bit too much power (merging stuff and all), we cannot move all contributors there. So yeah, to it's more or less that due to Github limitations.

But don't worry, if you signify in the comment that you are working on an issue it's unlikely someone else is going to work on it.

Lol nevermind, @volzhs proved me the opposite. XD

@groud
Copy link
Member

groud commented Apr 17, 2019

But be careful, the implementation you propose might not be accepted. It might be better to have more opinion before working on something (I don't know a lot about navigation). You may want to ask on the developers IRC first, just in case.

@slapin
Copy link
Contributor

slapin commented Apr 17, 2019

Look at my PR (navigation_pr) btw.

@MunWolf
Copy link
Contributor Author

MunWolf commented Apr 17, 2019

@slapin I would love to share some ideas / insights on this eventually, Ill work on it anyway as I want an implementation for my own game and Ill for sure try to get a hold of one of the developers and ask around.

@mhilbrunner
Copy link
Member

mhilbrunner commented Apr 17, 2019

@MunWolf Improvements for the navigation system were announced in the Godot GDC talk (for 4.0 or later I think, so some time off) so work on this is probably very welcome :)

If you want to, I suggest heading to #godotengine-devel on Freenode IRC and try to get a hold of reduz to discuss this initially before implementing. May take some time though, so bring time and patience :)

Or implement it and post a PR as a request for comment. Its always easier to discuss concrete ideas like that, but comes at the risk of being rejected.

(Edit: https://youtu.be/C0szslgA8VY?t=1109 - navigation rewrite part in the GDC talk, around 18:30)

@slapin
Copy link
Contributor

slapin commented Apr 17, 2019 via email

@mhilbrunner
Copy link
Member

@slapin Who said that it was not wanted? Reading through your PR the feedback seems positive in general, although only Groud commented out of the core devs.

Please don't mistake the time it takes for a response as us not caring; its more that we have a backlog of over 400 open pull requests. :)

Thanks for taking the time to share your code! And hopefully you'll have some more patience with us.

@slapin
Copy link
Contributor

slapin commented Apr 18, 2019 via email

@KoBeWi
Copy link
Member

KoBeWi commented Feb 19, 2020

Implemented in #34776

@KoBeWi KoBeWi closed this as completed Feb 19, 2020
@akien-mga akien-mga added this to the 4.0 milestone Feb 19, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants