January 2000
- JavaWorld: Build an object database J C Lawrence
- Muq update Cynbe ru Taren
- New link support J C Lawrence
- OS Inspiration Phillip Lenhardt
- OS Inspiration Greg Miller
- Chomsky's recursive theory of grammar J C Lawrence
- concerning tokenization, compilation, performance, and other fun stuff. Nate Cain
- concerning tokenization, compilation, performance, and other fun stuff. cg@ami-cg.GraySage.Edmonton.AB.CA
- concerning tokenization, compilation, performance, and other fun stuff. Joel Dillon
- concerning tokenization, compilation, performance, and other fun stuff. Ola Fosheim Grøstad
- Library submission notification and updates J C Lawrence
- EQ packet sniffer J C Lawrence
- Catalog of Compiler Construction Tools J C Lawrence
- Microthreads for Python J C Lawrence
- For those interested in parsers and compilers J C Lawrence
- EQ packet analyzer is gone? Sellers, Michael
- EQ packet analyzer is gone? J C Lawrence
- EQ packet analyzer is gone? J C Lawrence
- RFC: Worldforge project Scott Clitheroe
- ScryMUD 2.0.9 released (compiles on Windows (cygwin)) Ben Greear
- Clay Shirky's "Playfulness in 3-D Spaces" J C Lawrence
- Clay Shirky's "Playfulness in 3-D Spaces" Raph & Kristen Koster
- Clay Shirky's "Playfulness in 3-D Spaces" Sellers, Michael
- Clay Shirky's "Playfulness in 3-D Spaces" Nick Shaffner
- Clay Shirky's "Playfulness in 3-D Spaces" Sellers, Michael
- Clay Shirky's "Playfulness in 3-D Spaces" Jeremy Music "Sterling"
- Clay Shirky's "Playfulness in 3-D Spaces" msew
- ShowEQ Ashran
- Hello! F. Randall Farmer
- Hello! Cynbe ru Taren
- Y2K archives J C Lawrence
- An introduction... Geoffrey A. MacDougall
- An introduction... Lovecraft
- Laws website moves Raph & Kristen Koster
- Ok, got some brand new core dumps. J C Lawrence
- player politics (was An introduction...) Sellers, Michael
- player politics (was An introduction...) Ola Fosheim Grøstad
- player politics (was An introduction...) Sellers, Michael
- player politics (was An introduction...) Ola Fosheim Grøstad
- player politics (was An introduction...) J C Lawrence
- player politics (was An introduction...) Sellers, Michael
- A quick business question... Geoffrey A. MacDougall
- A quick business question... Matthew Mihaly
- A quick business question... Darrin Hyrup
- Question about multithreaded servers Fabian Lemke
- Question about multithreaded servers AR Schleicher
- Question about multithreaded servers Nick Shaffner
- Question about multithreaded servers Ola Fosheim Grøstad
- Question about multithreaded servers Fabian
- Question about multithreaded servers Jon A. Lambert
- Question about multithreaded servers J C Lawrence
- Question about multithreaded servers Greg Underwood
- Question about multithreaded servers cg@ami-cg.GraySage.Edmonton.AB.CA
- Question about multithreaded servers J C Lawrence
- Question about multithreaded servers Greg Underwood
- Question about multithreaded servers J C Lawrence
- Question about multithreaded servers Emil Eifrém
- Question about multithreaded servers J C Lawrence
- Community Relations Dundee
- Community Relations Christopher Allen
- Community Relations Matthew Mihaly
- Community Relations Greg Miller
- Community Relations Darrin Hyrup
- Community Relations Dundee
- Community Relations Ola Fosheim Grøstad
- Community Relations Dundee
- Community Relations Ola Fosheim Grøstad
- Community Relations Dundee
- Community Relations Marian Griffith
- Community Relations Koster, Raph
- Community Relations Jon A. Lambert
- Community Relations Matthew Mihaly
- Community Relations Ola Fosheim Grøstad
- Community Relations Matthew Mihaly
- Community Relations Ola Fosheim Grøstad
- Community Relations Matthew Mihaly
- Community Relations Marc Bowden
- Community Relations Eli Stevens {Grey}
- Community Relations Matthew Mihaly
- Community Relations Raph & Kristen Koster
- Community Relations Matthew Mihaly
- Community Relations Koster, Raph
- Community Relations Travis Casey
- Community Relations Ola Fosheim Grøstad
- Community Relations Travis Casey
- Community Relations Ola Fosheim Grøstad
- Community Relations Matthew Mihaly
- Community Relations Rahul Sinha
- Community Relations Matthew Mihaly
- Community Relations Matthew Mihaly
- Community Relations Ola Fosheim Grøstad
- Community Relations Koster, Raph
- Community Relations Matthew Mihaly
- Community Relations Geoffrey A. MacDougall
- Community Relations Jon A. Lambert
- Community Relations Matthew Mihaly
- Community Relations Ola Fosheim Grøstad
- Community Relations Travis S. Casey
- Community Relations Douglas Couch
- Community Relations Dundee
- Community Relations Marian Griffith
- Community Relations Jon A. Lambert
- Community Relations Matthew Mihaly
- Community Relations Jon A. Lambert
- Community Relations Matthew Mihaly
- Community Relations Geoffrey A. MacDougall
- Community Relations Matthew Mihaly
- Community Relations Lovecraft
- Community Relations Geoffrey A. MacDougall
- Community Relations Lovecraft
- Community Relations Marian Griffith
- Community Relations Matthew Mihaly
- Community Relations Sellers, Michael
- Community Relations Lovecraft
- Community Relations J C Lawrence
- Community Relations Lovecraft
- Community Relations J C Lawrence
- Community Relations Koster, Raph
- Community Relations Jon A. Lambert
- Community Relations Ola Fosheim Grøstad
- Community Relations Lovecraft
- Community Relations Jon A. Lambert
- Community Relations Lovecraft
- Community Relations Jon A. Lambert
- Community Relations Jon A. Lambert
- Community Relations J C Lawrence
- Community Relations Wes Connell
- Community Relations Marc Bowden
- Community Relations Dundee
- Community Relations J C Lawrence
- Community Relations J C Lawrence
- Community Relations F. Randall Farmer
- Community Relations Dr. Cat
- Community Relations J C Lawrence
- Community Relations Koster, Raph
- Community Relations Geoffrey A. MacDougall
- Community Relations Matthew Mihaly
- Commercial-use Restrictions on Code Bases (was: help me find 100% fre (fwd) J C Lawrence
- Commercial-use Restrictions on Code Bases (was: help me find 100% fre (fwd) J C Lawrence
- Databases (was Commercial-use Restrictions on Code Bases) Charles Hughes
- Databases (was Commercial-use Restrictions on Code Bases) cg@ami-cg.GraySage.Edmonton.AB.CA
- Databases (was Commercial-use Restrictions on Code Bases) Jon A. Lambert
- Databases (was Commercial-use Restrictions on Code Bases) Jon A. Lambert
- Databases (was Commercial-use Restrictions on Code Bases) J C Lawrence
- Mud-Dev FAQ part I Marian Griffith
- Mud-Dev FAQ part II Marian Griffith
- META: List goals (was OS Inspiration) J C Lawrence
- Valhalla license? CFrancy@aol.com
- Valhalla license? Matthew Mihaly
- Valhalla license? Richard Woolcock
- Planet/Solar System Generation Wes Connell
- Planet/Solar System Generation icecube@ihug.co.nz
- Planet/Solar System Generation Christopher Allen
- Planet/Solar System Generation J C Lawrence
- Planet/Solar System Generation Nolan Darilek
- Planet/Solar System Generation Wes Connell
- Planet/Solar System Generation Richard Woolcock
- How to handle/display partial language skill Joe Kingry
- How to handle/display partial language skill Greg Underwood
- How to handle/display partial language skill Wes Connell
- How to handle/display partial language skill Matt Chatterley
- Signing off... IronWolf
- Simulated Populations phlUID
- Simulated Populations Charles Hughes
- Simulated Populations Vladimir Prelovac
- Simulated Populations phlUID
- Simulated Populations Dundee
- Simulated Populations Wes Connell
- Simulated Populations Nicolai Hansen
- Simulated Populations J C Lawrence
- Simulated Populations J C Lawrence
- Business Licenses CFrancy@aol.com
- Business Licenses Bruce
- Business Licenses J C Lawrence
- [adv-mud] What good is a hero when nobody knows? (fwd) J C Lawrence
- [adv-mud] What good is a hero when nobody knows? (fwd) Matthew Mihaly
- [adv-mud] What good is a hero when nobody knows? (fwd) Wes Connell
- [adv-mud] What good is a hero when nobody knows? (fwd) Matthew Mihaly
- [adv-mud] What good is a hero when nobody knows? (fwd) Erik Jarvi
- Multiply oriented interactive worlds... Justin Rogers
- [adv-mud] What good is a hero when nobody knows? J C Lawrence
- [adv-mud] Topic list repost (fwd) J C Lawrence
- [adv-mud] Spellbound Hierarchy and Keys (fwd) J C Lawrence
- [adv-mud] Spellbound Hierarchy and Keys (fwd) J C Lawrence
> From: "phlUID" <phluid@mindless.com>
> On Spellbound, every object in the game is given it's own database
> number. Help files, races, spells, objects, rooms, mobiles, exits,
> worlds, areas, classes, populations, etc. There are generically
> two types of database numbers: Pure, which is just a simple unique
> number given to every object, and Hybrid, which is used in the
> case of Object's and Mobs. For example, a room is object #43,
> while the sword in my inventory is #45:1 and the same type of
> sword in my friend's inventory is #45:2. The second number is
> referred to as an Entity ID because they refer to specific
> Entity's instead of Entries. There is an Entry class for #45
> called ObjectEntry, and there is an associated Entity class for
> ObjectEntry called Object. This concept is the same as DIKU's use
> of OBJ_INDEX_DATA and OBJ_DATA.
Translation:
You have ObjectIDs which are synonymous with their (single)
instance, and you have InstanceIDs which are synonymous with an
instance of a referenced ObjectID. An ObjectID may have multiple
InstanceIDs referring to it as each one marks a duplicate object.
> Currently, Spellbound uses pointers directly to objects like
> normal DIKU mud.
...various complaints about pointer tracking...
> This is made worse by the object orientness of C++, so I began to
> think of alternate ways of storing pointers.
My first thought is using either an auto_ptr or some sort of simple
reference counting scheme.
> The first thing that I wanted to be able to do is validate
> pointers.
Reference counting with a flag would work fine. Put a reference
count on your object class, and add an internal object_deleted flag
that is checked on every reference. That way you just delete the
object, the flag gets set, and at that point when its reference
count falls to zero you call the destructor.
There's actually a rather nicely written grim_reaper class floating
about the net that handles this elegantly as a base class.
> This started my thinking into the idea that it would be possible
> to replicate this system to make sure that what I am referencing
> is actually there. My database uses a regular array to return
> pointer's to DB numbers, so there is no CPU time involved looking
> through tables or linked lists. If I want object #43, I just call
> Database.getEntry( 43 ) and it returns a pointer to that entry.
You might like to hit the archives for discussion of my ObjectID
format, and how it supports re-use and collision detection.
> This identifier consists of a count of exactly how many nano or
> milliseconds from the epoch.
Remember that the high resolution timer on non-hard realtime systems
(and not even most of those) is _not_ reliable or accurate.
Furhter, you are relying on general clock accuracy. Consider the
simple case where you have something like an NTP client or a SysAdm
resetting the system clock: there is a definite chance for two timer
calls to return the same value as the system clock passes the same
value twice.
> Assuming that no two object's can be created at the exact same
> time, this gives each object ever created a unique identifier.
Object A created at time X.
System clock set back by NTP client to time X-Y.
Y time later Object B created at time X.
Both get the same ID.
> If the database couldn't find #23, entity 0, or the time
> identifier was wrong, I would end up with a NULL pointer, which
> will just stop my action and inform Fred that Bob is no longer
> there. Simple, effecient error control.
I tend to be a big fan of exceptions (you might notice that my
initial internal language used exceptions for all call returns, with
a normal non-error return merely being a flavour of exception that
defaulted to always being caught by the caller).
Why use exceptions here? With your scheme ever piece of code that
has to reference an object has to be prepared to find it
non-existent. This is both a lot of duplication of effort and puts
the load on the programmer for a task that the system can generally
take care of instead (in the general case you just want events to
fail that reference deleted objects, not try to manage the error).
> The only real question that I had is if anyone can see ways to
> improve this process.
As above. For what you're doing (runtime checks only with no
storage collision requirements) a refernece count etc seems cheaper
and simpler.
> On the technical side, I need a way of grabbing the time() in an
> extremely precise manner...
The syscall required tends to vary by OS: setitimer()/getitimer()
are typical.
--
J C Lawrence Home: claw@kanga.nu
----------(*) Other: coder@kanga.nu
--=| A man is as sane as he is dangerous to his environment |=--
- [adv-mud] Spellbound Hierarchy and Keys (fwd) J C Lawrence
- [adv-mud] Better Grammer Detection J C Lawrence
- [adv-mud] MUD-Dev vs. adv-mud J C Lawrence
- MUD-Dev vs. adv-mud phlUID
- [adv-mud] What good is a hero when nobody knows? phlUID
- (fwd) Avatarism and Role-Playing Game Design claw@kanga.nu
- Starlane test Joel Kelso
- hoho Matthew Mihaly
- Current Status of Middle Earth Online Geoffrey A. MacDougall
- ScryMUD 2.0.10 released. Ben Greear
- [adv-mud] What good is a hero when nobody knows? J C Lawrence
- [adv-mud] What good is a hero when nobody knows? Ben Greear
- [adv-mud] What good is a hero when nobody knows? J C Lawrence
- [adv-mud] What good is a hero when nobody knows? Wes Connell
- [adv-mud] What good is a hero when nobody knows? J C Lawrence
- Some new Library references J C Lawrence