Files
DarkflameServer/resources/ugcconfig.ini
Aaron Kimbrell 889cc79e94 feat(ugc): processor=toolbox-blender in the UGC server
The processor setting and toolbox_* settings (Blender, LU-Toolbox-
Standalone, add-ons folder, brick and work folders, device, threads,
timeout). Models asking for toolbox-blender are made by the Blender
worker when it can run, else natively, logged at start, when it changes
and per make. /status has the worker's state; --make-model takes
toolbox-blender too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 16:47:40 -05:00

194 lines
11 KiB
INI

# UGC server: makes the meshes and icons of what players build and serves them to the game client.
# The master starts it when enable_ugc_server=1 (masterconfig.ini). See docs/UgcServer.md.
# HTTP port the game client downloads from (the client's UGCSERVERPORT)
port=2008
# The IP address to bind to. The game client has to reach it, so the default is every interface.
listen_ip=0.0.0.0
# UDP port for the connection to the master server (the next port is used too). It must not clash with another
# server's ports: auth uses 1500-1501, chat 2005-2006, the dashboard 2010-2011, worlds 3000 and up.
net_port=2012
# The client's UGCSERVERDIR: the path the downloads are under (the client adds /UGCC<DATACENTERID>/...)
client_path=/ugc
# Where the made files are kept (relative to the server binaries), and at most how much space they may take in MB.
# When there's more, the files used longest ago are deleted; they're made again when asked for. 0: no limit.
ugc_output_dir=ugc
ugc_max_storage_mb=2048
# Worker threads making files (0: half the CPU cores)
worker_threads=0
# How much of the machine making files may use (changes apply while running):
# max_cpu_percent: the workers together average at most this share of all CPU cores (0: no limit); they pause
# between bits of work to stay under it, long renders included.
# worker_nice: the workers' scheduling priority on Linux, 0 (normal) to 19 (only when nothing else wants the CPU).
# max_memory_mb: jobs whose estimated memory would go past this together wait for running ones to finish; a job
# bigger than it alone runs when nothing else does (0: no limit).
# max_model_bricks: models with more bricks fail with that reason instead of being made (0: no limit).
# pause_hours: local hours in which no new jobs start, e.g. 18-23 or 22-6 (empty: never).
max_cpu_percent=0
worker_nice=0
max_memory_mb=0
max_model_bricks=0
pause_hours=
# How often to look for models to make (milliseconds), how many to take at once, and how often a model may fail
# before it's given up on (the dashboard can try again)
poll_interval_ms=2000
poll_batch=32
max_attempts=3
# Models are made like LU Toolbox's Process Model and Bake Lighting make them; these default to its settings.
# color_palette: lu_toolbox (its LU palette, unknown colors black) or brickdb (the client's Materials.xml).
# color_variation: each brick's brightness is shifted by up to this percent (the same every time; 0: none).
# transparent_opacity: transparent bricks' opacity in percent.
# color_brightness: the models' colors in percent (not icons'; 100: as the palette has them, lower is darker).
# transparent_colors: color ids drawn transparent whatever Materials.xml says, comma separated (empty: the default, 129,
# the transparent glitter violet, which Materials.xml has opaque; none: no colors).
color_palette=lu_toolbox
color_variation=5
transparent_opacity=58.82
color_brightness=100
transparent_colors=129
# Levels of detail made, from the client's brickprimitives (0 most detailed, 2 least), and the distances they're
# drawn at (LU Toolbox picks each level's range from these by which levels are made; lod_cull: drawn up to).
lods=0,2
lod_distance_0=0
lod_distance_1=50
lod_distance_2=100
lod_distance_3=280
lod_cull=10000
# The shapes' shader number: S<shader>_Opaque_Model (transparent shapes are S01_Alpha_Model), and whether all
# transparent bricks are one shape (1) or each its own (0, so the client can sort them)
shader_opaque=01
combine_transparent=0
# Metal, glow and glitter colors in NiLODNodes of their own, drawn with the client's metal, emissive and animated UV
# shaders (the default).
# Not how live looked: live's models were all LEGO plastic (S01), which 0 (off) keeps, byte for byte.
# shader_metal: mapShaders id for metal colors (Materials.xml types in metal_material_types and LU Toolbox's metallic
# colors), S<id>_Metal_Model: 88 is Polished Metal.
# shader_brushed: for brushed steel colors (brushed_material_types; the client's Materials.xml has none): 89 is
# Brushed Steel.
# shader_glow: for opaque glowing colors (LU Toolbox's glow colors), with their plain color and an emissive material:
# 46 is LEGO-Emissive. Transparent glow stays with the transparent bricks.
# glow_emissive: the glow shapes' material emissive (how far the shader goes from lit to the plain color, 1 fully).
# *_material_types: Materials.xml MaterialTypes, comma separated (empty: the default, none: no types).
# Models already made keep their look until they're made again (the dashboard's Make everything again, or Reprocess).
shader_metal=88
shader_brushed=89
shader_glow=46
glow_emissive=1
metal_material_types=shinySteel
brushed_material_types=brushedSteel,matteSteel
# brushed_colors: LEGO color ids drawn as brushed steel whatever their type, comma separated (empty: the default, the
# drum lacquered 298,300,1002,1004; none: no colors)
brushed_colors=298,300,1002,1004
# shader_glitter: for glitter colors (glitter_material_types and glitter_colors), S<id>_Glitter_Model and, for
# transparent ones, S<id>_GlitterAlpha_Model: 21 is LEGO-AnimUV, which lays a white fleck texture stored in the .nif
# over the color (still: the client never updates a placed model). 0: off, glitter stays plastic.
# glitter_size: the fleck texture's tile in model units (a stud is 0.8); glitter_density: flecks in a tile;
# glitter_fleck_size: a fleck's diameter in model units (they are cm: 0.05 is half a millimetre, as LEGO's glitter);
# glitter_fleck_opacity: percent, the brightest flecks (each catches the light differently: most are dimmer).
# shader_glitter_sparkle: the glitter bricks' sparkles, S<id>_GlitterSparkle_Model over both glitter groups (only with
# shader_glitter). 79 is Distortion Directional (Ocean), whose texture layers the client moves every frame on its
# own: a sparkle flashes where two layers' sparkles meet. (Nothing else can move on a placed model: the client never
# updates its scene graph, so texture controllers in the .nif never run.) 0: no sparkles.
# glitter_sparkle_size: a sparkle's diameter in model units; glitter_sparkle_amount: percent of each moving layer
# covered (about its square's share of the brick sparkles at once); glitter_speed: how fast sparkles flash and go
# out (1: about half a second each, 0.1 to 4); glitter_sparkle_tint: percent of the brick's color the sparkles take;
# glitter_sparkle_brightness: percent.
# glitter_random: 1 places each brick's flecks its own way (turned and moved by the brick), 0 the same on every brick.
# glitter_colors: LEGO color ids that are glitter whatever their type (empty: the default, 114,117, which LEGO's color
# data calls glitter; none: no colors)
shader_glitter=21
glitter_material_types=glitter
glitter_colors=114,117
glitter_size=1.6
glitter_density=80
glitter_fleck_size=0.05
glitter_fleck_opacity=80
shader_glitter_sparkle=79
glitter_sparkle_size=0.1
glitter_sparkle_amount=5
glitter_speed=1
glitter_sparkle_tint=30
glitter_sparkle_brightness=100
glitter_random=1
# Satin (opal) colors stay transparent plastic (the client has no satin shader) but are made milky:
# satin_colors: color ids (empty: the default, LEGO's satin colors 360,362,363,364,365,366,367,376; none: off),
# satin_opacity: their transparent bricks' opacity in percent (instead of transparent_opacity),
# satin_whiten: how far their color goes towards white, in percent.
satin_colors=360,362,363,364,365,366,367,376
satin_opacity=75
satin_whiten=20
# Remove faces that can't be seen: the opaque bricks are rendered from 42 directions around the model (hsr_resolution
# pixels square) and the triangles that show in none are removed. hsr_ground_plane: 1 also removes what can only be
# seen from below the model.
remove_hidden_faces=1
hsr_ground_plane=0
hsr_resolution=1024
# What traces the occlusion rays: embree (Intel Embree on the CPU), hiprt (AMD or NVIDIA GPUs, when built with
# DLU_HIPRT) or embree-gpu (Intel Arc or Xe GPUs, when built with DLU_EMBREE_SYCL); without the build or the GPU,
# embree. hiprt_device and embree_gpu_device: which GPU (0: the first; restart to change).
ray_backend=embree
hiprt_device=0
embree_gpu_device=0
# denoise: off, or oidn (when built with DLU_OIDN; else off): a model's icon is drawn from its colors before the
# occlusion bake with its occlusion traced per pixel (denoise_samples rays from each pixel of the supersampled image)
# and denoised by Intel Open Image Denoise. The model keeps its baked occlusion.
denoise=off
denoise_samples=4
# What makes the models: native (the UGC server's own pipeline) or toolbox-blender (LU Toolbox itself in a headless
# Blender, an external program the UGC server starts and keeps running; far slower, one model at a time). Staff can pick
# either for one make. Without Blender, LU Toolbox or niftools (the settings below) toolbox-blender can't be used: models
# are made natively and the UGC server logs why (docs/UgcServer.md, "LU Toolbox in Blender").
# toolbox_blender: the Blender executable (LU Toolbox is made for Blender 3.1).
# toolbox_standalone_dir: the LU-Toolbox-Standalone folder (lu_batch_driver.py).
# toolbox_scripts_dir: a Blender scripts folder whose addons/ has lu_toolbox and io_scene_niftools (empty: the add-ons
# installed in Blender's own user folder).
# toolbox_brickdb_dir, toolbox_work_dir: LU Toolbox's brick folder (made from the client's res the first time) and the
# folder of the model being made and Blender's log, relative to the server binaries.
# toolbox_device: what Cycles bakes on: cpu, cuda, optix, hip or auto. toolbox_threads: Blender's CPU threads (its CPU
# time counts against max_cpu_percent, which pauses it; worker_nice applies to it). toolbox_timeout_seconds: a model
# taking longer fails and Blender is started again.
processor=native
toolbox_blender=
toolbox_standalone_dir=
toolbox_scripts_dir=
toolbox_brickdb_dir=toolbox-brickdb
toolbox_work_dir=toolbox-work
toolbox_device=cpu
toolbox_threads=4
toolbox_timeout_seconds=1800
# Bake ambient occlusion into the vertex colors: rays per vertex, how far they look, strength 0 (none) to 1, and how
# much glowing colors add
bake_ao=1
ao_samples=64
ao_distance=5
ao_strength=1
glow_strength=6
# Icons: size in pixels. A player model's icon is drawn from its finished .nif (LOD 0), a car or rocket's from its
# modules' meshes put together.
icon_size=128
# How icons are framed and lit: icon_yaw, icon_pitch, icon_fov, icon_margin, icon_offset_x, icon_offset_y,
# icon_model_yaw, icon_model_pitch, icon_model_roll,
# icon_sun_yaw, icon_sun_pitch, icon_sun_light, icon_world_light, icon_fill, icon_specular, icon_shininess,
# icon_exposure, icon_contrast, icon_shadow_strength, icon_ao_strength. Their defaults (the framing from LU Toolbox's icon
# renderer, the light matched to the game's own model icons) and ranges are listed once in the server
# (UgcIconParams) and on the dashboard's settings page; set one here only to change it. The dashboard's icon editor
# also keeps presets for player models and each car or rocket type, and overrides for single items, in the database.