Dev Menu and Shortcuts

In short

F1 opens the dev menu in the Editor and in development builds only, never in a release build. It unlocks things, moves around a run, forces pitches or batted balls, and plays any cutscene. Everything it does to progress is saved at once, like a normal unlock. Two more hidden keys work in every build: Ctrl+Shift+F (Fit Mode) and Ctrl+Shift+N (NET TEST).

How it works

The dev menu

  • UIRoot.Awake adds DevMenu only when DevMenu.Available (Application.isEditor || Debug.isDebugBuild).
  • F1 toggles it; Esc or the X button closes it. It draws as a panel on the right at GUI.depth -10, so it is on top and gets clicks first.
  • While open during an at-bat, UIRoot pauses the game (so a click never swings) and unpauses when it closes.

Always at the top: INSTA-HOME-RUN BAT: ON / OFF (AtBatController.DevInstaHomeRun). Every swing, even a miss, becomes a no-doubter: 116 mph, 29 deg launch, spray up to +-20 deg, quality 0.85 (SwingResolver.DevHomeRun). Works in runs, co-op turns and the cage.

Tabs: PROGRESS, RUN, PITCHING, CUTSCENES.

PROGRESS

SectionButtonsCalls
META POINTS n+100, +1000, -100DevAddPoints
ACCOUNT LEVEL n (xp XP)+100 XP, +1000 XP, LEVEL UP (off at level 50), RESETDevAddAccountXp, DevSetAccountLevel(level + 1), DevSetAccountLevel(1)
BATTER LEVELS, one row per batter: NAME LV n (xp XP, p perks)+100 XP, LEVEL UP, MAX, RESET (first three off at level 10)DevAddBatterXp, DevSetBatterLevel
RESET ALL LEVELSDevResetLevels
BATTERS, SHOP ITEMS, COSMETICSUNLOCK ALL, LOCK ALLDevUnlockAllItems, DevLockAllItems
MAPSUNLOCK ALL MAPS, RESET MAPSDevUnlockAllMaps, DevResetMaps
Per map (LOCKED tag if locked)NONE, NORMAL, MEDIUM, HARD (difficulties beaten)DevSetBeaten(park, 0..3)
SWING LOG (n pitches this session)a note with the file path, OPEN THE LOG’S FOLDEROpens Application.persistentDataPath, where swings.csv is (Swing Log)

The levels section notes that perks apply from the next run or cage session, and that the results-screen XP bars show after RUN > BEAT MAP. (XP and Levels)

RUN (solo runs only)

Shows a note instead in the batting cage (“use the PITCHING tab”), in co-op (“refereed by the host”) or with no live solo run.

SectionButtonsWhat happens
Headerpark, difficulty; inning n / 9, goal, run score, coins
COINS+10, +100, ZEROedits RunState.Coins
JUMP TO INNING<, INNING n, >, GORunManager.DevJumpToInning: earlier innings count as cleared at exactly their goals; lands on the map
THE RUNOPEN SHOP, BEAT MAP, LOSE RUNDevOpenShop (fresh visit), DevEndRun(true) (records the map, so unlocks fire), DevEndRun(false). Both go straight to the results with no cutscene.
REPLAY LAST HIT (only at bat; turns green: “REPLAY LAST HIT: BEFORE THE NEXT PITCH”)AtBatController.DevReplayNext: the last hit’s instant replay plays before the next pitch (Hit Show)
THIS INNING s / goal OUTS o / n (at bat only)+100, +1000, CLEAR ITAtBatController.DevAddScore; the inning ends after the pitch in flight
+1 OUT, -1 OUT, OUT OF OUTSCount.AddOutsAllowed
ATTRIBUTESevery stat, yellow when changed from baseread-only list of RunState.Stats
CLEAR ALL UPGRADES, STARTING KITRunState.ResetUpgrades(false / true)
GIVE AN UPGRADEGIVE per upgrade (OWNED when owned and it doesn’t stack)RunState.AddUpgrade

PITCHING

  • TEST HITS: OFF, GROUNDER, LINE DRIVE, FLY OUT, OFF THE WALL, FOUL, JUST OVER, HOME RUN, MONSTER, TARGET, SCOREBOARD, UPPER DECK, RANDOM (DevHit). From the next pitch every swing, even a miss, becomes that kind of batted ball, found by searching the real physics of the park you are on (DevHits.Find, done once when you pick, while the game is paused). Kinds that can’t happen at this park are greyed out; if a search finds none, a note says swings play for real. Scoring stays real. Sets AtBatController.DevForcedHit. Used to test the flight camera, the counter and the replays (Hit Show).
  • HIT REPLAYS: REPLAY EVERY HOME RUN: ON / OFF (AtBatController.DevAlwaysReplay). Off, only big moments get the replay. Settings > REPLAYS still turns replays off entirely.
  • FORCE A SPECIAL BALL: OFF, NO SPECIAL BALLS, or one per BallEffect ($$$, Super Fast, Anti-Gravity, Ghost, Sticky…). Sets PitcherAI.DevForcedEffect.
  • FORCE A PITCH TYPE: OFF or one per pitch type. Sets PitcherAI.DevForcedPitch.
  • Applies from the next pitch, in runs and the cage. The rolls still happen, so turning a force off leaves the sequence as it would have been (Seeds and Determinism).

