A 3D arcade-simulation sports game about the movement, improvisation, and neighborhood rivalries of backyard plastic-ball baseball.
The project is currently in pre-production and begins with a Pitch Lab: a deliberately small playable prototype for tuning pitches, wind, ball aerodynamics, and the strike-zone experience before building full games or management modes.
The combined Pitch and Batting Lab currently provides:
- Five quick-select pitch presets spanning overhand and submarine release slots
- A custom aerodynamic force model layered on Unity physics
- Predictive targeting that compensates for each pitch's break, drag, steady wind, and selected power
- Pitch-specific release slots, including a low Tyler Rogers-inspired submarine delivery for the plastic riser
- A Rogers-inspired submarine slider that sweeps glove-side and resists drop from the same low slot
- Wind and gust simulation
- A warm backyard field combining procedural turf/dirt shading with original Blender-authored fence, mature trees, shrubs, shed, neighboring homes, porch, picnic table, flowers, and yard equipment
- Compact role-specific HUD panels with persistent pitch/bat targets and a live flight readout
- A straight-on batter's-eye camera plus an offset pitcher camera
- A trajectory-follow camera for meaningful balls in play, with a smooth return to the role view
- Swept bat contact that catches fast pitches between physics frames
- Early, perfect, and late timing plus five contact-quality outcomes
- Exit velocity, launch angle, restrained contact flash/camera impulse, sound-ready events, and contact slow motion
- Rapid at-bat reset for pitch-after-pitch testing
- A low-profile collidable mound, complete batter boxes/foul lines, and a full left/center/right backyard wall
- A right-field pool beyond the home-run wall that batted balls can land in
- High-contrast spinning seams and perforations for batter-side depth judgment
- Batter- or pitcher-controlled roles with an imperfect computer opponent that can miss, chase, take, and lose command
- Original Blender-generated, skinned stylized pitcher and batter models with bone-driven ready stances, handed grip, swing, windup, lead-leg stride, release, and follow-through
- Left- and right-handed batting and pitching; pitcher handedness mirrors release slots and horizontal pitch movement while preserving vertical break
- Power swings use a readable load with near-contact timing cadence, a slightly wider collision assist, and legitimate wall-clearing exit speed; contact and power swings recover smoothly after misses without pausing global time
- Pitch physics release synchronized to the visual delivery release point
- Edit-mode tests for the aerodynamic model
- Unity 6.5's Universal Render Pipeline
Controls:
| Input | Action |
|---|---|
[ / ] |
Browse the complete pitch catalog |
1–5 |
Quick-select four-seam, sweeper, 12–6 curve, plastic riser, or submarine slider |
W / A / S / D |
Aim the pitch or bat, depending on the controlled side |
Q / E |
Decrease or increase pitch power |
Space |
Throw a pitch or contact swing, depending on the controlled side |
1 / 2 / 3 |
Select contact, power, or bunt while batting |
F / left click |
Contact swing while batting |
G / right click |
Power swing |
B |
Bunt |
H |
Switch left- or right-handed batter/pitcher for the role you control |
Enter |
Reset the current at-bat |
Tab |
Switch the player-controlled side (batter or pitcher) |
Left / Right |
Change crosswind |
R |
Reset wind |
C |
Clear retained comparison trails |
- Install Unity Hub.
- Install Unity
6000.5.3f1(Unity Hub and this editor are installed on the current development Mac). - In Unity Hub, choose Add project from disk and select this repository.
- Allow Unity to import the project.
- Open
Assets/Scenes/PitchLab.unityif it is not opened automatically. - Enter Play mode.
The scene is generated on the first successful Unity import by PitchLabProjectSetup. It can also be regenerated from Plastic Ball Lab → Create Pitch Lab Scene.
- Open Unity Hub and select this project.
- Confirm Hub opens it with Unity
6000.5.3f1. - In the Project panel, open
Assets/Scenes/PitchLab.unity. - Press the Play button at the top of the editor.
- Click once inside the Game view so it receives keyboard input.
- Use
[and]to browse the pitch catalog (or1–5for quick slots), then pressSpaceto throw. - Use the left and right arrow keys to change the crosswind, and
Rto reset it.
Try the same pitch several times with different crosswinds, then compare its trail with the other pitch families. Exit Play mode before editing the scene.
Build the app with:
./scripts/build-macos.shThen open Builds/PlasticBallLab.app. The standalone app uses the same controls and does not require the Unity editor to remain open.
The development Mac can cross-build the Windows version. In Unity Hub, find Unity 6000.5.3f1, choose Add modules, and install Windows Build Support (Mono). Then run:
./scripts/build-windows.shThe build is written to Builds/Windows/ with PlasticBallLab.exe. Copy or zip the entire Builds/Windows/ folder when moving it to a Windows machine; the generated data folder and Unity runtime files beside the .exe are required.
To build through the Unity editor instead, open File → Build Profiles, select Windows, choose Switch Platform, set the architecture to Intel 64-bit, and build into Builds/Windows/. If Windows is unavailable in Build Profiles, install the Windows Build Support module through Unity Hub first.
docs/GAME_VISION.md— product identity and design pillarsdocs/FIRST_PLAYABLE.md— exact scope and acceptance criteria for the first playabledocs/TECHNICAL_DESIGN.md— physics and code architecturedocs/ROADMAP.md— milestone order and explicit deferralsAssets/WiffleBallGame/Scripts— prototype runtime codeAssets/WiffleBallGame/Tests— edit-mode physics testsart/blender/backyard_players.blend— editable source for the original player modelsart/blender/backyard_scenery.blend— editable source for the original backyard scenery kittools/blender/generate_backyard_players.py— reproducible Blender 5 headless asset generatortools/blender/generate_backyard_scenery.py— reproducible Blender 5 headless scenery generator
Regenerate both original Blender asset sets with:
/Applications/Blender.app/Contents/MacOS/Blender --background --python tools/blender/generate_backyard_players.py
/Applications/Blender.app/Contents/MacOS/Blender --background --python tools/blender/generate_backyard_scenery.pyRun the automated edit-mode verification:
./scripts/verify.shCreate a local macOS build:
./scripts/build-macos.shCreate a Windows 64-bit build from macOS after installing Unity's Windows Build Support module:
./scripts/build-windows.shTests are also available in Window → General → Test Runner → EditMode inside the editor.
Plastic Ball Lab is a descriptive development title. It intentionally avoids using another sports-game franchise or equipment brand as the product name; commercial naming still requires a dedicated clearance pass.