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.

📩 GSoC Student Applications arrived!

Over the past weeks, almost 30 students joined our Discord Server, introducing themselves and voicing interest in Google's Summer of Code (GSoC). With a round dozen of these students we enjoyed a lot of Q&A, discussion rounds and draft proposal review back-and-forth - basically setting our Discord on fire 🔥 We're proud to announce that we received 14 student applications for projects within our community in the context of this year's GSoC 💚

📰 Since last TeraSaturday ...

Many thanks to our contributors since last TeraSaturday #12: @4Denthusiast, @ahv15, @antag99, @APsenpai42, @BenjaminAmos, @DarkWeird, @jdrueckert, @keturn, @mahela97, @pollend, @ryuk156, @skaldarnar, @tolziplohu 👏

First of all, we doubled up on UI this week 🖥️🖥️ when updating from TeraNUI 1.5 to 3.0! You could also say, our user interface got 3D now, but maybe that's too much bad jokes for one blog post 🤪 While talking about UI, let's also mention that @DarkWeird migrated PlayerConfig to leverage AutoConfig.

With our documentation efforts focusing on making it easier for module developers to adjust documentation as part of a PR, we also continuously try to make it easier for our contributors to write blog posts. In this context, @skaldarnar fixed the devcontainer setup for our website, such that in addition to using GitPod, blog posts can also be authored using the Visual Studio Code Remote - Containers extension.

Amongst all those nice tooling improvements, sometimes we also have to say goodbye to some tools: This time we're seeing JCenter off into the sunset by removing it from all our build configurations. So the tool is dead, long live the tool! - And may the maven be always in our favor ✊

In other news, @4Denthusiast conducted an extensive refactoring of chunk-related classes affecting pretty much every module with world-generation aspects. Furthermore, @DarkWeird, @pollend and @BenjaminAmos continued to work on dependency injection (DI) for gestalt. Hopefully, later this weekend, we'll see a new gestalt release that includes the changes, allowing TeraNUI and DestinationSol to consume them.

With a change to our gradle setup, it's now possible to run the speedy unit tests and the rather slow and sometimes shaky integration tests (using ModuleTestingEnvironment or TerasologyTestingEnvironment) separately locally. As part of the preparation work for that, integration tests got an MteTest or TteTest tag to allow filtering for them. In addition, failing tests in SimpleFarming and Pathfinding were fixed, while others were removed or disabled. Ideally, both, unit and integration tests should succeed and be reliable, however as we've seen integration tests fail sporadically, for instance due to race conditions or timeouts, the trust in them is somewhat limited. The separation allows PR authors to differentiate a failure in the trustworthy unit test, indicating that their PR broke something, from a failure in the less trustworthy integration tests. We encourage everybody to investigate any failure regardless of its origin, but in urgent cases, an integration test failure might be accepted to get a fix in in time, for instance for a playtest or release candidate. Please note, that the integration of this separation into the CI is still work in progress - we'll keep you posted 📯

Last but not least, we'd like to send out a warm welcome and thank you to our new contributors and GSoC applicants @tolziplohu and @mahela97 who made their debuts in our community by fixing a bug allowing to place blocks inside the player and allowing players to keep jumping 🦘 Furthermore, there were some gameplay improvements with @ahv15 randomizing the player respawn location in LightAndShadow and first-time contributor @APsenpai improving the user experience in JoshariasSurvival by increasing thirst replenishment when drinking with a woodenCup.

In total, we merged 34 engine PRs and 58 PRs on modules.

🎀️ Community Highlights

✨ Prettifying Repositories and Documentation

After cleaning up our main documentation in the engine wiki, we're continuing the documentation efforts outside of the engine. Until we have enough capacity to introduce some more complex tool like OrchidDocs, we'll leverage the light and less intrusive docsify. Have a look at the fancy new docs of our first migration candidate Health: https://terasology.github.io/Health

While in the artistic zone due to creating neat module banner images, @skaldarnar also for our module/repository archive.

Visualizations in Kibana based on Log Data

✒️ Breaking Down Proposals and Feature Tasks

@keturn wrote an incredibly awesome forum post as guidance for our prospective students regarding considerations for project time management and planning. This post includes all the nitty-gritty details that you are likely to not consider when you're entering the complex world of software development and projects.

To only mention a few examples: collecting stakeholder feedback when designing software, doing proper research including state of the art work in- and outside of a project, planning with a bunch of iteration cycles, and collaborating with others by reviewing, answering questions or acting as a stakeholder yourself.

📊 Kibana Dashboard

GSoC applicant @Pushpesh started playing around with visualizations in Kibana based on log data we collect on a voluntary basis. The student applied for a project targeting log data analysis to help us gain information about the adoption of our gameplays and modules as well as about frequent issues and instable modules. With DPP and GDPR, there's two more big topics to work out before we can move to a consent-based default log collection.

Visualizations in Kibana based on Log Data