Skip to content

About

🎮 Visual Pinball Engine for Unity

Topics

Resources

Contributing

Stars

511 stars

Watchers

42 watching

Forks

Repository files navigation

Banner

Visual Pinball Engine

An engine for creating and re-creating pinball machines, virtually.

build codecov UPM Package

VPE is a toolkit with the goal of making it easy to create pinball machines digitally. It uses Unity's High Definition Render Pipeline and comes with extensive editor tooling that aims to provide all the features needed for such a task. VPE can read Visual Pinball's file format and uses Visual Pinball's physics code for the simulation during gameplay.

image

For a more detailed overview, head over to the website. It's also where all the new features get documented.

Recent Developments

Since early 2025, VPE has moved to Unity 6.5 and grown in every direction. The highlights:

  • Physics. Every element can be moved, rotated and scaled freely, also at runtime, and moving colliders pass their velocity and friction to the ball. Magnets, turntables, spring-hinge bash toys and generic motion controllers are native components.
  • Low latency. Input polling, physics and PinMAME each run on a thread of their own, so flipper input reaches the physics without waiting for the next frame (threading model).
  • Nudging and tilt. A port of Visual Pinball's cabinet nudge physics, a simulated plumb-bob tilt, and accelerometer support for KL25Z and Pinscape boards (nudging).
  • Packaging. Tables are saved as .vpe files: a single, versioned, glTF-based format with lossless assets and nothing Unity-specific in it, meant to load years from now. A player app loads them at runtime, cooking and caching textures on first start (packaging).
  • Sound. Mechanical sounds are assigned to game items in the editor without code, alongside music and callouts with ducking (sound).
  • Displays. DMDs can be driven by DMD Extensions, including real and colorized displays, and Pinball 2000 video is supported.
  • Authoring. Drag points are Unity Splines, the asset browser handles material and decal variations and places prefabs straight onto the playfield, and new generators build wire rails and procedural inserts with baked optics, presets and lamp-driven lighting.

The changelog lists everything in detail.

History

The project started in late 2019 and is still actively being developed. We're part of the virtual pinball community and as such, this project is a community effort. The following is a list of relevant posts that document the progress of VPE so far.

During that time, we've also written a guest article at thisweekinpinball.com about our community.

VPE Repositories

The "core" of VPE (i.e. the VisualPinball.Engine project) is a pure C# port of the original Visual Pinball. It has no dependencies to any proprietary third parties, and provides the data layer.

This repository is part of a number of packages. It is what we're referring to as the main package, which also includes the core project.

image

Screenshots

We've put them in a Wiki. :)

Credits

IntelliJ IDEA

Special thanks go to JetBrains for their awesome IDE and support of the Open Source Community!

License

Since 4616dcbb, GPL-3.0. Before 4616dcbb, GPL-2.0.

About

🎮 Visual Pinball Engine for Unity

Topics

Resources

Contributing

Stars

511 stars

Watchers

42 watching

Forks

Releases

Used by

Contributors

Languages