SinCity_Serverpack_2_Test
Patterns that can stall a single frame regardless of the load figure — see below.
1 chain break, all on specific classes the mod replaces wholesale — matters only if another mod patches the same classes.
0.0356% of each server frame at 100 players (0.356 ms/s). Counts hook dispatch and timers only, not what the hooks do inside. Methodology.
Structural load of the 328 scripted mods analyzed, lightest on the left. This mod's bar is lit; 25 others share it. Ranked list.
Repeating timers carry 79% of this mod's structural load. 0.356 ms/s in all.
1 hook · 0.074 ms/s
6 hooks · 0.0012 ms/s
5 hooks · 0.00001 ms/s
2 timers · 0.28 ms/s
| Per-player hooksrun about 30 times a second for each player | 1 hook | 0.074 ms/s | 21% | PlayerBase.OnScheduledTick |
| Event hooksrun when something happens: an inventory move, a hit, an action | 6 hooks | 0.0012 ms/s | 0.3% | PlayerBase.OnRPC, PlayerBase.OnVariablesSynchronized, Pliers.SetActions and 2 more |
| Lifecycle hooksrun when an entity is created, loaded or deleted | 5 hooks | 0.00001 ms/s | <0.1% | MissionServer.OnInit, PlantBase.OnStoreLoad, PlantBase.OnStoreSave |
| Repeating timersstay in the timer queue, which is walked every frame | 2 timers | 0.28 ms/s | 79% | every 1 s, every 15 s |
Counts how often each hook is dispatched and how many timers stay alive, not what the code inside does. Some rates are order-of-magnitude estimates; the methodology lists which.
Chain breaks, by consequence
1 override that skip super(), ranked by how much they can affect. On any server a break replaces vanilla's behaviour on that method and silences every earlier-loaded mod hooking it.
UpdatePlant
Only this class is affected. Matters only if another mod in your stack patches the same class.
1 class
PlantBase1 location
iTz_Garden.pbo::Scripts\4_world\iTz_PlantBase.c:24Where this mod runs often
Hooks on per-frame and high-rate surfaces, with what their bodies call. Body work, not the hook itself, is what costs frame time.
Other findings
super() only on some paths · 5 · warning
- Hologram.EvaluateCollision calls super.EvaluateCollision() only on some paths — on the others the chain below this mod is dropped.
iTz_Workbench.pbo::scripts\4_World\Entities\ItemBase\Furniture_Hologram.c:49 - Hologram.ProjectionBasedOnParent calls super.ProjectionBasedOnParent() only on some paths — on the others the chain below this mod is dropped.
iTz_Workbench.pbo::scripts\4_World\Entities\ItemBase\Furniture_Hologram.c:3 - Hologram.SetProjectionOrientation calls super.SetProjectionOrientation() only on some paths — on the others the chain below this mod is dropped.
iTz_Workbench.pbo::scripts\4_World\Entities\ItemBase\Furniture_Hologram.c:13 - PlantBase.Harvest calls super.Harvest() only on some paths — on the others the chain below this mod is dropped.
iTz_Garden.pbo::Scripts\4_world\iTz_PlantBase.c:236 - PlantBase.Init calls super.Init() only on some paths — on the others the chain below this mod is dropped.
iTz_Garden.pbo::Scripts\4_world\iTz_PlantBase.c:88
- Hologram.EvaluateCollision calls super.EvaluateCollision() only on some paths — on the others the chain below this mod is dropped.
Per-player-per-frame hooks · 1 · warning
- PlayerBase.OnScheduledTick runs once per player per tick (~30 Hz/player): cost scales with population on the hottest per-player surface.
Vybros.pbo::scripts\4_World\Entities\PlayerBase_EmissionClient.c:100
- PlayerBase.OnScheduledTick runs once per player per tick (~30 Hz/player): cost scales with population on the hottest per-player surface.
Several overrides of one hot surface · 1 · info
- 2 overrides of PlayerBase.OnRPC within this mod.
Which vanilla methods the mod hooks, which of them drop the chain, how often each hook fires, and which risky calls sit inside hot hooks.
How long hook bodies take, network cost, or engine-side load. Measured across live fleets, most server lag comes from the engine and world state, not mod script chains — a light footprint does not clear a mod of lag, and a heavy one does not convict it. Methodology.
Everything else
All 54 overrides
Surface is the dispatch tier the rubric can price (— = unpriced); server is whether the override exists on a dedicated server; super() shows whether the vanilla chain is preserved on a server.
| method | surface | server | super() | where |
|---|---|---|---|---|
ActionConstructor.RegisterActions |
— | yes | ✓ | Area_Reloader_Client.pbo::Scripts\4_World\ActionConstructor.c:3 |
ActionConstructor.RegisterActions |
— | yes | ✓ | Book.pbo::scripts\4_world\Actions\ActionOpenDynamicBook.c:3 |
ActionConstructor.RegisterActions |
— | yes | ✓ | Vybros.pbo::scripts\4_World\classes\UserActionsComponent\ActionConstructor.c:3 |
ActionConstructor.RegisterActions |
— | yes | ✓ | WoodenSign.pbo::scripts\4_World\ActionConstructor.c:3 |
ActionConstructor.RegisterActions |
— | yes | ✓ | iTz_Workbench.pbo::scripts\4_World\Classes\Actions\ActionConstructor.c:3 |
ActionDeployObject.OnFinishProgressServer |
— | yes | ✓ | iTz_Workbench.pbo::scripts\4_World\Classes\Actions\ActionDeconstructWB.c:106 |
Hologram.ProjectionBasedOnParent |
— | yes | conditional | iTz_Workbench.pbo::scripts\4_World\Entities\ItemBase\Furniture_Hologram.c:3 |
Hologram.SetProjectionOrientation |
— | yes | conditional | iTz_Workbench.pbo::scripts\4_World\Entities\ItemBase\Furniture_Hologram.c:13 |
Hologram.PlaceEntity |
— | yes | ✗ none | iTz_Workbench.pbo::scripts\4_World\Entities\ItemBase\Furniture_Hologram.c:30 |
Hologram.EvaluateCollision |
— | yes | conditional | iTz_Workbench.pbo::scripts\4_World\Entities\ItemBase\Furniture_Hologram.c:49 |
JMModuleConstructor.RegisterModules |
— | yes | ✓ | VPP_Addon.pbo::Scripts\5_Mission\JMModuleConstructor.c:4 |
MissionBase.CreateScriptedMenu |
— | yes | ✓ | WoodenSign.pbo::scripts\5_Mission\MissionBase.c:4 |
MissionGameplay.OnInit |
T3 | yes | ✓ | Book.pbo::scripts\5_mission\MissionGameplay.c:5 |
MissionGameplay.OnKeyPress |
— | yes | ✓ | Book.pbo::scripts\5_mission\MissionGameplay.c:47 |
MissionGameplay.OnKeyPress |
— | yes | ✓ | WoodenSign.pbo::scripts\5_Mission\MissionGameplay.c:3 |
MissionGameplay.OnInit |
T3 | yes | ✓ | iTz_Workbench.pbo::scripts\5_Mission\mission\MissionGameplay.c:3 |
MissionGameplay.OnKeyPress |
— | yes | ✓ | iTz_Workbench.pbo::scripts\5_Mission\mission\MissionGameplay.c:13 |
MissionServer.OnInit |
T3 | yes | ✓ | Book.pbo::scripts\5_mission\MissionServer.c:3 |
MissionServer.OnInit |
T3 | yes | ✓ | iTz_Drunkenness.pbo::Scripts\5_Mission\MissionServer.c:3 |
MissionServer.OnInit |
T3 | yes | ✓ | iTz_Garden.pbo::Scripts\5_mission\mission\MissionServer.c:3 |
ModifiersManager.Init |
— | yes | ✓ | Vybros.pbo::scripts\4_World\classes\modifiers\ModifiersManager.c:3 |
ModifiersManager.Init |
— | yes | ✓ | iTz_Drunkenness.pbo::Scripts\4_World\Classes\playermodifiers\modifiersmanager.c:10 |
ModItemRegisterCallbacks.RegisterOneHanded |
— | yes | ✓ | Book.pbo::scripts\4_world\Book.c:12 |
ModItemRegisterCallbacks.RegisterOneHanded |
— | yes | ✓ | WoodenSign.pbo::scripts\4_World\hand_profiles.c:3 |
PlantBase.UpdatePlant |
— | yes | ✗ none | iTz_Garden.pbo::Scripts\4_world\iTz_PlantBase.c:24 |
PlantBase.Init |
— | yes | conditional | iTz_Garden.pbo::Scripts\4_world\iTz_PlantBase.c:88 |
PlantBase.OnStoreLoad |
T3 | yes | ✓ | iTz_Garden.pbo::Scripts\4_world\iTz_PlantBase.c:180 |
PlantBase.OnStoreSave |
T3 | yes | ✓ | iTz_Garden.pbo::Scripts\4_world\iTz_PlantBase.c:211 |
PlantBase.Harvest |
— | yes | conditional | iTz_Garden.pbo::Scripts\4_world\iTz_PlantBase.c:236 |
PlayerBase.Init |
— | yes | ✓ | VPP_Addon.pbo::Scripts\4_World\KF_PlayerBase.c:5 |
PlayerBase.OnVariablesSynchronized |
T2 | yes | ✓ | VPP_Addon.pbo::Scripts\4_World\KF_PlayerBase.c:30 |
PlayerBase.Init |
— | yes | ✓ | Vybros.pbo::scripts\4_World\Entities\PlayerBase_EmissionClient.c:14 |
PlayerBase.OnRPC |
T2 | yes | ✓ | Vybros.pbo::scripts\4_World\Entities\PlayerBase_EmissionClient.c:36 |
PlayerBase.OnScheduledTick |
T1 | yes | ✓ | Vybros.pbo::scripts\4_World\Entities\PlayerBase_EmissionClient.c:100 |
PlayerBase.Init |
— | yes | ✓ | Vybros_Publik.pbo::scripts\4_World\PlayerBase.c:3 |
PlayerBase.Init |
— | yes | ✓ | iTz_Drunkenness.pbo::Scripts\4_World\Entities\ManBase\playerbase.c:5 |
PlayerBase.Consume |
— | yes | ✓ | iTz_Drunkenness.pbo::Scripts\4_World\Entities\ManBase\playerbase.c:30 |
PlayerBase.OnRPC |
T2 | yes | ✓ | iTz_Workbench.pbo::scripts\4_World\Entities\ManBase\PlayerBase.c:34 |
PlayerBase.Init |
— | yes | ✓ | iTz_Workbench.pbo::scripts\4_World\Entities\ManBase\PlayerBase.c:129 |
Pliers.SetActions |
T2 | yes | ✓ | Vybros.pbo::scripts\4_World\Entities\ItemBase\Pliers.c:3 |
PluginRecipesManager.RegisterRecipies |
— | yes | ✓ | iTz_Workbench.pbo::scripts\4_World\Classes\Recipes\RecipeManager.c:3 |
PluginRecipesManager.RegisterRecipies |
— | yes | ✓ | iTz_Workbench.pbo::scripts\4_World\Classes\Recipes\unregisterrecipes.c:4 |
PluginRecipesManagerBase.RegisterRecipies |
— | yes | ✓ | WoodenSign.pbo::scripts\4_World\Recipes.c:3 |
PPERequesterRegistrations.RegisterAdditionalRequesters |
— | yes | ✓ | iTz_Drunkenness.pbo::Scripts\3_Game\PPEManager\PPERequesterRegistrations.c:3 |
Realoader_FloppyDisks.SetActions |
T2 | yes | ✓ | Area_Reloader_Client.pbo::Scripts\4_World\Realoader_FloppyDisks.c:3 |
Screwdriver.SetActions |
T2 | yes | ✓ | iTz_Workbench.pbo::scripts\4_World\Classes\Tools.c:3 |
SymptomManager.Init |
— | yes | ✓ | Vybros.pbo::scripts\4_World\Symptoms\EmissionSymptom.c:3 |
SymptomManager.Init |
— | yes | ✓ | iTz_Drunkenness.pbo::Scripts\4_World\Classes\playersymptoms\StateManager.c:8 |
veggi_Plant_Cabbage.Harvest |
— | yes | ✓ | iTz_Garden.pbo::Scripts\4_world\iTz_Garden.c:6 |
veggi_Plant_Carrot.Harvest |
— | yes | ✓ | iTz_Garden.pbo::Scripts\4_world\iTz_Garden.c:17 |
veggi_Plant_Garlic.Harvest |
— | yes | ✓ | iTz_Garden.pbo::Scripts\4_world\iTz_Garden.c:28 |
veggi_Plant_Onion.Harvest |
— | yes | ✓ | iTz_Garden.pbo::Scripts\4_world\iTz_Garden.c:39 |
veggi_Plant_Radish.Harvest |
— | yes | ✓ | iTz_Garden.pbo::Scripts\4_world\iTz_Garden.c:50 |
VPPAdminHud.DefineButtons |
— | yes | ✓ | VPP_Addon.pbo::Scripts\5_Mission\VPPPvPInspectorMenuBridge.c:3 |
Dispatch surfaces and timers the grade prices
| surface | tier | rate (Hz) | rate source | ms/s |
|---|---|---|---|---|
PlayerBase.OnScheduledTick | T1 | 3000.0 | measured | 0.0744 |
Realoader_FloppyDisks.SetActions | T2 | 8.0 | placeholder | 0.0002 |
PlayerBase.OnVariablesSynchronized | T2 | 8.0 | placeholder | 0.0002 |
Pliers.SetActions | T2 | 8.0 | placeholder | 0.0002 |
PlayerBase.OnRPC | T2 | 8.0 | placeholder | 0.0002 |
Screwdriver.SetActions | T2 | 8.0 | placeholder | 0.0002 |
PlayerBase.OnRPC | T2 | 8.0 | placeholder | 0.0002 |
MissionServer.OnInit | T3 | 0.1 | placeholder | 0.0000 |
MissionServer.OnInit | T3 | 0.1 | placeholder | 0.0000 |
PlantBase.OnStoreLoad | T3 | 0.1 | placeholder | 0.0000 |
PlantBase.OnStoreSave | T3 | 0.1 | placeholder | 0.0000 |
MissionServer.OnInit | T3 | 0.1 | placeholder | 0.0000 |
Repeating timers
| period (ms) | residency ms/s | firing ms/s | where |
|---|---|---|---|
| 1000 | 0.1400 | 0.000025 | VPP_Addon.pbo::Scripts\5_Mission\JMKillFeedMenu.c:512 |
| 15000 | 0.1400 | 0.000002 | VPP_Addon.pbo::Scripts\5_Mission\JMKillFeedMenu.c:540 |
Includes 0.001 ms/s from placeholder-rated surfaces.
Load-order constraints (CfgPatches)
What each PBO declares: its addon identity and the addons it requires to be loaded first (requiredAddons). A partial load-order signal from the mod's own metadata.
Area_Reloader_Client.pbo
Area_Reloader_ClientrequiredVersion 0.1 — requiresDZ_Data,DZ_ScriptsObjectsrequiredVersion 0.1 — requiresDZ_DataObjectsrequiredVersion 0.1 — requiresDZ_DataTunnel— requiresDZ_Data
Book.pbo
DynamicBook— requiresDZ_Data,DZ_Scripts,DZ_Sounds_Effects,DZ_Sounds_Environment
Detec.pbo
iTz_override_MetalDetectorrequiredVersion 0.1 — requiresngtmr_MetalDetector
VPP_Addon.pbo
VPP_Addon_ScriptsrequiredVersion 0.1 — requiresDZ_Data,DZ_Scripts,JM_CF_Scripts,DZM_VPPAdminToolsScripts
Vybros.pbo
Vybros— requiresDZ_Data,DZ_Scripts
Vybros_Publik.pbo
Vybros_Publik— requiresDZ_Data,DZ_Scripts
WoodenSign.pbo
relife_WoodenSignrequiredVersion 0.1 — requiresDZ_Datarelife_Items_Two_ChalkrequiredVersion 0.1 — requiresDZ_Data,DZ_Weapons_Firearmsrelife_Items_Two_WoodenSignsrequiredVersion 0.1 — requiresDZ_Data,DZ_Weapons_Firearms
iTz_Drunkenness.pbo
iTz_DrunkennessrequiredVersion 0.1 — requiresDZ_Data
iTz_Garden.pbo
iTz_GardenrequiredVersion 0.1 — requiresDZ_Data,CannabisPlusiTz_Garden_FruitsrequiredVersion 0.1 — requiresDZ_Data,DZ_Gear_Cultivation,DZ_Gear_Food,CannabisPlusiTz_Garden_PlantsrequiredVersion 0.1 — requiresDZ_Data,DZ_Gear_Cultivation,CannabisPlusiTz_Garden_SeedsrequiredVersion 0.1 — requiresDZ_Data,DZ_Gear_Cultivation,CannabisPlus,iTz_Garden_Plants
iTz_Workbench.pbo
iTz_WorkbenchrequiredVersion 0.1 — requiresDZ_Data,DZ_Scripts,DZ_Characters,DZ_Sounds_EffectsIngredientsrequiredVersion 0.1 — requiresDZ_DataboxesrequiredVersion 0.1 — requiresDZ_DataresultsrequiredVersion 0.1 — requiresDZ_Data,DZ_Gear_FoodtoolsrequiredVersion 0.1 — requiresDZ_Data
Some configs could not be read · ngtmr_MetalDetector.pbo · ngtmr_lib_CLIENT.pbo — their constraints are omitted.
census 1.1 · findings 1.1 · hash 8e209360ae22d0db