Hello all of you savvy builders! Through my time on Roblox, I have come across a plethora of unique building methods that are not commonly seen across the platform. After creating quite a large mental list of techniques, I decided to make this post and return the favor to the community I grew up on. In return, I only ask that you share the awesome and advanced tricks you have up your sleeve for creating your amazing experiences!
General Building:
Shadows for Invisible Masked Parts
In the images below, the shadow is coming from a partially transparent sphere that is masked by a glass rectangle with 0.999 transparency. You can create all sorts of neat effects by using glass to hide parts that would otherwise be visible. One thing to know about this trick is that it is just that – a trick. Glass is not intended to cause partially transparent parts to become invisible. This is something that could change at any time, since it is technically a rendering bug. Additionally, glass will still reflect light at certain angles (at least in future lighting) regardless of the transparency (unless it is 1). Click here for a free model example.
Shadows for Truly Invisible Parts
The shadow in this next example really is coming from a character in the room! As pointed out by @Trymentinc in this DevForum post, it is possible make a truly invisible BasePart cast a shadow if the ForceField material is used with -inf transparency. Click here for a free model example.
Image from In Darkness
Custom Materials from Premade Materials
Although this one is a bit outdated with the introduction of custom materials, one of the older techniques I learned was how to create custom materials using Roblox’s premade materials. Having a partially transparent part overlap another with the same CFrame prevents Z-fighting between the two. This technique can be used to create materials such as detailed grass, rusted diamond plate, reflective mud, and many others! For developers that lack access to otherwise desired materials, this can be used as a potential fix with even more possibilities when combined with custom uploaded materials. For example, if you wanted all of your materials to look mossy, you could use this technique to do that without uploading a new variant of each. It’s important to note that overlapping parts like this is more performance costly than having additional materials. Click here for a free model example.
Here’s my favorite example, which would be great to use as caustic light rays underwater. It utilizes cracked lava and sand to achieve its look.
Changing MeshPart Color
To build from the idea of custom materials, we can use the same technique to alter the color of MeshParts. As you may be aware with the Mesh object, you can change the color via the VertexColor in properties. Unfortunately, this does not currently exist for MeshParts without the use of PBR. By duplicating a MeshPart with the same CFrame, adjusting transparency, removing the texture, and changing color to a desired appearance, you are able to match the color of a MeshPart with a scene you are working in.
Here’s an example of this technique in use to make a darker version of this mushroom.
Glass for Distortion and Magnification
One of the many cool tricks that can be achieved with glass is magnification and distortion. When using a rounded glass object with transparency, everything viewed inside of the glass will appear warped to some degree. This can of course be used for things like a magnifying glass, telescope, and glasses. Click here for a free model example.
Beams for Dust
One of the most important things for a believable environment are subtle dynamic details. An example of this is demonstrated above. Can you see it? There is a beam in front of the cave entrance to create a scarcely noticeable dust effect. In game, the dust slowly moves from left to right to mimic light shafts entering a dusty cave. This beam asset can be obtained via the popular waterfall plugin, and then edited for an appearance more similar to dust and voila!
Image from Scenic Canyon
Decal & Texture Reflectance
Sometimes you place a decal or texture somewhere, but it doesn’t quite look right due to it having or lacking a certain degree of reflectance. This is due to the material of the BasePart it’s parented to even if it’s transparent. Below is an example of a carpet decal with a painfully bright reflectance. This issue is due to the BasePart’s material being set to glass, which has the highest reflectance. This can be entirely removed by changing its material to neon, which has absolutely no reflectance. As a result this can be used to add or remove reflectance to any decal or texture!
Other
Neon to Track Lights
One of my favorite things I discovered was that neon is entirely unreactive to light levels when transparency is applied. As a result, this makes neon perfect for marking where all of your lights are in dark environments. In this example, you can see that I have a completely black environment, but the neon part is unaffected by this darkness and therefore easily seen.
Using Over Three Decimal Places
If you’ve ever entered a long decimal into a typical property, you’ve likely noticed that it gets shortened to only three decimals places, but this is purely visual. Roblox accepts values that are smaller than three decimal places in length. If you’re ever trying to scale something very precisely, you can type in the exact measurement you want, and it will scale it accordingly; however, some may have minute inaccuracies. For example, I entered 10.0000001, but it was actually 10.000000953674316 when printed.
Performing Math Operation in Properties
As an addon to the above, you may also want to get a specific measurement that you would otherwise need to calculate. Luckily, Roblox allows you to perform these operations in certain property lines. For example, you can type 1, 1, 0.123456789 / 3
into the size property of a BasePart, and it will automatically calculate the answer for you.
Using Floating-Point Errors
Floating-point errors typically occur when a number is too large for a computer to accurately process / store. As a result, extremely large numbers combined with rendering can caused some very interesting and unexpected results. This can be seen by adding ColorCorrection in Lighting, and entering an exceptionally large number in the contrast property. The more large numbers you use in rendering, the more it compounds, and the weirder things get. Below is an example of just how weird Roblox lighting can get under these circumstances!
Particles Locked to Camera
Sometimes I see developers places particles all over their game, which is quite costly. Instead of doing this, I recommend having a single particle block updated to be at the position of the camera on RenderStepped. This creates the illusion of particles everywhere (including depth depending on the size of the block), while reducing the performance costs. An example of would be floating dust in an abandoned factory.
Black Lights
Up until semi-recently, it was impossible to have lights that were black, but that’s finally possible with future lighting. By simply changing the color of a light source to be negative, it makes a black version. Unfortunately, there is no smooth transition, so you’re stuck with either fully black or not at all.
Glass VFX
My favorite technique to play with is utilizing glass as VFX. As can be seen in the image below, I have a glass variant of Mr. Krabs in order to get some wild results. This is due to setting the glass’ transparency to any value over 1 while parenting a highlight object to it (can be disabled). As a result, the glass is still rendered in this weird way, which has vast design implications.
That’s all I have to offer for now, but if you know of any other advanced techniques, please leave a comment to spread the knowledge!