May 2002
- Random Resets John Robert Arras
- Random Resets Kwon Ekstrom
- Random Resets John Robert Arras
- [MLP] The use of ecology models Rayzam
- Interesting things to do (was: Player Accounts on a Non-Commercial MUD) John Buehler
- Apple WWDC? amanda@alfar.com
- Apple WWDC? Nathan F. Yospe
- Apple WWDC? Amanda Walker
- Apple WWDC? Sasha Hart
- Apple WWDC? amanda@alfar.com
- Apple WWDC? Brian Hook
- Apple WWDC? John A. Bertoglio
- Apple WWDC? Daniel.Harman@barclayscapital.com
- Apple WWDC? Matt Mihaly
- Apple WWDC? shren
- Apple WWDC? Matt Mihaly
- Apple WWDC? John A. Bertoglio
- Apple WWDC? James Edward Gray II
- Apple WWDC? Brian Hook
- Encouraging groups without grouping Brian 'Psychochild' Green
- Introduction and My solution to Powergamers, Treadmills, and Content Devaluation. Ken Raisor
- The audience is the medium. For now. John Szeder
- The audience is the medium. For now. John Buehler
- The audience is the medium. For now. Damion Schubert
- The audience is the medium. For now. Ted L. Chen
- The audience is the medium. For now. Shane Gough
- The audience is the medium. For now. Michael Tresca
- The audience is the medium. For now. Ted L. Chen
- The audience is the medium. For now. Marian Griffith
- The audience is the medium. For now. Vincent Archer
- The audience is the medium. For now. Damion Schubert
- The audience is the medium. For now. David B. Held
- The audience is the medium. For now. Ted L. Chen
- The audience is the medium. For now. Marian Griffith
- The audience is the medium. For now. F. Randall Farmer
- The audience is the medium. For now. J C Lawrence
- The audience is the medium. For now. Frank Crowell
- Ownership of characters Jasper McChesney
- Explorers? (Was: Codename Blue & Facets - Nick Yee's new studies) Brian 'Psychochild' Green
- Befriending Critters (was: Random Resets) Arthaey
- Questions about server design Ben Chambers
- Questions about server design Michael Bayne
- Questions about server design Sean Middleditch
- Questions about server design Mike Shaver
- Questions about server design Kwon Ekstrom
- Questions about server design szii@sziisoft.com
- Questions about server design F. Randall Farmer
- Questions about server design James Edward Gray II
- Questions about server design Shane Gough
- Extensibility Ben Chambers
- Extensibility Ammon Lauritzen
- Extensibility Kwon Ekstrom
- Extensibility Ben Chambers
- Extensibility "Christopher {siege} " OBrien
- Extensibility Sean Middleditch
- Extensibility Sean Kelly
- Extensibility John Buehler
- Extensibility shren
- Extensibility John Buehler
- Extensibility szii@sziisoft.com
- Extensibility John Buehler
- Extensibility szii@sziisoft.com
- Extensibility Mike Shaver
- Question: Any published research on Sims type game personae? susan wu
- [MLP] Why care about levels? (was: The use of ecolo Richard Woolcock
- [MLP] Why care about levels? (was: The use of ecolo gy models) Jon Lambert
- Component Design (was: Extensibility) Scion Altera
- [BIZ] Selling Stock (formerly Blacksnow revisted ) Robert A. Rice, Jr.
- Games are Hot. Period Michael Tresca
- Games are Hot. Period Gladimir
- Games are Hot. Period Richard Aihoshi aka Jonric
- Games are Hot. Period Freeman, Jeff
- Games are Hot. Period Richard Aihoshi aka Jonric
- Games are Hot. Period Koster, Raph
- Games are Hot. Period Vincent Archer
- Games are Hot. Period Richard Aihoshi aka Jonric
- Games are Hot. Period Matt Mihaly
- fun Matt Mihaly
- [TECH] Shortest Path William Murdick
- [TECH] Voice in MO* - Phoneme Decomposition and Reconstruction Ted L. Chen
- [TECH] Voice in MO* - Phoneme Decomposition and Reconstruction John Buehler
- [TECH] Voice in MO* - Phoneme Decomposition and Reconstruction Ted L. Chen
- [TECH] Voice in MO* - Phoneme Decomposition and Reconstruction Eli Stevens
- [TECH] Voice in MO* - Phoneme Decomposition and Reconstruction Jon Leonard
- [TECH] Voice in MO* - Phoneme Decomposition and Reconstruction Hans-Henrik Staerfeldt
- [TECH] Voice in MO* - Phoneme Decomposition and Rec onstruction Robert Zubek
- [TECH] Voice in MO* - Phoneme Decomposition and Rec onstruction ceo@grexengine.com
- [TECH] Voice in MO* - Phoneme Decomposition and Reconstruction Hans-Henrik Staerfeldt
- [TECH] Voice in MO* - Phoneme Decomposition and Reconstruction Ted L. Chen
- [TECH] Voice in MO* - Phoneme Decomposition and Rec onstruction Koster, Raph
- [TECH] Voice in MO* - Phoneme Decomposition and Rec onstruction lynx@lynx.purrsia.com
- [TECH] Voice in MO* - Phoneme Decomposition and Reconstruction Ted L. Chen
- [TECH] Voice in MO* - Phoneme Decomposition and Reconstruction Rudy Neeser
- [TECH] Voice in MO* - Phoneme Decomposition and Reconstruction Matt Mihaly
- [TECH] Voice in MO* - Phoneme Decomposition and Rec onstruction Daniel.Harman@barclayscapital.com
- [TECH] Voice in MO* - Phoneme Decomposition and Reconstruction John Buehler
- [TECH] Voice in MO* - Phoneme Decomposition and Reconstruction Ted L. Chen
- [TECH] Voice in MO* - Phoneme Decomposition and Reconstruction Mike Shaver
- [TECH] Voice in MO* - Phoneme Decomposition and Reconstruction John Buehler
- [TECH] Voice in MO* - Phoneme Decomposition and Reconstruction amanda@alfar.com
- [TECH] Voice in MO* - Phoneme Decomposition and Rec onstruction Koster, Raph
- [TECH] Voice in MO* - Phoneme Decomposition and Rec onstruction Steve {Bloo} Daniels
- Combat with Style (was Player Accounts on a Non-Commercial MUD) lynx@lynx.purrsia.com
- Playskins Koster, Raph
- People were talking about resets.. Anderson, David
- People were talking about resets.. Sasha Hart
- People were talking about resets.. Anderson, David
- People were talking about resets.. John Buehler
- People were talking about resets.. Anderson, David
- People were talking about resets.. Arnau Rossell=?US-ASCII?Q?=F3?= Castell=?US-ASCII?Q?=F3?=
- People were talking about resets.. shren
- People were talking about resets.. Anderson, David
- People were talking about resets.. David B. Held
- People were talking about resets.. shren
- People were talking about resets.. Anderson, David
- People were talking about resets.. Michael Tresca
- People were talking about resets.. Fred Clift
- People were talking about resets.. Lars Duening
- People were talking about resets.. Michael Tresca
- People were talking about resets.. Rayzam
- People were talking about resets.. Matt Mihaly
- People were talking about resets.. Tand'a-ur
- People were talking about resets.. John Buehler
- People were talking about resets.. Leland Hulbert II
- People were talking about resets.. lynx@lynx.purrsia.com
- People were talking about resets.. Jason Murdick
- People were talking about resets.. Jeff Lindsey
- People were talking about resets.. Ben Chambers
- People were talking about resets.. Sasha Hart
- People were talking about resets.. David B. Held
- People were talking about resets.. Sasha Hart
- People were talking about resets.. Anderson, David
- People were talking about resets.. David B. Held
- People were talking about resets.. Acius
- People were talking about resets.. Marian Griffith
- Question about copyovers. Anderson, David
- Question about copyovers. Tand'a-ur
- Question about copyovers. Anderson, David
- Question about copyovers. Kwon Ekstrom
- Question about copyovers. Adam
- Question about copyovers. Oliver Jowett
- Question about copyovers. Kwon Ekstrom
- Question about copyovers. Lars Duening
- Question about copyovers. Jon Lambert
- Question about copyovers. fred@clift.org
- Question about copyovers. Zach Collins {Siege}
- Question about copyovers. Smith, David {Lynchburg}
- non-violent activities (was People were talking about resets..) Ammon Lauritzen
- References on personality and emotion models Robert Zubek
- Multimodal interface conference. Rayzam
- Hyperbolies R Us shren
- Hyperbolies R Us Matt Mihaly
- TECH: Systems Administration Issues Thomas Leavitt
- Questions about ... XML as data format Adam
- Questions about ... XML as data format Anderson, David
- Questions about ... XML as data format Kwon Ekstrom
- R&D Matt Mihaly
- Conversation logs? Robert Zubek
- Conversation logs? Rudy Fink
- Conversation logs? Vincent Archer
- Conversation logs? Shane Gough
- DGN: Elastic Advancement in MUDs? Jeff Lindsey
- DGN: Elastic Advancement in MUDs? David B. Held
- Building histories off civilizations automatically adam Martin
- ADMIN: Virii and mail forgeries J C Lawrence
- Hi from the Dragon Empire's CLM Peter Tyson
- Linux gaming ( was Apple WWDC? ) Kevin Mack
- [TECH] Preferred LPC replacement? Jeff Bachtel
- [TECH] Preferred LPC replacement? Damion Schubert
- Who `owns' conversation logs? Joshua Judson Rosen
- The Online Gaming Life for Me! Michael Tresca
- Boredom Ben Chambers
- Law of Diminishing Marginal Utility [was Boredom] Ron Gabbard
- Law of Diminishing Marginal Utility [was Boredom] Caliban Tiresias Darklock
- "MMOG" Bible Brian 'Psychochild' Green
- "MMOG" Bible David Kennerly
- TECH: Single process v.s. multi process? Philip Mak
- TECH: Single process v.s. multi process? Smith, David {Lynchburg}
From: Philip Mak [mailto:pmak@animeglobe.com]
> (1) Single process: A single process that listens for player
> connections on a TCP port and handles everything.
> (2) Multi process: Run xinetd/tcpserver to spawn a program for
> each connection to a TCP port. These programs interact with some
> centralized database/message queue.
> (3) Multi thread: A single program that listens for player
> connections and spawns a thread for each of them.
I'd like to add a (4) to that list if I may:
(4) Multi-path, not "path-per-connection": It sounds like the
desire to utilize multiple paths through the code is entirely "to
defend against malicious softcode that consumes too much
resources." Since it may well be that, for instance, a few users
acting in a complex mprog-heavy area could be consuming _much_ of
the system's resources, it would be nice if, as designers, we
could make only _those_ users pay the lag-time penalty for their
resource-heavy behavior. So, a natural concept is have each user's
resource usage tied to a given path of control through the code
(thread or process); however, this parallelization has a minimum
level of independence in that _every_ action that changes the
state of the world (as visible by other players) _must_ update the
database (however the representation) and in many (most?) cases
display those changes to other users (the side-effects of most
changes to the database assumed to be messages to other users that
can 'see' the action).
So there is a definite limit on how fine-grained the resource use
may be.
On the other hand, some resource use is likely to be mostly
independent of changes to the database, and the classically
"expensive" actions likely fall in this category (script
interpretation; input-output handling--including things like dns
name resolution; memory reclamation--possibly, depending on garbage
collection & the language; & the ever infamous etc....). It would be
_nice_ then to parallelize some of these expensive areas, especially
in ways that make the most use of the hardware.
I'd argue for parallelization of the input/output processing using
either a reactive approach (the reactor pattern, most specifically a
thread-pooling reactor
http://www.cs.wustl.edu/~schmidt/PDF/reactor-siemens.pdf describes
it reasonably); or, if the design and the underlying OS/platform
allows it, a proactive approach (the proactor pattern, which can be
viewed as a reactive pattern with the reactor provided by the OS and
communication/notification of events given to the application by
asynchronous completion tokens
http://www.cs.wustl.edu/~schmidt/PDF/proactor.pdf describes it
reasonably).
In the first approach, n threads divide the active socket descriptor
list and provide event (de)multiplexing for the sockets. Usually
using the select mechanism to determine if data is available, or if
the socket is writeable. These events get dispatched (usually via
callbacks that the application registers in the reactor
pattern). Thus n threads share the input-output load. This is good
because it is possible to spread the load across as many paths of
control as there are processors in the machine (usually a good
number for best efficiency), and because expensive operations that
don't tie up the input-output threads often will allow at least some
input-output processing to continue (avoiding for instance
flow-controlling your players).
However, the drawback is that the socket descriptor list cannot
usually be shared well, so while expensive post-select operations
can be performed by one of the reactor's thread-pooled threads, if
the socket descriptor list is large, the selection operation itself
becomes a sticking point. This leads to the second approach.
In the second approach, an underlying OS mechanism (posix's AIO, or
Win32's Asynch IO are the only two examples I know of) undertakes to
provide an asynchronous operation processor, providing asynchronous
operations to the application, and notifying the application's
asynchronous operation completion dispatcher (sorry, I know, but
those are the terms used in the second paper linked above--page 6
shows the pattern--and I didn't want to get off-topic too far). So
the grunt work of event (de)multiplexing is undertaken by the OS and
the events themselves are all that is reported to the application.
Where possible, this second approach often provides the greatest
flexibility and performance; at the cost of being evil and
un-intuitive to debug.
With the IO parallelized, the next question is the database access.
Now, while this probably doesn't mean database as in dbms, it
probably does mean something like "large memory space devoted to
user data structures". I'd argue that if this is the case, then
providing threads to access it is a bad idea; rather, providing a
good set of locking mechanisms (fine and coarse grained) and
possibly a few coarse-grained traversal type functions would be
plenty of work. For instance, many 3D graphics engines work from the
concept of a "scene graph" that is much like the runtime object data
maintained by most mu*'s. Traversals of the graph for updates and
rendering (which in the case of a mu* would be something perhaps
like per-pulse processing) may require a certain variety of lock on
all or a portion of the database. Investing some time in creating or
adapting a balanced Readers/Writers locking mechanism (where usually
n readers, or 1 writer may freely access data, and awaiting threads
are assigned either "on the coattails" to gain access--for instance
an arriving reader sneaks in on the coattails of the readers
currently holding the lock--or in a first-come-first-serve
situation) would probably provide most of the locking types needed
for this kind of use.
After those two points, what's left is loosely the "business logic"
of the mu*. Things like the script interpreting, the different "game
loops", output generation, & etc live in this world. And it's here
that I'd say is the best place to use parallelization to combat the
types of resource-consumption that were the focus of the original
post (sorry, it's way to early to write things to the point, not
enough caffeine). In these cases, I'd say there are some rules of
thumb, parallelize the game loops, try to use dedicated threads, or
a thread pool to do some of the expensive things (like script
interpretting), and try always to keep in mind that you _want_ the
expensive operations to cause pauses for only those users really
dependent on the output of the expensive operation. An active-object
patterned approach (message queues to communicate into the thread,
asynchronous completion tokens to wait on results) is a good means
to some of the design, and gets a pretty pdf here
(http://www.cs.wustl.edu/~schmidt/PDF/Act-Obj.pdf).
Above all, two points (which I guess I should have put first, but
like I said, not enough trimethylxanthine (caffeine) yet.
1) Paralellization is hard to get to its 'most efficient' and
threads/processes are expensive. Any situation where you find the
design 'calling for' a thread-per-user is suspect.
2) Paralellization framework code is ugly, platform specific, and
a nightmare to write/maintain; for this reason it is a _very_ good
idea to find a third-party framework that suits your needs instead
of "rolling your own". Fortunately, some good frameworks exist,
and a few are free (as in beer). In five years of maturation (mine
and its) I haven't found a better freely available framework for
multithreading & communications than the ACE Libraries (Adaptive
Communications Environment:
http://www.cs.wustl.edu/~schmidt/ACE.html); but, of course ymmv.
Good luck, and I hope something in this rambling mess helped
-Dave - TECH: Single process v.s. multi process? Bruce Mitchener
- TECH: Single process v.s. multi process? Bruce Mitchener
- TECH: Single process v.s. multi process? Smith, David {Lynchburg}
- In defense of "soloability" [was Law of Diminishing Marginal Utility] Clay
- In defense of "soloability" [was Law of Diminishing Marginal Utility] apollyon
- In defense of "soloability" [was Law of Diminishing Marginal Utility] Caliban Tiresias Darklock
- In defense of "soloability" [was Law of Diminishi ng Marginal Utility] Koster, Raph
- In defense of "soloability" [was Law of Diminishing Marginal Utility] Michael Tresca
- In defense of "soloability" [was Law of Diminishing Marginal Utility] Paul Schwanz
- In defense of "soloability" [was Law of Diminishing Marginal Utility] Martin C. Martin
- In defense of "soloability" [was Law of Diminishing Marginal Utility] Dave Rickey
- In defense of "soloability" [was Law of Diminishing Marginal Utility] Sanvean
- In defense of "soloability" [was Law of Diminishing Marginal Utility] Matt Mihaly
- In defense of "soloability" [was Law of Diminishing Marginal Utility] Michael Tresca
- In defense of "soloability" [was Law of Diminishing Marginal Utility] Kwon Ekstrom
- In defense of "soloability" [was Law of Diminishing Marginal Utility] Ron Gabbard
- Game shows Peter Tyson
- What keeps people interested in social muds? Martin C. Martin
- What keeps people interested in social muds? Rudy Fink
- What keeps people interested in social muds? Martin C. Martin
- What keeps people interested in social muds? Joshua Judson Rosen
- What keeps people interested in social muds? Ron Gabbard
- What keeps people interested in social muds? Marc Bowden
- What keeps people interested in social muds? Joshua Judson Rosen
- What keeps people interested in social muds? lynx@lynx.purrsia.com
- What keeps people interested in social muds? Richard A. Bartle
- What keeps people interested in social muds? Martin C. Martin
- What keeps people interested in social muds? Richard A. Bartle
- New Beginings Drylar Levre
- New Beginings Acius
- New Beginings ceo@grexengine.com
- New Beginings Bruce Mitchener
- New Beginings David B. Held
- New Beginings Kwon Ekstrom
- New Beginings David B. Held
- New Beginings Kwon Ekstrom
- New Beginings Sean Kelly
- New Beginings Lars Duening
- New Beginings David B. Held
- New Beginings Lars Duening
- New Beginings Bruce Mitchener
- New Beginings David B. Held
- New Beginings Kwon Ekstrom
- New Beginings Paul Schwanz
- New Beginings Zach Collins {Siege}
- New Beginings Miroslav Silovic
- New Beginings David B. Held
- New Beginings Draymoor a Vin il'Rogina
- New Beginings David B. Held
- New Beginings Kwon Ekstrom
- New Beginings Bruce Mitchener
- [DGN] Creating a MUD Richard Krush
- [DGN] Creating a MUD Acius
- [DGN] Creating a MUD Caliban Tiresias Darklock
- [DGN] Creating a MUD Edward Glowacki
- [DGN] Creating a MUD Kwon Ekstrom
- [DGN] Creating a MUD Edward Glowacki
- [DGN] Creating a MUD Fred Clift
- [DGN] Creating a MUD David Bennett
- [DGN] Creating a MUD fred@clift.org
- [DGN] Creating a MUD Damion Schubert
- [DGN] Creating a MUD Taylor
- [DGN] Creating a MUD Matt Mihaly
- [DGN] Creating a MUD Daniel.Harman@barclayscapital.com
- On the creation of constructive/social behaviours in online games! Marc Demesel
- [DGN] MUD Books James Edward Gray II
- [DGN] MUD Books Scion Altera
- [DGN] MUD Books Jeremy Noetzelman
- [DGN] MUD Books Tand'a-ur
- Positive reinforcement for socializing [was In de fense of "soloability" ] Jeff Lindsey
- Character skill distribution and trade-offs Ron Gabbard
- Character skill distribution and trade-offs Daniel.Harman@barclayscapital.com
- Character skill distribution and trade-offs Vincent Archer
- Character skill distribution and trade-offs Daniel.Harman@barclayscapital.com
- Character skill distribution and trade-offs John Buehler
- Character skill distribution and trade-offs Sean Kelly
- Character skill distribution and trade-offs Ron Gabbard
- Space partitioning, R-Trees? Dread Quixadhal
- Space partitioning, R-Trees? Daniel.Harman@barclayscapital.com
- Space partitioning, R-Trees? Hans-Henrik Staerfeldt
- Space partitioning, R-Trees? Crosbie Fitch