Banner

TeraSaturday #9: Happy New Year

Posted by Skaldarnar, Niruandaleth on January 30, 2021

Welcome to the return of TeraSaturday, a not-so-weekly update post about all the neat stuff that has been going on in the world of Terasology! Half blog, half changelog, completely cool.

📰 Since last TeraSaturday …

The JOML-ification efforts were continued by @Michael P, @Skaldarnar and @Niruandaleth with additional reviewing and bugfixing help by @4D_enthusiast and @DarkWeird. We’re now at only a few hundred mentions of org.terasology.math.geom in engine and (omega) modules, so there’s finally a light at the end of the tunnel! 🔦

As part of the JOML-ification efforts, we adopted the primitive geometric shapes from JOML (such as AABBs or Rectangles) as JOML extensions in the new joml-ext repository. This JOML geometry package was affectionately nicknamed “jom-geom” (pronounced /ˈdʒɔm.dʒɔm/).

With JOML-ification being about 90%, in total we merged 109 engine RPs and 333 PRs on modules since December 25 👀

🎀️ Community Highlights

@Cervator enabled Omega builds on the shiny new Jenkins ✨ and @Skaldarnar adjusted the launcher to integrate these builds and make them available to everybody! Thus, with our Terasology Launcher v4.3.0, you can now download the latest Omega builds from the new source 🎉

@4D Enthusiast improved world generation and brought back rough mountains, overhangs, and much more. Below, we collected a few screenshots, but (while keeping in mind possible instabilities until the completion of JOML-ification) we encourage everybody to go check out our fancy new worlds themselves 🏞

World Generation Improvements

@Cervator worked together with @e_a and @agent_q1 on getting our telemetry setup to work. The telemetry setup mainly consists of an ELK (Elasticsearch, Logstash, Kibana) stack that allows for collecting, storing and visualizting telemetry data from Terasology game servers. Though it’s not hooked up with anything in particular yet, we are looking forward to use it with the play-test event server and see interesting visualizations at telemetry.terasology.org soon 📊

@Hajdam (with help from @DarkWeird) fixed good ol’ TeraEd for Linux and Windows. With this foundation laid, @Hajdam plans to add more functionality to TeraEd in the future, any improvement recommendations welcome.

Both, @4D Enthusiast and @DarkWeird worked on various ways to improve performance 🐢🧙‍♂️ @4D Enthusiast worked on more chunk magic, in particular rendering chunks in the far distance even before there’s enough data to render them perfectly in order to reduce the main memory consumption. The next iteration in that area will target rendering even more distant chunks (Level of Details, LOD). @DarkWeird reduced memory consumption by deflating arrays for chunk representation, migrated our benchmarks to JMH, and played around with different garbage collectors, comparing them. With these insights we will probably adjust the default settings in the launcher after some testing. Furthermore, @4D Enthusiast fixed an aging issue with chunk generation that produced NPEs and rendered some chunks invisible.

Compare JVM Garbage Collectors

Finally, @keturn dug deeper into Gradle, Kotlin, and whathever else the dwarves are doing under the surface to build our gigantuous code base 🤓🧰