November 2000
- Walking Philip Loguinov, Draymoor
- MUD-Dev digest, Vol 1 #231 - 4 msgs Dr. Cat
- MUD-Dev digest, Vol 1 #231 - 4 msgs J C Lawrence
- MUD-Dev digest, Vol 1 #231 - 4 msgs Koster, Raph
- Atomic functions Felix A. Croes
A few years ago, I posted to this list about my idea for atomic
functions,
http://www.kanga.nu/archives/MUD-Dev-L/1998Q2/msg00256.php
I have now implemented them in my server, and this posting concerns
that implementation and the effects of atomic functions on MUDs.
An atomic function is a function which either completes entirely, or
not at all. An error in an atomic function rolls back changes made
by that function.
object environment;
atomic void move(object destination)
{
environment = destination;
destination->enter_inventory(this_object());
}
The move function above makes two changes. First, it changes the
environment of the current object. Second, it places the current
object in the inventory of the destination object. However, the
second step could fail because, for instance, there is no room in
the inventory of the destination object. Making the function atomic
ensures that if the second step fails, the first step "never happened."
There will still be an error to deal with, but at least that error has
not left the object in an inconsistent state, with an environment
which does not contain it.
The server requirements for atomic functions are very similar to those
for the C&C thread model. The server must have its own internal
virtual machine; VM threads must be finite in duration, and must run
sequentially.
In my implementation, I made use of "data planes." The base plane is
the normal dataspace in which values are created, destroyed, modified,
and so on. On entering an atomic function, a higher plane is created
which is initially empty. Thereafter, each value which is modified is
lifted to the higher plane, which means that the previous value is
backed up. On a normal exit from the atomic function, the backups are
discarded and the values are committed to the lower plane. If an error
occurs, the higher plane is discarded and the backups are restored.
Comparisions with an earlier version of the server, in which atomic
functions had not yet been implemented, indicate that the
administrative overhead -- discovering if a value is on a plane lower
than the current one -- is negligible; this means that non-atomic
functions are equally fast in both versions of the server. There is
some overhead for creating and removing data planes, but it is minor;
atomic functions which make no changes to data are almost as fast as
the non-atomic equivalents. The significant cost is in backing up
values that are modified, and in later committing or discarding the
changes. Since checking the plane of a value is so cheap, the current
implementation tries to back up as little as possible each time a
value from a lower plane is modified.
Implementing atomic functions took me about 6 months, spread out over
a year. An implementation in a completely new server would probably
take a smaller effort.
The effect of atomic functions on developing MUDs is profound. My
guess is that future MUDs run on my server will be executing code
atomically half of the time. One MUD, Castle Marrach, is already
extensively using atomic functions to preserve consistency of the
database. In my own thinking, atomic functions have shifted from
"useful" to "invaluable." Of course, bug-free MUDs will not need it. :-)
A version of my server with atomic functions is available here:
ftp://ftp.dworkin.nl/pub/dgd/dgd-1.1.121.tar.gz
Regards,
Felix Croes - Atomic functions Ben
- Atomic functions Christopher Allen
- Atomic functions Ben
- Atomic functions Felix A. Croes
- Atomic functions KevinL
- Atomic functions Felix A. Croes
- Atomic functions KevinL
- Atomic functions KevinL
- Mud Dev FAQ part II Marian Griffith
- Walking Robert Zubek
- Opinions (even harsh) on Castle Marrach by Skotos? Christopher Allen
- Articles & Columns at Skotos Christopher Allen
- skotos David Zimet
- skotos Christopher Allen
- "An essay on d00dism and the MMORPG" Koster, Raph
- "An essay on d00dism and the MMORPG" Marian Griffith
- "An essay on d00dism and the MMORPG" birgit.schulte@philips.com
- "An essay on d00dism and the MMORPG" Norman Short
- "An essay on d00dism and the MMORPG" Jeff Freeman
- "An essay on d00dism and the MMORPG" gmiller@classic-games.com
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" Lars Duening
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" Lars Duening
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" Lars Duening
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" Vincent Archer
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" Paul Schwanz - Enterprise Services
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" Vincent Archer
- "An essay on d00dism and the MMORPG" Peter
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" Vincent Archer
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" KevinL
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" KevinL
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" Xuri
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" KevinL
- "An essay on d00dism and the MMORPG" Rhys
- "An essay on d00dism and the MMORPG" Justin Rogers
- "An essay on d00dism and the MMORPG" Ted Milker
- "An essay on d00dism and the MMORPG" Steve {Bloo} Daniels
- "An essay on d00dism and the MMORPG" Zak Jarvis
- "An essay on d00dism and the MMORPG" Patrick Dughi
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" Madrona Tree
- "An essay on d00dism and the MMORPG" Hans-Henrik Staerfeldt
- "An essay on d00dism and the MMORPG" Madrona Tree
- "An essay on d00dism and the MMORPG" Michael Tresca
- "An essay on d00dism and the MMORPG" Jeff Freeman
- "An essay on d00dism and the MMORPG" Jon Lambert
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" |Eric|
- "An essay on d00dism and the MMORPG" Miroslav Silovic
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" Corey Crawford
- "An essay on d00dism and the MMORPG" ghovs@ghovs.moo.ca
- "An essay on d00dism and the MMORPG" Corey Crawford
- "An essay on d00dism and the MMORPG" Marian Griffith
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" Richard Tew
- "An essay on d00dism and the MMORPG" Chris Gray
- "An essay on d00dism and the MMORPG" Steve {Bloo} Daniels
- "An essay on d00dism and the MMORPG" Richard Tew
- "An essay on d00dism and the MMORPG" msew
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" the_logos@www.achaea.com
- "An essay on d00dism and the MMORPG" geoffrey@yorku.ca
- "An essay on d00dism and the MMORPG" John Buehler
- "An essay on d00dism and the MMORPG" the_logos@www.achaea.com
- "An essay on d00dism and the MMORPG" Geoffrey@yorku.ca
- "An essay on d00dism and the MMORPG" Vincent Archer
- "An essay on d00dism and the MMORPG" Jason Belhumeur
- "An essay on d00dism and the MMORPG" Val Trullinger
- "An essay on d00dism and the MMORPG" Lee Sheldon
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" Robert Zubek
- "An essay on d00dism and the MMORPG" Eric Rhea
- "An essay on d00dism and the MMORPG" Wells, Thomas
- "An essay on d00dism and the MMORPG" Travis Casey
- "An essay on d00dism and the MMORPG" Richard Tew
- "An essay on d00dism and the MMORPG" Koster, Raph
- "Virtual" What? Dave Rickey
- Object Models Ben
- Object Models J C Lawrence
- Object Models Dmitri Zagidulin
- Object Models KevinL
- Object Models Tony Wooster
- Object Models david.l.smith@home.com
- Object Models KevinL
- Object Models Gavin Doughtie
- Object Models John Robert Arras
- Object Models KevinL
- Object Models Bruce
- Object Models Ben Chambers
- Object Models Bruce
- Object Models KevinL
- Object Models Gavin Doughtie
- Object Models KevinL
- Object Models Travis Casey
- Object Models John Buehler
- Object Models Travis Casey
- Object Models John Buehler
- Object Models Chris Gray
- Object Models John Buehler
- Object Models Chris Gray
- Object Models olag@ifi.uio.no
- Object Models Miroslav Silovic
- Object Models Joe Andrieu
- Object Models John Buehler
- Object Models Miroslav Silovic
- Object Models Miroslav Silovic
- Object Models John Buehler
- Object Models Miroslav Silovic
- Object Models KevinL
- Object Models John Buehler
- Object Models Miroslav Silovic
- Object Models John Buehler
- Object Models Miroslav Silovic
- Object Models Bruce
- Object Models John Buehler
- Object Models Bruce
- Object Models John Buehler
- Object Models Phillip Lenhardt
- Object Models John Buehler
- Object Models olag@ifi.uio.no
- Object Models Travis Casey
- Object Models Miroslav Silovic
- Object Models John Buehler
- Object Models msew
- Object Models Russ Lewis
- Object Models John Buehler
- Object Models Phillip Lenhardt
- Object Models Travis Nixon
- Object Models John Buehler
- Object Models msew
- Object Models Andy
- Object Models Christopher Allen
- Object Models Chris Gray
- Object Models Travis Casey
- Object Models Marc Bowden
- Object Models Miroslav Silovic
- Object Models John Buehler
- Object Models Miroslav Silovic
- Object Models John Buehler
- Object Models Bruce
- Object Models John Buehler
- ADMIN: Lost posts J C Lawrence
- Multiple Inheritance (was: Object Models) Bruce
- Fanfic (Or: Why we can't all get along) Brian 'Psychochild' Green
- Fanfic (Or: Why we can't all get along) John Buehler
- Participatory Content (was Opinions (even harsh) on Castle Marrach by Skotos?) Christopher Allen
- Object Models (OO 101) Gavin Doughtie
- Consistent Characters (Was Remote client connection) John W Pierce
- Consistent Characters (Was Remote client connection) Marian Griffith
- (no subject) John Buehler
- (no subject) Mordengaard
- (no subject) John Buehler
- (no subject) Marian Griffith
- (no subject) John Buehler
- (no subject) John Buehler
- (no subject) KevinL
- (no subject) John Buehler
- (no subject) Joe Andrieu
- (no subject) Bruce
- (no subject) John Buehler
- (no subject) KevinL
- (no subject) John Buehler
- (no subject) KevinL
- (no subject) Dan Merillat
- (no subject) John Buehler
- (no subject) Brian 'Psychochild' Green
- facist marketers / content controllers msew
- facist marketers / content controllers Dave Rickey
- And the lines blur between rl and games!!! msew
- "gossip" Josh Rollyson {dracus}
- Official announce of nevrax.org www site Vincent Archer
- Intersection of Fanfic & Participatory Content Christopher Allen
- A list of Content Creation Eric Rhea
- Refactoring (was Object Models) Gavin Doughtie
- PDA-esque devices used in gaming |Eric|
- Weather and Multiple Planets Greg Mitchell
- Weather and Multiple Planets rayzam
- Interesting EQ rant (very long quote) Brian 'Psychochild' Green
- Interesting EQ rant (very long quote) Vincent Archer
- Interesting EQ rant (very long quote) Lee Sheldon
- Interesting EQ rant (very long quote) Koster, Raph
- Interesting EQ rant (very long quote) rayzam
- Interesting EQ rant (very long quote) Travis Nixon
- Interesting EQ rant (very long quote) Matthew Mihaly
- Interesting EQ rant (very long quote) McQuaid, Brad
- Interesting EQ rant (very long quote) Travis Nixon
- Interesting EQ rant (very long quote) rayzam
- Interesting EQ rant (very long quote) Matthew Mihaly
- Interesting EQ rant (very long quote) Davian
- Interesting EQ rant (very long quote) Dave Rickey
- Interesting EQ rant (very long quote) Matthew Mihaly
- Interesting EQ rant (very long quote) Dave Rickey
- Interesting EQ rant (very long quote) Lee Sheldon
- Interesting EQ rant (very long quote) Lee Sheldon
- Interesting EQ rant (very long quote) McQuaid, Brad
- Interesting EQ rant (very long quote) Lee Sheldon
- Interesting EQ rant (very long quote) Madrona Tree
- Interesting EQ rant (very long quote) Lee Sheldon
- Interesting EQ rant (very long quote) msew
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Phillip Lenhardt
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Justin Hooper
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Travis Nixon
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Dave Rickey
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) J C Lawrence
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Ananda Dawnsinger
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Ananda Dawnsinger
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Marian Griffith
- Interesting EQ rant (very long quote) Tamzen Cannoy
- Interesting EQ rant (very long quote) Timothy Dang
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) msew
- Interesting EQ rant (very long quote) Travis Nixon
- Interesting EQ rant (very long quote) Nathan F.Yospe
- Interesting EQ rant (very long quote) Phillip Lenhardt
- Interesting EQ rant (very long quote) Justin Hooper
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Travis Casey
- Interesting EQ rant (very long quote) Justin Hooper
- Interesting EQ rant (very long quote) Travis Casey
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Madrona Tree
- Interesting EQ rant (very long quote) Jeff Freeman
- Interesting EQ rant (very long quote) rayzam
- Interesting EQ rant (very long quote) Jeff Freeman
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Koster, Raph
- Interesting EQ rant (very long quote) Jeff Freeman
- Interesting EQ rant (very long quote) Klyde Beattie
- Interesting EQ rant (very long quote) Travis Nixon
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Hulbert, Leland
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Vincent Archer
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Vincent Archer
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Jeff Freeman
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Madrona Tree
- Interesting EQ rant (very long quote) Daniel.Harman@barclayscapital.com
- Interesting EQ rant (very long quote) Madrona Tree
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Justin Hooper
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Willowreed@aol.com
- Interesting EQ rant (very long quote) Willowreed@aol.com
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) J C Lawrence
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) msew
- Interesting EQ rant (very long quote) Dave Rickey
- Interesting EQ rant (very long quote) J C Lawrence
- Interesting EQ rant (very long quote) J C Lawrence
- Interesting EQ rant (very long quote) Zak Jarvis
- Interesting EQ rant (very long quote) Hulbert, Leland
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Jeff Freeman
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Jeff Freeman
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) J. Coleman
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Travis Nixon
- Interesting EQ rant (very long quote) msew
- Interesting EQ rant (very long quote) Chris Lloyd
- Interesting EQ rant (very long quote) msew
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Chris Lloyd
- Interesting EQ rant (very long quote) Travis Nixon
- Interesting EQ rant (very long quote) Marian Griffith
- Interesting EQ rant (very long quote) msew
- Interesting EQ rant (very long quote) Jon Lambert
- Interesting EQ rant (very long quote) Koster, Raph
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Chris Lloyd
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Daniel.Harman@barclayscapital.com
- Interesting EQ rant (very long quote) Dan Shiovitz
- Interesting EQ rant (very long quote) shren
- Interesting EQ rant (very long quote) Dave Rickey
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) shren
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Travis Casey
- Interesting EQ rant (very long quote) the_logos@www.achaea.com
- Interesting EQ rant (very long quote) Travis Casey
- Interesting EQ rant (very long quote) Vincent Archer
- Interesting EQ rant (very long quote) twm139@its.to
- Interesting EQ rant (very long quote) Vincent Archer
- Interesting EQ rant (very long quote) Travis Nixon
- Interesting EQ rant (very long quote) Vincent Archer
- Interesting EQ rant (very long quote) Timothy Dang
- Interesting EQ rant (very long quote) Michael Tresca
- Interesting EQ rant (very long quote) Justin Hooper
- Interesting EQ rant (very long quote) Holly Sommer
- Interesting EQ rant (very long quote) Marian Griffith
- Interesting EQ rant (very long quote) msew
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Travis Casey
- Interesting EQ rant (very long quote) Daniel.Harman@barclayscapital.com
- Interesting EQ rant (very long quote) Joe Andrieu
- Interesting EQ rant (very long quote) S. Patrick Gallaty
- Interesting EQ rant (very long quote) Daniel.Harman@barclayscapital.com
- Interesting EQ rant (very long quote) Brian 'Psychochild' Green
- Interesting EQ rant (very long quote) Zak Jarvis
- Interesting EQ rant (very long quote) John Vanderbeck
- Interesting EQ rant (very long quote) Matthew Mihaly
- Interesting EQ rant (very long quote) Vincent Archer
- Interesting EQ rant (very long quote) McQuaid, Brad
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Brian 'Psychochild' Green
- Interesting EQ rant (very long quote) Vincent Archer
- Interesting EQ rant (very long quote) Richard Tew
- Interesting EQ rant (very long quote) Dave Rickey
- Interesting EQ rant (very long quote) J C Lawrence
- Interesting EQ rant (very long quote) John Buehler
- Interesting EQ rant (very long quote) Jon Lambert
- Dynamic Timelines Lord Ashon
- Dynamic Timelines |Eric|
- Dynamic Timelines Bruce
- Dynamic Timelines James Thomas
- Dynamic Timelines Travis Casey
- Neopets Matthew Mihaly
- Threads Ben Chambers
- Consistent Characters Jeremy Hovance
- Consistent Characters Travis Casey