Hacker News new | ask | show | jobs
by synchronise 3122 days ago
This is nice, but considering the animosity the modding community receives from official channels I'm really surprised why FOSS Minecraft clones that specifically focus on mods, like MineTest, haven't taken off comparatively.

https://www.minetest.net/

2 comments

I see this sentiment a lot on HN. I know nothing about Minecraft, but I'd be surprised if the factors at play here are any different from other situations where "superior" FOSS clones fail to overtake the original closed versions:

Network effects. If Minecraft is a multiplayer game whose fun is largely derived from sharing your experiences with others, then a new and "better" version isn't really better at all if it's sparsely populated. Not only do the network effects create value for players and spur growth, but they create lock-in, too.

Risk aversion. Developers and modders have less motivation to build for a new platform with few users and no profits because it's more likely to tank. Not everyone wants to be a pioneering early adopter.

Economies of scale. Minecraft makes a great deal of money. That money can be used to build features, woo developers, and launch marketing campaigns that bring in users. It's hard to compete as a free-to-play competitor.

Awareness. How many people are aware of and care about this particular issue? Most people aren't developers.

So, if you've ever gone onto the Google Play Store and saw some Minecraft clone that worked far too well for what anyone could possible hope to invest and make money off, that's almost certainly a rebranded Minetest-version.

And there is a lot of these. It would not surprise me, if Minetest had already silently overtaken Minecraft in terms of active players.

But yeah, this doesn't solve the awareness issue. These users don't know that they're playing Minetest. Even if they were playing the official Minetest Android build, they'd not know that this is the real thing.

And people interested in modding Minetest might not learn this either, so never reach the platform in the first place. Some of these rebranded Minetests bundle mods, icon packs etc., so you at least have an audience.

As someone who _does_ know about Minecraft I will say you're probably right on the Network Effect in particular and go into this a bit more:

Modded Minecraft is pretty unlike a typical modding community. Few people add one mod to their Minecraft game, what people tend to do is run a mod _pack_ which is typically dozens of mods with different authors that are integrated together by the pack author the way a movie's Editor turns hundreds of hours of pictures and sounds into a coherent 2 hour film.

It's out of hand enough that you will see people saying e.g. "Ugh, I can't face Magic Bees without Gendustry" - Minecraft doesn't have any bees at all, bees are added by a mod called "Forestry", then magical bees are added to that with "Magic Bees" by a different author and the mod called "Gendustry" by yet another author exists _solely_ to make the genetics gameplay from the Forestry mod more... industrial.

So there's an _ecosystem_ at work here, akin to the Windows vs Unix ecosystems and that network effect applies to your whole ecosystem.

The PC "Java" Minecraft associated with modding actually ships new versions relatively often still after all these years. But because mods are so involved, even tiny changes under the hood can mean hours of software development for the mod authors, so the ecosystem moves to newer versions less steadily, a "pack" of mods will usually be forever associated with a specific Minecraft version. Unlike most games which "upgrade" like a web browser or operating system, Minecraft actually lets you pick at start time which version you want to run in order to facilitate this. For example one of the most famous packs "Agrarian Skies" is for 1.6.4 and will never work with a newer Minecraft but still has some players.

As a result of players being interested in this ecosystem rather than the individual mods, it only takes one of dozens of key developers to stymie a move to a different platform, whether that's a new Minecraft version or somebody else's Minecraft clone. If this happens, the only way forward is for part of the ecosystem to evolve around the gap which happens much more slowly.

Example: A big part of Minecraft is crafting, and mods often add dozens of new things to craft and even new ways to craft things. Rather than have a web browser open on your phone to check what you're doing as you play, the game needs an integrated way to remind you how to make, say, a Wireless Crafting Terminal (yes that's a thing you can make inside the game). The first mod to do this was called Too Many Items. So a pack would add "Too Many Items" and that made players lives easier

But TMI was limiting and ceased to be maintained. What to do? Fortunately Not Enough Items came along. Not Enough Items was maintained for a long time, and became pretty sophisticated, able to tell players which complicated industrial machines could produce which products and with what inputs. But eventually Not Enough Items too fell by the wayside and in the latest Minecraft versions packs use Just Enough Items which is different but arguably better.

Could language choice play a part in it?
I think, that's rather an argument in favor of Minetest.

It's true that Java (which the original and mainly modded version of Minecraft is written in), is widely known and generally allows to write functionality relatively quickly.

Minetest uses C++ for the engine and Lua for its modding API. C++ is much better suited for a game engine, due to being closer to the hardware, using less RAM (due to not being executed in a virtual machine), not having a Garbage Collector, which halts the universe for a short moment every few seconds and is the main-reason for Minecraft still having lag spikes after years of optimizations, and then miscellaneous things like array boundary checks, but also just more game libraries being available in the C++-context (Minetest for example builds on top of Irrlicht).

But Lua for the modding API is the critical part. Minecraft doesn't have a modding API. To this day, you still mod the original Minecraft by decompiling its code (which is relatively easy thanks to Java), making your changes as a professional developer at Mojang would have to make them, and then bundling your modifications up and releasing it to the world.

As a result, it's just really not easy to do at all and mods regularly break when Mojang releases a new version.

With Minetest's modding API on the other hand, it's really easy to just quickly make some changes. I for example always disliked that digging stone gives you cobblestone, which you then have to smelt in order to get stone again. Changing that took me less than 10 minutes with no experience in Minetest modding.

All I had to do, is to find the right file and then in this section:

    minetest.register_node("default:stone", {
	description = "Stone",
	tiles = {"default_stone.png"},
	groups = {cracky = 3, stone = 1},
	drop = 'default:cobble',
	legacy_mineral = true,
	sounds = default.node_sound_stone_defaults(),
    })
...change the Drop from default:cobble to default:stone.

I then also added in a crafting recipe to convert stone to cobblestone, if I ever want to use cobblestone. Again, find the right file and then just add this:

    minetest.register_craft({
	output = 'default:cobble',
	recipe = {
		{'default:stone'},
	}
    })
Just copy-paste an existing crafting rule and change it to your needs. This is something I could have pulled off (and would have had huge fun with) even before I really knew what programming is.