Buildpiles

Thu Mar 07 2024

I like the idea of Drawpiles; you collaboratively draw on a shared canvas with your friends and have a great time doodling together, sometimes letting your drawings interact with each other! But for some people when there is an apparent skill gap, Drawpiles presents a ripe opportunity to compare yourself, which can lead to you not feeling very good about yourself. I'm one of those people >_<

Though, even if you put a pin in that not everyone knows how to draw. I want to have activities in my server that most people can participate in. So October of last year I came up with an idea: everyone can play Minecraft, so why not collaboratively build in the same Minecraft world? That's the idea behind Buildpiles.

Admittedly, this blog post is way overdue as the first Buildpile was hosted October 14th 2023, nearly 5 months ago. Better late than never, am I right? Anyways, from now on you can check out all Buildpiles, current and future, right here.

The Technical Deets

If you're still reading, you probably want to know how it works behind the scene. Hopefully you didn't want to see anything technically impressive as it ended up being pretty simple. Fortunately this means it would be just as easy for you to set up for yourself!

Tldr

I used BlueMap to generate a 3D model of the world that you can view in the browser.

When I was first getting into this, I thought I would need to generate a 3D model out of the Minecraft world and find a way to embed that in the browser. I knew there was a common pipeline to import Minecraft worlds into Blender, so I started my search with embedding models in the browser.

I promptly found <model-viewer> which made it seem very easy to do just that! But a caveat I immediately noticed was that it only supports glTF and GLB model formats, whereas I'm more familiar with FBX and OBJ. Hopefully that won't be a snag.

A Dead End

Next up on the list: model generation! The popular choice for Blender users is to use jMc2Obj which spits out OBJ models; not a challenge for Blender, but not a format I can natively use.

This was decent at best. Transparency worked, but textures were blurry and the grass colors didn't match. I could probably fix the blurryness by disabling bilinear filtering, but the mismatched colors would be troublesome. Hopefully the conversion to GLB doesn't break anything.

Oh- oh no. This looks dreadful. What is that awful sheen? What happened to the transparency? And why is the grass one-sided too? Even if I could fix the previous issues and these new ones, I really did not want to do this manually. This was just not going to work.

So I went looking for alternatives. I found BlueMap, but on the surface it seemed to just be a Spigot/Fabric plugin for a Minecraft server. That would be cool for when I host my own Minecraft server (eventually), but I wanted something standalone, so I steered my search elsewhere.

RTX Minecraft

What I found next was Chunky, a fascinating piece of software that can render path traced images of Minecraft worlds. Path traced renders would look gorgeous, but depending on the resolution and hardware they can take quite a while to render. Might as well as give it a try.

This looks great! But it took a non-insignificant amount of time to render, and with this isometric view I would need to do this three more times to ensure full coverage of the chunk. And ideally at a higher resolution too.

Since I could not find any other workable solution in time, I ended up going with this and rendering four 1920×3840 resolution renders. Here is one of them at a chunky 7.52 megabytes (!!)

I guess that's why the software is called Chunky- 💥 🔫

With Fresh Eyes

A few busy months pass, and I'm thinking again about how to finish this project. With a fresh start I do some web searching and find Overviewer. It calls itself a "high-reslution Minecraft world renderer", and it generates isometric images you can pan across. I'm pretty fond with how it looks, and it looks to be simpler to setup than making several minute long renders in Chunky.

There's just something about this that tickles my fancy. A sense of nostalgia and adventure to explore the whole world map. Here is the link to this map.

When reading the documentation on how this is set up, I checked out the most recent blog post titled "The End". I thought it was talking about Minecraft's End, but it was instead about how the project was officially over. The software of course still works and is actively used by some large servers, but it was still a little sad to see.

But within the blog post it recommended BlueMap as an alternative! Overviewer seemed to support a standalone mode, so I figured if they were recommending BlueMap that it could have a similar mode too, and to my surprise it did!

Setting it up was really easy, requiring running just 3 commands to set up config files, render the map, then run a web server. My desktop's Java installation was being fussy with too old versions, but I soon had it up and running on my VPS.

Post Mortem

My friends and I had a lot of fun at the Buildpile and they've been nagging me to host another one soon. I was putting that off until I figured out a workflow and wrote this blog post, so stay tuned for more Buildpiles!

signature
← Back