Way back in 2015 I started building a voxel game engine. About four years later, Mojang released Minecraft Classic. It was built on my engine.
Considering that I’m a solo indie developer, and that Minecraft is the best-selling video game of all time, you might reasonably suppose this would be a Really Big Deal for me. But I’ve never really written about it - mostly because I know so little about the whole thing that there isn’t much to say.
But I feel like I should write something, so I’m jotting down the details here for my own reference (and to hopefully banish it from my head so I never think about it again). Be warned that there’s no punch-line at the end - it’s a “…so that happened” kind of story.
Minecraft Classic launched in May 2019 as a marketing promotion for the game’s 10th anniversary. It’s an extremely minimal version of Minecraft, with limited terrain blocks and no crafting - but it’s free and runs in the browser, and at launch it supported multiplayer up to ten people. So by all accounts the launch made a big splash - front page of Reddit, etc. - and tons of streamers and fans jumped in to try it.
And as noted above, the game was built on my voxel engine (apart from the multiplayer - Mojang did that). The code is minified but not obfuscated, so if you try the game you can give yourself super movement powers by running the following code in the JS console:
var move = noa.entities.getState(noa.playerEntity, 'movement')
Apparently, Minecraft Classic was a one-off marketing demo - the multiplayer servers died the day after launch, and Mojang has never mentioned the project since. I didn’t actually hear about the whole thing until ten days later, by which time the game was abandoned and well on its way to being forgotten.
Also annoyingly, Mojang’s marketing announcement strongly implies the game is an old (buggy!) alpha version of minecraft, rather than a new thing built on open-source tech. Which makes it a bit complicated to promote the open-source tech they used!
But more than promotion, my main hope out of all this was was to get in touch with Mojang about contributing some code change back upstream - particularly their changes related to supporting multiplayer. And at first things seemed promising! My game engine internally uses a 3D library called Babylon.js, so the Babylon team and I had a shared interest in promoting Mojang’s use of our engines. Further, the core Babylon team all work at Microsoft, which owns Mojang, so they had the necessary connections as well.
And ultimately the Babylon team did get in contact with Mojang. But they declined to include me or tell me what was said, so for me that’s more or less the end of the story.
If you’re an open source dev, by now you’re probably wondering whether Mojang followed the terms of my code’s software license. The answer is: …not really? My engine uses the MIT license, whose main requirement is just to include the code’s copyright statement. Mojang didn’t do that, but it might just be due to source minification. Either way I’m not losing any sleep over this part, but do feel free to let them know the next time you see them.
The Probably Just a Coincidence
I poked around Minecraft Classic’s internals, and was able to figure out that they forked my engine in July 2017 - about two years before their game launched. The finished game doesn’t seem like a two-year project, so my guess is that it’s something they experimented with, decided not to pursue, and then later revive to use as a marketing promo.
But as an odd historical footnote, check out the following issue that a Github user filed on my engine in late August 2017. They sound, um, frustrated:
That comment was posted roughly six weeks after someone forked my engine for the project that would later become Minecraft Classic. 🤔🤔🤔
Of course it’s probably a total coincidence, and the commenter probably had no connection to Mojang. I like to imagine otherwise though - because at least that way I’d have gotten some feedback out of the whole thing.
Anyway, that’s the story of the time Mojang released a game built on my indie voxel engine.