Announcing 'props': an in-moo, non-scarce currency

4 views
Skip to first unread message

Adam Bliss

unread,
May 17, 2008, 3:59:45 AM5/17/08
to ecma...@googlegroups.com
I need to write up a lot more detail about this later. But for now, a
brief note on 'props', the new non-scarce currency in my Avatar
universe of the Moo:

Numerical amounts of props are sent from one avatar to another and
accumulate in each of the possible n^2 buckets. There is no limit on
the number of props one avatar can award another, but beware of
diluting your props since that may make them less valuable. In order
for props to be awarded,

A. An object must exist with a public function that awards props.

B. Some spawned player, the 'receiver', must call that function using
Avatar's new 'act' command. This wraps the function in appropriate
security (I hope), and provides propsFrom() as a fifth argument.

C. The function, when called, must use the propsFrom() function to
award props from some player, the 'giver', to the receiver.

D. The 'giver' must 'depute' the object in order to authorize it to
distribute eir props. You have ownership of your avatar's 'deputies'
property, so this can work however you want, but a simple
implementation is provided.

The syntax for act is similar to the outer moo syntax. As a simple
exmaple, I put up a graffiti wall in the lobby. It should give each
of you 1 props if you write on it. Here's how I did it:

1. Create a new object anywhere under Avatar. Right now putting it in
the lobby is safest; I haven't decided where I'm going to allow random
objects, so if you put it somewhere else I may move it later. I mood
'Avatar.rooms.lobby:create' with data 'graffitiWall'.

2. Give the object a public function which uses its fifth argument to
award props. I mood 'Avatar.rooms.lobby.graffitiWall:set' and filled
in the code for my function, '_write'. Note that the name of the
function needs to start with an underscore for it to be public.

3. Depute the object. I mood 'Avatar.avatars.abliss.deputies:depute'
with data 'rooms.lobby.graffitiWall'.

4. Now, anybody can write on the wall (once only) and receive 1 props
from me. To test it, I mood 'Avatar:act' with data
'rooms.lobby.graffitiWall:write Killroy was here!'. Now there are 1
props in the abliss->abliss bucket.

I'm sure this has bugs and probably security flaws, and it needs
comments and proper docs, but that will all come later. Comments
welcome.

--abliss

Reply all
Reply to author
Forward
0 new messages