Essa pergunta é um pouco complicada, mas tentarei deixar claro.
Digamos que estou criando um jogo on-line (não em escala MMO), mas que suporte o maior número possível de jogadores, em uma abordagem de servidor autorizada. Quero mundos realmente grandes com muitos inimigos simulados pela IA.
Estou ciente de algumas estratégias para economizar a CPU do servidor subdividindo o espaço e não processando o que não precisa de processamento. Já dividi o mundo por regiões, o que exigirá tempos de carregamento e pequenas transições, o que acho importante manter a qualidade da jogabilidade ao jogar localmente (sozinho ou mesmo com alguns amigos). Não espero que os jogadores estejam em mais de uma ou duas regiões.
O problema é que uma região pode se tornar bem grande e ter muitos NPCs simulando ao mesmo tempo. Como faço para lidar com isso sem afetar a experiência dos jogadores? Abordagens como um servidor por região e similares não estão na tabela.
Estou procurando principalmente estruturas de dados para conter hordas de inimigos e até NPCs pacíficos. Para finalizar a pergunta, observe que existem veículos, portanto é consideravelmente rápido viajar dentro de uma região, influenciando o "quando" para selecionar as áreas.
Respostas:
Pelo que entendi, você terá algum tipo de física rodando no seu servidor.
Nesse caso, também existem outras técnicas disponíveis para IA / física que não o particionamento espacial. Do mais ao menos óbvio:
Depois de implementar esses mecanismos, você pode decidir quanto e com que frequência precisa deles. O melhor disso é que, mais tarde, você poderá adicionar alguns servidores que poderão assumir algumas das tarefas em vez dos aplicativos clientes.
É claro que a detecção de colisão aproximada criará algumas aberrações, mas você poderá resolvê-las adicionando mais precisão de tempos em tempos.
Também sobre física, você deve dar uma olhada nas bibliotecas que suportam algum tipo de sistema GPGPU como OpenCL ou CUDA, se você tiver acesso a um servidor que também suporte.
fonte