Minetest, a C/C++ GNU Minecraft

This forum is for anything that doesn't specifically have to do with Better Than Wolves
User avatar
Racooknight
Posts: 45
Joined: Thu Aug 23, 2012 2:35 am

Minetest, a C/C++ GNU Minecraft

Post by Racooknight »

http://minetest.com/

http://forum.minetest.net/

The website proper is down at the moment, but the forums are online. I just checked some of the mods, and was struck by that one, which allows for the player to create close to any non-cubic block for any purpose of his liking.

As my skill in C is pretty limited, I won't try and argue over how a minecraft ported to C would be better than a Java-based one; I only know that my computer is a pretty old one, and that java is a huge, memory-devouring rampaging beast when it comes to performance in comparison to lower level languages...

However, I know that we have several professional coders here on the BTW forums, so I thought some of you could be interested by this.

EDIT : typos.

EDIT 2 : Added the link to the website, since it's back online, thx S.W. for the info.
Last edited by Racooknight on Tue Jan 15, 2013 2:54 pm, edited 1 time in total.
Siege Wizard
Posts: 175
Joined: Sun Jun 03, 2012 5:30 am

Re: Minetest, a C/C++ GNU Minecraft

Post by Siege Wizard »

I'll give it a try as I'm familiar with C/C++ and I never learned Java. What about in-game functionality, does it looks like MC or it's still under heavy development?

S.W.
User avatar
Racooknight
Posts: 45
Joined: Thu Aug 23, 2012 2:35 am

Re: Minetest, a C/C++ GNU Minecraft

Post by Racooknight »

I haven't given it a proper try yet, but it seems pretty functionnal already. Graphics are pretty similar to vanilla MC; they just implemented sound too, and it's also quite similar to vanilla MC (similar in that, that I think both vanilla MC and minetest have horrible sound effects :p)

One of the main differences I see is that nothing ever drops on the ground; ores you mine go straight toyour inventory, same thing with anything you break in the world. That doesn't allow for much automated item travelling and whatnot.

Other than that, I couldn't find hard differences. The developpement seems already to be past the point of alpha MC.
User avatar
Shengji
Posts: 638
Joined: Sun Jul 10, 2011 8:35 pm

Re: Minetest, a C/C++ GNU Minecraft

Post by Shengji »

Can I just strongly discourage this thread going in the direction of a C vs J debate - there are probably less than 5 members of this forum with enough proven experience to have this debate and less than 1 of them willing to have it. For the rest of us, suffice to say, no matter what we believe, the issues are more complex and less clear cut and we would wind ourselves in circles of bullshit.

Lets focus on the interesting aspects of this project instead!
7 months, 37 different border checks and counting.
User avatar
Ultionis
Posts: 109
Joined: Sat May 26, 2012 7:52 pm

Re: Minetest, a C/C++ GNU Minecraft

Post by Ultionis »

Minetest mods are actually scripted in Lua by the way, not C.
I dance to the sound of a Creeper's legs breaking
User avatar
Racooknight
Posts: 45
Joined: Thu Aug 23, 2012 2:35 am

Re: Minetest, a C/C++ GNU Minecraft

Post by Racooknight »

That was certainly not my intent, as as mentionned above, I have only a terrible experience of C and zero knowledge of java. I thought the memory usage efficicency was, as you say, one of the interesting aspects of this project, at least to me who's frequently frustrated by that particular aspect in many games, not only MC.

But then it seems to have other great aspects, such as the modding liberty !
User avatar
Shengji
Posts: 638
Joined: Sun Jul 10, 2011 8:35 pm

Re: Minetest, a C/C++ GNU Minecraft

Post by Shengji »

Racooknight wrote:That was certainly not my intent, as as mentionned above, I have only a terrible experience of C and zero knowledge of java. I thought the memory usage efficicency was, as you say, one of the interesting aspects of this project, at least to me who's frequently frustrated by that particular aspect in many games, not only MC.

