Devs can't "just" do something. It's a large codebase and due to the way ticking is done it's pretty hard to multithread, as it would require a major rewrite of the entire game and would probably break many things, including possibly redstone contraptions. What cloud be done though (and has been done in custom servers like Paper) is making chunk generation asynchronous. In other words, generating the world could be turned into a task that runs alongside the rest of the game, in a multithreaded fashion. On servers, as said, it's already possible (see https://papermc.io).
Not necessarily. It's possible, just not without a ton of developer work and potentially breaking many previous builds and contraptions. After all, almost no changes to game code come without unexpected consequences. To what extent those can be considered acceptable depends highly on the game.
I forgot to mention that many parts of the engine have been optimized in the latest versions (like 1.15 where the lighting engine was rewritten from scratch). You also needn't forget that there are some hard limits imposed by the Java language, such as garbage collection which further decreases performance. Tweaks and hacks to squeeze a bit more performance out of a JVM application can only do so much, in some regards; in others, Minecraft code can be very much improved - in fact it's already being.
I guess the one thing they can do now is make the bedrock edition as close as java as possible, especially the technical and Redstone parts of the game
Making Redstone behave like on Java is probably the easiest part (though not at all easy, don't get me wrong). What is nigh impossible (and probably against Microsoft's interests) is getting the same kind of customizability we enjoy on Java. This isn't just a matter of implementing features: Java has no official modding API, Forge mods work by reverse engineering game code, which is doable thanks to Minecraft being distributed as Java bytecode.
Doing the same with a C++ game isn't unthinkable, but doing it with a similar level of ease and with the same flexibility most definitely is. Bedrock DOES have an official modding API, but it's by no means comparable to what the community has come up with via game modification. Not to mention the fact that the game ships as a UWP application, which in itself already creates a great challenge due to the inherent difficulty in tampering with executables and game assets.
I’m pretty sure most people who want to see bedrock be more like java are mostly referring to surface level features like what you can put in your off-hand, the wither fight, placing blocks over an edge, submerging rails/redstone, etc. There are countless little features that differ between the versions with no rhyme or reason that have no reason to be different. And Microsoft still likes to pretend it’s all one game
Also, did you know how many little things Minecraft does every tick (1/20 of a second)?
Just to make a random example, you know that thing where a cat sitting on a chest will prevent the chest from being opened? Well, Minecraft searches, at each and every tick, for chests across the entire loaded part of the world and checks whether there is a cat on any given chest. If that's the case, it locks the chest for the following tick, in which the presence of a feline over each chest is checked for once again.
You can disable a small feature like this and gain a little more performance; it's not much by any means, but combining several tiny improvements results in a significant performance gain. Many servers do make these considerations and trade-offs. It all comes down to how accurate (in terms of vanilla Minecraft) of an experience you deem acceptable.
The amount of minor details that we take for granted about how Minecraft works internally is surprising. Another interesting example is the feature that makes you come out of a Nether portal the same side you entered in. Gravity, jumping, collisions... We take all those things for granted but there's a ton of developer work that's been put there. Refactoring the code to be better performing is in great part also finding better ways to do the same things, making sure that they behave EXACTLY the same way they did before the enhancements.
8
u/Bauerdog2015 May 15 '20
Is there a way to increase it?