Shield Golf

ShieldGolf, the disc golf mod for Valheim: throw a round shield like a golf disc, with real disc flight, tilt, wind, skips and baskets.

  1. Equip one of the eight round shields (list) with nothing in your right hand.
  2. Click Secondary attack (middle mouse unless you rebound it) to enter throw mode. Hold Right mouse and move the mouse to tilt the shield.
  3. Hold Left mouse to wind up (1.2 s is full power), then release to throw. Aim with the camera.
  4. Walk to the shield and pick it up like any item. Build baskets from the hammer menu and count your own strokes; the game keeps no score.

Only the thrower needs the mod. The server needs nothing, and players without the mod still see the shield fly and land as an ordinary dropped item. Shields not in the class list behave exactly like vanilla.

This guide lists every control, formula, stat and modifier, with the shipped default numbers. Mod version 1.13.7, game 1.0.20 (shown as l-1.0.20 on Linux). This page ships in the mod's zip as guide.html, matching that version; the latest is at shieldgolf.planetdg.com. Want the real thing? Find a disc golf course near you on Planet DiscGolf.

1. Install

You need Valheim 1.0.20 and a mod manager: Gale, r2modman or Thunderstore Mod Manager. Without one, see the manual install in the advanced part.

  1. Install ShieldGolf from Thunderstore in Gale, r2modman or Thunderstore Mod Manager. BepInExPack_Valheim comes along; it is the only dependency.
    Or import z3n-ShieldGolf-1.13.7.zip as a local mod into the Valheim profile you play with (Gale: the profile's mod list; r2modman: Settings → Import local mod).
    Remove an older z3n-DiscGolf from the profile.
  2. Start the game from the mod manager. The BepInEx log should show ShieldGolf 1.13.7: 10 shields in 4 classes. A warning under it means the game is not the version the throws were measured on (1.0.20; Linux shows it as l-1.0.20).

In game, equip a round shield and click Secondary attack: the shield is held out flat beside you. That is throw mode, and the mod works. Everyone you play with should run the same version (playing together).

A modded game can't earn Steam achievements: BepInEx itself marks the session as modded. ShieldGolf adds nothing to that by default (details).

2. How to play

Equip a round shield with nothing in your right hand, enter throw mode, set your tilt, wind up and let go. Walk to where it landed, pick it up and throw again from there, until it stays in the basket.

Controls

InputWhat it does
Secondary attack click (middle mouse unless you rebound it)Enters throw mode, in backhand.
Each further click switches forehand ↔ backhand; with a buckler or the Wood shield it steps backhand → putt → forehand.
Until you press it, all buttons are vanilla: right click blocks and parries as usual. With a listed shield alone this button never kicks.
Secondary attack hold ½ sLeaves throw mode (back to vanilla blocking).
Right mouse hold (in throw mode)Freezes the camera so the mouse tilts the shield instead.
Mouse left / right, while right is heldTilt (roll). Left dips the left edge (hyzer, curves left); right dips the right edge (anhyzer, curves right). 1° per degree of mouse movement, max ±45°.
Mouse up / down, while right is heldNose angle. Up raises the nose (climbs, stalls sooner); down lowers it (flies low and fast). 0.5° per degree of mouse, max ±10°.
Right mouse quick tapResets tilt and nose to flat: a press under 0.25 s with under 1.5° of mouse movement.
Left mouse hold, releaseWind up, then throw. The longer the hold (up to 1.2 s), the harder the throw.
At full power the bow's draw sound plays and the shield jolts: let go right then for a clean throw. Hold on and you overpower it: it trembles and turns over (sweet spot).
In putt mode look at the chains: about half a second reaches 5 m, a full hold 15–20 m.
Equip a weapon, or unequip the shieldThrow mode turns off too. Tilt and nose reset.
Opening a menu, chat or inventory mid wind-upCancels the throw (it never fires into a menu).

Power and the sweet spot

The longer you hold Left mouse, the harder the throw: a tap barely leaves your hand, 0.6 s is about half power, 1.2 s is full power. Half a wind-up throws about half as far.

A full throw has a sweet spot right after it reaches full power. At 1.2 s the bow's draw sound plays and the shield in your hand jolts forward: that is full power.

Hold on past the window and you overpower it. The shield trembles in your hand, and like a real disc thrown harder than it is built for, it turns over:

Compensating, as in real disc golf: throw something more overstable. Two things in the mod make a shield more overstable, and both hold an overpowered throw on its line:

If you know you rip your throws, a fairway or a driver in a well-kept, upgraded shield keeps the line; a worn, low-quality mid turns over the most.

Aim, loft, tilt and nose

Putts (bucklers and the Wood shield)

With a buckler or the Wood shield in hand, clicks of secondary attack in throw mode step backhand → putt → forehand.

Hold needed to reach the chains (1.3 m high) when you look at them:

DistanceBlocking 0Blocking 100
3 m0.30 s0.24 s
5 m0.47 s0.38 s
10 m0.80 s0.66 s
15 m1.07 s0.89 s
20 mout of reach1.10 s

From the simulator: putter, flat ground, release 1.5 m, still air. Holding longer than the table sends it over the chains. Not yet checked in game.

Tap-ins

The baskets stand higher than real ones: basket 5's funnel rises from 0.6 m at the pole to 1.6 m at its edge, with a log rim on top. A push putt leaves your hand at about waist height, so from right beside the basket it can't climb over the rim and hits it from the side.

A tap-in solves that: the shield leaves from above your head and drops in from above, the way a tall player reaches up and drops a disc into the chains.

Side view: push putt against tap-in at basket 5From 2.6 m the push putt leaves the hand at waist height and hits the funnel rim. The tap-in leaves from 2.2 m overhead and lobs over the rim into the funnel, also from 3.5 m.rim 1.6 mtap-in release 2.2 m2.6 m3.5 mpolepush putthits the rimtap-inlob of 45° or more,down where you look45°
Side view of basket 5, paths from the flight model. From 2.6 m the push putt (red) hits the rim; the tap-in (green) clears it, from 3.5 m too (faint).
Top view: the 3.5 m tap-in range around the point you look atBasket 5 seen from above, the point under the crosshair in the funnel next to the pole, and a 3.5 m circle around it. Two players stand inside the circle and putt a tap-in; two stand outside it and putt a normal push putt.funnel, 4 m3.5 mtap-intap-inpush puttpush puttyou look here
Top view. Look into the basket by the pole: from anywhere inside the green circle, 3.5 m around the point you look at, a putt is a tap-in. From further out it is a normal push putt.

How to tap in

  1. Hold a buckler or the Wood shield and arm throw mode.
  2. Click secondary attack until the message says putt. Tap-ins only exist in putt mode: a short backhand or forehand, or any throw with a mid, fairway or driver shield, stays a normal throw.
  3. Look into the basket: the funnel's floor near the pole, or the chains. The point under the crosshair must be within 3.5 m of your feet, measured along the ground.
  4. Tap or hold attack. The wind-up doesn't matter for a tap-in; any hold throws the same lob.

What the mod does

Distance rings (debug). Set [debug] distance_rings = true, and while throw mode is on, three rings lie on the ground around the point under your crosshair:

Aim at the funnel or the chains, not at the pole below the funnel: the lob would then aim under the basket and most likely hit the funnel or rim on the way down.

Chase camera

Playing together

3. Build a course

A course is a row of holes: a tee to throw from and a basket to finish in. Both are built from ordinary pieces, so a course stays in the world for everyone, and players without the mod see it too.

Baskets

Five designs, from wood only to iron. The wood funnel is the default and needs no iron.

Wood funnel: log pole, thatch funnel, wood crown and twelve wood chains
5 · Wood funnel (default)
Iron funnel: the same with iron crown and chains
1 · Iron funnel
Iron tray with rim and crossed crown
2 · Iron tray
Gallows: tray hanging from a curtain of iron poles
3 · Gallows
Backboard: thatch funnel with a wooden wall behind it
4 · Backboard

Schematic renders of exactly what the command places (each piece as its collider box, from the same layout code), with a Flametal shield for scale; the game's own models look rougher and nicer.

With the hammer (the usual way):

With a command: /discbasket in chat (or discbasket in the F5 console) builds one 4 m ahead of you, facing you.

It takes the same materials from your inventory (and says what is missing); no cheats needed. In a world with the No build cost modifier it costs nothing, as the hammer does there.

CommandDoes
/discbasketDesign 5 (the wood funnel; [basket] design), 4 m ahead.
/discbasket 3Design 3, 4 m ahead.
/discbasket 2 8Design 2, 8 m ahead (3–20 m).
/discbasket removeTakes down the whole nearest basket (within 8 m) and refunds its pieces.
/discbasket helpThe usage.
#DesignBuilt from
5Wood funnel (default)Design 1 with no iron in it: the same log pole, thatch funnel and log rims, a crown of wood beams and twelve 2 m wood poles as chains (0.4 m thick, the closest two 0.43 m apart centre to centre). Wood and core wood only.
1Iron funnel and chainsA 4 m log pole and four Thatch Roof Inner Corner 26° pieces: a square funnel 4 m across, from 0.6 m at the pole up to 1.6 m at the edge, which slides a landed shield to the pole.
On top: a crown of iron beams (a cross plus a 1.7 m ring) and twelve iron poles hanging as "chains", 1.75–3.75 m up.
Two squares of core-wood logs, one on the funnel's rim and one at the crown, 1.9 m apart: you can climb in over the lower one to fetch shields (1.7.1; rebuild an older basket to get it).
2Iron trayA flat iron tray 4 m across at 0.8 m (2×2 iron floors), an iron-beam rim (3.4 m clear inside), a 2 m iron pole and a crossed iron crown. No chains.
3GallowsTwo 4 m log posts and a log crossbeam at the back. Four iron poles hang from it as a curtain (1.65–3.65 m up), and an iron tray with a rim hangs from the curtain at 1.7 m. Hit the curtain and drop into the tray.
4BackboardThe thatch funnel on a short pole, with a wooden wall 4 m wide and 2 m tall on its far edge between two 4 m posts, and logs on top and along the sides. Bank it off the wall. The most forgiving one.

Tees

A tee is any flat spot you agree to throw from. There is no tee piece: build one from what you have.

Laying out holes

As a guide to distances (full throws on flat ground, still air, table): a fresh character throws a driver about 70 m and a putter about 47 m; at Blocking 100 a driver goes about 125 m. So for a mixed group:

ParTee to basket
3up to about 70 m
4about 70–140 m
5longer, or a dogleg around trees or a hill

Trees, rocks, water and slopes make a hole interesting: a shield glances off trunks and rocks, floats where it lands in water, and rolls downhill on its edge.

Turn on [debug] distance_rings while building to see 3.5, 10 and 20 m rings around the point you look at.

4. Keeping score

The game keeps no score yet: count your own throws and write them down (on paper, in chat, or on a sign at the last hole).

5. How the discs fly

Each shield flies like a real golf disc of its class, steered by a physical flight model. What changes a throw: the class, your shield's condition, your skill, the wind, and what it lands on.

Disc classes

Each listed shield belongs to a class with the four numbers printed on real golf discs: speed, glide, turn, fade. Defaults are modelled on an Aviar, Buzzz, Teebird and Wraith.

ClassShieldsSpeedGlideTurnFadeCharacter
PutterBronze Buckler, Iron Buckler, Carapace Buckler, Deep North gold buckler2301Flies straight, forgiving, short.
MidWood Shield, Banded Shield54−11Slight turn, gentle fade.
FairwaySilver Shield7502Holds its line, fades at the end.
DriverBlack Metal Shield, Flametal Shield, Deep North gold round shield115−13Longest; needs a full, skilled throw, otherwise it fades early. S-curve when thrown well.

Your shield: quality, wear and weight

Skill (Blocking)

Throwing uses and trains the vanilla Blocking skill.

Stamina

Wind

The game's own wind pushes your throws; full wind is a moderate breeze, and storms come near it.

Landing, skips, rolls and trees

How far

ClassFull, Blocking 100Full, Blocking 0Half power
Putter66 m47 m33 m
Mid78 m53 m35 m
Fairway90 m59 m38 m
Driver126 m70 m40 m

Carry to the first ground contact, flat ground, still air, best loft; checked in game within 2%. Details in measured carries.

Advanced

The formulas, the flight model, the config and the test tools: for the curious and for checking the mod. Nothing here is needed to play.

6. Install without a mod manager (Steam, Windows and Linux)

The mod is one file, ShieldGolf.dll, loaded by BepInEx from the game folder. Steam's game folder is:

  1. BepInEx, once. Download BepInExPack_Valheim (by denikson) from Thunderstore and open the zip.
    Copy the contents of its BepInExPack_Valheim folder into the game folder, next to valheim.exe / valheim.x86_64: the BepInEx and doorstop_libs folders, winhttp.dll, doorstop_config.ini, start_game_bepinex.sh and start_server_bepinex.sh.
    Don't put the BepInExPack_Valheim folder itself in there.
  2. The mod. Open z3n-ShieldGolf-1.13.7.zip and copy ShieldGolf.dll to <game folder>/BepInEx/plugins/ShieldGolf/ (create the folder; any name works, BepInEx loads every DLL under plugins). Updating later is replacing that one file.
  3. Windows: nothing more. Start the game from Steam; winhttp.dll in the game folder makes it load BepInEx.
    A console window opening alongside the game is BepInEx's log and is normal (it can be turned off in BepInEx/config/BepInEx.cfg, [Logging.Console] Enabled = false).
  4. Linux, native build: in Steam, right-click Valheim → Properties → General → Launch options, and enter ./start_game_bepinex.sh %command%.
    If the log line in the check below never appears, make the script executable once: chmod +x ~/.steam/steam/steamapps/common/Valheim/start_game_bepinex.sh (adjust the path if your library is elsewhere).
  5. Linux with Proton (Windows build forced under Properties → Compatibility): the launch option is WINEDLLOVERRIDES="winhttp=n,b" %command% instead of the script.
  6. Check: after the first start, <game folder>/BepInEx/LogOutput.log contains ShieldGolf 1.13.7: 10 shields in 4 classes, and the config file BepInEx/config/z3n.shieldgolf.cfg exists.

A manual install lives in the game folder. r2modman, Gale and Thunderstore Mod Manager keep their own profiles and ignore it, so a game started from a manager loads the manager's mods only: use one route or the other.

To uninstall the manual way, delete BepInEx/plugins/ShieldGolf/. To remove BepInEx entirely, delete the files from step 1 and clear the launch option.

7. Achievements and the cheated mark

A modded game session can't earn Steam achievements (BepInEx sets the game's modded state, which the game counts like a cheat for as long as it runs). Play golf in a separate profile if that matters to you, or use the game's official bypass command.