But then it seems to have other great aspects, such as the modding liberty !
Don't worry, that wasn't aimed at you - just at the internet in general! I see far too many threads devolve into lowest common denominator tribal camps driven by ignorant beliefs, I'm hoping this one stays away from the easy troll bait!
7 months, 37 different border checks and counting.
User avatar
Benanov
Posts: 259
Joined: Sat Nov 03, 2012 5:12 pm

Re: Minetest, a C/C++ GNU Minecraft

Post by Benanov »

Minetest is sort of like Minecraft in that they're both voxel-block sandbox worlds, but that's about it. I suppose minetest could be considered a clone, but then again, clones are *really* common in the Free Software world.

Minetest got its API already in the 0.4 release iirc. It's LGPL licensed iirc. Last time I saw it the FSF guys were demoing it on Trisquel. It looked a little primitive, but the thing had promise.
There's only one V in my name, thanks.

<TaterBoy> I figured out why there's so much lag. We have too much iron.
User avatar
FlowerChild
Site Admin
Posts: 18753
Joined: Mon Jul 04, 2011 7:24 pm

Re: Minetest, a C/C++ GNU Minecraft

Post by FlowerChild »

Shengji wrote:Can I just strongly discourage this thread going in the direction of a C vs J debate - there are probably less than 5 members of this forum with enough proven experience to have this debate and less than 1 of them willing to have it. For the rest of us, suffice to say, no matter what we believe, the issues are more complex and less clear cut and we would wind ourselves in circles of bullshit.

Lets focus on the interesting aspects of this project instead!


+1. The more I hear from you, the more I think of you as a kindred spirit man :)
Siege Wizard
Posts: 175
Joined: Sun Jun 03, 2012 5:30 am

Re: Minetest, a C/C++ GNU Minecraft

Post by Siege Wizard »

I'll probably look at the code of it at some point when I finish my exams.

I've seen that there are lots of mods that try to add functionality from MC to MT, that will probably be added in future official releases of MT, but members that know how to program don't want to wait for them. For now the functionality is quite limited but it looks quite good.

P.S.: +1 to the: Avoid Java vs C debate!

S.W.
0player
Posts: 65
Joined: Tue Jan 15, 2013 7:24 am

Re: Minetest, a C/C++ GNU Minecraft

Post by 0player »

While this project certainly has some potential, it's still very immature in the sense of looking like Minecraft ripoff. Last versions are starting to overcome this though, so I'm looking forward to what they will make next.
Modding community around Minetest is very strange, too. There are mods that add particles support or decend inventory alongside with mods that add things like water pumping. There's also mod that adds Mesecons, "thing like minecraft redstone", but looks more like some half-assed version of Integrated Redstone, featuring a variety of logic gates for example.
Still, I'm pretty amused of how far it got in the last half an year.
Siege Wizard
Posts: 175
Joined: Sun Jun 03, 2012 5:30 am

Re: Minetest, a C/C++ GNU Minecraft

Post by Siege Wizard »

0player wrote:While this project certainly has some potential, it's still very immature in the sense of looking like Minecraft ripoff. Last versions are starting to overcome this though, so I'm looking forward to what they will make next.
Modding community around Minetest is very strange, too. There are mods that add particles support or decend inventory alongside with mods that add things like water pumping. There's also mod that adds Mesecons, "thing like minecraft redstone", but looks more like some half-assed version of Integrated Redstone, featuring a variety of logic gates for example.
Still, I'm pretty amused of how far it got in the last half an year.
That's the point, it's in a very unmature stage but is LGPL, what means that you can copy the code while your product also extends that LGPL license. That would allow a C programmer to have his own MineCraft clone starting from this basis and correct Mojangs errors (beacon checking all entities? watter being stopped by a sign? floating blocks? gravity affected blocks turning into items if landing on non-opaque blocks? gavity affected blocks falling on your head and not taking damage (except the suffocation damage)) There are tons of things that don't make sense in MC that I would like to be more real. Imagine being in a cave, you see an ore in the ceiling, you mine it, and you are taking out a key part of the caves ceiling. A whole bucnh of stone falls on you you take damage from the stone falling but you appear over it (you have managed to get out of there). Damage dependant of falling blocks weight and amount. That would be great and will force us to use fences and blocks to make mines to be sure that you are safe.

