Total Nuclear Annihilation (Spooky 2017)¶
First VPW table with official designer collaboration -- Scott Danesi provided music, art exports, sound effects, display animations, and 70 lighting animation data files. Notable for its real-machine lampshow animation system, fluorescent acrylic plastic protectors, and the discovery that VPX's glass height setting does not act as a physical barrier.
Build Story¶
TNA was a long-running build (2021-2023) led by gtxjoe and benji084, with significant contributions from thalamus, iaakki, apophis79, sixtoe, cyberpez, and astronasty. Scott Danesi (Spooky Pinball, game creator) directly participated, providing official assets including 70 .lampshow files containing frame-by-frame RGB data for every GI bulb. The collaboration was initiated via Twitch stream relationship. borgdog noted that baked/rendered lighting makes original art unusable for reproduction, effectively protecting IP without DRM.
Table-Specific Details¶
Mechanisms & Hardware¶
- Williams WPC flipper mechanisms: Confirmed by Scott Danesi -- TNA uses WPC flippers, not Stern. Flipper strength tested at 2500-3250 range. The game's perceived speed comes from the half-playfield design, making return shots aggressive.
- Playfield slope: 6.5-7.0 degrees, contributing to the game's aggressive feel combined with the short playfield.
- Speaker LED color states (from real machine): Game start = Purple, Reactor Ready = Green, Reactor Started = Blue (speakers OFF during startup sequence), Reactor Critical = Red, Reactor Destroyed = Purple, Multiball = Blue (configurable), Bumper/sling hit = White flash, Spinner = White flash only during Reactor Started mode, Bonus sequence = 2s pink, 2s pink, 2s pink, 2s blue.
Art & Visuals¶
- Lampshow animation system: Scott Danesi provided
.lampshowfiles containing 64 frames (2 seconds) of RGB hex values per GI bulb. A Perl script converts these to VBS arrays. Script timer steps through array at 30fps setting each light's RGB color. 70 animations total mapped to game events viaStartAnimation*andStopAnimation*subs. - Fluorescent acrylic plastic protectors: Add extra wall objects underneath plastic walls, slightly larger than the plastics. Use two materials and two images -- one for the surface, one for side edges to create a brighter edge glow. Effect is especially dramatic in VR. Color-selectable via script options.
- ExtractRGB utility function: For extracting RGB components from a VPX color integer for real-time material color fading on objects without direct DL adjustment.
Physics & Gameplay¶
- Playfield glass ceiling: VPX's built-in glass height setting does NOT act as a physical barrier. Add an invisible wall/ramp at the correct glass height (measured from Firepower II: ~2 inches bottom to glass, ~4 inches top). See physics tuning.
Known Issues¶
- vpmTimer.Add is broken: Never use it. Use standard VPX timers instead. See common script bugs.
- PUP screen layering: ForceOn > ForcePop priority means fullDMD on ForceOn renders videos behind it (invisible). Workaround: play videos directly on the DMD screen.
- PUP performance: Timer-based state polling causes frame drops. Fix: only run state checks when values have actually changed since the previous iteration.
- Blender material version incompatibility: Materials from Blender 3.4 appended into 3.2 render as completely black with no error message.
- Bevel weight shading artifacts: Cyan-colored edges in Blender indicate unintentional Bevel Weight -- set to 0 to fix.
Techniques Developed Here¶
- Playfield glass as physics ceiling was first documented here
- vpmTimer.Add is broken warning originated from this build
- Official designer collaboration model for VPW tables was established here
See Also¶
- Physics Tuning -- glass ceiling, flipper strength by era
- VBScript Patterns -- timer management, vpmTimer warning
- GI and Flashers -- flasher fading patterns