Como posso simular uma conexão de Internet ruim com alta latência, baixa largura de banda, instabilidade e perda ocasional de pacotes em um ambiente local?
Se você estiver no Windows, tente o SoftPerfect Connection Emulator . É basicamente um driver que se injeta entre o aplicativo e a camada de rede (semelhante ao Wireshark / WinPCAP) para a NIC selecionada e pode simular largura de banda, latência, perda de pacotes e outras coisas limitadas. A interface do usuário é simples e direta.
É um produto comercial, mas o teste permite que você faça rajadas de 30 segundos de "interferência" que devem ser boas o suficiente para você julgar se essa ferramenta faz o que você deseja.
Outra opção de plataforma cruzada é o DummyNet , que se comporta de maneira semelhante (via ipfw), mas é um pouco menos fácil de usar.
Eu gostaria de testar como a experiência do usuário funciona para alguém que não tem uma conexão tão boa com o servidor.
Eu acho que essa parte da pergunta pode ser reapresentada como "como eu lido com a latência da rede no meu aplicativo?" Uma técnica comumente usada e eficaz é o Dead Reckoning . O artigo vinculado explica melhor do que eu posso, mas a idéia básica é que seus clientes "simulem" onde cada entidade deve estar e o que deve estar fazendo por um algoritmo. Sempre que uma entidade se desvia desse algoritmo (por exemplo, entrada do jogador, evento do servidor etc.), ela envia uma atualização para cada cliente.