-
Notifications
You must be signed in to change notification settings - Fork 264
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]: Overlappable chunks of topology #3485
Comments
The more time goes on, the more I believe an implementation based on thin, editable, and configurable walls would be far better than the area-based approach suggested in this FR. Wall VBL might still be useful as a mask, but everything else would be more intuitive if it was wall-based. And these walls would also be easier to hook into for other concepts that have floated around, like doors, windows, elevation, etc. |
You won't get any arguments from me on this point. I wonder if the current libraries we already use, support turning an image into a series of vectors for edges as a stopgap for conversion. However, it's bound to be a non-perfect conversion in some cases. |
I'm probably missing the point you were trying to make, but I expect any conversion to be easy (or maybe I should say "straghtforward"). We already have access to all the edge information that would be required to convert existing topology. I've been hacking away on a POC for this which is showing some promise. But it's also highlighted a number of technical challenges:
I don't think any of this is a deal breaker for walls themselves, but it does show they are lacking on their own. So what I'm thinking to solve (1) - (3) is that we support both polygons and walls:
Should also have a way to merge or group pieces together so they can be easily copied, moved, etc. In the future, we can add fancy stuff to walls, like directionality, etc. We can even make them the preferred tool due to their ease-of-use despite their shortcomings. But for the cases where structure matters more, then polygons would be the thing to reach for. For point (4), this should be solvable with some creative caching. As long the token being dragged doesn't itself have topology... We also might be able to find a more advanced algorithm that deals with intersections, but last time I looked I didn't find anything practical for us. |
To avoid creep, I'll use this issue (#3485) to just track the addition of basic walls as line segments. These will always block vision and movement, and would offer a "good enough" alternative to Wall VBL and MBL despite not being 100% able to replicate the masking behaviour. Existing |
Feature Request
At the moment, map topology is "flat", i.e., any point on a map either has a given type of topology or it doesn't. This is fine for Wall VBL and MBL which strictly block vision and pathfinding respectively, but it limits the effects that can be achieved for Hill VBL and Pit VBL.
The Solution you'd like
Make topology more like drawings in that there can be independent pieces of topology on the map. These would be able to be layered on top of one another without being merged into a single area.
Alternatives that you've considered.
Token topology could be modified to behave in this way. Any given token's topology is already separate from map topology and any other token topologies in the sense that it can be moved and manipulated and technically layered on top of each other. At the moment token topology is always merged with map topology on-the-fly when running the vision and pathfinding algorithms, but it seems natural to consider making them truly layered.
Another alternative is to Introduce a different/new system for line-of-sight and pathfinding. This system could focuses on higher-level concepts of like walls, doors, windows, etc. If such a system were based on drawing line segments rather than covering areas, it wouldn't have to worry about explicitly allowing layering as that could happen naturally.
Additional Context
A use case for layered topology is a multi-level tower, as seen from the exterior. This could be represented by a few circles of Hill VBL layered on top of one another.
Similarly, a layered pit could be achieved by layering some nested circles of Pit VBL on top of one another.
The text was updated successfully, but these errors were encountered: