[general] # if this path is encountered during path traversal, # it will be removed. this is useful for instances # where your absolute domain path is not long enough # to replace boomlings.com, because you can then point # it at a different, longer path to fill the gap # # example: # boomlings.com/database/ # example.com/aaaaaaaaaa/ # ^^^^^^^^^^^ # # leaving blank will disable this append_path = "" # where can your server be accessible? # for dev environments, "localhost:8080" will do # otherwise, try something like "gdpstest.oat.zone" hostname = "localhost:8080" # if you're putting the server behind nginx or cloudflare, # keep this on to keep ips accurate trust_proxy = true # 🤫 easter_eggs = false [formatting] # whether to format dates as relative or absolute # "relative" = relative, "absolute" = absolute # do note that absolute times can result in uglier # times due to colons being forbiddne in certain # spots date = "relative" [comments] # comments with a like count <= this number # will be marked as spam spam_thres = -3 [accounts] # allow new accounts to be created allow_registration = true # determine what permissions different ranks of users get # ranks (based on `position`) will get all perms of # ranks below (<) their own # todo: document this fully [ranks.everyone] position = 0 [ranks.everyone.permissions] upload_levels = true # todo: unimplemented backup_save = true # todo: unimplemented level_comment = true # todo: unimplemented profile_comment = true # todo: unimplemented leaderboard = true # todo: unimplemented level_leaderboard = true # todo: unimplemented send_friend_requests = true # todo: unimplemented send_messages = true # todo: unimplemented reupload_songs = true # todo: unimplemented reupload_levels = true # todo: unimplemented [ranks.mod] position = 1 badge = 1 is_mod = true # can request mod access ingame text_color = [200, 255, 200] [ranks.mod.permissions] rate_levels = true rate_levels_demon = true # todo: unimplemented [ranks.eldermod] position = 2 badge = 2 is_mod = true text_color = [75, 255, 75] [ranks.eldermod.permissions] delete_level_comments = true # todo: unimplemented delete_others_levels = true # todo: unimplemented [sessions] # allow sessions to be created (for 1.9, as it # doesn't send the password for authentication # in any shape or form, making relying on ip # addresses the only secure way of accessing # the server) allow = true # how long the session should last for (in seconds) expiry_time = 604800 [reuploads] # allow reuploading levels from other servers allowed = true [chests] enabled = true # these are the vanilla values, but free for you to tweak [chests.small] # in seconds timer = 14400 # 4hr orbs_min = 20 orbs_max = 50 orbs_increment = 5 diamonds_min = 1 diamonds_max = 4 shards_min = 0 shards_max = 1 keys_min = 0 keys_max = 1 [chests.large] # in seconds timer = 86400 # 24hr orbs_min = 100 orbs_max = 300 orbs_increment = 25 diamonds_min = 4 diamonds_max = 10 shards_min = 1 shards_max = 2 keys_min = 0 keys_max = 1 [quests] enabled = true # in seconds timer = 21600 # 6hr # top slot quests [[quests.tier_1]] name = "Orb Finder" required_type = "orb" required_amt = 200 reward_diamonds = 5 [[quests.tier_1]] name = "Star Finder" required_type = "star" required_amt = 5 reward_diamonds = 5 [[quests.tier_1]] name = "Coin Finder" required_type = "coin" required_amt = 2 reward_diamonds = 5 # middle slot quests [[quests.tier_2]] name = "Orb Collector" required_type = "orb" required_amt = 500 reward_diamonds = 10 [[quests.tier_2]] name = "Star Collector" required_type = "star" required_amt = 10 reward_diamonds = 10 [[quests.tier_2]] name = "Coin Collector" required_type = "coin" required_amt = 4 reward_diamonds = 10 # bottom slot quests [[quests.tier_3]] name = "Orb Master" required_type = "orb" required_amt = 1000 reward_diamonds = 15 [[quests.tier_3]] name = "Star Master" required_type = "star" required_amt = 15 reward_diamonds = 15 [[quests.tier_3]] name = "Coin Master" required_type = "coin" required_amt = 6 reward_diamonds = 15 [voting] # allow votes to influence a level's difficulty when it # hasn't been set yet. when set to false, all unrated # levels will be NA allow_votes = true # same as above, but for demon difficulties # this will let people vote and influence a demon'S # difficulty past its original demon rating allow_demon_votes = true # the minimum amount of votes before a level's difficulty # will go from NA to the average min_votes = 10 # same as above, but for demon ratings min_demon_votes = 10 [levels] # prevent users from deleting their own levels # if they are rated prevent_deletion_rated = true # prevent users from deleting their own levels # if they are featured prevent_deletion_featured = true # prevents levels above a certain object count from # being uploaded # works best with levels.parsing.enabled = true # set to 0 to disable max_objects = 80_000 [levels.creator_points] # how many creator points to award per type of event rated = 1 featured = 1 epic = 1 daily = 0 weekly = 0 mappack = 0 gauntlet = 0 [levels.parsing] # parse the level to extract data and enforce # rulesets. makes uploads a tiny bit slower and # less stable enabled = true # a list of ids to prevent levels from including # see ID 58079690 on vanilla GD servers object_blocklist = [ 31 ] # 31 : start pos #object_blocklist = [ 901, 1006, 1007, 1049, 1268, 1346, 1347, 1520, 1585, 1595, 1611, 1612, 1613, 1616, 1811, 1812, 1814, 1815, 1817, 1818, 1819 ] # every 2.0+ trigger, essentially turns your server into a 1.9 gdps # a list of ids to exclusively allow; leave empty # to disable object_allowlist = [ ] [songs] # allow custom songs in general to be used, # whether it be non-newgrounds or newgrounds ones allow_custom_songs = true # pushes all non-newgrounds songs above an arbitrary # id to prevent collisions with newgrounds ids, meaning # all song ids that work in vanilla GD will work # on the server preserve_newgrounds_ids = true [songs.sources] # allow ALL sources that yt-dlp supports for music # this is a BAD idea for many reasons allow_all_sources = false # lets you support much more sites but may result in much # slower download speeds and more bandwidth. requires ffmpeg allow_transcoding = true # location of your yt-dlp binary. get one here: https://github.com/yt-dlp/yt-dlp/releases/tag/2022.11.11 # defaults to checking through path ytdlp_binary = "/usr/bin/yt-dlp" # location of your ffmpeg binary. get one here: https://ffmpeg.org/download.html # allows for transcoding # defaults to checking through path ffmpeg_binary = "/usr/bin/ffmpeg" # leads to more stable downloads at the cost of # using up much more storage to store every song # # required for allow_transcoding proxy_downloads = true # expressed in seconds max_duration = 600 # expressed in bytes max_filesize = 10000000 # = 10MB # see: https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md # not every source is supported, and most video sites will fail w/o transcoding enabled [songs.sources.newgrounds] allow = true [songs.sources.youtube] allow = true [songs.sources.soundcloud] allow = true [songs.sources.generic] # direct URLs and similar allow = true