Custom Minecraft Classic client written from scratch in C
github.com
github.com
If you care about freedom-respecting software and you like Minecraft, definitely check out Minetest. I've been really impressed with it, both functionally but also code quality. Really cool project and I hope they succeed. The biggest complaint I've heard about Minetest is that the controls just aren't as fluid and polished as real Minecraft.
So, sure, Minecrat's not open source. But they don't mistreat their mod devs, released an abundantly hackable game, and have the largest player community on Earth.
despite microsoft's best attempts, they haven't been able to kill the java edition and it's only grown
Most adults and definitely most content on YouTube is on Java.
I mean, I've seen people talking about Minecraft Java on Android and you can certainly run it on the Stream Deck, but both of these tasks are not something the average user would do
It's at the point where it's impossible to run a safe and secure minecraft server without installing a mod like paper that completely overhauls the game. There are several modpacks that contain probably 50x more code in mods than code from mojang.
Not to mention, who really controls the game?
If microsoft ever did anything truly egregious I have no doubt that the entire community would pick up sticks and move. It would be large, it would be coordinated, and it would be swift. There are LOTS of successful mincraft clone projects out there, ranging from being loosely minecraft-inspired with lots of new content, to striving to replicate each new feature and addition perfectly, to being written in rust, you name it. The loss of java mods would suck, but give it a year or two and most of the active ones would probably be rewritten. Hell, most of them are written against the very handy Forge modding API, not microsoft's code.
Never mind the fact that the moment microsoft tries to crack down on modding, the various open-source 3rd party launchers will patch out the licence-mandated piracy checks (or will be forked to do so, in fact these pirate forks probably already exist).
I’d love a way to sidestep them. It’d make my life easier. We already own four or five copies of the game, so I’m not even talking about piracy.
Plus their fucking launcher phones home to any of a whole bunch of IP addresses, refusing to launch the game if those requests fail, which makes allowlist-based management of kids’ connected devices difficult if you want them to be able to play Minecraft and don’t want to have to manually intervene every time they start the game. God damn is that annoying.
(We tried the minecraft-clone plug-in bundle for that one open source engine, and the kids and I both found it off putting and definitely worse in ways that were hard to put my finger on, but were real. Instant rejection by the kids, and I couldn’t blame them)
[edit] though without survival mode or the ability to do multiplayer, this project is also no help to us.
https://github.com/huanghongxun/HMCL
Didn't maintain it or anything, but another member of the community took the lessons learned from my teardown of it and I think polished it up. Needed a pick me up project at the time. Was around 1.14-ish I think? Also helped them get sound working in Forge.
Found one of the threads, though this either wasn't one of the ones with the gorey details, or they probably snipped the posts as they may not have been super comfortable with me laying out how to vivisect Microsoft's shiny new acquisition for people. I was in a rough headspace back then.
There are many installers out there that don’t auth, I wrote one that does auth for Apple Silicon support and it wasn’t difficult.
It started as a fun curious idea to understand more about programming and mechanics in games, but became very quickly extremely addictive.
Paired with big personal problems at that time it provided me with an excellent opportunity to escape and basically not leave my home until I was done.
And I regret none of it. I learned much much much more about engineering than I would have ever done otherwise and with this knowledge I landed very good jobs with good and stable income which eventually brought me out of my personal problems.
People re-create classic games all the time, like tetris, for fun.
Uhm... why not? If I contributed a Survival mode, and submitted it as a PR, then it would be rejected? If the goal of this project isn't to recreate what we loved about old-school Minecraft, then I don't know if this project is for me or not, and then I don't know who it's for.
It's not like the way modern creative mode is just a game mode in the same engine as modern survival. Classic is quite a different game so what would a classic survival mode be? Either you're inventing rules for a classic survival mode that didn't work, or you're implementing an Indev/Infdev/Alpha clone in the same codebase as the Classic clone, and I think those two things are different enough that you'd still end up just maintaining a fork inside the same codebase with the amount of conditional "if(alpha) else if (classic)" behaviours you'd need. It's like trying to have the same codebase be classic mac os and os x at the same time. I can't blame a maintainer who doesn't want to sign up for that.
That, and classic v .30 doesn’t have any survival features
Its seemingly too big for a programming exercise. Minecraft Classic isnt really broken or super limited like the targets of many open source remakes. Its not commercial.
The big selling point seems to be support on really old desktop devices and iOS/Android? Assuming the mobile controls are good.
Er, isn't it? I'm pretty sure all versions of Minecraft are proprietary software that cost money.
Vanilla minecraft no longer appeals to me whereas the hardcore modpacks are ridiculously addictive. Think factorio meets minecraft.
I am very out of the loop with Minecraft, not having played in quite a few years. Meanwhile, I have been getting into factorio... but the thought of going back to my Minecraft roots is appealing
Pretty sure between the very active developer community they've built up and the incredibly deep and broad tech progression, new end-game content is being added faster than players could possibly reach it. Got pretty in-depth quest tree to keep pointed in the right direction.
That’s the level of dedication there.
- Enigmatica 2: Expert (or 6)
- AllTheMods 8
and my personal favorite
- Not too Complicated 2
Basically, anything Lashmak[1] plays.
> It does not have a survival mode (nor will such a mode be added)
https://github.com/UnknownShadow200/ClassiCube#what-classicu...
It went Classic -> Indev -> Infdev -> Alpha -> Beta -> full release.
Indev was the introduction of survival mode.
I'm so afraid of M$ and what they will do to Minecraft. I have seen the open source variants that give me some uncanny valley feelings, but I imagine this is the long term solution.
In a different life or when we achieve post scarcity, I'd love to contribute to one of these.
I know the website owner has actually talked mojang’s legal team down from trying to take classicube down- the lack of modern Minecraft features essentially differentiates it from their product, assumedly it makes it much harder to sue for.
Nintendo is probably the most aggressive about this.
In what data structure are the blocks in Minecraft actually stored? And by which mechanism are they quickly retrieved to check which block the player was hitting?
I would think the model partitions the space with an octree and their position jumps from parent node to parent node. Then at each bit we just have to go through 8 elements to find a block and all the entities for this partition.
https://minecraft.fandom.com/wiki/Chunk_format
The main unit of minecraft storage is the chunk, which is a 16x16xWorld height area of the map. Chunks are bundled into groups of 32x32 chunks for storage on disk. Minecraft keeps a map of chunks for an area of (configured render distance + 3) chunks in memory, and pages these in and out as you move around (including generating new chunks if you reach a chunk that's never been generated before).
Chunks themselves are subdivided into 16x16x16 sections of blocks by vertical height.
So the process is:
1. Find chunk containing co-ordinate (maths + dict lookup) 2. Find array containing data based on y co-ordinate (basically an array lookup) 3. Find block in array (another array lookup)
There's also various data of more variable size (e.g. lists of entities, structures, etc.) tacked onto the chunk format. These tend to be much smaller in number for any given chunk, so my understanding is these are basically just linearly searched or iterated on a per chunk basis when required.
> [...] To understand why octrees are slower for Minecraft games, it isn’t really necessary to invoke such exotic explanations. The underlying reason for the worse performance is purely algorithmic: each time an arbitrary voxel is touched, either when iterating or performing a random access, it is necessary to traverse to the entire height of the octree. Since octrees are not necessarily balanced, this can be as much as log(maximum size of game world)! Assuming the coordinate system is say 32 bit, this brings an added overhead of 32 additional non-coherent memory accesses per each operation that touches the map (as opposed to the flat array, where everything is simply constant time).
https://0fps.net/2012/01/14/an-analysis-of-minecraft-like-en...
You always know the location of the player in x,y,z. The world is extremely regular, first you figure out the co-ordinates of what you are hitting, then you do a direct lookup of that from the world, with like a single top-level hashtable that links to large fixed-size segments. This will be dramatically faster than any tree.
The readme notes all say "The <console> port needs assistance from someone experienced with <console> homebrew development - if you're interested, please get in contact with me." , it's got entries in the Makefile for all of them at least.
> It does not support logging in with Mojang/Minecraft accounts
They almost make it sound like a bad thing
It would be cool to do this in Rust and run on WASM.
No, webassembly wasn't a thing yet at the time (arguably still isn't). I'm not sure emscripten existed, and even when it works it turns 20KB C++ binaries into 3MB of broken javascript. Non-starter for a performance-sensitive game engine.
I said RUST to WASM.
That link is just for compiling C with JavaScript interropts.
I was simply commenting that:
'hey that is cool you did this with C'
'wow, this seems like it would also be a cool exercise to do with Rust'.
This was the most innocent comment ever.
Is there an anti-Rust sentiment?
Is it so bad to say something was a good idea, it makes me think of trying other things too.