Beyond that, the mod marks nothing and flags nobody by default: baskets are paid for, and shields are crafted or found. Two things are cheats, and they only work where the game runs its own cheat commands (devcommands in a world you host):

Neither sets the character's own permanent cheat flag (the one confirmcheats warns about), and neither touches the world.

Easy to miss: in a modded session the game skips its confirmcheats warning, because it already counts the session as cheated. So devcommands and then any of its own cheat commands (god, tod, raiseskill, spawn…) would flag that character permanently, at once and without a message.

ShieldGolf puts the warning back ([safety] confirm_cheats, on by default): a cheat command is refused with the game's own message until you run confirmcheats, as in an unmodded game. Still, use dev commands on a throwaway character.

8. Throw formulas

Power (wind-up)

power = 0.05 + 0.95 × min(1, hold_seconds / 1.2)

A tap is power 0.05; a 0.6 s hold is about 0.53; 1.2 s or longer is 1.0.

Sweet spot and overpowering

clean window = 0.15 s + 0.15 s × skill    anhyzer = min(20°, 15°/s × seconds past the window) × (1 − stability/2) × (1 − skill/2)
Full throw at Blocking 17, overpowered (+20°)CleanOverpowered
Mid (turn −1, fade 1): understable0.6 m left10.4 m right
Driver (turn −1, fade 3): strong fade10.6 m left1.8 m right

