As vezes o C++ cria alguns problemas chatos. A idéia de uma linguagem com orientação a objetos é que cade peçado (classe/objeto) é uma entidade independente, mas que pode conter outras entidades. O problema começa quando você tem dois tipos de entidades diferentes, como NPCs e Players,q eu tem que fazer cálculos levando em conta a outra entidade, que ela no conhece. No caso do Rockbot, a classe game, possui duas listas, uma de players e outra de npcs, e cada uma destas, contém uma lista de projéteis, o problema é que cada elemento da lista precisa acessar a lista do outro tipo de elemento, para fazer verificações de colisão e proximidade. Vou ter que pensar muito bem em uma solução.