Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Development

Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum)

Reply
 
Thread Tools Display Modes
  #1  
Old 05-06-2009, 05:12 PM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default Real Instancing

I know we have 'instancing' but I'm looking to expand it and not do it in such a hackish way. It's probably going to be a lot of work so I decided to branch it on svn.

Right now I'm just brain storming tables that would be needed (I know it's not in sql but anyone should be able to follow it).


Every time a new instance version was made this would be added to the table with a unique id. For example your raid group accepts their quest to go kill big bad boss and a new raid lockout entry is added to this table with a random unused id the time it was accepted and the duration and the zone and version of zone to use are also stored.
instance_lockout:
id
start_time
duration
zone
version

This table would keep track of players who are assigned to certain instance lockouts.
instance_lockout_player:
id
charid

Respawn timers would be expanded to include instance lockout_id to handle respawning npcs in the dungeons
respawn_timer:
id
start
duration
instance_lockout_id

Spawn2 is pretty crowded as is so I'm thinking to split it off to it's own instance specific table. Basically the same as the current table but there's a version field so creators can create different versions of zones. The two sub tables don't really have anything instance specific but it would be really odd to have cross refs from different tables like that.
spawn2_instance:
id
spawngroupID
zone
version
x
y
z
heading
respawntime
variance
pathgrid
_condition
cond_value

spawngroup_instance:
id
name
spawn_limit

spawnentry_instance:
spawngroup_id
npcID
chance

Also would eventually need to think up solutions for objects, zone points, ground drops, etc etc. If anyone has any ideas or criticism I invite it, still at the very early stages.
Reply With Quote
  #2  
Old 05-06-2009, 10:10 PM
Secrets's Avatar
Secrets
Demi-God
 
Join Date: May 2007
Location: b
Posts: 1,450
Default

I like the idea of having spawngroups for their own instances, however, the point of instances in EQ at least is to scale NPCs based on their existing info versus the players going into the instance, at least what I think this is for in LDON.

It would be MUCH better to add a field in npc_types that can be enabled to scale that NPC to level of the clients entering the zone when the NPC is loaded from spawn2, rather than having a bunch of multiples of the same NPC for the same zone. This way, we don't have to populate each instance by hand and place them, and do a lot of unnessesary copy & paste. For the instances where we don't need level scaling, the flag can be turned off, but the zone can be flagged as an instance as well. If the zone is *not* flagged as an instance, and the field in npc_types is turned on, they will still scale and this will add another feature for server OPs to use. This eliminates the need for any kind of un-needed tables.

The problem would be basing it off of the client. I suggest using the first client that goes into the instance, just like SOE does.

Lemme know what you think, and if it would be feasable, especially the client part.

Last edited by Secrets; 05-07-2009 at 06:12 AM..
Reply With Quote
  #3  
Old 05-07-2009, 12:45 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

NPC level scaling actually wouldn't be too hard to handle with Scripts using the modifynpcstat command that KLS put in a while back. Real instancing would be cool for special events and such. Though, I think their main potential would be for LDoN zones.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #4  
Old 05-07-2009, 01:08 AM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

Well a lot of raid and adventure dungeons past LDoN are instanced as well. It's a piece of missing functionality that if we don't get we we honestly start hitting a wall with on PEQ soon because PoP was the last real non-instanced expansion(minus potb of course).

I've got a very basic functionality working right now in that the world server is able to track servers by both zone and instance id, it had it's share of annoyances but it was easier than I thought it'd be... still a lot more than that though.
Reply With Quote
  #5  
Old 05-07-2009, 11:50 AM
Andrew80k
Dragon
 
Join Date: Feb 2007
Posts: 659
Default

I love the idea for real instancing. I spent a lot of time in both the DoN instances and the DoDH instances on live. It was nice to have scaled content. It would be nice to be able to scale both mobs and loot inside these instances.
Reply With Quote
  #6  
Old 05-08-2009, 03:06 AM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

