Known Issues
In short
Found by reading main while writing the wiki (first at
e7dba51, re-checked at45a2167), not by playing. Items marked ✔ were checked again in the code. Fixing one belongs on a branch and PR in the game repo. Remove the row here once it’s merged.
Gameplay and code
| Issue | Evidence | Effect | Status |
|---|---|---|---|
| Barrel Master synergy can never switch on | Needs 2 Contact-tagged upgrades. All three (sweet_tape, pine_tar, sweet_spot_sticker) are Gloves, and a slot holds one item (String Bean even starts with sweet_tape) | A synergy players can see but never get | ✔ |
| #46 changed a co-op message without a protocol bump | NetMessages.Result gained zone, hitAim, curveAccel, gravityScale in 255f139; NetSession.Protocol is still HRD-COOP-7 (set in #41) | A pre-#46 build and a post-#46 build can join each other and then misread every swing result. Fix: bump to HRD-COOP-8 (Protocol Versions) | ✔ |
| Co-op ending during the match intro may leave the camera stuck | Nothing calls Intro.Stop() when a session ends mid-intro (GoToMainMenu, CoopRun.Stop); the director’s Hold mode has no screen check | The face-off camera may keep holding over the title screen (Cutscenes) | reported |
| Aim helper may be invisible in builds | AimBat’s transparent material is made at runtime (Visuals.CreateTransparentMaterial); URP can strip unused shader variants from a build | Check the bat-shaped aim helper in a Windows build (Build and Release) | unverified |
| Old saved runs replay differently | #41 changed what a seed produces (bosses, arcs, decoys); RunSaveData has no version bump | A run.json from before #41 loads but faces different pitches (Save System) | reported |
| Innings 3 and 6 always have the same boss | Since #41 the random boss pool excludes every park boss, leaving only The Ace (inning 3) and Knuckle Sandwich (inning 6) | No variety in mid-run bosses (Pitchers and Bosses) | design note |
| FORCE A SPECIAL BALL ignores boss balls | The dev menu option forces only the map’s ball | Boss balls can’t be forced for testing (Dev Menu and Shortcuts) | reported |
| Results button says PICK A MAP | The screen it opens is titled PICK A BALLPARK since #39 | Label mismatch (Map Select and Unlocks) | reported |
| Host leaving mid-run pays clients nothing | CoopRun.OnSessionEnded calls Stop() without AwardRun / AwardXp unless the run is already over | Clients lose the points and XP of an abandoned run (Co-op Run Flow) | ✔ |
| Co-op version check only checks the protocol | Application.version is 1.0 in ProjectSettings (bundleVersion), so it never differs | NetSession.Protocol is the only guard: bump it for any change that affects co-op (Protocol Versions) | ✔ |
| Dressing prefabs missing | Farmyard and Moon set dressing = "Parks/*_Dressing", but there’s no Resources/Parks/ | Both parks fall back to their code layouts (Ballpark Building) | ✔ |
| Export Default Content skips some lists | ContentExporter doesn’t export callSigns or practiceParks | After an export, the asset database lacks call signs and Scoreboard Smash | reported |
| Scoreboard holes last the whole run | The comment says holes last until the next round; Build skips a park that’s already built | Holes stay for the whole run (Scoreboard) | reported |
| Cage hint says “ESC to leave” | Esc opens the pause menu; you leave with LEAVE CAGE | Confusing hint (Batting Cage) | reported |
PitcherDefinition.color unused | Never read on main | Dead field | reported |
Out-of-date docs and comments
| Where | Says | Code on main |
|---|---|---|
| README feature tree | ”Starter ballparks (4 maps)“ | 5 run maps + 1 practice park (Ballparks) |
| README tuning | Set the green sound on GreenFeedback.GreenClip | The field doesn’t exist; it’s SoundBank.CrackGreen played by GameAudio (GREEN Swings) |
| README key ideas | BallEffectLook plays the windup cue | BallEffectLook does colour, glow and trail; the cue is in GameAudio (Special Balls) |
| README controls | Cage: Tab changes the pitch | Also M changes the park, and locked parks can be picked (Batting Cage) |
| README folder table / diagram | No Audio/, FitMode/, co-op, cage or XP; Net is “phases 0-3” | All are on main, including phase 4 live spectating (Architecture) |
| README progression | Meta only unlocks batters and perks | #37 adds account and batter levels that gate batters and cosmetics (XP and Levels) |
| README how-to row “Co-op / Head-to-Head” | Store a batter + stats per player in RunState | Co-op is built through CoopRun / IRunDriver (Co-op Overview) |
| CONTRIBUTING | Merge with “Squash and merge” | Every PR on main is a normal merge commit (Git and PRs) |
| MULTIPLAYER-PLAN section 6c | Protocol is HRD-COOP-5 | HRD-COOP-7 (Protocol Versions) |
| README key ideas | Special-ball rolls “never change which pitches you get” | Pitch lean (#41) uses the pitch stream, so adding a ball that rides some pitch types changes the pitch sequence (Seeds and Determinism) |
DefaultContent comment | The Phantom can appear as a late boss elsewhere | RunMapGenerator keeps every park boss out of the random pool: he only pitches at Midnight Yard (Pitchers and Bosses) |
| MULTIPLAYER-PLAN | Outs pool = max(7, players) | max(outsPerInning = 3 (+ difficulty), players) (Co-op Rules); CoopRulesTest still uses SoloOuts = 7 |
| MULTIPLAYER-PLAN section 4 | ClockPing, Snapshot, Kick, shop timer, content hash, map vote | Not built (Net Messages) |
SteamSetup comment, README | Facepunch DLLs aren’t committed | They are (LFS), and HOMERUNDERBY_STEAM is on (Build and Release) |
GameModes.cs comment | Co-op is not playable | CoopMode.IsAvailable is true |
CoopWatchView comment | Live swings come in the next update | Live spectating is on main (Live Spectating) |
SaveData comment | Saves are migrated | There’s no migration code (Save System) |
SwingInput comment | ~40 ms green window | ~14 ms per SwingResolver (GREEN Swings) |
StatType comments for Contact / TimingWindow | TimingWindow = seconds early/late | SwingResolver uses them differently (Stats) |
SoloMode description | ”Clear every ballpark.” | A run is one map (Run Structure) |
Fixed
| Issue | Fixed in |
|---|---|
| Timing ring ignored AIM SPEED (it read the mouse without the sensitivity) | #46 (255f139): TimingIndicator now uses the at-bat’s own aim |