CUTSCENES

SectionButtonsWhat happens
IN RUNSCUTSCENES: ON / OFFThe same switch as Settings > CUTSCENES (skipCutscenes); saves at once.
SPEED1X, 1/2X, 1/4XPlayback speed for the previews below.
PARK<, THE RUN’S PARK or a park name, >THE RUN’S PARK = the run you’re on (its inning, pitcher and build), or the first park with your batter.
MATCH INTROPLAY MATCH INTROMatchIntroDirector.Preview(speed, park): the whole intro, no walk-up, then back to where you were.
END OF THE GAMEBOSS DOWN, MAP BEATEN, GAME OVEROutroDirector.Preview(kind, speed, park), with a made-up winning homer.

The previews only work from the title screen or a solo run’s map (not in co-op or the cage), and not while a cutscene is playing. In a scene, click reads on and Esc skips. See Cutscenes.

Every hidden and developer key

KeyWhereBuildWhat
F1anywhereEditor + development buildsDev menu
Ctrl+Shift+FCustomize screenany buildFit Mode (Fit Mode)
Ctrl+Shift+Ntitle screenany buildNET TEST transport overlay (Transports)
FIT buttonCustomize top barEditor onlyFit Mode
NET buttontitle screen top barEditor onlyNET TEST
Irun map, soloEditor onlyReplay the match intro here (Shift+I: quarter speed)
B / V / Grun map, soloEditor onlyPreview BOSS DOWN / MAP BEATEN (victory) / GAME OVER (Shift: quarter speed)
Escat batanyPause; also closes the dev menu, Fit Mode, popups, NET TEST, the lobby, the INDEX screen and map select
Escmatch intro, end-of-game cutscenesanySkip the cutscene (a short fade to black)
Tabbatting cageanyNext pitch type
Mbatting cageanyNext park
Space / left clickreplays, waits, results screen, cutscenesanySkip (results: fill the XP bars at once); in a cutscene, read on past a card
Arrows / WASD, 1 / 2 / 3, Entermap selectanySlide parks, step difficulty, pick Normal / Medium / Hard, PLAY (Map Select and Unlocks)
Arrow keys / WASDCustomize stageanyPan the camera

Player controls (mouse aim, Space / click / gamepad A to swing) are in Controls.

Editor-only menu helpers

Tools > Home Run Derby > Smash Scoreboard (Play mode) breaks the board (Scoreboard); Preview Match Intro, Preview Match Intro (Quarter Speed) and Preview Outro: Boss Down / Victory / Defeat play the cutscenes in Play mode; Delete Save File resets progress. The full list is in Editor Tools and Tests.

Numbers

WhatValueWhere to tune
Panel width460DevMenu.PanelW
Insta-home-run swing116 mph, 29 deg, spray +-20 deg, quality 0.85SwingResolver.DevHomeRun*
Max account level / character level50 / 10Leveling.MaxAccountLevel, MaxCharacterLevel

In the code

FileWhat it does
Scripts/UI/DevMenu.csThe menu: DrawProgress, DrawLevels, DrawRun, DrawPitching, DrawTestHits, DrawCutscenes.
Scripts/Batting/DevHits.csDevHit kinds, Label, CouldHappen, Find (searches the park’s physics), Make.
Scripts/Batting/AtBatController.HitShow.csDevAlwaysReplay, DevReplayNext.
Scripts/UI/RunMapView.csThe Editor-only I / B / V / G preview keys.
Scripts/Progression/MetaProgression.csDev* methods; each saves at once.
Scripts/Run/RunManager.csDevJumpToInning, DevOpenShop, DevEndRun.
Scripts/Batting/AtBatController.csDevInstaHomeRun, DevForcedHit, DevAddScore.
Scripts/Pitching/PitcherAI.csDevForcedPitch, DevForcedEffect.

Gotchas

Dev actions write the real save

Every PROGRESS button calls Persist(), so it writes save.json immediately. Use Delete Save File to undo.

  • The Windows zip from Build > Windows Player is a release build (BuildOptions.None), so F1 does nothing there. Ctrl+Shift+F and Ctrl+Shift+N still work.
  • Forced pitches, TEST HITS, REPLAY EVERY HOME RUN and insta-home-run are static fields: they stay on until switched off or Play stops. TEST HITS wins over insta-home-run when both are on.
  • Upgrades given mid-inning apply from the next inning; the current at-bat keeps its stats.