Skip to content

Countdown

VPW Gottlieb System 1 build with VLM workflow, collaborative development between multiple contributors, and difficulty adjustment features.

Build Guide

Early Solid State Physics Tuning

Early SS tables need special physics attention. Rubbers need reduced elasticity vs modern tables. Tune rubber materials to get early SS feel. Reference videos from real machine for bounce behavior. Conservative rubber settings make game more challenging (better default).

Difficulty Adjustments Implementation

Post adjustment options (conservative/liberal per Gottlieb manual wording) implemented in F12 menu. Liberal position gives more tension to rubber = springier response. Switch names should match between VPX and Blender to avoid complex mappings.

Sling Difficulty Wall Assignments

Sling difficulty changes post positions (not rubber properties). Each difficulty wall needs separate hit handlers but can call same animation timer if post not moved. If post moves between difficulties, need separate animation routines per difficulty level to avoid clipping.

Scripting

Flipper Animation Midpoint Calculations

Flipper animation visibility toggle formula:

Dim v, BP
v = 255.0 * (122 - LeftFlipper.CurrentAngle) / (122 - 72)

For each BP in BP_Lflip
    BP.Rotz = a
    BP.visible = v < 128.0
Next
For each BP in BP_LflipU
    BP.Rotz = a
    BP.visible = v >= 128.0
Next

Each flipper needs separate _animate sub - don't drive both left flippers with one flipper's animation. Optimize by moving angle data collection outside animate function.

3D & Art

Rubber Animation with Multiple States

Rubber animation setup: - Render multiple positions: neutral, slight in (A/B), slight out (C/D) - Timers control visibility swapping through positions - Initialize sub hides extra shapes before first hit (survives bake wipes) - Place timers on Timers layer (not lightmaps layer - gets wiped on bake)

50ms timer too slow - reduce to 25ms for better animation look.

Dynamic Drop Target Shadows Implementation

Dynamic DT shadow process: 1. Render shadows for each drop target position 2. Setup flashers with shadow images 3. Code controls flasher visibility tied to target state

"Definitely the least fun part of any table and this one has a ton" - frank_enste1n

Movables Static Rendering Must Be Disabled

Bakemaps only animate in live editor but not gameplay: Static Rendering checkbox must be unchecked for movables bakemaps and lightmaps. Also must be set active in materials.

Playfield Mesh Optimization for Saucers

Saucer hole too big (64VPU) causes ball to spin excessively. Count-Down has harder lip on saucer than source mesh. Update playfield mesh to match real geometry.

Troubleshooting

Gottlieb System 1 ROM Requirements

Gottlieb Count-Down requires updated System 1 ROM with redumped A1752CF spider chip. Old ROM sets have wrong sound ROM causing PinMAME load failures.

Download from: https://pinballnirvana.com/forums/resources/new-fixed-roms-for-vpinmame-v3-6-0-963-beta.8379/

Requires VPinMAME v1122 or later.

FastGI Approximation Causes Lighting Issues

FastGI approximation checked in render settings caused lighting issues and plastic visibility problems. Uncheck FastGI approximation for proper GI and plastic rendering. Caused re-render requirement.

Side Shadow Management in Renders

Side shadows from IBL can look out of place on real cabinet. Rotate IBL map to avoid shadow bias on one side. Adjust IBL angle to balance lighting without strong directional shadows.

Separate Flipper Animations Required

Flipper lock/stuck issue: Using upper flipper animate for both upper and lower caused problems. Each flipper needs own _animate sub with individual angle calculations. Don't calculate angles that don't change inside animate function - calculate once outside and reference.