From the simulator, still air, loft 8°, neutral shield. The driver moves as far, but from a hard fade to nearly straight: it fades back out of the anhyzer.

Putt

putt power = putt_max_power × power    pitch = line from hand to crosshair + putt_loft_offset_deg    spin = putt_spin × normal spin

Launch speed

speed = 32 m/s × power0.6 × (0.8 + 0.2 × skill)

skill is your Blocking level / 100. Every disc leaves the hand at the same arm speed; what differs is how well each disc uses it (speed rating). The exponent 0.6 makes carry grow roughly in proportion to power, so half a wind-up throws about half as far.

PowerBlocking 0Blocking 50Blocking 100
Tap (0.05)4.2 m/s4.8 m/s5.3 m/s
Half (0.5)16.9 m/s19.0 m/s21.1 m/s
Full (1.0)25.6 m/s28.8 m/s32.0 m/s

Direction and loft

launch pitch = camera pitch + 10° (clamped to ±90°)

Valheim's camera looks down at your character, so a level aim already throws 10° upward. 6–10° of loft carries furthest (driver 6°, mid and fairway 8°, putter 10°). The horizontal direction is where you look, plus the release error from skill.

Tilt (hyzer / anhyzer)

The tilt you set, plus the skill error, clamped to ±45°. It is the disc's starting roll: positive = right edge down. During flight the tilt keeps changing (turn and fade) up to a hard limit of ±80°.

