Open rusu24edward opened 1 year ago
We also have to think about how we design the agent classes. For example, we need a AmmoObservingAgent
for an AmmoAgent
to be able to observe its own ammo. This is not really ideal, and we should deal with this when thinking about the AttributeObserver.
Can't do this:
class StandardAttackAgent(AmmoObservingAgent, AttackingAgent, MovingAgent, HealthAgent, GridObservingAgent): pass
Add features for the agent to observe the attributes of the other agents in a grid-like fashion, such as health, ammunition, etc. Some of these attributes are better represented by the encoding, such as attack_range, which will never change.
It's not clear how we should deal with the situation where there are overlapping agents. The single grid observer just picks one of the encodings, and we can do the same thing for the health observer. There's not really an equivalent for multi_grid_obsever. Overlapping agents imposes partial observability be default.