The server list was done the easy way. Get all the servers and put them on a panel and scroll it about. We'd run into problems previously and limited the number of servers you could show at a time to 256.
But this obviously isn't the best way to do it. You're only seeing about 15 servers at a time, but you're creating and building 256 of them.
Obviously not so great in terms of memory usage or performance. Especially when you consider that on a client these are all hanging around in the background. Unity isn't great at having a shitload of objects hanging around, so the more we can slim those down the better.
So the solution is a virtual scroller
. These work by only creating the items you see. When an item is scrolled out of view, it's deactivated and stored. When one comes into view, we get a stored item and put it in place. It's totally invisible to the end user - and it's what happens in pretty much every list view in Windows etc.
Demonstrated here without the mask to show you how it's working.