Why is Minecraft bad?

Random internet people critiquing something? When did this happen!?!?

In all seriousness, sour grapes.

Those that know the work he has done over the years, from WURM initially, to crazy 4K games know the guy can code.

Also, what Archive said :slight_smile:

Does anyone know what pet projects n0tch has been working on lately? …or whether he’s still tinkering in the java space?

I’ve been reading his Twitter for the past year or so. Not making really anything and definitely not anything java related.
He’s still coding though if this tweet has any truth to it.

To be honest, I wouldn’t code anymore (or maybe only a little) in his situation as well. ::slight_smile: While in many other fields he could still be able to accomplish a lot, in case of indie gamedev his second ā€˜big’ game would need to be at least partially as good as the original, and - while we all have different views on this game - I think we can all agree that it started a new era in gaming. Due to that all of his future games would be compared to Minecraft, and I doubt this is something any hobby gamedev would want.

When it comes to Notch coding, all I can say is that his games simply work and codewise are much better than what I often see both at my current job and other games I worked/work on. :slight_smile:

To the notch topic:
I would have liked to see where 0x10c was heading to, but apparently it was canceled completely…

To the minecraft logic:
Most of the hate is pure envy I think :wink:

I played Minecraft for two whole years. One could even say I was addicted to it, though I never thought of it in that way. The lag was very occasional and it didn’t ruin the fun (taking into consideration the fact that I was playing it on a computer with 4GB of RAM and an ancient Intel graphics card). Earlier versions of Minecraft, back when Notch was the only dude working on the project, must have had a lot more performance issues (for obvious reasons).

Look at it this way: Minecraft was Notch’s toy project. He didn’t know that it would be a huge success with thousands of copies sold every week. From this, we can infer that Notch probably didn’t care much for performance and optimisation, especially since he was working with Java and he didn’t have to worry too much about memory management; he had the garbage collector to deal with that. Imagine if someone goes back in time to tell Notch that he was gonna make billions from that one game. Do you think the game would be as awesome as it is today? Of course not! If that were to happen, Notch wouldn’t have seen Minecraft as a toy project; he’d have seen it as his ticket to fame, wealth and success – what more could anyone want?

Now that he’s sold the company to Mojang and he’s sitting in a humongous pile of cash (which, admittedly, is shrinking in size at an exponential rate as we speak), what does he have to worry about? Some people abhor him while others look up to him. He’s one of the few people who can say, with full certainty, that they have achieved true success. Fedoras off to you, Notch!

Performance-wise, Minecraft is fine. Minecraft is one of the primary reasons for which budding game devs actually consider using Java for game dev. Alas, Minecraft and Runescape simply aren’t enough to influence people to use Java for game dev, and we can’t blame those people, what with all the recent AAA game engines being developed in C/C++. Java is just as capable as C/C++ in terms of graphics programming, but that’s a fact most people refuse to believe, which just goes to show how insular we humans can be sometimes. I wish we could do something to change that, JGO being the biggest Java game dev community on the Internet. Maybe one day…

I think producing a successful application and coding it well are a bit mutually exclusive. The main argument cited against mine craft’s ā€œbad codeā€ is that it doesn’t run well enough on some hardware. Sure they could spend a year improving the code (and introducing new bugs) but they could also just wait a year and CPU’s and GPU’s will just get faster anyway. You’re far better getting the application out the door than endlessly rewriting working code.

Most of the time you don’t start off with the complete idea (or finished spec) for your application. You start writing with one idea in mind and the application slowly grows into something different. Do you completely stop and rewrite the code? I don’t - if it’s working then why change it? I do think you get better code with larger teams as the code is seen by more folk but then you run into the problem that the application is designed by committee and it loses any originality. With larger teams you also get more managers and that tends to make aims more conservative as well. In a team of one I honestly wouldn’t ever look at code again once it was working.

Can’t say I’ve ever played Minecraft though.

Hi

I find this question philosophically inconsistent because ā€œbadā€ tends to be subjective and the rest of of the question tends to assume that it’s about a fact, something objective. I would rephrase the question: ā€œwhy do some developers find Minecraft bad?ā€.