I've got creation of basic instancing and loading into an instance working. A lot of the lockout stuff is pretty preliminary atm and I'll try to get that entire system sorted out after I work zoning into instances out next.

It's still a mountain of work ahead but it's actually going a lot more smoothly than I thought it would.
Reply With Quote
  #7  
Old 05-10-2009, 01:16 PM
Rocker8956
Hill Giant
 
Join Date: Sep 2007
Posts: 117
Default

Quote:
Originally Posted by KLS View Post
I know we have 'instancing' but I'm looking to expand it and not do it in such a hackish way. It's probably going to be a lot of work so I decided to branch it on svn.
Hmm, hackish is a compliment for the way I put some of that code together. If you need help reading any of my crappy code please let me know. Been a bit since I looked at it but I may be able to remeber some of it.
Reply With Quote
  #8  
Old 05-10-2009, 02:27 PM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

I took it all out pretty much and replaced it cause I wanted a system that was easier to track and that I could easily assign lockout ids to.

I got zoning to work pretty flawlessly yesterday along with respawn timers. Raids and Groups work across instance boundaries now; they only partially worked before. Still working on the verification of various instance actions and the expiration. Hopefully soon I can start to think about the actual implementation of the various systems that go on top of this.
Reply With Quote
  #9  
Old 05-13-2009, 03:02 AM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

As of my commit tonight I will have what I basically consider the minimum for instancing done, just have to write up some quest commands.

Or tomorrow afternoon rather I'm way too tired to finish tonight.

Last edited by KLS; 05-13-2009 at 11:48 AM..
Reply With Quote
  #10  
Old 05-14-2009, 02:46 AM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

You can view my table changes on the branch now. There's a lot of them, but most of them are just adding or dropping a field here and there.

Code:
CREATE TABLE `instance_lockout` (
  `id` int(11) NOT NULL auto_increment,
  `zone` int(11) unsigned NOT NULL default '0',
  `version` tinyint(4) unsigned NOT NULL default '0',
  `start_time` int(11) unsigned NOT NULL default '0',
  `duration` int(11) unsigned NOT NULL default '0',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`),
  KEY `id_2` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `instance_lockout_player` (
  `id` int(11) unsigned NOT NULL default '0',
  `charid` int(11) unsigned NOT NULL default '0',
  PRIMARY KEY  (`charid`,`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Are the two entirely instance related ones, but they're anything but final. Right now it's a very workable system but far from done. If anyone feels like checking it out though it's what I'd say is "beta" quality.
Reply With Quote
  #11  
Old 05-16-2009, 10:26 AM
drakelord
Hill Giant
 
Join Date: Nov 2002
Location: NC, USA
Posts: 182
Default

So, just out of curiosity, are you going to change the current perl commands for instance flags and such to be compatible with this, or are they already so?
__________________
Hmm.
Reply With Quote
  #12  
Old 05-26-2009, 03:39 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

Just want to thank KimmySprite for working on this. I have been following your changes on SVN and you are making incredible progress on this in short amount of time. I am afraid I can only been a cheerleader since you code 100 lines to my one line, and my one line still will not work, well not that bad but you get the idea. Anyway I just wanted to drop in and say thanks and keep up the outstanding work.

By the way do you guys sleep at all ? That is a hell of a lot of coding.
Reply With Quote
  #13  
Old 05-27-2009, 03:01 AM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

Despite cavedude's claims: yes I sleep. It's not as much code when you consider I'm doing this in bits and pieces. I'm working on adventures now but I got a little ahead of myself on design by not planning ahead enough and had to backtrack a bit.
Reply With Quote
  #14  
Old 05-27-2009, 08:15 AM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

Aren't we all guilty of that though.
Reply With Quote
  #15  
Old 05-28-2009, 08:37 AM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

I was curious on something. I see you are daily working on the LDoN instances as far as the C++ code getting the game mechanics going. My question is are we going to be able to have a match with the live instances without the packet analyzer going or are we going to try to go from pure memory ? It has been a really long time since I have been on live.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 03:52 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3