Design/Implementation question for "Bloxel" world

So I’ve been working for a little while now on a project that involves manipulating a block based world. Not in the normal “craft this to survive that” sense, but more in a sculpt/paint your world fashion. With a cartoon style feel to it.

I’ve been having a lot of fun coding this project. Learning which faces need to be drawn and which excluded. How to detect which face/vertex you’re looking at so you can “paint” to the object directly. You can get some pretty neat results!

Everything is going great, but I’m just curious if my approach to creating the blocks/meshes was a feasible approach or if I should switch it up to avoid complications in the future. Here’s what I did.

I created a mesh for a single block/cube. The mesh receives the information about the neighbors around it and draws itself based on that info. Each mesh is stored in a Block object which extends the Geometry class. Afterwards I throw the block into a chunk and optimize it. My question is, should I keep doing it like that? Creating a mesh, packing it into a block object (which holds coloring info, by the way), then optimizing it inside a chunk node?

Or should I create a list of quads and form them together into a mesh shape? Or perhaps even make an entire chunk mesh shape and draw certain vertices to put into one giant geometry? The way I have it right now is super simple to understand and the scene runs just fine with many of the blocks in the scene (due to the batching process of course), but I don’t want to overload the memory in the end with nodes full of geometries. Because right now I back all of the batched nodes with their unbatched nodes (so I still have access to the blocks inside of them).

I’m not asking for anyone to “paste me codes so I can has my game”, I know how to implement all of these designs. It’s just through first approach I decided to go with the individual blocks because it was easiest for me and gave me what I needed when it came to painting blocks. I just want to make sure I don’t come across any problems in the future with memory or the adding block process to take too much time (right now an empty chunk being added to takes a few thousandths of a second to add a block, but chunks that have been filled take a few hundredths up to almost a full second if the chunk is substantially filled).

Thanks ahead of time for any recommendations on implementations.

So my images didn’t get posted, but here’s a few of the world painter screenshots I have so far.

Your pictures are https and also appear to not be real direct image links. If you want to embed pictures on the forum, the easiest way is to upload it to imgur and use the “Image” button next to the link button here.

A good place to start is the Cubes framework. It collects a lot of common practices. But we have a bunch of cubeworld enthusiasts around here so I’m sure they can give you some more definitive advice.