Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Why is OdinMS characters table auto increment set to 30,000?

Joined
Apr 10, 2008
Messages
4,087
Reaction score
1,264
Why is OdinMS characters table auto increment set to 30,000?

My friend told me it's because of an old bug that the client couldn't handle objects with the same ID which sounds weird because I believe the client holds different dictionaries for each object pool.

Thanks.
 
Skilled Illusionist
Joined
Aug 17, 2011
Messages
360
Reaction score
88
You still alive? Also hell if I would know, my understanding is that Odin didn't use reasonable practices and just focused on usability.
 
Moderator
Staff member
Moderator
Joined
Jul 30, 2012
Messages
1,102
Reaction score
432
It's something like that, yeah. If the CID and OBJ matches (if I remember right), and someone enters that map, it makes things like NPC's permanently disappear. It can also cause mobs to go all buggy for similar reasons.
 
Joined
Nov 27, 2009
Messages
442
Reaction score
230
Lmao, good question.

I was looking over odin based sources and saw that and was confused. Asked about it on the discord server, and I think it was Darter who told me it doesn't matter since each object has it's own pool.
 
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
it's been a minute since i've touched odin, but if i recall they use a global map and counter for field objects in maplemap. the reason the characterids start at 30000 is because in odin, your characterid was your oid. since maplemap gets objects by oid, you could potentially have a characterid value thats the same value as an object like npc/mob/etc within the map. if that were to happen, then only 1 oid of that value can exist and would mess things up.

nexon splits these in to pools - npc pool, mob pool, reactor pool, etc. each pool contains a map with their oid so if any oid is the same across pools it wouldn't matter cause it'll only ever be checked from a specific map. this is the same as the client as well. nexon does not make your characterid your oid, a character class extends the creature class which constructs its own oid.

eventually maplemap's counter got set to a specific value i think? or characterids werent oids? i forget. but it was just an implementation issue with having an object counter mixed with characterid's loaded from the database stored in the same map.
 
Joined
Apr 10, 2008
Messages
4,087
Reaction score
1,264
Lmao, good question.

I was looking over odin based sources and saw that and was confused. Asked about it on the discord server, and I think it was Darter who told me it doesn't matter since each object has it's own pool.
Good to see you're back! Haven't seen you since our attempt to make Nett's Pyramid work back in 2010, haha.
it's been a minute since i've touched odin, but if i recall they use a global map and counter for field objects in maplemap. the reason the characterids start at 30000 is because in odin, your characterid was your oid. since maplemap gets objects by oid, you could potentially have a characterid value thats the same value as an object like npc/mob/etc within the map. if that were to happen, then only 1 oid of that value can exist and would mess things up.

nexon splits these in to pools - npc pool, mob pool, reactor pool, etc. each pool contains a map with their oid so if any oid is the same across pools it wouldn't matter cause it'll only ever be checked from a specific map. this is the same as the client as well. nexon does not make your characterid your oid, a character class extends the creature class which constructs its own oid.

eventually maplemap's counter got set to a specific value i think? or characterids werent oids? i forget. but it was just an implementation issue with having an object counter mixed with characterid's loaded from the database stored in the same map.

Thank you for the detailed answer, I figured it was a bug in the server's code rather than a client bug, as I know Nexon split the objects by object's type (pools). Never knew Odin did that by having a huge map of objects rather than key them by object type, hence the weird 30,000 solution.
 
Joined
Nov 27, 2009
Messages
442
Reaction score
230
Good to see you're back! Haven't seen you since our attempt to make Nett's Pyramid work back in 2010, haha.


Thank you for the detailed answer, I figured it was a bug in the server's code rather than a client bug, as I know Nexon split the objects by object's type (pools). Never knew Odin did that by having a huge map of objects rather than key them by object type, hence the weird 30,000 solution.

I've been lurking honestly every other year to see how the ps community been doing but since my company is currently on hiatus because of covid, I decided to actually look through my old assembla account and found my source so been messing around with it.

Hit me up on PM, interested in hearing about what ms projects you have going on.
 
Back
Top