[Divunal-author] tasty paste from toxic waste

Glyph Lefkowitz glyph@twistedmatrix.com
Wed, 7 May 2003 16:44:30 -0500


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


On Tuesday, May 6, 2003, at 01:35 PM, Allen Short wrote:

> So, a few things: first, DictOf doesn't exist yet. glyph says he is
> working on that.

It's next up on my list for Divmod now.  You should be seeing it 
shortly.

> Second, storing classes seems a little... wrong. Perhaps _adapterCache 
> needs to map interface _names_
> to adapters?

No reason to change this just for a tiny bit of convenience in the 
storage layer - I can store classes just fine.  (In fact, storing 
classes affords certain optimization that just storing strings would 
not.)

> Also, there's no InterfaceFilter class; _implementorFilters apparently 
> was designed to accept anything that implements IInterfaceFilter. I 
> imagine this isn't good enough for persistence, is it?

Twisted World is dynamically typed.  It would be a ListOf(Storable) 
(which is syntax sugar for StorableList, anyway).  This assumes that 
int and str can't implement IInterfaceFilter but I really hope that is 
a safe assumption.

> Finally, how does inheritance interact with __schema__?

Ngh.  Have to check this out.  Basically I guess it should just 
aggregate the __schema__ dict, and blow up if any column declarations 
conflict.

> I see that MetaStorable takes bases into account, but can classes be 
> replaced by their subclasses within a schema? For example, 
> Thing._links is a list of Things; will it work out OK if some of them 
> are Movables?

They can be any kind of Storable.  They could be 
divmod.schemabox.Message instances, for all I care.

> Oh, and: does it matter if Movable.location is set on the class? will 
> Storable deal with an unset attribute on the instance?

Hmm... it will assume the attribute is None... so in this case, yes.  
It will work as you expect.

> Looking further ahead, I'm not sure storing room/item descriptions in 
> a normal schemamatic file is a good idea; if possible, I'd like to see 
> them loaded from a CVS-friendly format.

haaaahahahahaahahahahaahahaha. ha.

If you want that, then the object descriptions should probably be 
stored in the code.  This might not be such a bad idea - we are 
probably going to need to eliminate support for persistently storing 
tuples as description elements anyway, because "list of tuples of 
arbitrary length" is a pretty hairy datatype to specify in datamatic, 
and it's more flexible to be able to adjust the specifics of your text 
output by adjusting a method than by running an update script over a 
database.

This is pretty consistent with the worldview we've got now, I think.

> From what I can see, descriptions are going to be the most work, after 
> code; diffs and history for them will probably be important.

There is a larger issue here of how to version & checkpoint the map.  
I'm not sure where to go with that, really.

> What role will game developers play in divunal? presumably we will not
> have 'normal' characters, nor will be have near-absolute control over
> our environs ('zero-story' again). I assume some of the 'archetype'
> stuff goes here?

We play the game normally.  If you want to do something funky, create a 
stat to do it, create tools to do it, then artificially boost your stat.

However, I'd like to discourage authors from thinking too hard about 
these special characters up front.  They should, largely, be observers 
to the greater universe as the players are, and not an integral part of 
it.  Unless an author has particularly strong role-playing and writing 
skills, they should not have 1-1 parity with an archetype.  (What I 
mean by this is - tenth is a special case.)

> At the start of the game, what will motivate players to collect Stuff? 
>  presumably once they have enough, they'll be looking for more stuff 
> to maintain/complete/explain the things they do have

External direction of some sort.  Possibly, external compulsion.  If 
it's compulsion, then the collecting of Stuff should enable them to 
throw it off.

>  (o/` the more you have, the more you have to have to take care of the 
> things you have o/`)

Where is this song from?

> What's the deal with libraries? are we operating from Pratchett-like 
> L-space assumptions?

Not quite.  L-Space is just silly.  Everything in the Library has a 
reason for working the way that it does, and a great deal of conscious 
effort went into making it that way.  There is a reason that it's an 
archive where they put all this stuff, too.

> Are libraries/bookshops in gameworlds magic, or just The Library 
> itself?

To varying degrees.

The way I'd like to see this develop

> Is there any gameplay reason to check out books?

Yes.  There should even be some quests for which it is a necessity.  
This implies a "learning" system which I am far too tired to design in 
detail now, but the gist of the inspiration I've got is:

	* you need to learn how to do something
	* you APPLY the DEWEY DECIMAL SYSTEM to locate it
	* you READ the BOOK which you have recovered
	* you perform the action on a small scale (pick a padlock)
	* you READ the BOOK again
	* you perform the action on a slightly larger scale (crack a safe)
	* you RETURN the BOOK before it is OVERDUE
	* you continue performing this action repeatedly until such time as 
you fall out of practice (failing to do it for some period of time)

Also, overdue books are unhealthy for you: 
http://www.achewood.com/index.php?date=03062002

> What are the gameplay mechanics of dealing with friendlies?

YES

> what do you feed them,

food

> what do you get from them,

stuff

> how much of a time investment are they,

some

>  etc?

The questions you're asking here should be answered by a giant database 
full of different answers to them in various combinations.  The 
questions are much more important than their answers, since they define 
what the fields will be in the database :-).

The MMP game development book has a chapter by Sean Riley on his "data 
manager" design pattern.  It's relevant here - I believe his code 
examples are in python.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (Darwin)

iD8DBQE+uX5DvVGR4uSOE2wRApENAJwMZ6aoxB+yBPp80I/0qCDlrKA94gCfapTF
zHxqY7C4cEt+molvPw+8Ahk=
=odmu
-----END PGP SIGNATURE-----