Unicode contains some 20,934 characters in the “Chinese” namespace, combining both Simplified and Traditional characters along with all kinds of other East Asian characters into one set. According to GB2312 it seems there are only about 3,666 characters forming the bulk of Simplified PRC.
For callsigns (character names) we use a restricted subset anyway that isn’t supposed to include punctuation, etc. If the number of characters is less than 4058 then each character can be expressed as a 12-bit number translated back to their original Unicode (UTF-8 or -16) characters through a simple mapping table (4058 allows for a-z, 0-9 and some special characters).
If I can get it down to 12 bits, then I can store a 5-character gamename in a single 64-bit integer. Which is kind of important :) I’d estimate about 10% of the host code expects these native 64-bit integer values to contain compressed gamenames.
Sure, we could come up with a different way to store the game names, sure, I could introduce a “gamename” type with more than 64 bits; that means re-tuning all of our older, custom, hand-tuned packet formats and message layouts, which is likely to be a significant and time consuming process.
Feels kind of weird having a 5 character callsign limit though.
Lots more research for me to do.