EDIT: minetest.net is up again

S.W.
0player
Posts: 65
Joined: Tue Jan 15, 2013 7:24 am

Re: Minetest, a C/C++ GNU Minecraft

Post by 0player »

Siege Wizard wrote: That's the point, it's in a very unmature stage but is LGPL, what means that you can copy the code while your product also extends that LGPL license. That would allow a C programmer to have his own MineCraft clone starting from this basis and correct Mojangs errors (beacon checking all entities? watter being stopped by a sign? floating blocks? gravity affected blocks turning into items if landing on non-opaque blocks? gavity affected blocks falling on your head and not taking damage (except the suffocation damage)) There are tons of things that don't make sense in MC that I would like to be more real. Imagine being in a cave, you see an ore in the ceiling, you mine it, and you are taking out a key part of the caves ceiling. A whole bucnh of stone falls on you you take damage from the stone falling but you appear over it (you have managed to get out of there). Damage dependant of falling blocks weight and amount. That would be great and will force us to use fences and blocks to make mines to be sure that you are safe.

EDIT: minetest.net is up again

S.W.
That's also what is wrong with almost every FS project. The code being open leads to fragmentation instead of collaboration. Imagine how could it have been if every mod on Minetest forums were another fork of Minetest adding one or two features. Given near-zero C++ runtime reflection capabilites, it is nigh impossible to write something like ModLoader, so I'm praising the Lord they made Lua script modding.
Also, almost every thing you claimed to be not having sense is pretty much OK. Game rules do not need to make sense in context of rules of another game (which reality is). Saying floating blocks in Minecraft do not make sense is like saying that buying weapons through screen overlay in Counter-Strike doesn't make sense because it is unrealistic.
User avatar
Benanov
Posts: 259
Joined: Sat Nov 03, 2012 5:12 pm

Re: Minetest, a C/C++ GNU Minecraft

Post by Benanov »

0player wrote:That's also what is wrong with almost every FS project. The code being open leads to fragmentation instead of collaboration. Imagine how could it have been if every mod on Minetest forums were another fork of Minetest adding one or two features. Given near-zero C++ runtime reflection capabilites, it is nigh impossible to write something like ModLoader, so I'm praising the Lord they made Lua script modding.
Also, almost every thing you claimed to be not having sense is pretty much OK. Game rules do not need to make sense in context of rules of another game (which reality is). Saying floating blocks in Minecraft do not make sense is like saying that buying weapons through screen overlay in Counter-Strike doesn't make sense because it is unrealistic.
I respectfully disagree.

The ability to fork is what's GOOD about every Free Software project. Forking is a drastic act you tend to do at the END of a conflict over patches/changes not being accepted; that you can change the code if you don't like it is what gives users that last step of control; one can make modifications or total conversions that much more easily. Normally most folks would rather push a change upstream or file a bug, those are a lot less effort and you improve the entire product. Forking is for experimentation in a direction no one wants to go, or because you're having a problem with something (say, you run on Java 1.5 and now Minecraft won't support that version soon. It's good for the codebase if it's Java 6 minimum, but it's bad for you. If you could fork, you could maintain a crusty Java 1.5 branch, which would at least still allow you to play. You might have to remove a few features, but you could do it. It's not a great reason, but it does happen. Ever heard of TenFourFox?)

It makes online communities for games tend to be a bit more fragmented, but what you find out is most people don't change the code, and cheaters aren't really stopped or helped by availability of source as it is, so it's more "last resort" than the theoretical "holy shit people are forking all the time" people often infer.

The biggest forks I've seen are Samba (Samba-ng was done with the approval of the Samba guys, and I think some of that code went into Samba 4), GCC (fork became the accepted official branch), OpenOffice/LibreOffice (everyone in the GNU/Linux world went LibreOffice while Apache & Oracle dicked around), Mambo/Joomla (no one uses Mambo these days, it's all Joomla all the time), and MySQL and it'sits millions of forks (Oracle dicking around again)

