New GeomTools Plugin - QuickRoad is finally here!

I’ve been working on a road plugin for a while now, and the beta version is finally ready!

Introducing QuickRoad

Easily Build Roads Using Persistent Nodes

  • Roads are built using a system of nodes
  • When the plugin is deselected, the nodes are stored away in ServerStorage for future editing
  • Convenient self-contained models are generated for the road segments / intersections, so the plugin can also be used to generate component road system parts for reuse outside of the plugin

Arbitrary Shape / Color / Material Support

  • Full support for 3d shapes
  • Roads inherit the color / material of the adjacent nodes, allowing you to set up whatever coloration / material / other properties you want (Duplicate from an existing node to get another one with the same setup).

Usable For Any Path, Not Just Asphalt Roads

  • The full customization makes the plugin usable for any form of road / pathway.

image

Configurable Detail Level / Optimal Part Count

  • The plugin uses the minimum possible part count to accomplish a given task, so roads will use equal or even fewer parts that you would manually building a comparable setup.
  • The detail level of each node is fully configurable with a float multiplier parameter in the settings panel letting you choose exactly how much angular granularity the generation should have.

image

Configurable Lanes

  • Want a 6 lane highway? No problem.
  • Nodes track a set of lane widths and lane markings, letting you full configure the lane layout.

License

The code is MIT licensed (licence provided in a ModuleScript in the source), so feel free to dig around and steal any of the code. There’s a few potentially useful parts that could be extracted and repurposed relatively easily such as the SplineGenerator Module which has the logic for figuring out what set of spline segments to generate between a pair of nodes.

Beta

For now I’m considering the plugin in “beta” in that I may have to change the data format, so if you come back and use the plugin with existing roads you may not get exactly the same results editing the same set of nodes. 2D road layouts should be relatively stable, however 3D generation will definitely change as I tune it more.

Please try out the plugin and give feedback!

173 Likes

wow, thank you so much. We finally have a good road plug-in, since it looks like @TwentyTwoPilots may have forgot about his.

3 Likes

Hey @stravant, I can’t seem to download your plugin. Takes me to the Roblox Player but doesn’t put it in my plugin library.

The easiest way to get it is through the toolbox, if you just search “Stravant” under plugins it should show up in the results.

2 Likes

Thanks a lot! It works a treat!

Found a few issues with the UI.

  1. image
    the frame isn’t aligned inside the box.
  2. Dragging the box gives some… interesting results. Link to video (click) yes I know everyone hates streamable but darn 10 MB size

Found an issue: All the parts are unanchored.

I would also like an option to disable collision on the lane markings.

Yup, those are both probably better defaults (Anchored on everything and CanCollide false on the lane markings)

You never fail to impress me, stravant. Great job!

1 Like

Wow :flushed::astonished::open_mouth: this should me amazing for racing game!!! It’s in BETA so I can’t imagine how it will be when finished :exploding_head: Can I create a game to promote your plugin? :slight_smile:

Yet another legendary resource by the great Stravant to shave off countless days of dev time and save me so many headaches. This has just earned a place in my standard development workflow.

But with that, I have a few points of feedback:

This is still a great plugin though, so I send my deepest thanks!

2 Likes

Dotted lines are WIP, I just don’t have them implemented yet.

They do actually work, you just have to manually set which lane has the double yellow line right now. I forgot to make it so that when you increase the lane count by an even number it keeps the yellow line centered, I’ll get that in.

What would be the best way to do this? You can do this as is (minus the dashed lines which are coming). You just have to switch the lane markings to dashed center instead of yellow. The only part you can’t do nicely is the yellow line beside the divider.

Do you think it’s worth having a feature to add a divider in the middle automatically? I figured that nobody would use that if I added it since I imagine a divider like that kinda sucking for gameplay purposes.

1 Like

The node parts aren’t registered in Studio’s change history, only the generated road parts.

I thought that I had the key ChangeHistory interactions working correctly. Any particular sequence of actions that breaks which you want to work?

Inserting a road node then repeatedly undoing doesn’t remove the node. If it’s the first time I’ve used the plugin, the first undo will move the node parts somewhere I never put it and only delete the generated road. If it’s not the first time I’ve inserted a node, there is no movement, but only the generated road is removed.

Oh my god this is exactly what I needed. I was just about to develop my own road generation because there wasn’t any good plugin out there.

Oh man I can’t wait to play with this. Thanks bro :+1:

Holy crap this is exactly what I’ve been needing, a new and improved from the @TwentyTwoPilots one.

I was constantly getting requests to make banking turns work with Archimedes but now I can just send people here instead since this is way cooler than any solution I’d be able to come up with. :stuck_out_tongue:


Edit: My only major feedback is that it’s kind of annoying having to use the Select/Move/Rotate buttons provided by the plugin rather than the already existing studio ones - my muscle memory is constantly causing me to accidentally select the studio buttons and making the plugin deactivate itself. Not mentioning Scale since it at least seem to have some custom behavior. I’m assuming there was some legitimate reason you had to add your own replacements for these buttons, though, so I can’t complain too much.

There’s actually a lot of custom behavior in the draggers, for example:

  • The selection behavior both clicking and marquee select is customized to not include the generated roads, only the nodes.

  • You’ll notice that if you drag two nodes, the road between them gets dragged along with the nodes even though it isn’t selected and doesn’t actually get regenerated. That’s because the draggers are smart about when to do regeneration and what the generated roads are.

  • The scale tool has smart handling of lanes / shoulders. The shoulders are kept the same width when resizing and the lanes are scaled proportionally.

  • There’s the join marker shown when dragging nodes close to eachother.

I could have taken some sacrifices to make things work with the built-in draggers but I felt that it would have been too much of a UX sacrifice.

2 Likes