OrigenNetwork
Docs

Configuration · origen_graffiti

Configuration is split across two files:

  • config.lua — essential settings for server owners (language, admins, shop)
  • config.advanced.lua — technical tuning (render, sync, rate limits, distances)

Only touch config.advanced.lua if you are measuring impact (TPS, latency, network load). Change one value at a time and test with 10+ players. If things get worse, revert.


config.lua

General

VariableDefaultDescription
Config.Language'en'Locale language — matches a file in locales/*.json
Config.AdminGroups{'admin','god','superadmin'}Groups with access to admin panel and commands
Config.AdminCommand'graffiti_admin'Chat command to open the admin panel

Shop

VariableDefaultDescription
Config.Shop.enterRadius2.5Proximity radius in meters to open the shop
Config.Shop.sprayItem'graffiti_spray'Inventory item name for spray cans
Config.Shop.eraserItem'graffiti_eraser'Inventory item name for erasers
Config.Shop.defaultDurability100Initial durability injected at purchase
Config.Shop.durabilityUvThreshold0.3Accumulated UV distance (0–1) to consume 1 durability point
Config.Shop.eraserDurabilityPerUse25Durability cost per full tag erase

Shop locations — add as many vector4(x, y, z, heading) entries as needed:

lua
Config.Shop.locations = {
    vector4(-1123.5, -1440.04, 5.19, 304.08),
}

Default shop catalog:

IDTypeLabelPriceColor
borradoreraserEraser$150
spray_customspray_customFree Color Spray$350any
spray_negrospray_presetBlack Spray$200#111111
spray_blancospray_presetWhite Spray$200#F0F0F0
spray_rojospray_presetRed Spray$220#CC2222
spray_azulspray_presetBlue Spray$220#2255CC
spray_amarillospray_presetYellow Spray$220#DDC000
spray_verdespray_presetGreen Spray$220#228822
spray_naranjaspray_presetOrange Spray$220#CC6600
spray_violetaspray_presetViolet Spray$220#8822CC
spray_rosaspray_presetPink Spray$220#CC3388
spray_celestespray_presetLight Blue Spray$220#33AADD

Auto Purge

Optionally delete old graffiti on resource start:

lua
Config.AutoPurge = {
    enabled = false,
    days    = 30,   -- delete graffiti older than this many days
}

Zone Graffiti Limit

Optionally cap how many graffitis can exist within a radius before new sessions are blocked:

lua
Config.ZoneGraffitiLimit = {
    enabled = false,
    radius  = 60.0,  -- meters
    maxTags = 8,
}

config.advanced.lua

Painting

VariableDefaultDescription
Config.PaintMaxDistance8.0Max distance in meters to paint on a canvas
Config.BrushRadiusMin0.002Minimum brush size (UV)
Config.BrushRadiusMax0.08Maximum brush size (UV)
Config.BrushRadiusDefault0.012Default brush size on session start
Config.SprayDistMin0.4Min camera distance for spray scaling
Config.SprayDistMax7.0Max camera distance for spray scaling
Config.SprayRadiusMulClose0.78Radius multiplier when camera is close (tighter spray)
Config.SprayRadiusMulFar1.45Radius multiplier when camera is far (wider spray)
Config.SprayIntensityMulClose1.15Intensity multiplier close
Config.SprayIntensityMulFar0.4Intensity multiplier far

Strokes & Rate Limiting

VariableDefaultDescription
Config.MaxStrokesPerTag4000Max strokes per tag (payload + DB load)
Config.MinStrokesPerSave700Saves with fewer strokes than this are rejected
Config.CollaborationMaxStrokesPerSecond90Server-side rate limit per player (1s window)

Collaboration & Streaming

VariableDefaultDescription
Config.CollaborationSessionTimeout1800Session auto-close after this many seconds of inactivity
Config.CollaborationJoinDistance8.0Max distance in meters to join an active session
Config.SpectatorDistance28.0Radius to see live strokes without joining
Config.SyncLoadRadius200.0Server search radius for tags per player
Config.SyncMaxTagsPerQuery180Max tags returned per sync query
Config.StreamDistance70.0Distance in meters to create/destroy a DUI for each graffiti
Config.ServerCellCheckIntervalMs3000Interval in ms for zone-change detection thread

Visual

VariableDefaultDescription
Config.DuiResolution256DUI canvas resolution in pixels — must be power of 2 (256, 512, 1024)
Config.TagAlpha190Rendered canvas opacity (0–255)
Config.TagTimeBrightnessEnabledtrueDynamic brightness based on in-game time
Config.TagNightStartHour21Night mode start hour
Config.TagNightEndHour6Night mode end hour
Config.TagDayBrightness1.00Brightness multiplier during day (1.0 = original)
Config.TagNightBrightness0.40Brightness multiplier during night
Config.EraseTagDuration15000Hold duration in ms to erase a tag
Config.CanvasOffsetStep0.005Canvas offset adjustment step in meters per keypress
Config.CanvasOffsetMin-0.30Max inward offset (30 cm into wall)
Config.CanvasOffsetMax0.50Max outward offset (50 cm from wall)