To be honest, I wouldnāt code anymore (or maybe only a little) in his situation as well. : 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.
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.
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.
ā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.
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 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
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.
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.