View Full Version : akkadius scripts + static zones
khalathas
10-13-2016, 01:35 PM
Hey all, recently converted my server from the older style batch file to a much newer version, which also includes the new startup perl scripts. I've got 75 static zones defined in launcher_zones that were running fine, but the script just launches 30 dynamics. How do I use my old static definitions with the perl scripts? Or, is there any reason to do so still? (I was doing it to keep raid targets, such as dragons, on proper respawn timers)
NostalgiaEQ
10-13-2016, 02:17 PM
Great question. What are the pros/cons with static vs dynamic? I can't quite figure out what the difference is. Are static zones up constantly and therefore have less loading time but take more server resources? Does dynamic only keep 30 zones up so if people are in 31 zones there are problems?
khalathas
10-13-2016, 06:32 PM
From my own experience, a static zone (or in my case, LOTS of them) is going to eat up more RAM than dynamic zones, absolutely. The tradeoff is that static zones maintain their spawn timers where dynamic zones, after a certain duration of being empty, are unloaded, and reloaded as new people zone in. On my server (running on a VM, admittedly), I've got 10gb of ram allocated directly to it (host machine has 32gb), so it isn't really a burden to me, but for lower-resource servers it is a valid concern.
NostalgiaEQ
10-13-2016, 06:53 PM
Interesting. I would definitly want all static then because I will have a dedicated server and only a total of 60 zones all old graphics so very small. Hopefully we can figure out how to set zones to static in akka installer.
in the "zone" table I am seeing "shutdown delay" set to 5000 so perhaps setting this to -1?
khalathas
10-13-2016, 07:02 PM
I don't think all zones need to be static really, just ones with interesting targets with longer than 12 hour spawn timers maybe...the rest can be dynamic I think. I just don't know how to do it in akkadius's scripts. In the old way I'd go to launcher_zones, define a launcher (or in my case, several launchers, as I grouped them by continent for vanilla zones, and then expansion for later releases), and then ran a series of zone launches as follows:
echo starting zone
start eqlaunch dynamics
start eqlaunch antonica
start eqlaunch faydwer
start eqlaunch odus
start eqlaunch luclin
start eqlaunch kunark
start eqlaunch velious
start eqlaunch ykesha
start eqlaunch planes
exit
NostalgiaEQ
10-13-2016, 07:12 PM
Hmm interesting. Well it seems mabye we can stop zones from going idle in the first place by editing server code but not sure about keeping some zones dynamic.
http://www.eqemulator.org/forums/showthread.php?t=39147
for me Id rather have everything static so no matter how many zones people are currently in the experience (lag and whatnot) will always be constant.
khalathas
10-13-2016, 07:14 PM
I imagine the idea of stopping zones from going idle is a bad general idea, and a few (or a lot in my case) statics are a better way of doing it. Going to be moving the server to a dedicated linux server with 24gb ram available at some point, so I definitely want to figure out how to do statics again with the new startup scripts
NostalgiaEQ
10-13-2016, 07:16 PM
so in that same post prov said:
"You could do the same by making the zone static, by an entry in the database launcher table. The NPCs still go to sleep when idle, so that does nothing."
so now I just need to figure out how to do this. That table only has 2 colums zone and dynamics so not sure how to do this.
khalathas
10-13-2016, 07:18 PM
From what I understand, launcher defined the launchers themselves (which were the 3rd parameter in my script above, per line), and then launcher_zones actually defined the static zones and what launcher they belonged to. You could have a launcher that had statics AND dynamics in it, I chose to have a launcher called dynamics that ONLY had 20 dynamic zones, and then several launchers that each held content-specific static zones.
DanCanDo
10-13-2016, 07:24 PM
You can look at this old thread for an example:
http://www.eqemulator.org/forums/showthread.php?t=30097
NostalgiaEQ
10-13-2016, 07:34 PM
You can look at this old thread for an example:
http://www.eqemulator.org/forums/showthread.php?t=30097
nice. What are those "ports" listed on launcher_zone table? Can I just use te same numbers he did?
Akkadius
10-13-2016, 07:38 PM
The zones that get launched from my perl based launcher are purely dynamic.
You can achieve most of the 'static' behaviors by keeping zones dynamic and adjusting your 'shutdowndelay' in your zone table to be something that suits your needs.
The shutdowndelay is in milliseconds (1000) = 1 second.
To keep a zone up for, say an hour, you'd set the shutdowndelay to 3600000.
Once a zone has been booted, it will take a full hour to shutdown and go back into the dynamic pool. Only at this time will the zone flush corpses and things of that nature. Spawns and named are in the database so those timers are going to stay in tact regardless - BUT - if you have a low shutdowndelay and pure dynamics, plays can walk back and forth on zone lines to force a spawn cycle for a named that hasn't been killed or has an expired timer.
The perl based launcher is far more resilient and speedy, but does not support statics.
If you want to run statics you can run them in your batch on your own like so
zone.exe soldungb
zone.exe everfrost
Or you can do as mentioned in the thread before and set your launcher_zones table and map all of your statics and run eqlaunch.exe in parallel with the perl launcher.
To give you an idea, EZ Server runs pure dynamcis using the above methodology I explained earlier to be leaner on resources.
Hopefully that clears up some questions.
khalathas
10-13-2016, 07:38 PM
You can look at this old thread for an example:
http://www.eqemulator.org/forums/showthread.php?t=30097
This is almost exactly how I have mine, with the exception of naming and zones chosen, but yea...this is how it's done.
NostalgiaEQ
10-13-2016, 07:40 PM
oops double post
khalathas
10-13-2016, 07:40 PM
The zones that get launched from my perl based launcher are purely dynamic.
You can achieve most of the 'static' behaviors by keeping zones dynamic and adjusting your 'shutdowndelay' in your zone table to be something that suits your needs.
The shutdowndelay is in milliseconds (1000) = 1 second.
To keep a zone up for, say an hour, you'd set the shutdowndelay to 3600000.
Once a zone has been booted, it will take a full hour to shutdown and go back into the dynamic pool. Only at this time will the zone flush corpses and things of that nature. Spawns and named are in the database so those timers are going to stay in tact regardless - BUT - if you have a low shutdowndelay and pure dynamics, plays can walk back and forth on zone lines to force a spawn cycle for a named that hasn't been killed or has an expired timer.
The perl based launcher is far more resilient and speedy, but does not support statics.
If you want to run statics you can run them in your batch on your own like so
zone.exe soldungb
zone.exe everfrost
Or you can do as mentioned in the thread before and set your launcher_zones table and map all of your statics and run eqlaunch.exe in parallel with the perl launcher.
To give you an idea, EZ Server runs pure dynamcis using the above methodology I explained earlier to be leaner on resources.
Hopefully that clears up some questions.
Definitely clears up a lot. I'll just trim my batch file down to the start eqlaunch <launchername> segment, and run it in parallel then. Thank you Akkadius!
Edit: removing my own launcher called Dynamics from my segment of the batch file since your perl script has 30 dynamics already. Perfect! Works like a charm!
khalathas
10-13-2016, 07:43 PM
Edit: removing my own launcher called Dynamics from my segment of the batch file since your perl script has 30 dynamics already. Perfect! Works like a charm!
NostalgiaEQ
10-13-2016, 08:05 PM
Would modifying your installed launcher to this work without any modifications to the database?
@echo off
cls
echo ***CLEARING OLD LOGS***
del "logs/zone/" /q
shared_memory.exe
start perl win_server_launcher.pl zones="30" zone_background_start loginserver kill_all_on_start
zone.exe soldungb
zone.exe everfrost
exit
Akkadius
10-13-2016, 08:19 PM
Yes that would work
NostalgiaEQ
10-13-2016, 08:20 PM
Yes that would work
Awesome thank you. I tried killing a mob in soldungb zoned out and came back and the corpse was gone. Would static zone not necessarily prevent this?
khalathas
10-13-2016, 08:24 PM
Here's my version:
@echo off
cls
echo *** CLEARING OLD LOGS ***
del "logs/zone/" /q
shared_memory.exe
start perl win_server_launcher.pl zones="30" zone_background_start loginserver kill_all_on_start
echo starting zone
start eqlaunch antonica
start eqlaunch faydwer
start eqlaunch odus
start eqlaunch luclin
start eqlaunch kunark
start eqlaunch velious
start eqlaunch ykesha
start eqlaunch planes
exit
NostalgiaEQ
10-13-2016, 08:29 PM
Here's my version:
@echo off
cls
echo *** CLEARING OLD LOGS ***
del "logs/zone/" /q
shared_memory.exe
start perl win_server_launcher.pl zones="30" zone_background_start loginserver kill_all_on_start
echo starting zone
start eqlaunch antonica
start eqlaunch faydwer
start eqlaunch odus
start eqlaunch luclin
start eqlaunch kunark
start eqlaunch velious
start eqlaunch ykesha
start eqlaunch planes
exit
Hmm k but you have database entries and all that though right? I have basically a fresh akka installer version in this aspect at this point.
khalathas
10-13-2016, 08:30 PM
Yes, I spent a fair bit of time creating my db entries. I could export them for you if you like
khalathas
10-13-2016, 08:34 PM
This is a pure insert-only sql script, it won't drop or update any conflicting rows.
-- --------------------------------------------------------
-- Host: 127.0.0.1
-- Server version: 5.1.68-community - MySQL Community Server (GPL)
-- Server OS: Win64
-- HeidiSQL Version: 9.1.0.4867
-- --------------------------------------------------------
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-- Dumping data for table peq.launcher: 11 rows
/*!40000 ALTER TABLE `launcher` DISABLE KEYS */;
INSERT INTO `launcher` (`name`, `dynamics`) VALUES
('antonica', 0),
('faydwer', 0),
('odus', 0),
('luclin', 0),
('kunark', 0),
('velious', 0),
('ykesha', 0),
('planes', 0),
('dynamics', 20);
/*!40000 ALTER TABLE `launcher` ENABLE KEYS */;
-- Dumping data for table peq.launcher_zones: 75 rows
/*!40000 ALTER TABLE `launcher_zones` DISABLE KEYS */;
INSERT INTO `launcher_zones` (`launcher`, `zone`, `port`) VALUES
('antonica', 'qeynos', 1200),
('antonica', 'qeynos2', 1201),
('antonica', 'qrg', 1202),
('antonica', 'qeytoqrg', 1203),
('antonica', 'highpass', 1204),
('antonica', 'highkeep', 1205),
('antonica', 'freportn', 1206),
('antonica', 'freportw', 1207),
('antonica', 'freporte', 1208),
('antonica', 'runnyeye', 1209),
('antonica', 'qey2hh1', 1210),
('faydwer', 'oot', 1264),
('antonica', 'sro', 1232),
('antonica', 'southkarana', 1212),
('antonica', 'northkarana', 1211),
('antonica', 'eastkarana', 1213),
('antonica', 'beholder', 1214),
('antonica', 'blackburrow', 1215),
('antonica', 'paw', 1216),
('antonica', 'rivervale', 1217),
('antonica', 'kithicor', 1218),
('antonica', 'commons', 1219),
('antonica', 'ecommons', 1220),
('antonica', 'nektulos', 1223),
('odus', 'erudnint', 1221),
('odus', 'erudnext', 1222),
('antonica', 'lavastorm', 1225),
('antonica', 'nro', 1231),
('antonica', 'soldunga', 1228),
('antonica', 'soldungb', 1229),
('faydwer', 'gfaydark', 1249),
('antonica', 'guktop', 1260),
('antonica', 'gukbottom', 1261),
('velious', 'greatdivide', 1277),
('velious', 'thurgadina', 1278),
('velious', 'eastwastes', 1279),
('velious', 'iceclad', 1280),
('kunark', 'dreadlands', 1281),
('kunark', 'skyfire', 1282),
('kunark', 'burningwood', 1283),
('ykesha', 'gunthak', 1284),
('ykesha', 'dulak', 1285),
('planes', 'poknowledge', 1286),
('kunark', 'citymist', 1287),
('velious', 'kael', 1288),
('luclin', 'maiden', 1289),
('luclin', 'umbral', 1290),
('luclin', 'thegrey', 1291),
('velious', 'velkator', 1292),
('odus', 'hole', 1293),
('antonica', 'permafrost', 1294),
('kunark', 'veksar', 1295),
('velious', 'necropolis', 1296),
('velious', 'frozenshadow', 1297),
('planes', 'ponightmare', 1298),
('planes', 'podisease', 1299),
('planes', 'poinnovation', 1300),
('luclin', 'dawnshroud', 1301),
('luclin', 'acrylia', 1302),
('luclin', 'akheva', 1303),
('kunark', 'charasis', 1304),
('kunark', 'chardok', 1305),
('kunark', 'sebilis', 1306),
('kunark', 'chardokb', 1307),
('luclin', 'griegsend', 1308),
('planes', 'fearplane', 1309),
('planes', 'hateplane', 1310),
('planes', 'airplane', 1311),
('planes', 'growthplane', 1312),
('planes', 'mischiefplane', 1313),
('planes', 'pojustice', 1314),
('planes', 'postorms', 1315),
('planes', 'povalor', 1316),
('velious', 'templeveeshan', 1317),
('velious', 'westwastes', 1318);
/*!40000 ALTER TABLE `launcher_zones` ENABLE KEYS */;
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
Akkadius
10-13-2016, 08:36 PM
Awesome thank you. I tried killing a mob in soldungb zoned out and came back and the corpse was gone. Would static zone not necessarily prevent this?
Was it set as static?
NostalgiaEQ
10-13-2016, 08:42 PM
Was it set as static?
in the database? No, should I add entry and set dynamics to 0 in the launcher table or do I need to do the launcher_zones too?
khalathas
10-13-2016, 09:45 PM
Scratch my previous startup script, the eqlaunch portion of it fails because the rest of the server isn't up for the zones to connect to yet. I'll add a pause before the static section.
khalathas
10-13-2016, 10:00 PM
Ok, adding statics made the game glitchy. I was able to log in without a problem, but a friend coming in remotely couldn't load past character select. Without having the statics, he was able to load in just fine. I'll do some digging and see what I can figure out and come back to this.
Uleat
10-13-2016, 10:22 PM
You should have at least 2 dynamic zones in addition to any static ones.
(You'll really need more than that..but, that is a bare minimum.)
If a player is logged out in a non-static zone, you need at least 1.
If that same player attempts to 'zone' to another non-static zone, you'll need at least 2.
Player population is a major factor in how many dynamic zones you will need.
DanCanDo
10-13-2016, 10:38 PM
Uleat pretty much says it all. You need one zone launcher available for each and every
seperate zone that a player is trying to zone in to (even from login).
I personally don't run statics. I have 75 dynamics which right now is an overkill, but the
resources are plenty enough.
If you're simply trying to run statics to control mob spawns, it's not really needed.
The respawn timers work well enough for me, that even trying to do a #repop will not
reset that timer.
NostalgiaEQ
10-14-2016, 12:57 AM
How did you get it to have 75 dynamics? This is getting a little more complicated than I anticipated, I guess I'll just set increased shutdown delay in Zone table and run extra dynamic zones as a good compromise.
The issue though with dynamics is like for lockjaw for instance if he isn't popped you could leave the zone then come back and he may be up.
Also what are the benefits to running extra dynamics?
Darkscis
10-14-2016, 02:42 AM
If you are using Akka's script you just edit the "t_start_server.bat" file and change zones="X" to however many you want.
The benefit's to running extra? More people can be in different zones at once. If there are no zone processes available people will try to zone and receive an error message, then end up at the safe point of the zone they were already in. The don't consume a lot of resources and it definitely pays to have more than you need, but basically - balance it around your population.
DanCanDo
10-14-2016, 03:25 AM
How did you get it to have 75 dynamics? This is getting a little more complicated than I anticipated
I actually have to apologize, simply because I've never used Akka's installer
and I don't even know what the start scripts look like, as I've done all my own
source compiling/installs, etc., but in the database, the 'launcher" table, which
has 2 columns, 'Name' and 'Dynamics' I use zone for name and 75 for dynamics.
Then when running the cmd eqlaunch.exe zone in my own script, it will launch
those 75 dynamics. But I run as much as I can from the database without the
use of scripts. As far as how many dynamics, don't use mine as "needed", it's
far from what I do need right now. I'm just doing my own thing. :)
NostalgiaEQ
10-14-2016, 05:32 AM
If you are using Akka's script you just edit the "t_start_server.bat" file and change zones="X" to however many you want.
The benefit's to running extra? More people can be in different zones at once. If there are no zone processes available people will try to zone and receive an error message, then end up at the safe point of the zone they were already in. The don't consume a lot of resources and it definitely pays to have more than you need, but basically - balance it around your population.
Beautiful that is exactly what I needed to know. I am assuming I should also change "peq" or "zone" entry in the launcher table in the database to my elevated number as well but not sure which does which there yet. Also there is a win_server_launcher.pl file and it says if there is a zones_to_launch statement in the .bat file then it will launch 10 zones. I assume this is if you don't set it in the .bat file but I changed the pl file too just in case.
NostalgiaEQ
10-14-2016, 05:37 AM
I actually have to apologize, simply because I've never used Akka's installer
and I don't even know what the start scripts look like, as I've done all my own
source compiling/installs, etc., but in the database, the 'launcher" table, which
has 2 columns, 'Name' and 'Dynamics' I use zone for name and 75 for dynamics.
Then when running the cmd eqlaunch.exe zone in my own script, it will launch
those 75 dynamics. But I run as much as I can from the database without the
use of scripts. As far as how many dynamics, don't use mine as "needed", it's
far from what I do need right now. I'm just doing my own thing. :)
Hmm so with akka's db it has a peq entry and a zone entry. By default peq dynamics is 40 and zone is 5 so I would assume peq is the amount of zones up? Or should I set both to my higher number just to be safe?
Uleat
10-14-2016, 11:06 AM
I'm not sure that I understand how Akkadius's scripts operate..but...
I do believe that they bypass the use of eqlaunch.exe.
If that's the case, then I'm not sure how much the db table values come into play.
khalathas
10-14-2016, 12:46 PM
Uleat, then can they not be mixed?
@echo off
cls
echo *** CLEARING OLD LOGS ***
del "logs/zone/" /q
shared_memory.exe
start perl win_server_launcher.pl zones="30" zone_background_start loginserver kill_all_on_start
pause
echo starting static zones
start eqlaunch antonica
start eqlaunch faydwer
start eqlaunch odus
start eqlaunch luclin
start eqlaunch kunark
start eqlaunch velious
start eqlaunch ykesha
start eqlaunch planes
exit
Uleat
10-14-2016, 12:55 PM
Don't ask me..not my script :P
Just going off of comments I hear in chat..though, your post would indicate otherwise.
Akkadius
10-14-2016, 02:24 PM
Really should just do dynamics + long shutdown delays. Statics are unecessary
khalathas
10-14-2016, 04:22 PM
I completely did not realize until now that the shutdown delay was a per-zone setting! Holy crap *runs off to do like an extra 70 dynamic zones, then increase shutdown timers on them*
jpyou127
10-17-2016, 09:13 AM
Cool, I learned something new today!! Shutdown delay!
Any recommendations for length of time? 1-2 hours?
I have a default value of 5000, is this in seconds?
Celestial
Uleat
10-17-2016, 10:29 AM
years.....
jpyou127
10-17-2016, 10:33 AM
LOL
60000 looks like its 60 secs.
N0ctrnl
10-17-2016, 10:56 AM
If you don't want people to be able to cycle loot on NPCs, the only way is to do static zones. Otherwise it will change every time the zone starts backup. For that reason I do statics on raid zones. Even with a long delay, loot still changes when the zone boots up.
Akkadius
10-17-2016, 02:38 PM
Apparently no one read my post on the first page explaining all of this
Shiny151
10-27-2016, 01:56 PM
The disadvantage to dynamic zones is this:
If you have a named mob you want to kill that has a minimum chance to spawn every four hours that also has a placeholder with a zone shutdown delay of one hour, you could essentially check the zone every hour in the hopes that the named is up without having to kill the placeholder. Granted, the zone has very little foot traffic to prevent the zone from staying open/active.
With a static zone, let's say the placeholder is up. It will STAY up indefinitely until someone kills it. Thus not allowing lazy players to cycle-check the zone.
The solution? You'd want the dynamic zone shutdown delay to match or exceed the longest timed mob that has a placeholder in the zone in order to behave more static and live-like. I know it was an example, but an hour shutdown delay won't always do it for the crafty loot-seeker. Which basically means you'll need a custom shutdown delay for every zone you don't want this happening in.
Akkadius
10-27-2016, 02:11 PM
The disadvantage to dynamic zones is this:
If you have a named mob you want to kill that has a minimum chance to spawn every four hours that also has a placeholder with a zone shutdown delay of one hour, you could essentially check the zone every hour in the hopes that the named is up without having to kill the placeholder. Granted, the zone has very little foot traffic to prevent the zone from staying open/active.
With a static zone, let's say the placeholder is up. It will STAY up indefinitely until someone kills it. Thus not allowing lazy players to cycle-check the zone.
The solution? You'd want the dynamic zone shutdown delay to match or exceed the longest timed mob that has a placeholder in the zone in order to behave more static and live-like. I know it was an example, but an hour shutdown delay won't always do it for the crafty loot-seeker. Which basically means you'll need a custom shutdown delay for every zone you don't want this happening in.
Not really a disadvantage of shutdown delay functionality itself than it is configuration of your own server
N0ctrnl
10-27-2016, 04:18 PM
I don't understand the militant stance on this one. It's absolutely a limitation of dynamic zones vs. static ones. Sure, it's easily overcome, and not expensive to do so, but to pretend that dynamic zones fit situations like this is just not right.
Akkadius
10-27-2016, 04:23 PM
I don't understand the militant stance on this one. It's absolutely a limitation of dynamic zones vs. static ones. Sure, it's easily overcome, and not expensive to do so, but to pretend that dynamic zones fit situations like this is just not right.
What is there to pretend?
It's pretty simple.
And I don't understand why there is even an arugment against it.
Why would you allocate say 80 zones a head of time as statics, memory, usage, and idle CPU utilization that are completely unecessary when essentially the same functionality of a static can be fulfilled on demand via dynamic when a zone request is booted, and then nailed up for as long as you wish (a week if you wish).
It serves the exact same purpose.
But what do I know, I don't run any servers or anything
NostalgiaEQ
10-27-2016, 04:26 PM
Not really a disadvantage of shutdown delay functionality itself than it is configuration of your own server
That's very cryptic but what I think your saying is a server should be designed to not have unused zones. But with a live like or classic like server this could be a problem. Also it isn't very classy when you zone into a place with a boat and the boat is always waiting at the dock. For me I feel a good solution is dynamic zones and an 8 hr blanket zone reset time which should prevent any mob cycling but would still have the boat issue. I'll survive.
Akkadius
10-27-2016, 04:27 PM
Apparently no one read or understood anything I said in my first post about how dynamics operate with a delayed shutdown.
N0ctrnl
10-27-2016, 04:33 PM
As long as that delay is a finite number, the purpose is defeated though. At least if you intend to emulate EverQuest behavior of spawns.
NostalgiaEQ
10-27-2016, 04:37 PM
Yes you can make shutdown delay 50 years in seconds but I think some of us are OCD and want a more elegant solution ;). Its not an issue though there are so many more important things to work on and fix.
Akkadius
10-27-2016, 05:10 PM
I'm just going to accept that my 2 hours of sleep and patience for people who are failing to see the difference are not there.
Run your static zones, run as many as you want. They're completely unnecessary though in today's code.
Or you can fidget with maintaing launch tables, static port nailups, nail up resources on your machine for seriously no difference in end functionality.
In the end how you run your server is mere personal preference, but arguing against delayed shut down dynamics because they don't fulfill keeping proper spawn rotations or grids in tact is flat out wrong and to illustrate false information on the forums like that irritates me because I spend plenty of time making sure people have the right resources, right information, right tools available to them - then to argue with me about something that has zero premise is retarded.
If you need me to write it out on the board for you this is how it goes.
In the main zone process loop you have the zone->Process loop, which is active during an active zone:
https://github.com/EQEmu/Server/blob/master/zone/zone.cpp#L1198-L1205
When this returns false - that means a shutdown timer (dynamic delay) will allow the zone to actually flush spawn timers, npc tables, data that is loaded in the zone. Just because a zone is dynamic doesn't mean it flushes its data until the shutdown delay is fulfilled, this triggers Zone::Shutdown
https://github.com/EQEmu/Server/blob/master/zone/zone.cpp#L672L717
Again - the end goal functionality is no different, except for that fact that you've nailed up unnecessary resources right away, using way more memory than necessary, cpu idling and you're fiddling with over complicating managing something.
if ( numclients < 1 && zoneupdate_timer.GetDuration() != IDLEZONEUPDATE )
zoneupdate_timer.SetTimer(IDLEZONEUPDATE);
else if ( numclients > 0 && zoneupdate_timer.GetDuration() == IDLEZONEUPDATE )
{
zoneupdate_timer.SetTimer(ZONEUPDATE);
zoneupdate_timer.Trigger();
}
A static zone or dynamic zone are going to go into idle status the same, function the same, serve the same end goal - thus making the argument that dynamics are not live-like bullshit.
Even if you want your fancy boats to not be in the same spot when players zone in. The first player might see that boat at the dock, but that boat is always going to path regardless of idle or non idle after that zone has been booted.
And regardless of cross-zone boating, shits been broke for ages. Boats hardly work in themselves - and it shouldn't rely on both zones being up in order for that to happen otherwise that is poor design.
update zone set shutdowndelay = 604800000;
Done.
First time a player enters that zone, it's up for a week AFTER the last player exits it, and when they re-enter that timer is replenished - AND that zone never is recycled with another zones scripts/resources.
Also - there's issues with eqlaunch that freak out over extended use and require a server restart to fix.
Your other alternative is to run the zones manually 'zone soldungb', but if that zone crashes you need a way to automatically revive it? What's the easy solution? Run the simple launcher I created with dynamics and it will keep those dynamics nailed up instantly.
If that isn't clear enough for you I don't know what is.
N0ctrnl
10-27-2016, 05:50 PM
I completely understand and agree with what you're saying. Though you can leave the ports to dynamic in the launcher and ignore that part. Also, they restart just fine even if static.
If you do set the timeout delay to a week, or a year, or a decade, it's functionally static after the initial launch though, correct? Until the obscenely long timeout is met and it actually flushes the zone?
The idea for my use case has always been like Live - If an NPC spawns, it's going to be up with exactly the same loot table until a) the server gets rebooted, b) he gets killed, or c) the zone crashes. Certainly there's a cost to running a static zone, but to keep that case working for any situation - even one where a zone might not be used for a week - I would just choose static in that case.
Like I said - I get it. But if you use a launcher for the static zones, a lot more of the benefit columns get ticked. :)
Akkadius
10-27-2016, 05:52 PM
I completely understand and agree with what you're saying. Though you can leave the ports to dynamic in the launcher and ignore that part. Also, they restart just fine even if static.
If you do set the timeout delay to a week, or a year, or a decade, it's functionally static after the initial launch though, correct? Until the obscenely long timeout is met and it actually flushes the zone?
The idea for my use case has always been like Live - If an NPC spawns, it's going to be up with exactly the same loot table until a) the server gets rebooted, b) he gets killed, or c) the zone crashes. Certainly there's a cost to running a static zone, but to keep that case working for any situation - even one where a zone might not be used for a week - I would just choose static in that case.
Like I said - I get it. But if you use a launcher for the static zones, a lot more of the benefit columns get ticked. :)
Dear god
http://img3.wikia.nocookie.net/__cb20140625082633/skylandersfanon/images/c/ca/Chris-morris-jumps-out-window-o.gif
___________
DanCanDo
10-27-2016, 06:21 PM
Just curious, is it possible to set up individual (player.pl) scripts containing
an enter_zone sub, with a 'randomaction' - 'depop' for specific npcid's?
Just giving it a chance that something might be up (if it isn't already).
I haven't attempted writing one yet, but it's crossed my mind in the past,
as an alternative.
Maze_EQ
10-27-2016, 09:57 PM
yes it's possible using sub EVENT_ENTER_ZONE
DanCanDo
10-27-2016, 10:06 PM
Yes, I am aware of the sub, I use it a lot my server, I wasn't really asking a question,
I was throwing a "hint" for people to read as an alternative. I don't mean the posters
in the thread, it's for that overwhelming community that likes to (cough) read :)
creakin
10-28-2016, 01:36 AM
Dear god
http://img3.wikia.nocookie.net/__cb20140625082633/skylandersfanon/images/c/ca/Chris-morris-jumps-out-window-o.gif
___________
This makes me chuckle :-D
dburg30
10-31-2016, 02:27 PM
So if I change the zones="xx" in the bat file, after a certain point in the one server launcher window, the zones will continue to count up.. ie: if I put 100 in the zones=. It will count up to 100 in the windows server launcher, but will then start counting again, but not from 0/100, somewhere higher, but when it gets to 100/100 it will restart again.. Is there a limit to how many zones it will load? my memory is not running out. Does there need to be a delay somewhere that it loads them?
SCROFT
11-02-2016, 11:57 PM
This makes me chuckle :-D
LOL
They say they understand... but totally missed your point.
Warkral
11-03-2016, 07:50 PM
I'm just going to accept that my 2 hours of sleep and patience for people who are failing to see the difference are not there.
Run your static zones, run as many as you want. They're completely unnecessary though in today's code.
Or you can fidget with maintaing launch tables, static port nailups, nail up resources on your machine for seriously no difference in end functionality.
In the end how you run your server is mere personal preference, but arguing against delayed shut down dynamics because they don't fulfill keeping proper spawn rotations or grids in tact is flat out wrong and to illustrate false information on the forums like that irritates me because I spend plenty of time making sure people have the right resources, right information, right tools available to them - then to argue with me about something that has zero premise is retarded.
If you need me to write it out on the board for you this is how it goes.
In the main zone process loop you have the zone->Process loop, which is active during an active zone:
https://github.com/EQEmu/Server/blob/master/zone/zone.cpp#L1198-L1205
When this returns false - that means a shutdown timer (dynamic delay) will allow the zone to actually flush spawn timers, npc tables, data that is loaded in the zone. Just because a zone is dynamic doesn't mean it flushes its data until the shutdown delay is fulfilled, this triggers Zone::Shutdown
https://github.com/EQEmu/Server/blob/master/zone/zone.cpp#L672L717
Again - the end goal functionality is no different, except for that fact that you've nailed up unnecessary resources right away, using way more memory than necessary, cpu idling and you're fiddling with over complicating managing something.
if ( numclients < 1 && zoneupdate_timer.GetDuration() != IDLEZONEUPDATE )
zoneupdate_timer.SetTimer(IDLEZONEUPDATE);
else if ( numclients > 0 && zoneupdate_timer.GetDuration() == IDLEZONEUPDATE )
{
zoneupdate_timer.SetTimer(ZONEUPDATE);
zoneupdate_timer.Trigger();
}
A static zone or dynamic zone are going to go into idle status the same, function the same, serve the same end goal - thus making the argument that dynamics are not live-like bullshit.
Even if you want your fancy boats to not be in the same spot when players zone in. The first player might see that boat at the dock, but that boat is always going to path regardless of idle or non idle after that zone has been booted.
And regardless of cross-zone boating, shits been broke for ages. Boats hardly work in themselves - and it shouldn't rely on both zones being up in order for that to happen otherwise that is poor design.
update zone set shutdowndelay = 604800000;
Done.
First time a player enters that zone, it's up for a week AFTER the last player exits it, and when they re-enter that timer is replenished - AND that zone never is recycled with another zones scripts/resources.
Also - there's issues with eqlaunch that freak out over extended use and require a server restart to fix.
Your other alternative is to run the zones manually 'zone soldungb', but if that zone crashes you need a way to automatically revive it? What's the easy solution? Run the simple launcher I created with dynamics and it will keep those dynamics nailed up instantly.
If that isn't clear enough for you I don't know what is.
Cool thanks, bookmarking this thread as this answered a HUGE question for me regarding keeping a zone up for respawns.
jpyou127
11-04-2016, 11:02 AM
Which takes precedence the database zone shutdowndelay value or the database rule AutoshutDownDelay value?
Celestial
Akkadius
11-04-2016, 01:51 PM
Which takes precedence the database zone shutdowndelay value or the database rule AutoshutDownDelay value?
Celestial
The zone one, always.
khalathas
11-16-2016, 01:44 PM
Akkadius, as the original asker of the statics question here...I just wanted to thank you, as you did answer my needs, and the extended shutdown timer was enough to satisfy what I was attempting to create. I'm now using 100 dynamics with an exceptionally long timer to cover the actual expected 3-5 day respawns of some dragons.
legends
05-28-2018, 03:43 AM
Has anyone had any success running over 100 dynamics? My game is unconnectable after 100, though I have a lot of resources to throw at it.
Akkadius
05-28-2018, 03:46 AM
Has anyone had any success running over 100 dynamics? My game is unconnectable after 100, though I have a lot of resources to throw at it.
Should be able to handle just fine, however PEQ only runs 60 dynamics right now because it hardly ever gets to the point of booting up to 60
If zones are idle they sleep aggressively and shouldn't even be chewing much for idle CPU
Should be able to do this without an issue
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.