Intro
As a roblox developer, it is currently too hard to create twisty and realistic roads in roblox. Currently, developers have to use square parts to fit in with things like smooth terrain. This is a difficult task to do, and often requires lots of work on a builder’s end to make the terrain look like it’s supposed to be with the road. Not only this, but it raises the part count substantially.
Alternatives
The best method I’ve seen for making roads quickly was actually in the Torque3D engine, via BeamNG.Drive. Here is a video of someone making a road in BeamNG. Notice how the texture image behaves exactly like a regular roblox texture, except instead of having it based on a world axis, it’s based on a local axis.
Terrain
Terrain tools can effect how these roads are made greatly. I think a tool like the one shown in the video used to raise the terrain to the road level would be an amazing feature to roblox and would be extremely useful for all kinds of development, not just roads. Not only that, but the tool used to smooth out the rock walls had a threshold for how much it was to smooth out the wall. With this, we can make scenes like this one with ease.
Current Flaws
Currently, it’s quite inefficient to put a part down for every line and detail on the road. Now, that’s okay to an extent - Arrows and parking spaces would be pretty difficult to use in a texture. In these cases it’s alright to use parts and decals. However, it’s quite tedious and relatively GPU-costing to make a part for every line on the road. Especially when there is a complex road system with many lanes. Using textures would not only speed the game up, but it would make for a more realistic and immersive experience in the game.
How it should be done
In the video, there were bones on the road, similar to animation. Each bone could be extruded and the road would be extended. I think this is a pretty simple, but very useful concept that roblox is lacking and could really use. The road, when seen in the client, would function like a MeshPart (though with a better collision fidelity hopefully). Each “Road” would have one texture that is projected on top. It would be useful to have fade options so the texture fades out on the ends (like double lines and dirt roads on the sides) but I suppose that’s not completely necessary because of the capabilities of the graphical designer. The road, under the hood of roblox, would have lots of different parts. If you’ve ever seen TwentyTwoPilots’ road plugin, it’s sorta like that, only mesh.
Example:
Each “Part” would have a texture in it. That way we can have cool road textures like Asphalt, mud, rock, gravel, etc.
So here are the special properties of the Instance:
FrontTexture (string)
BackTexture (string)
LeftTexture (string)
RightTexture (string)
TopTexture (string)
BottomTexture (string)
(Per Each Face Texture)
–StudsPerTileU (int)
–StudsPerTileV (int)
Color3 (Color3)
Length (this would be locked, it’s an integer for how long the road is from start to finish)
Width (int)
Height (int)
TextureTransparency (int)
PartTransparency (int)
MiddleOffset (Vector3)
The reason I put Width in there is because that way, we can duplicate the road and make it narrow to make lines that only appear on the sides of the road and things of that sort. I also think it’s imperative that the texture is stretched to fit the shape of the road.
Editor
I thought about how making the road should be done, and I think the most effective way to do it would be by using bones. Bones are used in animating a lot, but I think they’d be very useful in making roads as well because this way the pitch, roll, and turn of a road piece would be so easily done that someone could make an open-world universe in a day. If you look in the video, I think that works off something similar to bones. I think being able to extrude bones and make roads longer that way would be very useful as well. With these kinds of tools, mountainous terrains won’t be too far in the future.
Here’s an example of me editing the bones of a road I rigged up in Blender:
https://gyazo.com/42609e9aa49bc8a001f05faac05a2eef.gif
Conclusion
I think this road idea would basically put project development on steroids because of how useful this would be. I find myself constantly avoiding smoothterrain because of the difficulty of installing roads (especially because there is no way to specify a set height/roll for the terrain). I know new features aren’t added overnight, but I think this one’s at the top of my list.
This video features a little bit more of the road editor and how it fuses to terrain, and also some other nice things I’d like to see in roblox.
.FBX file with the armature so you can play around with it: RoadDemo.fbx (52.4 KB)
New stuff (Edited 4.3.18)
I’m pretty sure every good engine has this feature as a standard, it makes everything 1000 times easier on their developers, which makes games better overall
Road creation’s been mastered already, and roblox falls short on it.
This is also a request directed towards plugin makers; It can be achieved without meshes at a higher cost. I’m not good enough of a scripter to make this happen.
List of game engines that support this method of road creation to an extent:
- Unreal engine
- Unity
- Cryengine
- Blender
- Torque3D
- Probably a lot more
I’m begging for this to become a feature.
- I want this feature
- I do not want this feature
- I’m indifferent on the fate of this feature
0 voters