Skip to main content

Installation

1

Download

Get the latest release from our Tebex store and download it from your Keymaster
2

Extract

Extract the dd_fogofwar folder to your server’s resources directory
3

Ensure

Add ensure dd_fogofwar to your server.cfg, after oxmysql and your framework core
4

Grant the admin permission

Add add_ace group.admin dd_fogofwar.admin allow to your server.cfg
5

Configure

Adjust config/config.lua to your liking. The database tables are created automatically on first start.
The only hard dependency is oxmysql. The framework bridge detects VORP or RSG on its own, so no framework-specific setup is needed.

Configuration

Everything lives in config/config.lua.

Core options

Resolution and reveal

CellSize is the world size of one exploration cell. Smaller cells give a finer map but store more data. RevealScale is the size of the engine’s own live reveal around the moving player.
Never set RevealScale to 0.0. The engine’s fog of war stops revealing entirely and the map freezes in whatever state it was in.
RevealHoldMs is not a cosmetic delay. Fog opacity accumulates for as long as a reveal volume is alive, so a short hold leaves restored areas under a permanent half-transparent veil instead of fully uncovered. Lower it only if you know what a shorter hold looks like on your map.

Sampling and flushing

MaxChunksPerFlush and MinFlushGap are the server’s rate limit against forged payloads. Raise them only if you also raised SampleRingRadius or lowered FlushInterval far enough that legitimate flushes start getting rejected.

Guarma and blips

HideBlipsInFog needs the free companion resource dd_blipmanager to be running. Without it the switch is simply ignored, no error. When both are running, this switch wins over the blip manager’s own setting, so fog of war stays the single place you configure it.

Pre-revealed zones

Areas that are always visible and never written to the database. Useful for the spawn town or a starting region.

Map bounds

Discoveries

A discovery fires once per character on first visit. It shows a notification, optionally pays a reward, and fires the server event other resources can listen to.
  • zones: fully dynamic, driven by the game’s own districts and towns, the same zones the game shows when you cross a region border. No coordinates needed.
  • custom: only the circle regions you configure yourself.
  • both: zones and custom regions together.
Set notify = false to keep the discoveries and rewards but drop the on-screen notification.

Permission and command

Admin commands

Without a server id the command applies to the caller. All four also work from the server console, where the server id is required.
peek is the one to reach for while building or testing. It reveals everything for the current session only and changes nothing in the database, so calling it a second time puts the player’s real progress back.

Localization

All player-facing strings live in config/language.lua:

Database

Three tables are created automatically on first start: Wiping a player is /fow reset; wiping everyone is a TRUNCATE on all three tables while the resource is stopped.

Troubleshooting

Some frameworks reveal the map by default. The resource reverts this on character load, so this normally resolves itself. If it persists, check whether another resource calls a full map reveal after character selection.
RevealHoldMs is too low. Fog opacity builds up only while a reveal volume is alive, so a short hold leaves a veil behind. Put it back to 8000.
The pause menu map texture refreshes lazily. Close the map and open it again before judging the fog state.
Check that dd_blipmanager is running (ensure dd_blipmanager in server.cfg) and that Config.HideBlipsInFog is true. Blips attached to an entity are exempt by design, because parking them would fight the attachment.
Enable Config.Debug and watch the server output. If you lowered FlushInterval or raised SampleRingRadius, raise MaxChunksPerFlush and lower MinFlushGap to match.