← modperf · analyzed mods

Notes

Description Just bringing back a missed feature that was available in an earlier version of the game. I started working on this in 1.06 as a proof of concept and a neat idea to bring back to the community, and had my own full system worked out. In 1.07 the developers at Bohemia Interactive started introducing a new back bones for notes in vanilla, so I dumped the majority of what I worked on for Notes, and picked up… (more)

Description Just bringing back a missed feature that was available in an earlier version of the game. I started working on this in 1.06 as a proof of concept and a neat idea to bring back to the community, and had my own full system worked out. In 1.07 the developers at Bohemia Interactive started introducing a new back bones for notes in vanilla, so I dumped the majority of what I worked on for Notes, and picked up the new vanilla implementation and made it better, so instability could possibly happen as official updates go on, but I'll try my best on staying on top and bringing a pleasing looking UI and unique features to this mod. I'm so excited to see how such a simple feature can spark ideas and interactability, post your ideas and experiences with notes below if you feel like sharing! Treasure hunts, trolling, stories, lore, you name it! Features - The ability to place notes or paper - Can read notes from hand or by targeting - Can write on paper while in inventory (crafting) or by targeting - Pen colors are now localized and descriptive to their color - Pen colors show up while writting and reading a note - Notes are logged server side in the server profile (name, steam64ID, and message) - When writting on paper, it is transformed into a WrittenNote (for persistency configuration) Planned Features - Journal/Notebook to store multiple notes in. - Pens will lose their durability when used. - Server configurability and admin permissions. - More pen colors? - Drawing (a big maybe, performance will have to be tested). - Admin notes, that can be spawned via init.c (static props, cannot be picked up). - Admin menu and options for ingame abuse control (blacklisting players, deleting notes, cords). Known Issues - Not fully localized (contact me if you'd like to help). - Notes/Paper don't place flush on surfaces (if anyone could help me out with making this better, please contact me!) - Same animation is used for reading/writting notes when a pen is in hand. - The UI scales to resolution, which means text can get out of line if viewing notes from someone who is using a different resolution. The UI was built for 1080p and up, any lower might result in cramming and text going off the UI. - Minor sync issues with notes/paper in community offline mode (singleplayer). I don't have time currently to fix these solvable issues, in admist to the current pandemic, but I will try to get them fixed sometime soon™ Special Thanks NiiRoZz - a bit of scripting help and singleplayer compatibility Steve aka Salutesh - motivation and ideas Bohemia Interactive - for the base scripting for notes (vanilla) Thank you all who participated in the initial poll and to those who donated prematurely! Usage & Terms This item is NOT authorized (strictly forbidden) for any of these conditions: - posting on Steam, except under the Steam account officialwardog. - hosting on any download server other than Notes' current workshop download. - hosting on any launcher for distribution other than Notes' current workshop download. - to be packaged in any form other than Notes' current workshop download. - to create derivative works. PERMISSION IS NOT GRANTED FOR THIS MOD TO BE INCLUDED IN A "SERVER PACK" or "MOD PACK" or "REPACK". Use a Collection if you want to include this mod on your server for your users. Monetization while using this mod is approved. Copyright 2019-2024 Wardog All rights reserved

Workshop 1999076953 · mod updated 2020-11-04 · analyzed 2026-10-03 01:40 UTC · history · 13 script files

EquipmentMechanicsProps Workshop tags, chosen by the author

Stall risks
None found

No file I/O on hot paths, no timers created per event, no per-player-per-frame hooks.

Compatibility
7 by design

7 chain breaks, all on specific classes the mod replaces wholesale — matters only if another mod patches the same classes.

Structural footprint 1.1
A
7 by design
Heavier than 39% of 328 scripted mods analyzed.

less than 0.001% of each server frame at 100 players (0.001 ms/s). Counts hook dispatch and timers only, not what the hooks do inside. Methodology.

Where this mod sits

Structural load of the 328 scripted mods analyzed, lightest on the left. This mod's bar is lit; 22 others share it. Ranked list.

10
20
30
40
  • 24 mods
    0.0000022 to 0.0000046 ms/s · grade A
  • 7 mods
    0.0000046 to 0.00001 ms/s · grade A
  • 1 mod
    0.00001 to 0.000022 ms/s · grade A
  • 1 mod
    0.000022 to 0.000046 ms/s · grade A
  • 37 mods
    0.0001 to 0.00022 ms/s · grade A
  • 26 mods
    0.00022 to 0.00046 ms/s · grade A
  • 33 mods
    0.00046 to 0.001 ms/s · grade A
  • This mod
  • 13 mods
    0.0022 to 0.0046 ms/s · grade A
  • 10 mods
    0.0046 to 0.01 ms/s · grade A
  • 5 mods
    0.01 to 0.022 ms/s · grade A
  • 18 mods
    0.022 to 0.046 ms/s · grade A
  • 17 mods
    0.046 to 0.1 ms/s · grade A
  • 40 mods
    0.1 to 0.22 ms/s · grade A
  • 26 mods
    0.22 to 0.46 ms/s · grade A
  • 28 mods
    0.46 to 1 ms/s · grade A
  • 8 mods
    1 to 2.2 ms/s · grade A to B
  • 10 mods
    2.2 to 4.6 ms/s · grade B
  • 1 mod
    4.6 to 10 ms/s · grade B to C
A316
B11
C1
D0
E0
ms/s, log scale: each labelled step is ten times the one before. Letter grade and mods holding it below the axis.
Where the load comes from

Event hooks carry 99.8% of this mod's structural load. 0.001 ms/s in all.

99.8%Event hooks · 99.8%
6 hooks · 0.0012 ms/s
Event hooksrun when something happens: an inventory move, a hit, an action 6 hooks 0.0012 ms/s 99.8% ActionDeployObject.ActionCondition, ActionReadPaper.ActionCondition, ActionTakeItem.ActionCondition and 3 more

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

7 overrides 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.

By design
Leaf class · NoteMenu
NoteMenu replaced on 2 methods · 2 overrides

InitNoteRead · InitNoteWrite

Only this class is affected. Matters only if another mod in your stack patches the same class.

1 classNoteMenu
2 locationsScripts.pbo::5_Mission\GUI\NoteMenu.c:20
Scripts.pbo::5_Mission\GUI\NoteMenu.c:41
By design
Leaf class · ActionWritePaper
ActionWritePaper replaced on 2 methods · 2 overrides

OnStartClient · OnStartServer

Only this class is affected. Matters only if another mod in your stack patches the same class.

1 classActionWritePaper
2 locationsScripts.pbo::4_World\Classes\UserActionsComponent\Actions\ActionWritePaper.c:37
Scripts.pbo::4_World\Classes\UserActionsComponent\Actions\ActionWritePaper.c:46
By design
2 leaf classes
2 classes replaced on 1 method · 2 overrides

OnStateChange

Only these classes are affected. Matters only if another mod in your stack patches the same classes.

2 classesActionReadPaperCB, ActionWritePaperCB
2 locationsScripts.pbo::4_World\Classes\UserActionsComponent\Actions\ActionReadPaper.c:3
Scripts.pbo::4_World\Classes\UserActionsComponent\Actions\ActionWritePaper.c:3
By design
Leaf class · WrittenNoteData
WrittenNoteData replaced on 1 method · 1 override

OnRPC

Only this class is affected. Matters only if another mod in your stack patches the same class.

1 classWrittenNoteData
1 locationScripts.pbo::4_World\Classes\WrittenNoteData.c:14

Where 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.

ActionCondition × 2 classes
per event
no I/O, timers or RPC replaces vanilla
ActionCondition on ActionDeployObject
per event
no I/O, timers or RPC
ActionCondition on ActionTakeItem
per event
no I/O, timers or RPC super() on some paths
OnRPC on WrittenNoteData
per event
no I/O, timers or RPC replaces vanilla
SetActions on Paper
per event
no I/O, timers or RPC

Other findings

What this report can tell you

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.

What it cannot

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 18 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.

methodsurfaceserversuper()where
ActionConstructor.RegisterActions — yes ✓ Scripts.pbo::4_World\Classes\UserActionsComponent\ActionConstructor.c:3
ActionDeployObject.SetupAnimation — yes conditional Scripts.pbo::4_World\Classes\UserActionsComponent\Actions\ActionDeployObject.c:13
ActionDeployObject.ActionCondition T2 yes ✓ Scripts.pbo::4_World\Classes\UserActionsComponent\Actions\ActionDeployObject.c:24
ActionDeployObject.OnFinishProgressServer — yes ✓ Scripts.pbo::4_World\Classes\UserActionsComponent\Actions\ActionDeployObject.c:35
ActionReadPaper.ActionCondition T2 yes ✗ none Scripts.pbo::4_World\Classes\UserActionsComponent\Actions\ActionReadPaper.c:22
ActionReadPaperCB.OnStateChange — yes ✗ none Scripts.pbo::4_World\Classes\UserActionsComponent\Actions\ActionReadPaper.c:3
ActionTakeItem.ActionCondition T2 yes conditional Scripts.pbo::4_World\Classes\UserActionsComponent\Actions\ActionTakeItem.c:3
ActionWritePaper.ActionCondition T2 yes ✗ none Scripts.pbo::4_World\Classes\UserActionsComponent\Actions\ActionWritePaper.c:29
ActionWritePaper.OnStartClient — yes ✗ none Scripts.pbo::4_World\Classes\UserActionsComponent\Actions\ActionWritePaper.c:37
ActionWritePaper.OnStartServer — yes ✗ none Scripts.pbo::4_World\Classes\UserActionsComponent\Actions\ActionWritePaper.c:46
ActionWritePaperCB.OnStateChange — yes ✗ none Scripts.pbo::4_World\Classes\UserActionsComponent\Actions\ActionWritePaper.c:3
NoteMenu.Init — yes ✗ none Scripts.pbo::5_Mission\GUI\NoteMenu.c:5
NoteMenu.OnHide — yes ✓ Scripts.pbo::5_Mission\GUI\NoteMenu.c:13
NoteMenu.InitNoteRead — yes ✗ none Scripts.pbo::5_Mission\GUI\NoteMenu.c:20
NoteMenu.InitNoteWrite — yes ✗ none Scripts.pbo::5_Mission\GUI\NoteMenu.c:41
Paper.SetActions T2 yes ✓ Scripts.pbo::4_World\Entities\ItemBase\Paper.c:3
PluginManager.Init — yes ✓ Scripts.pbo::4_World\Plugins\PluginManager.c:3
WrittenNoteData.OnRPC T2 yes ✗ none Scripts.pbo::4_World\Classes\WrittenNoteData.c:14
Dispatch surfaces and timers the grade prices
surfacetierrate (Hz)rate sourcems/s
ActionDeployObject.ActionConditionT2 8.0placeholder0.0002
ActionReadPaper.ActionConditionT2 8.0placeholder0.0002
ActionTakeItem.ActionConditionT2 8.0placeholder0.0002
ActionWritePaper.ActionConditionT2 8.0placeholder0.0002
WrittenNoteData.OnRPCT2 8.0placeholder0.0002
Paper.SetActionsT2 8.0placeholder0.0002

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.

GUI.pbo

  • Notes_GUI — no requiredAddons

Gear.pbo

  • Notes_Gear — requires DZ_Gear_Tools, DZ_Gear_Consumables

LanguageCore.pbo

  • Notes_LanguageCore — no requiredAddons

Scripts.pbo

  • Notes_Scripts — no requiredAddons

census 1.1 · findings 1.1 · hash fe381347d7c1646b