Hello As some of you may know, I’ve been working on an open world wild west game for some time now for fun. We strive to create one of the most stylized yet detailed and interesting open world games on Roblox while staying performance friendly.
Recently I’ve been repainting our world’s grass because some optimization improvements allow for much more of it.
I’ve came up with a pretty neat workflow and I wanted to show it off as well as the system itself.
To paint grass, we use a plugin we developed to quickly change grass height, variance, density, and color as well as the brush size.
I go over the area I want with large brush strokes with higher height and density, then I cut random bits away and replace with lower height grass to create some variation.
Afterward, we take its base color(which we set in stage 1 based on the biome), and throw some HSV randomization in to make it a bit more lively
Now we hit play and we have working grass!
Grass responds to wind, trains, wildlife, and players
Grass also has Level of Detail connected to the user graphics level!
This means for lower end PCs, the grass that is rendering isn’t stressful enough to create any render performance culprits
We also have taken other optimization measures, and by doing so we’ve effectively eliminated grass related performance issues which means we can have and endless amount of dense grass throughout the world without having to worry.
- We limit grass logic to 1ms, it will not ever take longer
- We iterate on a fast per-chunk basis
- We unload grasses that are far away, and unloaded grasses take very little memory
- Mesh detail(# of blades) is dependent on user graphics settings(unfortunately this is an issue for the “automatic” setting)