Modeling Memory

As I embark on a conversation system for my WIP, I’ve been browsing the extensions, including Epistemology and Aaron Reed’s “Remembering.” I’m not sure either one does exactly what I want, but since many other extensions use Epistemology, I want to make sure my own code plays nice with it. More importantly, I want to formulate a general philosophy of how memory works in the game world.

Here’s the situation:

My project has some flashbacks which are filled with objects and people that will never be accessible in the “current” timeline of the game. So instead of using Epistemology to begin with, I created a container called “your memory” which is part of the player. Perhaps this is dangerous, but so far I haven’t come up with any problems. Even “examine memory” produces a not totally unreasonable response.

The important thing about the memory is the rule for refusing to do anything with it:

[code]Before doing something when the noun is enclosed by your memory, say “There’s no [noun] here right now.” instead.

Before doing something when the second noun is enclosed by your memory, say “There’s no [second noun] here right now.” instead.[/code]

This seems to me to be a good way to cover a wide range of actions since things in memory are always in scope. Much wider than “Remembering,” which only handles examining, taking, and dropping. But is it overkill? Since there will be people in memory, it seems like give/show and verbs like that would also apply, but I’m not comfortable guessing what they all would be - especially when extensions like Conversation Framework create new verbs that would be relevant.

The next question is, if I do use an extension that requires Epistemology, what’s the best way to work the memory into it? Can I use “known but not visible” instead of “enclosed by your memory,” or add known objects to scope manually? Should I manually mark things as familiar when putting them in memory? Should I redefine “known” to include “enclosed by your memory?” And if I do tamper with the workings of Epistemology, what’s the best way to do that? Is it safe to simply redefine “known” and “unknown” after including it?

Well, the doc for the extension states:

I think of 3 different ways to handle this.

Since the extension is simple enough, copy-paste the Definition: of known into your work, and then re-create the seen/unseen and familiar/unfamiliar as a Definition: as well – that new definition would be referencing your memory container somehow. Any extensions that use Epistemology to check seen/familiar/known would work seamlessly.

But if they SET the property that you now say is a Definition, well, include Epistemology but re-define Known to be seen and/or familiar and/or in-memory-container.

Or, include Epistemology, but anything that is familiar per Epistemology should definitely be in your memory container.

Part of the problem I see is that, just by having a Known property, all objects are sort of in the same bin anyway, rendering an explicit Container object moot.

But I can’t see the fine details of your code, so I can’t be a good judge.

How do you re-define an adjective from an extension? I tried doing it in my own extension and it didn’t work:

[spoiler][code]Lost Items by Mike Ciul begins here.

Include Epistemology by Eric Eve.

Book 1 - Lost

Chapter 1 - Definition of lost

A thing can be lost.

Chapter 2 - Losing things

To lose (the item - a thing):
Remove the item from play;
Now the item is lost;

To abduct (the item - a thing) to (the prison - an object):
Now the prison holds the item;
Now the item is lost;

Chapter 3 - Finding things

To return (the item - a thing) to (the haven - an object):
Now the haven holds the item;
Now the item is not lost;

To put (the item - a thing) back on (the wearer - a person):
Now the wearer wears the item;
Now the item is not lost;

Book 2 - Basic Familiarity

[ replaces the definition of known/unknown in Epistemology ]

Definition: A thing is known if it is familiar or it is seen or it is lost.

Book 3 - Remembering lost things

After deciding the scope of the player:
Repeat with item running through lost things:
Place item in scope.

Instead of doing anything with a lost thing:
say “That’s odd. The [noun] doesn’t seem to be here anymore.”

Lost Items ends here.
[/code][/spoiler]

If I do an “epistat” on a thing that is unseen and unfamiliar, but lost, it comes up as “unknown”.

Maybe I’m confused:

Why don’t you change the verb to include [any thing] instead of [one thing]
and if the thing isn’t visible, prevent people from doing something to it?

Seems simpler than making an indepth container for items which may show up again later.

Which verb? I’d have to change them all.

I’m thinking of doing this a different way - if you look at the extension code you’ll see that it has a “lost” property instead of using a special container. But the real issue is having the correct response with every possible action.