int can be anything: points, health, currency, time, etc. We often make mistakes using one
int where another
int was supposed to go. Imagine a function
DoDamage(int, int). It’s not obvious what the parameters mean. Today we’ll use the C# type system to make the code much more readable and less error-prone!
A couple years ago, I wrote an article showing how to empower game designers with the ability to write simple formulas like
PlayerLevel*100+100. These are much more useful than just constants and don’t require any of the complexity of a real programming language. Today we’ll bring it into the Burst-compatible world and also improve its ability to handle more complex formulas.
Many algorithms get used over and over: searching, sorting, filtering, etc. C# makes these available with LINQ and functions like
Array.Sort, but these can’t be compiled by Burst because interfaces and delegates aren’t supported. So how do we implement these generic algorithms to avoid re-writing them over and over? Today we’ll explore one technique to solve this problem. Read on to learn how!
Today we continue stealing
float bits, but in an entirely different way this time. We’ll end up with the ability to switch between
float and 21-bit integer modes and to know which mode we’re in. We can do all of this without using any more than four bytes just by exploiting a little knowledge of the
float data format. Read on to learn how!
Today we’ll make a new type that addresses some of the deficiencies in
Nullable<T>. We’ll end up with a good tool for dealing with operations that may or may not produce a result or take a parameter, even in Burst-compiled code. Read on to see how it works!
With a bit of understanding and some C# trickery, we can exploit how
float works to cram in a few more bits and make some big performance gains. Today we’ll see how to steal some of the bits from a
A reader recently asked what the fastest way to take an absolute value was. It occurred to me that there are a lot of ways to do this in Unity! So today we’ll try them all out and see which is best.
Unity’s Native Collections package, currently in Preview, provides a hash map but not a hash set. Today we’ll supplement
NativeHashMap<TKey, TValue> with our own
NativeHashSet<T> as part of the NativeCollections repo. Read on for performance results and to see how to use it!
What do you do when your code finds a bug? We write code to check for null references and out-of-bounds indexes all the time. What’s the proper way to respond when we find a problem? Today we’ll look at two options and see how they pan out.