Dynamically Create Extra Instances of "full" areas
Mermut
Member Posts: 44
Building on base of the dynamic flat system I put together, I'm working on a system to spin up additional 'instances' of areas that are 'too full'.
There are significantly more variables to consider/deal with in such a system and I'd like to know people's thoughts on them.
Here are a few to start:
1) Parties. Since NWN doesn't set a max on number of players in a party, should all party members be put into the same instance, even if the instance is already full (or over full)?
2) If there are multiple instances spawned that aren't full when a player 'clicks' to enter an area, should players be given the choice which instance they go into? Should they be automatically put in the lowest 'number' instance? The fullest one? The least full?
I'd like to make the system robust and flexible, but I also want to make it as free from bugs and potential exploits as well. I'd appreciate people's thoughts and ideas
There are significantly more variables to consider/deal with in such a system and I'd like to know people's thoughts on them.
Here are a few to start:
1) Parties. Since NWN doesn't set a max on number of players in a party, should all party members be put into the same instance, even if the instance is already full (or over full)?
2) If there are multiple instances spawned that aren't full when a player 'clicks' to enter an area, should players be given the choice which instance they go into? Should they be automatically put in the lowest 'number' instance? The fullest one? The least full?
I'd like to make the system robust and flexible, but I also want to make it as free from bugs and potential exploits as well. I'd appreciate people's thoughts and ideas
0
Comments
When character clicks to zone into an area that is set up to spawn extra instances:
for i = 1; i <= active instances; i++
is instance population < spawn new? --> valid destination target
no? is population < max?
yes --> if character has party member in target --> valid destination target
if no instances with space, make a new one and port character in
List of valid target instances:
1) port player into one with party automatically?
2) give player list of instances to choose from?
a) should list exclude zones with 'too low' a population?
--> purpose would be to minimize number of active zones
3) zone character into lowest number instance?
4) zone character into highest population instance?
5) zone character into lowest population instance (with pop above threshold?)
Determining if the player should be given a choice which instance to go to (and which areas appear on the list) or, if not, which zone the character should be placed in isn't 'hard', but it is a design decision that fundamentally affects how the system will work.
Since the whole point of the system is to be useful... what would people like/prefer?
Potential difficulties
MAKE SURE THE BASE AREA IS NEVER, EVER, EVER DELETED!!!
--> Set a variable on instances... check the variable when scheduling an area for deletion
If it doesn't exist, cancel deletion.
CopyArea makes a copy of EVERYTHING in the area (minus PCs),
--> This means for areas that can be instanced no players should ever use the 'base area'
----> if they did, copies would have 'extra' stuff in them from active players in the 'base area'
Chaining area - find way to reference the transitions in the base area?
Check to see if you're IN a 'base area'
Check to see if current area is instanced or CAN be instanced
--> affects set up of target area/instance
Current area canNOT be instanced
--> new instance transition is 'hard coded' to current transition
Current area CAN be instanced (or is instanced)
--> connecting transition in new instance needs to be set to look
for base instance/new instances