Again, this is just one concept, but seems to make the most sense. I won't sell it beyond the fact that if a spawn is somehow clearly associated with it's zone_id, it will be easier to identify and work with down the road. With that, here's what we decided long ago.
I would like to utilize chrrox original numbering concept of "zone_id * 10000" (ten thousand). An example, if Dockmaster Wilson in Antonica is our first spawned NPC, his spawn_id will be 120000 (one hundred twenty thousand). That is zone_id 12 with 4 zeros after it (lol).
Here's a snapshot of what my Antonica zone starts looking like: As you can see, zone 12 (antonica) starts at 120000 and goes to a max spawn_id of 129999 for this one zone. That's a lot of unique spawns!
What defines a "unique spawn"? I will go over this in the next post about Duplicates.
Suffice it to say, the reason for buffering each zone to 10,000 is that during parsing, it is highly unlikely to generate 10,000 unique spawn types out of a single zone of collects. So 10,000 indexes gives us plenty of room to fill up the zones with spawns (dupes be damned), then remove or add stuff as needed - or re-index if we find an NPC is set as a Widget and needs to be re-designed (yet another post incoming!)
Exception to the rule! (of course, there are always exceptions)
I think we should allow one type of spawn_id to remain "neutral"; that is, belong to no zone. Harvestables is a prime example. Items that appear in *every* zone should not be duplicated in every zone_id range, unfortunately that is how they are collected and parsed, which is where the good folks on the Content Design team do their work!
For instance, look at this example: Here you see 2 Gather nodes in 2 different zones that could actually be a single entry. I mean, how many different ways can a glowing ? appear? There are other examples like the shoal of fish, or wind felled tree. These (I feel) should be Re-Indexed as a spawn_id of 1 - 9999, that way they belong to no zone and can be used anywhere.
Note:
Since the spawn_id is basically the balloon string that ties all the spawn parts together, getting this information CONSISTENT is mandatory. If this idea is not optimal to you, voice your opinions now. My additions to the packetparser include this numbering scheme in mind. We do not want to re-ID things down the road.
Why a Master Database?
I thought you'd never ask. What happens if all of us work individually on zones in our own local databases, then we try to merge them together? Due to the above mentioned "balloon strings", it will be living hell for the DB Team to knit and sew all that data back together into one DB after getting SQL dumps from everyone.
In this, practice messing around with your clean up techniques on your local boxes - but the only data I will accept as valid cleanup work will be done on the master database (and currently that is conveniently on my server: TessEQ2