Jump to content

A question about performance?


Bektor

Recommended Posts

This is like asking: "Why is economy so stupid? I can learn about it and make better one ON TOP of it!"

 

As of now I can only say that Minecraft fails on Server side, where there is no Multithreading (e.g: per world, which I heard might be implemented in future).

As to everything else - there are some stupid flaws (leftoverst from early code), but game like MC written in Java is probably worst part of it (GC and RAM freeing).

While saying it is bad, I personally love MC in Java so... yeah. :P

 

Anyway - you can't possibly lag whole game, unless you'd make large computational operations - which are special case so I'll skip them.

 

As to small things - you want to avoid making expensive per-tick operations and/or constant syncing. Prefere to send more small packets to update specific things, and only when it's needed, than sending everything (e.g whole player data) every tick or few.

 

I can't imagine how bad of a coder you'd have to be to actually write that laggy mod (again: not considering heavy computations).

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

One of Minecraft's biggest problems in terms of performance is that they are stuck using outdated GL, because everyone would scream if suddenly the game stops working on grandma's potato.

yes.

DRAGONMANG: "I'm Dragonmang, m8. Here me roar."

HERO: "Oh no... not. Dragonmang."

DRAGONMANG: "Roar, m8."

HERO: "Ahhh......"

And so the brave knight and Dragonmang fought on the mountaintop for many moons....

Link to comment
Share on other sites

As of now I can only say that Minecraft fails on Server side, where there is no Multithreading (e.g: per world, which I heard might be implemented in future).

 

If server side isn't able to handle multithreading, why would be the point to rent servers with huge cpu ?

Squirrel ! Squirrel ! Squirrel !

Link to comment
Share on other sites

Hi,

 

I'm currently working on a mod and now I want to now why Minecraft's performance is so bad.

So that when I know why Minecraft's performance is so bad I can maybe optimize my own mod to the maximum. ;)

 

Thx in advance.

Bektor

 

The first two advices that came to me are based on the code of the many mods I've checked:

 

- stay away from "copy&paste" code

- don't be afraid to use the stack

 

 

Z

Link to comment
Share on other sites

Thx for all the answers. ;)

 

One of Minecraft's biggest problems in terms of performance is that they are stuck using outdated GL, because everyone would scream if suddenly the game stops working on grandma's potato. Why people think Minecraft is an exception to the fact that you need at least a semi-decent PC to run games I don't know, but that's how it is.

 

This limits what they can do in terms of optimization.

What makes outdated OpenGL (I think Minecraft uses 2) so slow compared to modern OpenGL?

 

Next point: I want to implement some simple physics like TFC and a better world generator for my own dimension. How can I get a good performance beside optimizing the math behind it.

Developer of Primeval Forest.

Link to comment
Share on other sites

What makes outdated OpenGL (I think Minecraft uses 2) so slow compared to modern OpenGL?

 

GL_QUADS is bad for performance because it requires triangle computation on the CPU.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

What makes outdated OpenGL (I think Minecraft uses 2) so slow compared to modern OpenGL?

I am no expert by any means, but here goes:

In traditional OpenGL the CPU issues very very many draw calls (e.g. to draw a quad you need glBegin, then glVertex stuff, then glEnd). These are all individual native calls that need to be transferred over the (comparatively) slow path from CPU to GPU. This has to happen every frame. There are some improvements to this such as display lists but it does not change the overall concept.

Modern GL let's you actually run code on the GPU (shaders) so that you do not have to pay the expensive transfer cost for data from CPU to GPU.

This is my view on it, I am probably wrong in a lot of ways, but I think that's the general concept.

Well, the data will still be transfererd from the CPU to the GPU. But the json files from 1.8 just feel to me like bad shaders from OpenGL 3.3+. xD

And I'm not an expert in that stuff, too. Just started once with OpenGL 3.3 and 4.1 programming, but never did that much.... (currently playing around with the new Vulkan API and C++14).

But I know for sure that OpenGL 3.3 supports texture compression and I don't think OpenGL or at least Mojang does it, because otherwhise I can't explain myself how someone can fill the VRAM with 8GB of Minecraft textures while playing a mod pack and Games like Battlefront and Battlefield don't use so much VRAM and have a way better texture quality.

 

But thx for the answer.

 

 

To the next point:

Could you give me an example of how to do multi-threading in MC. I've got really no idea of how to implement that in Minecraft.... (well, for me it sometimes is just easier to write my own 2D game then modding MC, because on my own Games I know every single line of code and what it does and how :P )

 

Could you please explain the last thing again? I didn't understand it. :( [kannst ja auch in Deutsch erklären wenn du willst ;) ]

 

Bektor

Developer of Primeval Forest.

Link to comment
Share on other sites

Doing Multithreading in Minecraft is difficult, since most of Minecraft is not threadsafe in any way. For example you cannot just put blocks in the world from a 2nd thread or you will risk crashes and very hard to track bugs.

But what you could do is e.g. generate a maze in a 2nd thread and then place the blocks in the main thread based on the already generated maze data.

 

How to do this depends on exactly which task you are trying to do. Some tasks are better done in just one thread, some can be very easily split up into as many threads as you want (keywords: divide and conquer, ForkJoin). How all this works is much more than fits into a forum post here though.

Ok, thx. ;)

Developer of Primeval Forest.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.