21 posts in this topic

I was reading the system requirements for minecraft as it is a very graphic simple game and they are high. Ok not for todays standards but I was thinking about it in this way. I played games with this type of graphics back when I had a Pentium 2 processor with much less ram etc. Games with this same type of graphics if not more. Minecraft graphics are very simple.

Even though minecrats system requirements are not demanding by todays stands jsut got me thinking if i ran games like this way back in the day with much less equipment why cant they be run today?

 

Got me thinking too even some android games have a fairly high system requirements for games. I used to play this super frog game and it atually had very nice sound and great graphics for its day ( and still decent ) and my amiga compuer specs here:
http://en.wikipedia.org/wiki/Amiga_500

Super frog game here



I see many games like this now days specially on adnroid require 1 gig of ram when back in the day I only had like 5 or 9 megs of ram on my Amiga computer. So games today like minecraft and simple android games require so much more resources today for basically the samd graphics back then. Maybe I am msising something but just does not make sense.

Share this post


Link to post
Share on other sites

You know what?

I'd like to know too pls.

Share this post


Link to post
Share on other sites

Because Java is a giant POS.

11 people like this

Share this post


Link to post
Share on other sites

Because Java is a giant POS.

lol

Share this post


Link to post
Share on other sites

I don't think the requirements are strictly for the graphics. Its just the amount of crunching needed to load all the chunks on the screen(depending on how far out you have set the distance in the settings)... Plus its java, not the most efficient language out there. My laptop for instance slows to a crawl, if you use custom texture packs. 

 

Theres just alot more than you realize..

Share this post


Link to post
Share on other sites

As said earlier the blame lies in the Java which is a resource hog. I personally find Minecraft better with the 64-bit version of Java.

Share this post


Link to post
Share on other sites

No one outside of Mojang knows exactly why Minecraft's system requirements are so high, but the most oft-fingered reason is Java. While it is true that Java is not favored for most games because it is notoriously slow for large applications (particularly due to its garbage collection), it is unlikely that it is the sole cause. I think that statm1 is right to some extent; the extensive chunk loading and processing done by the game likely makes it more resource intensive. From what I understand, Notch originally wrote this game for his own amusement, and several of his friends said they liked it so much that he decided to sell it. Therefore he originally chose Java as the programming language because it was easy. It is also possible that the hobbyist beginnings of Minecraft lead to sloppy code in core classes and an inefficient design that didn't foresee the extensive expansion the game has undergone. While the development team has probably had enough time to refactor the original code by now, it is possible that some of the original design choices have constrained its performance to some extent. Ultimately, however, Notch is probably the only person who can answer this question with a high degree of certainty.

 

Personally, I would love it if Minecraft performed better. It pegs one core of my processor most of the time when I play it, and I occasionally get lag when playing on my server. However, as poorly as it performs, it is such a fun game that I am willing to put up with it.

1 person likes this

Share this post


Link to post
Share on other sites

Minecraft is disgustingly un-optimized,

 

40% CPU utilization (I have 4.5 Ghz Quad Core)

8+ GB RAM

 

considering that Minecraft is pretty much a few dozen different block types drawn over and over, this seems a tad excessive.

Share this post


Link to post
Share on other sites

The chunk format takes up quite a large amount of RAM, other apps that work on Minecraft chunks have similar memory requirements.

It's also why drawing can be slow, it has to do visibility checks for an awful lot of data.

Share this post


Link to post
Share on other sites

Superfrog was great back in the day, along with Zool!

 

I remember playing the magazine coverdisk demos over and over...

Share this post


Link to post
Share on other sites

The chunk format takes up quite a large amount of RAM, other apps that work on Minecraft chunks have similar memory requirements.

It's also why drawing can be slow, it has to do visibility checks for an awful lot of data.

 

Case-in-point: MapCrafter. MapCrafter is an awesome program for rendering full maps from Minecraft world files. It is written in C++ and compiles to fairly efficient native code. I use it to generate maps of the ~300 MB world on my Minecraft server, and it is very resource intesive. I allow it 2 cores of my Q6600 which it pegs at 100% for about an hour to generate a detailed map from a single perspective. Each thread takes ~2 GB of RAM, so in my case it consistently uses ~4 GB of RAM.

Share this post


Link to post
Share on other sites

Amiga programmers (amazingly) did things in assembly language. The Amiga 500 only had a Motorola 68000 running at 7.16MHz (NTSC), or 7.09MHz (PAL), and 512KB (9 MB maximum) of RAM! Game developers couldn't take advantage of computing power like they can today. Most developers were forced to write in assembly and came up with some very smart routines to make a game as efficient as possible. Also note that was nothing like DirectX APIs - they had to write everything from scratch. I should mention that back then, there weren't teams of people working on a game - it would have only been a few individuals. Assembly language just isn't an option today due to how complex modern games have become (which I find stunning also).

 

