A physical simulation object can be a Topic through multiple inheritance. In addition, a game can define Topic objects for abstract conversation topics that don't correspond to simulation objects; for example, a topic could be created for "the meaning of life" to allow a command such as "ask guru about meaning of life."
The key distinction between Topic objects and regular objects is that a Topic can represent an abstract, non-physical concept that isn't connected to any "physical" object in the simulation.
Topic : VocabObject
By default, we mark all topics as known to begin with, which allows discussion of any topic at any time. Some authors prefer to keep track of which topics the player character actually has reason to know about within the context of the game, making topics available for conversation only after they become known for some good reason, such as another character mentioning them in conversation.
Note that, as with Thing.isKnown, this is only the DEFAULT 'known' property. Each actor can have its own separate 'known' property by defining the actor's 'knownProp' to a different property name.