The API is what is making minetest awesome, yes. Lua is powerful, fast, and quite embeddable - you see it a lot in mobile games and as a scripting language for game logic.

(Edit 0: damn I'm sick, I just screwed up it's and its. I never do that.)
Last edited by Benanov on Tue Jan 15, 2013 10:32 am, edited 1 time in total.
There's only one V in my name, thanks.

<TaterBoy> I figured out why there's so much lag. We have too much iron.
Siege Wizard
Posts: 175
Joined: Sun Jun 03, 2012 5:30 am

Re: Minetest, a C/C++ GNU Minecraft

Post by Siege Wizard »

Completely agree with Benanov.
0player wrote:Also, almost every thing you claimed to be not having sense is pretty much OK. Game rules do not need to make sense in context of rules of another game (which reality is). Saying floating blocks in Minecraft do not make sense is like saying that buying weapons through screen overlay in Counter-Strike doesn't make sense because it is unrealistic.
The difference is that CS is a shooting game, it doesn't try to copy reality while MC does but they just kept it very simple. What is not bad, but could be improved.

S.W.
User avatar
Uristqwerty
Posts: 30
Joined: Sat Nov 03, 2012 2:51 pm

Re: Minetest, a C/C++ GNU Minecraft

Post by Uristqwerty »

Minecraft doesn't try to copy reality either, though. Minecraft represents a fictional reality where only gravel and sand fall, fluids flow endlessly from source blocks, and vanish just as quickly into a tiny pit, dropped stuff suddenly disappears five minutes later, you can turn basic materials into devices of arbitrary complexity if you just have the proper surface to work on, monsters appear anywhere where it is dark, there are multiple distinct dimensions, and ways to pass between them, you can store an entire mountain in a single chest, or carry it around with out in your own personal hammerspace inventory...

Minecraft represents a distinct world with its own physics, where things are only somewhat similar to reality. All that matters is that it is consistent with itself.
User avatar
Racooknight
Posts: 45
Joined: Thu Aug 23, 2012 2:35 am

Re: Minetest, a C/C++ GNU Minecraft

Post by Racooknight »

Uristqwerty wrote:Minecraft doesn't try to copy reality either, though. Minecraft represents a fictional reality where only gravel and sand fall, fluids flow endlessly from source blocks, and vanish just as quickly into a tiny pit, dropped stuff suddenly disappears five minutes later, you can turn basic materials into devices of arbitrary complexity if you just have the proper surface to work on, monsters appear anywhere where it is dark, there are multiple distinct dimensions, and ways to pass between them, you can store an entire mountain in a single chest, or carry it around with out in your own personal hammerspace inventory...

Minecraft represents a distinct world with its own physics, where things are only somewhat similar to reality. All that matters is that it is consistent with itself.
I'm with him on that one; Notch himself liked to say things like "hey, what if all animals hatched from eggs ? That would be cool and interesting !" Such feature is indeed interesting on a gameplay level, although not realistic at all. I guess Notch thought realism wasn't the point; consistency of features as an interesting, gameplay-fueling whole, was the point.

That's the old debate of "realism against internal logic". Correct me if I'm wrong, but I daresay FC himself values internal consistency over realism, as an unrealistic world with many intricate features which allow for intricate contraptions and so on, is much more interesting gameplay-wise than a very realistic world which would be devoid of any complexity, be it because by going the realistic way, you didn't take the time to implement complicated features, or any other reason which let you have a realistic but boring world.

IMHO it's more efficient to implement your own physics than try and copy RL's physics; in trying to copy them to the letter, you often miss the point of making an interesting game. Also, it may be easier and more pleasant to create a game with its own internal logic, born from the maker's mind, instead of trying to bend the game to RL boundaries.
Siege Wizard
Posts: 175
Joined: Sun Jun 03, 2012 5:30 am

Re: Minetest, a C/C++ GNU Minecraft

Post by Siege Wizard »