My favorite Amiga game is Silkworm - it runs amazingly smoothly considering it's size (fits on an 800KB disk) and the system resources available:

 

Silkworm-2.png

 

Minecraft on the other hand is Java based. Java, like any programming language has pros (ie. portability across platforms) and cons (it's quite a high level language, although over the years, it has become more efficient). I presume the Minecraft developers chose Java mainly because of it portability and ease of use. Although like others have stated, I do think it's programmers could have done a better job - I've played many 3D games based on SDL/DirectX that run perfectly on a 10 year old computer, and whose graphics are on par or better than Minecraft's.

1 person likes this

Share this post


Link to post
Share on other sites

Ask dinnerbone, he'd know about the optimisation. Used to play on his server before mojang hired him to work on the code!

Share this post


Link to post
Share on other sites

Case-in-point: MapCrafter. MapCrafter is an awesome program for rendering full maps from Minecraft world files. It is written in C++ and compiles to fairly efficient native code. I use it to generate maps of the ~300 MB world on my Minecraft server, and it is very resource intesive. I allow it 2 cores of my Q6600 which it pegs at 100% for about an hour to generate a detailed map from a single perspective. Each thread takes ~2 GB of RAM, so in my case it consistently uses ~4 GB of RAM.

Yeah, I've had to give some map viewers 8GB+ of RAM just to show the entire world, so the main client using only around 400MB to load the surrounding area seems about right.

Share this post


Link to post
Share on other sites

Amiga programmers (amazingly) did things in assembly language. The Amiga 500 only had a Motorola 68000 running at 7.16MHz (NTSC), or 7.09MHz (PAL), and 512KB (9 MB maximum) of RAM! Game developers couldn't take advantage of computing power like they can today. Most developers were forced to write in assembly and came up with some very smart routines to make a game as efficient as possible. Also note that was nothing like DirectX APIs - they had to write everything from scratch. I should mention that back then, there weren't teams of people working on a game - it would have only been a few individuals. Assembly language just isn't an option today due to how complex modern games have become (which I find stunning also).

 

My favorite Amiga game is Silkworm - it runs amazingly smoothly considering it's size (fits on an 800KB disk) and the system resources available:

 

Silkworm-2.png

 

Minecraft on the other hand is Java based. Java, like any programming language has pros (ie. portability across platforms) and cons (it's quite a high level language, although over the years, it has become more efficient). I presume the Minecraft developers chose Java mainly because of it portability and ease of use. Although like others have stated, I do think it's programmers could have done a better job - I've played many 3D games based on SDL/DirectX that run perfectly on a 10 year old computer, and whose graphics are on par or better than Minecraft's.

I agree with almost everything you say.

 

However, surely SWIV was a superior game to Silkworm?

 

 

The gameplay starts just as the intro music is kicking in...always loved that tune!

Share this post


Link to post
Share on other sites

I'd recommend reading this, its about javascript, but the conclusions about the virtual machine and the language being designed to be safe (not necessarily fast) apply to java as well.

Also I can think of a few points that may also be an issue:

 - Java doesn't support user defined stack data types (have to go through the heap)

 - Java doesn't support dropping down into an unsafe mode to perform potentially faster operations

 - Accessing memory is very very slow, the less that is used the better. If less can't be used it should be laid out so that relevant memory should be closer together.

An example of the last point:

struct { int x; int a[1024]; } array[100];

Say I want to find the sum of all the xs in the array.
This will perform very slowly because the xs are not next to each other, they have a huge block of as in the way.

If I split up the datastructure like the following it would be much faster, as the CPU won't load the as into its cache.

struct { int x; } array1[100];
struct { int a[1024]; } array2[100];
 

2 people like this

Share this post


Link to post
Share on other sites

Java is garbage for many reasons but not because the runtime is inefficient. It's mostly the Java UI libraries being slow and inefficient giving the impression to people that everything written in Java runs like garbage but, depending on what you do, the speed can be almost indistinguishable from native code. Remember that there are many AAA games written in managed code that don't have any performance issue.

Share this post


Link to post
Share on other sites

Amiga was so ahead of its time. Could do so much more and the games where way better than what apple or pc had back then. Those who had an amiga back then would remember this.

Share this post


Link to post
Share on other sites

2 reasons:

 

1) Java - it's terrible with resource usage

2) Hobby project - so unoptimized code that has grown beyond it's original spec without review

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.