Here's my suggestion: Have a file that contains predefined color codes, 4 differentiating colors per name. Use a simple algorithm for splitting the color nicely across the name. The client loads the name color from an offset in the spawn packet (a byte). That way, it's only a byte of data for the network to display roughly 16 bytes of color information. That's how I might have done it if I could reverse engineer with the quality you do.