Coding it well requires much more time but you win on the long term because it’s more maintainable.

As far as I know, Minecraft dropped the support of OpenGL < 2.1, it’s intentional. I don’t blame Notch. Maintaining a project benefiting on the programmable pipeline while still being able to run with the fixed pipeline isn’t trivial and is time consuming. However, I understand the end users’ frustration. Intel dropped the support of Intel HD 3000 silently by providing a broken driver under Windows 10 : sometimes it’s simply not the game developers’ fault.

I’d normally agree but of course there is the caveat that if you don’t intend to maintain it… don’t waste your time making it maintainable!

Cas :slight_smile:

ā€œCoding it wellā€ is not a do once, done forever thing. Code might start out at a certain lower level of quality when you are just trying to get things running, but the longer you have with the code the more incremental improvements will go into it. I don’t think the Minecraft devs ever made a decision to just go round randomly making the code better, they just ended up with a program that has millions of users on many different platforms and five years worth of maintenance behind it. That’s going to make a substantial difference to code quality!

I’m currently working/helping on a mod for Minecraft, and so I get to see a lot of decompiled(!) Minecraft code.
Its actually pretty nice. The worst bits are the ones where the various game systems/modules meet ech other.
And then there’s the command system…

I think I can say with 100% certainty that the command parsing system is the worst part of the entire game.
While the thing is already extremely (needlessly) complicated, it is still entirely based on String.split(" ") and a bunch of regexes.
It is, by far, one of the most outdated parts of the game.

Just my two cents…

Unfortunately time isn’t something many of us have. You just don’t know whether your app will be a success that might justify spending all those extra hours. If you have a great new application/game then personally I’d say get it out the moment it’s mostly bug free. And what if someone else releases an app that’s similar to your’s? all of a sudden your great app is now just a copy of someone else’s great app and people will just ignore it.

I can’t remember whether it was Visicalc or Lotus-1-2-3L At the time they dominated the spreadsheet market but they decided to spend a year totally rewriting the code with the aim of improving the design and making the whole app run perfectly on a 2MB PC. During that year, Excel was released with a bunch of new features. Everyone got tired of waiting for the rewrite and instead bought Excel. At the end of the year everyone was using 8MB computers anyway. Now no-one even remembers the original spreadsheet program.

In my experience the longer code lives for then the worse it gets though I’ll admit my view is tainted from working in large corporations. When an application is new, it’s maintained by the guys that originally wrote it and who fully understand it. As the original development team move to other projects the maintenance is done by contractors who have a limited understanding of the system. Also over time new features are added that don’t fit the original design of the system and these tend to be kludged into the existing framework. After 10 years it’s advisable to make some sacrificial offering before making any changes.

Coding it well requires much more time but you win on the long term because it’s more maintainable.

YAGNI

Don’t try and predict the future.
Make the code as simple as possible.
Assume the thing your working on now is the last thing you’ll ever work on.

[quote=""]
What’s wrong with String.split(…)?

Coding well…
… does not mean to require much more time
… does explicitly include simple solutions
… does not mean to predict the future
… does not mean to love or hate oop, functional programming or whatever methods there are
… is quite difficult to achieve

The philosophy of coding is that you can always refactor, you just need to know when its good enough to stop!

I would also add the next one:
… takes lots of time
Time you could spend, for example, on actually making a game instead of beautiful code. As long as the code is not completely hopeless, ā€œwrite once, refactor (maybe) laterā€ is a way to go. :slight_smile:

You are absolutely right. If I looked at the code I would no doubt think it was good. Others might not. Regardless of the code quality however, it’s pretty cool to go back and look at the thread for the game when it was in WIP, and now you can buy Minecraft toys at Target.

Code written by others ALWAYS sucks. There’s no exception! Simply because it’s text written in a language. It’s the same thing with natural language. Write a non-trivial text and give it to 10 people. You will get 11 different opinions back on why it sucks and how it can be improved. And not two of those will be alike.

Out of curiosity, how could it be done better? I imagine having the only input as a string limits your options somewhat