mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-04 20:03:43 +00:00
With UGCUSE3DSERVICES=7:0 (the client's default) the client asks its world for a blueprint file's MD5 and size (REQUEST_UGC_MANIFEST_INFO, world 27) and then downloads BrickModels/UserMade/<id % 1000>/<id>.<ext>.sd0. Layouts checked in the 1.10.64 client: the request is a u64 blueprint id and a u8 resource type; the answer (UGC_MANIFEST_RESPONSE, client 60) repeats them and adds a u8 valid, the u32 size and the 16 byte MD5 of the inflated file, 37 bytes after the 0x53 exactly or the client drops it. - dNet: WorldPackets::RequestUgcManifestInfo, ClientPackets::UgcManifestResponse (eUgcResourceType), with byte tests against the client's layouts. - Database: ugc_file_checksums (per model or module combination and file) and ugc_modular_build.combination_id (migrations 89 / 72), GetUgcFileChecksum looks a blueprint up as a model, else as a build through its combination. - UGC server: every download is also written as .sd0 (Sd0::Compress); workers hand the checksums back and the main thread stores them; old items get their sd0 icon and checksum, and builds their combination id, once at start-up, a few per tick; serves <dir>/BrickModels/UserMade/<bucket>/<id>.<ext>.sd0 under client_path, /<folder>/UserBrickModels and the root (.hkx 404). - World: UgcManifest answers on the main thread with one indexed query per request; files not made yet are answered when they are (looked at again every 5 seconds), and a model in its quiet period is made right away. No worker threads, HTTP or file reads in the world. Off by default (ugc_manifest=0): checked in game, the client then downloads from http://127.0.0.1:80/lwoclient/UserBrickModels/ whatever its boot.cfg says and logs the player out when it can't connect, so icons need the UGC server on port 80 of each player's machine. docs/UgcServer.md has the details. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
102 lines
3.7 KiB
INI
102 lines
3.7 KiB
INI
# MySQL connection info:
|
|
mysql_host=
|
|
mysql_database=
|
|
mysql_username=
|
|
mysql_password=
|
|
|
|
# 0 or 1, should log to console
|
|
log_to_console=1
|
|
|
|
# 0 or 1, should log debug (developer only) statements to console for debugging, not needed for normal operation
|
|
log_debug_statements=0
|
|
|
|
# The public facing IP address. Can be 'localhost' for locally hosted servers
|
|
external_ip=localhost
|
|
|
|
# The local IPv4 address every server (auth, chat, master, world and the dashboard's
|
|
# connection to master) listens on, for machines with more than one network interface.
|
|
# Empty (the default) or 0.0.0.0 listens on all interfaces; localhost means 127.0.0.1.
|
|
# This only changes where the servers listen: players are still sent external_ip, so
|
|
# use it when the public address isn't one this machine can bind to (NAT, a proxy).
|
|
# The servers refuse to start if this isn't an IPv4 address.
|
|
bind_ip=
|
|
|
|
# 0 or 1, should not compile chat hash map to file
|
|
dont_generate_dcf=0
|
|
|
|
# How many clients can be connected to the server at once
|
|
max_clients=999
|
|
|
|
# Where to put crashlogs
|
|
dump_folder=
|
|
|
|
# The location of the client
|
|
# Either the folder with /res or with /client and /versions
|
|
client_location=
|
|
|
|
# The maximum outgoing bandwidth in bits. If your clients are having
|
|
# issues with enemies taking a while to catch up to them, increse this value.
|
|
# Empty or 0 means no limit
|
|
maximum_outgoing_bandwidth=0
|
|
|
|
# The Maximum Translation Unit (MTU) size for packets. If players are
|
|
# getting stuck at 55% on the loading screen, lower this number to
|
|
# reduce the chances of packet loss. This value only has an effect
|
|
# from 512 <= maximum_mtu_size <= 1492 so make sure to keep this
|
|
# value within that range.
|
|
maximum_mtu_size=1228
|
|
|
|
# The client network version to allow to connect to this server.
|
|
# Client's that do not match this value will be kicked from the server.
|
|
# If you are using a Darkflame Universe client, set this value to 171023.
|
|
# This cannot just be any arbitrary number. This has to match the same value that is in your client.
|
|
# If you do not know what this value is, default it to 171022.
|
|
client_net_version=171022
|
|
|
|
# Turn to 0 to default teams to use the live accurate Shared Loot (0) by default as opposed to Free for All (1)
|
|
# This is used in both Chat and World servers.
|
|
default_team_loot=0
|
|
|
|
# event gating for login response and luz gating
|
|
event_1=Talk_Like_A_Pirate
|
|
event_2=
|
|
event_3=
|
|
event_4=
|
|
event_5=
|
|
event_6=
|
|
event_7=
|
|
event_8=
|
|
|
|
# version for login response and luz gating
|
|
version_major=1
|
|
version_current=10
|
|
version_minor=64
|
|
|
|
# The port the chat server is started and listening on
|
|
# Used in chat and world servers
|
|
chat_server_port=2005
|
|
|
|
sqlite_database_path=resServer/dlu.sqlite
|
|
|
|
database_type=sqlite
|
|
|
|
# Skips the account creation check in master. Used for non-interactive setups.
|
|
skip_account_creation=0
|
|
# 0 or 1, restrict mail while account is muted
|
|
mute_restrict_mail=1
|
|
# 0 or 1, restrict trade while account is muted
|
|
mute_restrict_trade=1
|
|
# 0 or 1, automatically reject character and pet names submitted while muted
|
|
mute_auto_reject_names=1
|
|
|
|
# The UGC server makes a saved property model this many seconds after its owner's last save (each save starts the wait
|
|
# again for all their waiting models), or as soon as a game client asks for it or the owner leaves the world. 0: right
|
|
# away. See docs/UgcServer.md.
|
|
ugc_debounce_seconds=120
|
|
|
|
# 0 or 1: worlds answer game clients without 3D services (UGCUSE3DSERVICES=7:0, the default) with the checksums of the
|
|
# files the UGC server made, so they download the icons of cars, rockets and models. The 1.10.64 client then downloads
|
|
# from http://127.0.0.1:80/lwoclient/UserBrickModels/ whatever its boot.cfg says, and a client that can't connect there
|
|
# is logged out, so only set 1 when the UGC server answers there for every player. See docs/UgcServer.md.
|
|
ugc_manifest=0
|