I'm currently making a pure DOTS game as an experimental project and I also discovered Editor Iteration Profiler. While the project is still small, I ran this profiler and saw how much time Domain Reload takes. Reload takes 5.7 seconds. I have also run the profiler to our main game project and it showed 18.5 … Continue reading Using Reflection To Help Disable Domain Reload
I'm currently making a 2D builder game prototype as a side project. This time, though, it's made with pure ECS, or at least the majority of it. I want to make the same prototype we did for Academia but with pure ECS. I thought that it really takes to build one so I can figure … Continue reading “Entity Prefab” Management
In my previous post, NativeArray.SortJob<T>() ended up running slow because it's not being Burst compiled in the PC build. I've discovered that this is a known limitation. Generic jobs that are invoked inside generic methods can't be Burst compiled. A known trick is to "mention" the jobs with concrete types so that the jobs will … Continue reading A Multithreaded Sorting Attempt
While I was making a framework of rendering sprites using Compute Buffers, I was thinking of what sorting algorithm to use to sort sprites (say render from top to bottom). I'm using a Burst compiled Quicksort in my mesh based sprite rendering system. This is already good but maybe I could do better. Since Unity … Continue reading NativeArray.SortJob() is fast… or is it?
When you lurk in the DOTS forum, you'll see guys like this who made a DOTS library that can render one million animated sprites yet still get 60fps. I have created my own DOTS sprite renderer which is good enough for our game but it can't handle a million. I got curious. So I forked … Continue reading One Million Sprites. More Than 120fps. DOTS Not Required.
I have written a little bit about how we handled modding in our game a long time ago. We encountered an issue that we just fixed in recent builds and that's what I'll talk about in this post. The Problem We originally had two ways that we handled our sprites. One uses individual images which … Continue reading Better Sprites Handling for Modding in Unity
In our game Academia, we were using this signal system before but it has a major downside: garbage. It incurs garbage whenever a value type parameter is passed (boxing) and read (unboxing) as it accepts parameters using the "object" supertype. // value here would be boxed if it's a value type like structs // or … Continue reading Signals Without Garbage
In our game Academia, we employ a multi-scene architecture. We now have hundreds of scenes that are all additively loaded at runtime to compose the whole game. Sometimes, there are fixes or new features that requires changes to all scenes. Imagine doing this manually. Load scene, apply change, save scene. Repeat to hundreds. This is … Continue reading Process All Scenes in a Folder
We released Academia in Early Access on September 2017. We were ecstatic as the game was getting positive reviews and the game turned out to be a sleeper hit that saved our fledgling game studio. But by mid 2018, we started getting negative reviews. Our overall review turned from Very Positive to Mixed. It's scary. … Continue reading Facing a Mixed Review
The concept of null is considered as the billion dollar mistake and I very much agree. The defects caused by it is even more apparent in games where state changes happen a lot. In a complex simulation game like ours, we encounter a lot of NullPointerException (NPE) that we can't trace how it happened. It's … Continue reading Forcing to Handle Null