Non-voxel greedy mesher for runtime parts merging/map optimization

Originally made to be used with this function by EgoMoose to allow it to be optimized for large scale usage, I decided to expand it as a full module

DOCUMENTATION IN THE GITHUB README

Features

Notes

  • In some special cases, it cannot merge parts that a human can notice to be easily mergeable (such as the chimney pictured above) due to odd parts architecture
  • Attempting to merge multiple parts in the same spot/already clipping into eachother can cause unintended results
  • Attempt to merge very small parts might cause weird behaviors

Closing

If you run into problems with this, let me know in this thread or in the repository's issues section. Credits for usage is not needed but very much appreciated, do also show me if you make something neat with this
57 Likes

REIMUARMPITS???
what does that mean

6 Likes

Super neat module, works wonderful. Excellent job @RoyalTHEUSERNAME :clap:

3 Likes

i know this was bumped but THIS IS SOOO COOL :scream:

i definitely just gained a lot of motivation to make 2009 esque games lmao, awesome work

1 Like

updated the repository to fix invalid typechecks, vscode luau parsers won’t complain about the module anymore

thanks for the recent attention everyone

You should make a wally package for this.

1 Like

thanks for reminding me, it’s on wally now

1 Like

could you add roblox-ts typings? that would be extremely useful!

1 Like

unfortunately roblox-ts is not something I’m familiar with but it is something I want to learn in the future. maybe at a later date

1 Like

It would be super neat if the module included a part-separator. This separator would essentially be the opposite of the greedy mesher; it would take a position and size, and split the block down from there (with the option to remove the inputted section). For example;

function Separate(part, size, position) 
--From here, it would take the size/position & remove that section of the part.
--That would be extremely useful for minecraft-based games. 
--This function would essentially undo/re-separate combined parts,
--allowing for a part deletion system in addition to a part placement system.

Just an idea :grin:

1 Like

I believe what you’re describing is already covered by this which this system was originally made to be used with

using my greedy mesher (along with a lot of extra optimization and part caching) I managed to use the linked function to make a high-performance destructable environment system with parts
though the full system used to make this possible is still closed source as it’s while rigid and was only built to support the game it’s used in alongside still being very exprimental, I will open source the whole thing sometime in the future

5 Likes

Gotcha. I’ll implement my own function into the module; @EgoMoose’s part splitter is pretty neat.