Uristqwerty wrote:Minecraft doesn't try to copy reality either, though. Minecraft represents a fictional reality where only gravel and sand fall, fluids flow endlessly from source blocks, and vanish just as quickly into a tiny pit, dropped stuff suddenly disappears five minutes later, you can turn basic materials into devices of arbitrary complexity if you just have the proper surface to work on, monsters appear anywhere where it is dark, there are multiple distinct dimensions, and ways to pass between them, you can store an entire mountain in a single chest, or carry it around with out in your own personal hammerspace inventory...

Minecraft represents a distinct world with its own physics, where things are only somewhat similar to reality. All that matters is that it is consistent with itself.
Obviously it's a game, played on a computer, who is by far less complex that a single human, but that doesn't make the game to be realistic. It tries to copy our world in a simple but close to real way. That doesn't mean that we should or shouldn't try it to be more real. The gravity system, the fluid one and the storage, as you mention, are three of the most unrealistic parts in minecraft. The fluids mechanics are quite complex, I've studied them quite a bit as an engineer and implementing such a complex system in MC would be so resource intensive that will break the whole game near an ocean or a river. The storage one, is easy to make it more real, reduce the storage and the amount of stackable pieces or introduce a "weight" value that allows you to move faster or not even move. This is easy to program, but breaks again the whole game as it would be so boring. The gravity simplification they have done could be a bit more complex, not breaking the game performancewise nor taking all the fun from it, what it's more, I think it will add some extra fun when building and mining.

And Racoo, I'm not saying copying the RL's physics, as that it's imposible. Even most of the "formulas" you, and any of us, take for certain are not exact. I just think that some of the aproximation they made are over-simplified.

S.W.
User avatar
Racooknight
Posts: 45
Joined: Thu Aug 23, 2012 2:35 am

Re: Minetest, a C/C++ GNU Minecraft

Post by Racooknight »

I feel you man, I'm studying fluid mechanics, and darn it's some hardcore calculations ! That's exactly what I meant when I said that focusing on realism could in many instances bring more problems than good in a game.

But yeah, some of the approximated RL features in MC are probably not there because they improve the gameplay consistency, but because someone thought "it'd be cool" and probably easy to implement them.

On the other hand, picking RL features that *actually* add to the gameplay consistency, as for example what you mentionned above with the caves collapsing (that's what they tried to do in TerraFirmaCraft, among other things, right ?), and implementing them, is a good way to add both realism and an interesting added complexity to a world. I think I'm just repeating your own words when I say realism should be pursued only if it's consistent with the existing gameplay. (and actually implementable, as RL fluid mechanics are awesome, but not exactly reproducible on a simple computer)
User avatar
FlowerChild
Site Admin
Posts: 18753
Joined: Mon Jul 04, 2011 7:24 pm

Re: Minetest, a C/C++ GNU Minecraft

Post by FlowerChild »

IMO, conversations about "realism" in any game, MC included, amount to a huge amount of wankery.

MC is *not* a simulation. It is *not* intended to be realistic. It's its own world with its own rules. I'm a huge advocate of consistency within games, which I think many mistake for realism, but these kind of discussions about realism itself just leave me making rude gestures in response.
User avatar
MoRmEnGiL
Posts: 1728
Joined: Sat Oct 08, 2011 5:29 pm
Location: Bosom Higgs

Re: Minetest, a C/C++ GNU Minecraft

Post by MoRmEnGiL »

Also I think there's something to be said about confusing immersion and realism.

They obviously are not the same thing.
War..
War never changes.

Remember what the dormouse said
Siege Wizard
Posts: 175
Joined: Sun Jun 03, 2012 5:30 am

Re: Minetest, a C/C++ GNU Minecraft

Post by Siege Wizard »

FlowerChild wrote:IMO, conversations about "realism" in any game, MC included, amount to a huge amount of wankery.

MC is *not* a simulation. It is *not* intended to be realistic. It's its own world with its own rules. I'm a huge advocate of consistency within games, which I think many mistake for realism, but these kind of discussions about realism itself just leave me making rude gestures in response.
MoRmEnGiL wrote:Also I think there's something to be said about confusing immersion and realism.

They obviously are not the same thing.
Don't get me wrong. First thing a game must have is consistency. Nobody said the opposite. I'm just saying that, if you can make a feature more realistic keeping it consistent with the game and add some fun, why not do it?

It's a game so fun is the prioritary goal and consistency is necesary, but I feel that realism should be a secondary goal. You want to add a new feature? Is it doable, fun and consistent? Then go for it. That's my point of view, and that's one of the things I like about BTW, it's quite realistic in most of the processes.

S.W.
User avatar
FlowerChild
Site Admin
Posts: 18753
Joined: Mon Jul 04, 2011 7:24 pm

Re: Minetest, a C/C++ GNU Minecraft

Post by FlowerChild »

Siege Wizard wrote:Don't get me wrong. First thing a game must have is consistency. Nobody said the opposite. I'm just saying that, if you can make a feature more realistic keeping it consistent with the game and add some fun, why not do it?
Because:

a) Achieving realism is way more work, and thus in terms of bang for the buck, you rapidly reach a point of diminishing returns where making something more real results in way less fun than if you had spent the same time on something else.

