Por exemplo, saquê:
- Digamos que existem 10 quartos no mundo.
- E digamos que o mundo seja habitado por 10 entidades.
- E cada entidade possui sua própria "rotina diária", na qual executa determinadas ações na sala e também pode navegar entre as salas.
Como o jogador pode estar apenas em uma sala de cada vez, qual é uma boa maneira de acompanhar as ações que as outras entidades estão realizando em outras salas fora da tela?
- A opção mais direta é verificar cada uma das 10 entidades em cada quadro, verificar sua posição / estado e determinar se a entidade deve ou não estar na sala em que o jogador está localizado a qualquer momento. (Isso, no entanto, parece realmente muito pesado, especialmente quando o valor da sala / entidade é aumentado.)
Outra opção é acompanhar o tempo decorrido desde o início do jogo, então cada uma das entidades verifica se seu padrão se cruza com a sala em que o jogador está, e se isso verifica com o tempo se o jogador está ou não A entidade deve estar na mesma sala nesse momento específico, as entidades cujos padrões não se cruzam com a sala atual em que o jogador está localizado não fazem nada até que o jogador entre em uma sala na qual seu padrão se cruza e somente nesse ponto calcule se deve ou não eles devem renderizar. (Mas se eles interagirem com a sala, deverão sempre verificar o estado das salas que cruzam sua rota para determinar sua localização naquele momento, o que não é tão bom.)
A terceira opção a que cheguei seria, antes de mais nada, olhar apenas as rotas que cruzam a localização do jogador (como descrito anteriormente); depois, ao entrar em uma sala, verificar se o jogador está nessa sala; se não, verificar apenas o estado da sala e quanto tempo levará para avançar para a próxima sala. Por exemplo, um NPC de zelador entra na sala, verifica o estado da sala, vê que há um derramamento feito pelo jogador, calcula quanto tempo levará para limpar isso e quanto tempo levará o caminho etc. E até o mencionado é hora de entrar na próxima sala, só verificamos se o jogador está na sala. A localização exata do NPC para fins de renderização somente será calculada quando o jogador entrar na sala.
Depois de um tempo de brainstorming, cheguei à terceira opção, mas fiquei pensando se talvez haja uma maneira conhecida ou melhor de lidar com coisas como essas.