A melhor maneira de carregar seu software e ambiente é colocá-lo, ou um sistema idêntico, sob carga artificial. Se o jogo puder ser roteirizado, faça-o e faça com que muitos jogadores com scripts entrem e joguem a partir de uma máquina vizinha, aumentando lentamente o número de jogadores artificiais até que os tempos de resposta voltem a níveis que não são aceitáveis. Isso fornecerá uma indicação do número máximo de usuários para os quais você pode fornecer um bom desempenho a qualquer momento.
Depois de ter o ambiente em um estado de carga alta, observe as métricas relevantes do sistema para ver onde está o afunilamento (geralmente um componente sofre antes do restante) - se houver uma maneira de otimizar isso, repita o teste. A primeira coisa a verificar é se o principal fator limitante é E / S de disco, RAM ou CPU e, em seguida, associar o que está acontecendo para ver se o culpado é algo que você pode otimizar com facilidade (talvez alguma parte de seu código seja ineficiente e mastigando muito tempo de CPU (em cujo caso a criação de perfil pode sugerir pontos apertados que podem ser otimizados), talvez você fique sem RAM e comece a trocar antes que I / O ou CPU se tornem um grande problema sozinhos RAM ou reduzir a quantidade necessária para cada processo pode ajudar), talvez a atividade do banco de dados esteja saturando a largura de banda de E / S e assim por diante.
Pode não haver maneira de otimizar o gargalo principal em uma única máquina que vale a pena - então você precisa começar a pensar em usar várias máquinas (você deve fazer planos para isso de qualquer maneira, caso sua popularidade cresça mais rápido que esperado ou para fins de failover (para manter seu aplicativo ativo se um servidor físico desenvolver uma falha grave).
Sem algumas análises, é difícil dar respostas mais específicas do que isso, já que as métricas de desempenho de um aplicativo podem diferir muito do seguinte.