I spent last weekend familiarizing myself with Unity’s new ECS system, aka DOTS. ECS (which stands for “Entity-Component-System”) is an increasingly popular structure for game development. Without going into a lot of technical details, the new system is similar to Unity’s existing composition model, except moving the logic out of the components and into separate system classes.
Conceptually, it doesn’t seem that different, but practically there are a lot of changes. The changes are for a good reason: their new system should have better per-thread performance because the data that the systems operate on will be grouped together in memory and it will be much easier for developers to create thread-safe game logic. Threading is extremely difficult to do correctly and giving developers the tools to do it safely will let them dramatically increase game performance in CPU-bound situations. In a couple days I was able to get a basic demo of primitive ECS style game logic, but the lack of up-to-date documentation and obtuse error messages were a serious problem. At present, I’d consider the technology not close enough to done that I’d want to use it for anything shipping in 2020, but I plan to keep a close eye on it as eventually it will be the standard way of tackling performance critical logic.
The other thing I worked on this week was localization. Currently, the game unofficially supports a dozen languages via a pastiche of Google Translate and user-submitted corrections. The general consensus is that for those languages it’s comprehensible, but barely. One of our players, Alex, has been tirelessly working to translate the game’s entire text into German. Through this process we’ve discovered a large number of bits of text that were missing from localization. Every time I think I’ve got them all, a few more appear. Hopefully very soon I’ll post an updated version that allows German players to experience the game in their native language.