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

Add hand-modeled intersections #209

Open
1 of 10 tasks
TheDuckCow opened this issue Jan 19, 2025 · 1 comment
Open
1 of 10 tasks

Add hand-modeled intersections #209

TheDuckCow opened this issue Jan 19, 2025 · 1 comment
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@TheDuckCow
Copy link
Owner

TheDuckCow commented Jan 19, 2025

With the recent launch of the next Wheel Steal Game playtest (available here), our team is fully moving to Godot 4. This means I want to put a pin in the godot 3 development, and think more about the future structure of the plugin without having to support two such different versions of godot.

The close this out, I do however want to sneak in some basic intersections. The goal here is not programming related, but rather to simply include a couple of hand-authored assets that would ship with the plugin itself which work as interesections thanks to. the generalized nature of RoadContainers. I will also use this as an opportunity to expand on the existing guide over here for creating custom geometry.

Here's what I hope to include

  • Create hand authored glb geometry for each of the following, with placeholder exports so that it forces users to drop in their own material geometry
    • 4-way 1x1 intersection
    • 4-way 2x2 intersection
    • 3-way 1x1 intersection
    • Highway on/off ramp
    • Y splitter (optional, depending on how happy I am with the above item)
  • Create a single blend file which includes the data for the above (despite the git lfs implications) It should:
    • Separate collections for the source geometry exported from godot and the cleaned up final geometry
    • Export collections set up with the appropriate settings and paths for easy use
    • A gdignore file set up so that users with blend file importing don't end up with doubles or unnecessary data
    • Some kind of placement so that it is easily ignored / not including in build exports, as that would just inflate user's game exports. This might just need to be a documentation thing, if .gdignore doesn't on its own already exclude a folder from build inclusion,
    • Use a single material which uses the same trimsheet as the regular material
    • This material should work as a direct replacement for the one bundled with the road generator, and thus also work with custom authored trim sheets
    • The hand crafted model files should match the default profile of the road generator itself, including shoulder and lane widths. I'll prioritize intersections with the common default number of lanes as well (2x2 over 1x1s) if time becomes an issue.
  • Prepackage each of these exports into tscn files, so users can easily drop into their scenes. Thus, users can simply drop theseinto their scene and connect them to other intersections or procedural road segments using the RoadContainer snapping feature (in editor or via code)
    • The scene files should have the correct placement of RoadPoints already set up, with create geo turned off
    • Let's assume users want to use RoadLanes, and thus we need to hand author any missing ones which are not auto created. Will need to think about whether there are ways to make auto connection work
    • Reference the built in road material. Bonus points if I make a small programming change to have these meshes get their material from the parent, so it's easy to swap out materials in an instanced scene. Failing that, it's fairly easy t communicate how to do that with editable children (or in godot 4.4's new exposed children feature)
  • Extra bonus points if I manage to create a submenu for intersections with hard coded links to each of these files (and maybe a popup dialogue if ever one of them is missing).
    • Could also work by assigning an "road containers" folder where it then searches through and lists scenes? but, trying to minimize the coding changes here.
  • Extend this so it's available for both godot 3 (first) as well as godot 4 (secondarily)
  • Update the wiki guide with one of these roads as an example
@TheDuckCow TheDuckCow added the enhancement New feature or request label Jan 19, 2025
@TheDuckCow TheDuckCow added this to the v0.6.0 milestone Jan 19, 2025
@TheDuckCow TheDuckCow self-assigned this Jan 19, 2025
@TheDuckCow TheDuckCow changed the title Add hand-generated intersections Add hand-modeled intersections Jan 19, 2025
@TheDuckCow
Copy link
Owner Author

TheDuckCow commented Jan 20, 2025

Made good progress on the first custom intersection, and also updating the tutorial:

Image

However I did come across one problem, which is that using the connection tool doesn't work for fully custom meshes in the editor, since we can't rely on the handling of the source object. I'll have to think about options, one of which would be to at least let the connection tool work for hovering over the RoadPoint indicators itself (but then again, we run into the issue of custom scripts not seeming to work in nested saved scenes, making this tricky). Thankfully snapping still works fine, but that's not enough on its own I'd say.

The other workaround, though severely annoying, is to re-enable the procedurally generated road segments in the source scene, save it, return to your editor screen and use the connection hovering tool, then go back to the subscene and disable procedural geometry again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

1 participant