b) Simulating things realistically is often a way bigger drain on performance. The more cycles you eat up doing those kind of calculations, the less you inevitably have to spend elsewhere, which again, results in less fun in the long term.

c) Because in many circumstances, added realism will actually be detrimental to fun in causing the player to become bogged down in the mundane tasks that make day to day living a chore.

So no, I don't believe realism should even vaguely be a goal. If realism happens to coincide with fun, then yes, you should pursue it, but that's because it's fun...not because it's realistic. There's nothing to be gained from realism for its own sake.
Siege Wizard wrote:That's my point of view, and that's one of the things I like about BTW, it's quite realistic in most of the processes.
And incredibly unrealistic in others. That's the thing: I never make design decisions on the basis of realism. Rather, I look for interesting gameplay mechanics, and given that I live within the consensus reality, I am often inspired by how I perceive it to work in so doing.

Seriously, I consider "realism" to be a dirty word in terms of game design. I look at your complaints about things like the way gravity works in MC, and my immediate response is "pffft...whatever man". To me, they represent harping over irrelevant points, thinking that they actually affect the way the game plays or how much fun it is. They really don't.
User avatar
Shengji
Posts: 638
Joined: Sun Jul 10, 2011 8:35 pm

Re: Minetest, a C/C++ GNU Minecraft

Post by Shengji »

Games are generally themed, they are not often entirely abstract, so the theme will include things which can be seen in the real world, but this is all just fluff over the game mechanics.

Take Thomas was Alone. In that game, water is instant death to all but one character. But the water itself could be easily replaced with spikes or thorns or bottomless pits or turning cogs or angry dogs or anything you can dream up. What's important is that it is instant death to all but one character who can float, or glide or scrape or be inedible to angry dogs their way across.

There is no need to add complex water mechanics to it, no need to make it act realistically like water would because the fact that it is water is completely irrelevant. This is one of the biggest problems with many games, they focus on the fluff and then find it difficult to make the abstract game actually fun.
7 months, 37 different border checks and counting.
Mr_Hosed
Posts: 583
Joined: Wed Sep 21, 2011 1:16 am

Re: Minetest, a C/C++ GNU Minecraft

Post by Mr_Hosed »

Siege Wizard wrote: Don't get me wrong. First thing a game must have is consistency. Nobody said the opposite. I'm just saying that, if you can make a feature more realistic keeping it consistent with the game and add some fun, why not do it?
The problem with realism in games is that the closer you are to emulating a given element of real-life, the more the differences between your approximation and real-life become glaringly obvious. As FC said, massively diminishing returns.

Edit: Forgot to actually talk about the original topic. So I checked out the site. It's an interesting project and for someone who's interested in the algorithms involved with 3D voxel games, worth a look. However, some of the mods for this thing are WAY to close to a 1 to 1 copy of features from Minecraft. Not cool :(
Post Reply