Hey there! This week we continued to work on the implementation of the User Interface and started to complete the Entity Rendering.

We’re slowly working towards making the game finally playable again. The missing features are implemented step by step, and only a handful of them are left. Very soon, we (and later you) will be able to enter the new world of Bio Colonies for the first time.

Swarm Rendering

Whenever microbes are moving, they act as a swarm. You usually send out quite a few at once, so we group them and they move together. So far, we’ve not been able to see swarms in the game. This has now changed:

A swarm of microbes moving on the terrain.

Swarms are visualized as many small microbes moving and crawling together over the terrain. The color of the microbes will represent the team, which is white in this case. The shape of the microbes represents the type of microbes in the swarm. For the image, we used the basic Worker Microbes, which are just a translucent circle with a circular core.

Note, that this is, of course, the first version and we’ll definitely improve the visuals later on.

User Interface Progress

As mentioned in Research Log #11, we completely redid the design of the User Interface and are eager to get it implemented.
The implementation of a good-looking User Interface done within Unity is very difficult to nearly impossible, as Unity’s current UI system isn’t really good for complex views.

To cope with this issue, we originally planned to write a simple layout system ourselves. But, we quickly realized that writing a system like this is a hell lot of work, and we want to get Bio Colonies done sometime soon!

After some research, we found MarkLight, a layout and styling framework for Unity. It’s available on the Asset Store for free. If you have experience with HTML and WPF (which we actually have), the processes used seem familiar and, combined with some patience, many features are possible.

The tutorial is pretty good and explains all major things, however, additional functionality is a hard task to implement. We also had to learn it the hard way!
The documentation seems to contain outdated/wrong information and the package has been abandoned about two years ago! It’s one of those cases where trying to understand the source code is easier than getting information on the internet!
However, it’s still better than nothing!

Nevertheless, we made some progress, check it out below:

A vertically centered full-screen overlay displaying data from the team's statistics.
The Victory Screen of Bio Colonies displaying raw data from the team’s statistics.
A vertically-centered full-screen overlay pause screen with the usual options.
The Pause Screen of Bio Colonies.

Model Imports for Cells & Titans

In Research Log #04, we briefly talked about the loading of models at runtime. We decided to go with a fairly recent format called glTF 2.0. Blender just recently added support for it in their beta builds and the support is slowly improving.

However, as we’re currently making sure that every entity is displayed correctly, we noticed a problem. The library we were using worked fine for basic models, but as we started to add materials to them, we realized that the library had quite a few limitations which are not that easy to fix. Additionally, the importer seems to no longer receive any updates!

A 3D model of a cell with 3 different materials applied to different sections.
A simple test model in Blender of a Cell to test out the capabilities of the importer.

While there is also an official library, it is still in development and not quite ready for production use. It’s currently also using an old version of Unity. As we’re working with the most recent builds of Unity, this creates compatibility problems.

So, we are writing our own. Thanks to the Khronos Group’s great documentation on GitHub, implementing the format on our C# side was little to no problem. We only focuse on the subset of the format that we need for our game and were able to specifically implement the importer as we wanted. So it doesn’t support the full format (yet), but the basics are there.

Now we’re focusing on translating the format to Unity objects. This process will happen during the load time of the game and in the end, will make it possible to dynamically load custom models into the game.

Also, once this importer is finished, we’ll most likely open source it on GitLab. Keep in mind that making something ready for the public takes a while, so stay tuned for more information on that.

Next Steps

In the next week we’ll finish up the model importer for internal usage and continue work on the User Interface. We’ll also start fleshing out the first batch of content for the game. It’s getting very interesting, so stay tuned for more!

See ya next week!