-
Notifications
You must be signed in to change notification settings - Fork 417
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Zone] Implement zone player count sharding #4536
base: master
Are you sure you want to change the base?
Conversation
Awesome feature :D |
Seems like this could be used to supplement |
I believe I mentioned /pick support to Neckkola to look into as well and provided Xackerys issue with opcodes and breakdown - #1615 |
I mentioned this in the body of the PR |
.match = "shard_at_player_count", | ||
.sql = R"( | ||
ALTER TABLE `zone` | ||
ADD COLUMN `shard_at_player_count` int(11) NULL DEFAULT 0 AFTER `seconds_before_idle`; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
.content_schema_update = true
This is a content update
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good eye, updated
On initial deployment of this PR, zone with |
Adjusted queries to filter more here |
Would a rule or column to specify the shard zone version be appropriate? |
It should go off of the zone row context, which has |
I would like to request the following enhancements;
|
Happy to chat about these more as well. |
The use-case of 1 is to be able to use something like an idle script in non-combat zones such as The Bazaar, PoK, or Guild Lobby to reallocate to attempt to close unneeded shards. |
Just noting that RoF2 does not have a native /pick or /pickzone command, it was officially added later. There are UI elements native on RoF2, and the ability via a client hook to make /pick send a custom packet (via eq-core or whatever), then server replies with the pickzone menu, and then client has ability to communicate it's response, that was covered in my issue. But yeah, it may be tough to formally support this, maybe consider #zoneshard creating the UI menu on player later as a post feature just for RoF2, and retain fallback to the chat version for anything older than RoF2 that does not have the pick UI |
I want to politely reiterate this request after using the shard system for about a week now. The option to reallocate\collapse\compact shards is going to be a long-term requirement especially for sharded hub zones. I think the script hook to manually re-evaluate a player (to move them up\down in shard stack as required) would be useful, but having some threshold where players no longer return to their original shard after being logged off is going to be critical. Maybe it could even be on server shutdown? How this is currently playing out is that once a Bazaar shard on THJ is opened, it will effectively never close, due to traders who hold the upper shards open, if no other way then logging back into them after server downs. |
Make it so you can #zoneshard 2 to enter zoneshard 2 |
server admins can add aliases via the command table |
Question.. if a shard exists (is dynamically created) how does #fz (find zone) work? Will it display the shard as well? Ty |
No it is largely something you navigate once you zone into the base zone |
Remaining items
|
994929e
to
70c2516
Compare
Description
This is a change that was sparked due to issues observed during THJ's launch. Once Bazaar reached 300 players, the network traffic became too much for anyone to have a good experience in the zone and network re/sends start to fall behind.
While I'd like a single zone to support 1k+ clients from a performance perspective, this is an easy, simple level that any server operator can lean into for general use cases.
It works by configuring the addition of a new zone table field
shard_at_player_count
(Default: 0), if this value is non-zero it will shard a zone by the configured player count number. Once a zone has been filled to count capacity, a new instance (100 year expiry) will be dynamically created and players will be routed to that one until it is filled. Once that one is filled a new one is created and the process repeats.Menu
$client->ShowZoneShardMenu();
Logic
This can eventually be rigged up to the /pick menu
Quest API Changes
New Rule
Other Changes
Type of change
Testing
Script invocation works
Checklist