Minha pergunta é esta:
Como alguém armazenaria dados de contexto global, ou seja. informações de dados mundiais, hora mundial atual, etc. em um sistema de componente de entidade?
Penso em trabalhar para criar um jogo de simulação de mundo aberto em estilo Dwarf Fortress em C ++. Criei um mecanismo de jogo no estilo de componente de entidade apenas por diversão e atualmente estou tentando descobrir como vou trabalhar em todos os recursos que eu quero. Além do jogo padrão (renderização, física, dados de componentes específicos da entidade, etc.), eu também gostaria de ter alguns dados contextuais globais aos quais todos os sistemas relevantes teriam acesso (ou seja, os dados mundiais como em que ano atualmente é , se o aquecimento global está acontecendo, qualquer coisa que seja relevante para simular um mundo). Eu pensava originalmente em criar um componente "mundial", mas isso parece inútil e difícil se muitos sistemas diferentes precisarem acessar esses dados logicamente "globais".
Faria sentido ter um componente "mundo" ou devo armazenar esses dados de outra maneira?
Também pensei em simplesmente tornar esses dados globais, dando acesso a qualquer sistema que desejasse usá-los; parece uma violação dos princípios de componente de entidade em geral, e talvez confuso por outras razões, mas achei que poderia realmente funcionar.
A outra coisa em que pensei seria realmente incorporar dados relevantes do contexto mundial diretamente nos próprios sistemas. Por exemplo, se eu tivesse um AgeSystem
"envelhecido" todas as entidades que têm um getsWeakerAsTimePasses
componente ou outros enfeites, talvez esse sistema possa armazenar dados de tempo relevantes para o mundo diretamente como dados de membros que ele usaria para calcular a passagem do tempo e quanto idade e enfraquecer as pessoas, etc. Essa terceira opção era minha menos favorita, mas algo que me ocorreu no brainstorming.
Alguém pode aconselhar?