Nose angle and attitude

disc attitude = launch pitch − 2° + nose

Release point

The shield leaves from your left hand on a backhand and your right hand on a forehand (1.4 m above your feet if the hand can't be found), 0.3 m ahead along the throw line. It ignores your own body for the first 0.3 s.

Skill (Blocking)

Throwing uses and trains the vanilla Blocking skill. It changes four things:

EffectFormulaBlocking 0Blocking 100
Arm speed× (0.8 + 0.2·skill)80%100%
Spin× (0.84 + 0.16·skill)84% (≈ 970 rpm on a full throw)100% (≈ 1450 rpm)
Tilt erroruniform ±4° × (1 − skill)±4°none
Aim error (yaw)uniform ±2° × (1 − skill)±2°none

Why spin matters: the disc's turn and fade come from its pitching moment divided by its spin (precession). Less spin means the same moment rolls the disc faster, so a low-skill throw turns harder early and fades harder late.

Combined with the slower arm, a fresh character throws about two thirds as far.

The spin numbers come from real throwers (Koch et al. 2024: novices about 770 rpm at 20.5 m/s, advanced players about 1120 rpm at 25.5 m/s).

Training

Blocking XP per landed throw = max(0.5, carry_m / 20)

One block's worth of experience per 20 m of carry, and at least half a block for any throw. A 100 m drive is worth 5 blocks.

XP is granted at first ground contact. If another player's game finished the flight (handoff), you still get it when that game reports the landing.

9. Throw calculator

power
launch speed
spin
release error (tilt / aim)
stability (−1 under … +1 over)
disc mass
moment at 0° (≈ turn rating)
rough carry, flat, still air (simulated)

Speed, spin, error, stability and mass are the mod's exact formulas. The carry is only a rough guide: it scales the simulator carries (table) by power and skill, and ignores stability, mass and wind.

10. Discs and shields in the model

What each number does in the model

RatingEffectFormula
SpeedLowers drag (a fast disc keeps its speed) and steepens the pitching-moment slope (drivers fade hard when slow, putters barely).Cd0 = max(0.02, 0.11 − 0.007·speed)
slope = 0.5 × (0.13 + 0.079·speed) per rad
GlideScales lift.lift × (0.7 + 0.06·glide)
TurnMore negative = more nose-down moment when fast = rolls right (backhand).Cm += 0.0025·turn
FadeHigher = less nose-down when fast, and the end-of-flight fade comes sooner.Cm += 0.0015·fade
ClassLift factorBase drag Cd0Moment slope /radMoment at 0°
Putter0.880.0960.144−0.0145
Mid0.940.0750.263−0.0170
Fairway1.000.0610.342−0.0130
Driver1.000.0330.500−0.0155

The class table is fixed in the mod (since 1.10.0), the same for every player. A shield in no class stays vanilla.

Stability (quality and wear)

stability = clamp( −0.5 + (quality − 1) / (max_quality − 1), ≤ +1 ) − 1 × (lost durability fraction)
result clamped to −1 … +1; Cm += 0.009 × stability
ShieldStabilityFlies
Quality 1, full durability−0.5Understable: turns right, fades little.
Quality 2, full0As the class numbers say.
Quality 3 (max for all eight), full+0.5Overstable: holds, then fades hard.
Above max quality (if anything ever allows it)up to +1Even more overstable.
Quality 3 at half durability0Beat in back to neutral.
Quality 1 at zero durability−1 (clamped)Flippy: turns over hard.

Half a point of stability shifts the moment by 0.0045, about the same as 1.8 points of turn rating, so quality matters as much as the class. Repairing the shield at a workbench restores durability and with it the stability, just as a new disc replaces a beat-in one.

Wear

EventDurability lostConfig
Landing on the ground (or in water)1[wear] per_landing
Hitting a tree, rock, building or creature (whether it glances off or stops)3 each[wear] per_hit

Weight → mass

mass = 150 g + 30 g × clamp((weight − 3) / 5, 0 … 1)
Shield weight≤ 34567≥ 8
Disc mass150 g156 g162 g168 g174 g180 g

That is the legal golf-disc range. Lift, drag and wind push on a lighter disc harder (acceleration ∝ 1/mass), so heavy shields drift less in wind and hold their line better.

Spin inertia grows with mass too, so a heavier disc's turn and fade build more slowly. Check a shield's weight in its tooltip.

11. How a disc flies

The flight is physical, based on golf-disc wind-tunnel and CFD measurements (Giljarhus et al. 2022; Kamaruddin et al. 2018; Hummel 2003).

The mod simulates a real disc, 21.1 cm across and 150–180 g, and steers the shield with it. The shield is visual only; its size does not matter in the air.

Forces

lift = ½ρv²A × Cl, Cl = (0.11 + 2.64·α) × glide_factor × 0.55
drag = ½ρv²A × Cd, Cd = Cd0 + 3.3·α²
ρ = 1.225 kg/m³, A = π × 0.211² / 4, α = angle of attack (rad)

Turn and fade: the pitching moment and precession

Cm = −0.016 + 0.0025·turn + 0.0015·fade + 0.009·stability + slope·α
roll rate = −(½ρv²A × d × Cm) / (J × ω), J = 0.67 · m · r²

A spinning disc doesn't pitch up or down when the air pushes on its nose; it rolls instead (gyroscopic precession):

Limits

Wind

wind velocity = game wind direction × game wind intensity (0 … 1) × 4.5 m/s

Checked in game (2026-10-19, the game's own wind, every throw within 0.4 m of the simulator's carry; full wind was 6 m/s then):

Landing rules

The first ground contact decides what happens:

OutcomeWhenWhat happens
RollTilted ≥ 60° onto the edge the spin drives forward (right edge for a backhand, left for a forehand), ≥ 4 m/s along the ground, coming in at ≤ 35°.It rolls on its edge, slowing by 1.5 m/s², curving toward its low side at 0.5 rad/s, for up to 6 s or until under 1 m/s. It stops at the first thing that isn't terrain.
SkipComes in at ≤ 25°, at ≥ 8 m/s.It bounces on, keeping 60% of its speed along the ground, bouncing up at 35% of the impact speed, and kicking sideways toward its low edge.
StopAnything else: steep, slow, or on the wrong edge.Normal game physics (it may still slide or tumble).

Checked in game (2026-10-19): skips and rolls happen as the rules above say, and the shield really leaves the ground with the speed they set.

Trees, rocks, walls (in flight)

Water

Dropping below the water surface counts as the landing. The shield then floats like any dropped item.

What stops a disc

A thrown shield is a dropped item. It collides with terrain, solid building pieces, rocks, trees and other items.

It passes through anything on the game's non-solid layer: hanging cloth, banners, fenrir hides and the chains of hanging braziers. To catch discs, build with poles, beams, walls, floors and roofs.

12. Measured carries checked in game

From the mod's simulator: flat ground, still air, best loft, release 1.5 m up, neutral stability. Carry is the distance to the first ground contact.

Checked in game on 2026-10-19: an automatic test run threw 21 cases (every class at full and half power and at Blocking 0 and 100, tilt, nose, forehand, quality, loft).

ClassBest loftFull, Blocking 100Hang timeMax heightFull, Blocking 0Half powerTapMax right / landingFrom a 30 m hill
Putter10°66 m3.9 s5 m47 m33 m3.5 m0.7 / −3.9 m74 m
Mid8°78 m4.2 s4 m53 m35 m3.5 m2.3 / −1.1 m89 m
Fairway8°90 m4.8 s5 m59 m38 m3.5 m1.9 / −5.1 m110 m
Driver6°126 m5.8 s4 m70 m40 m3.4 m6.9 / 1.2 m153 m

13. Config reference

File: BepInEx/config/z3n.shieldgolf.cfg in your mod manager's profile (Gale, r2modman), or in the game folder for a manual install. It is written on the first start, and every entry carries its own description there.

A z3n.discgolf.cfg beside it is from versions before 1.2.0 and is ignored.

Since 1.10.0 everything that changes a throw or a basket is fixed in the mod. Every game flies its own throws, so a value in the config would let each player tune their own; fixed, everyone throws with the same shields.

[discs] fixed

KeyDefault
putterShieldBronzeBuckler,ShieldIronBuckler,ShieldCarapaceBuckler,ShieldGoldBuckler: 2, 3, 0, 1
midShieldWood,ShieldBanded: 5, 4, -1, 1
fairwayShieldSilver: 7, 5, 0, 2
driverShieldBlackmetal,ShieldFlametal,ShieldGold: 11, 5, -1, 3
putt_alsoShieldWood

[physics] fixed

KeyDefaultMeaning
arm_speed32Launch speed in m/s at full power, Blocking 100.
speed_at_zero_skill0.8Fraction of the arm speed at Blocking 0.
lift_scale0.55Scales the CFD lift curve.
drag00.11Zero-lift drag of a speed-0 disc.
drag_per_speed0.007Drag taken off per point of speed rating.
drag_aoa3.3Extra drag per rad² of angle of attack.
moment_aoa0.5Pitching-moment slope (driver), scaled down for slower discs.
nose_down_deg2How far the disc's nose sits below the launch direction.
stall_deg20Stall angle.
advance_ratio0.5Rim speed ÷ flight speed at release: sets the spin.
wind_scale4.5Wind in m/s at the game's full wind intensity.
spin_at_zero_skill0.84Spin fraction at Blocking 0.
stability_moment0.009Moment shift per point of stability.
wear_stability1Stability lost from full durability to none.
roll_ramp_sec0.4Seconds for the roll rate to build up after release.
max_frame_turn_deg15How far the path may bend off the throw line before the disc's tilt stops following it (a long fade then dives instead of curling back).
descent_ease_start_deg20Descent angle where a nose-up disc starts easing level.
descent_level_deg60Descent angle where it is level, so a falling disc glides forward.
windtrueWind affects throws.

[controls]

In the config: tilt_per_mouse_deg, nose_per_mouse_deg, tap_max_sec, tap_max_mouse_deg, exit_hold_sec. Every other row is fixed.

KeyDefaultMeaning
max_tilt_deg45Largest tilt you can set.
tilt_per_mouse_deg1Tilt per degree of sideways mouse movement.
nose_per_mouse_deg0.5Nose angle per degree of vertical mouse movement.
max_nose_deg10Largest nose angle.
full_windup_sec1.2Hold time for full power.
stamina_cost10Stamina per throw (and needed to start a wind-up).
tap_max_sec0.25A right-click this short …
tap_max_mouse_deg1.5… with less mouse movement than this resets tilt and nose.
loft_offset_deg10Added to the camera pitch.
exit_hold_sec0.5Holding secondary attack this long leaves throw mode.
putt_max_power0.35Putt mode: the power a full wind-up reaches (chains at 15–20 m).
putt_loft_offset_deg15Putt mode: degrees above the line from your hand to the crosshair.
tap_in_range3.5Putt mode: a putt aimed closer than this (m, on the ground) is a tap-in from overhead.
tap_in_release_height2.2Tap-in: release height above your feet (m).
sweet_window_sec0.15Sweet spot: the clean window after full power at Blocking 0 (s).
sweet_window_skill_sec0.15Sweet spot: what the window grows by at Blocking 100 (s).
overhold_deg_per_sec15Overpowering: anhyzer toward the turn side per second past the window.
overhold_max_deg20Overpowering: the most anhyzer, before stability (×1.5 to ×0.5) and skill (×1 to ×0.5).
tap_in_min_loft_deg45Tap-in: the lob's lowest launch angle.
putt_speed_at_zero_skill0.9Putt mode: launch speed at Blocking 0 as a share of Blocking 100's.
putt_spin0.4Putt mode: spin as a share of a normal throw's (push putt).

[skill], [wear], [visual], [safety], [debug], [basket]

KeyDefaultMeaning
skill.max_tilt_wobble fixed4Tilt error (±°) at Blocking 0.
skill.max_yaw_wobble fixed2Aim error (±°) at Blocking 0.
skill.metres_per_block fixed20Carry per block's worth of Blocking XP.
wear.per_landing fixed1Durability per landing.
wear.per_hit fixed3Durability per hit on a tree, rock or building.
visual.follow_cameratrueChase camera.
visual.flight_offset_x0Pitch that lays the flying shield face up (180 flips it).
visual.held_offset_x180Same for the shield in your hand.
safety.confirm_cheatstrueRefuse a cheat command with the game's confirmcheats warning until confirmcheats has run (vanilla skips the warning in modded sessions; see Achievements).
debug.distance_ringsfalseIn throw mode, rings on the ground around the point under the crosshair at 3.5 m (tap-in range), 10 m and 20 m. Only on your screen.
debug.tuning_logfalseOne [shieldgolf] line per throw in the BepInEx log.
(command) discshields—Not a setting: discshields in the console or /discshields in chat gives one shield per class, marked as cheated items like spawn does. Only with devcommands in a world you host; never flags the character.
basket.distance4Default build distance in m.
basket.design5Design /discbasket builds with no number.
basket.freefalseCheat: baskets cost and refund nothing; needs devcommands in a world you host; the pieces get the cheated mark.
basket1 … basket5.* fixed—Prefab and height of each part of each design.

14. Tuning and testing

Tuning log

Set tuning_log = true and every throw writes a line like this:

[shieldgolf] class=mid backhand power=1.00 tilt=-12.0 loft=12.3 nose=0.0 quality=3 stability=0.50 mass=168g skill=0.47 wind=0.0 wind_across=0.0 wind_along=0.0 end_tilt=-55 time=3.42 carry=61.8 rest=64.0 lateral=-3.1 durability=97

Automatic test run

For checking the mod itself, not for play. With [testrun] run = true, loading the throwaway character and local world named below throws every test case through the real release and compares each flight with the simulator (34 throws, about ten minutes).

KeyDefaultMeaning
runfalseRun the test on the next load of the character and world below.
characterz3nlabsCharacter name the run requires.
worldz3nlabsWorld name the run requires (hosted by this game, not a server).
repeats1Throws per case. Without wind gusts or release error every throw is the same, so 1 is enough.
only(empty)Comma-separated words: only the cases whose name contains one, e.g. glance, roller.