Understanding Minecraft Performance (2011)
optifog.blogspot.com
optifog.blogspot.com
Sodium in particular has some detailed javadocs for the primary optimisations, if you want to see how it works: https://github.com/jellysquid3/sodium-fabric/blob/1.16.x/dev...
During shelter-in-place I took another look at it and was totally sucked in. I absolutely love the cool thing the community has come up with. I really like the creative challenge of coming up with new designs for machines that automate away the problems that you have in the game.
Honestly, it's a real shame the devs don't encourage more automation directly. The real reason I stopped playing in the first place is that it quickly just turned into tedious _work_ to collect resources.
Another thought I had was that the spatial nature of the thinking that you are doing when you are constructing redstone circuits works really well for my brain. I wish I could leverage that side of my brain when doing programming work. I'm able to keep a lot more in my working memory when I can reference a component by it's location relative to everything else. It's hard to describe, but I really quite liked it.
Automation games. Mindustry is good too. Far and away the mod I have spent more time playing than any other video game is gregtech. I’ve moved on, but I was as far as balancing recipes for all mods in a private kitchen sink pack before I stopped.
Finally made an asymmetric clock this week (3 off, 1 on) which is powering my monster grinder (3 cycles to let them spawn, 1 cycle to flush them.)
> Honestly, it's a real shame the devs don't encourage more automation directly.
It'd be great if you could plant crops or breed animals using dispensers - it's weird that you can't when you can e.g. shear sheep with them but not feed the sheep. Those are my two main pain points currently.
have you seen Befunge [0] and/or Orca [1]?
[0] https://en.wikipedia.org/wiki/Befunge [1] https://github.com/hundredrabbits/Orca
Some farms and a good trading hall and you're set.
(Although, intriguingly, Apple Silicon runs Minecraft under Rosetta 2 much more efficiently than the i9 I was using a month ago - no fan noise, no burnt legs, lasts hours on battery, stable 60fps - despite using higher settings and without quitting everything else first. Roll on an Apple Silicon JVM.)
Also good to hear that Java edition won't be slowly faded out :)
Probably 10 more for static reflection, executors and networking.
Good engineering takes time.
For example in Linux it will always return a pointer to memory that is yet to be allocated, it is when you touch the memory for the first time that Linux via the MMU trap, then goes around and actually makes the memory segment available, by then it is too late if the system is running low on memory.
https://man7.org/linux/man-pages/man3/malloc.3.html
That is why there is such a thing as OOM daemon on Linux.
Secondly, memory leaks like those caused by double free lead to the corruption of the memory allocator, thus whatever happens depends pretty much on the implementation being used.
If more care was taken in such areas it would also perform somehow better.
Hopefully when Java joins the world of languages with automatic memory management with support for value types, these kind of issues start being only a matter of careless programming.
Java 16 will bring the experimental API for native memory by the way.