Godot v4.7 Pinball Table Build

Thanks, I’ll see if I can figure out how to install the stuff :slight_smile:

Thankyou

The scene setup was down to experimentation & many serendipity moments. Godot handles the Blender mesh.glb & mesh.fbx file formats nicely. The Table and all objects were built in blender 4.5 & the scale sizes varied from object to object. Godot did identified the ball scale size as 1.. Blenders file format mesh.glb seemed to keep things in perspective.
I hope that Godot does the physics compensation!
I am still experimenting with the shodow, shader, sound issues & the ball object collision bugs which occurs with the spinner & some of the other objects.

  • upgrade jobs to be done
  1. when in view1 put a hint text to show that No1 key is the main table view, No2 key is the rear table view & No3 key is the plunger view. (preps for the under playfield view intruduction)
  2. In light attract.gd script preserve the in game light visible=true events for the func Check_which_light_was_True().
  3. Run a randomizer for the LightAttract_Mod that is run by func Ready() & EndofGame().
  4. Multiball, Loop circuit & magnaball to be introduced.
  5. Underground Table to be formulated/designed.
  6. liquefy the fruit images when hit with animation or shaders.
  7. On the fly load shader into material slot script to be introduced using the Dot_Matrix_v2 & Dot_Matrix_monochrome_v1
  8. Check for bugs.
  9. Impliment some of the tween guide examples.
  10. Continue to improve on the score Theme enabling objectives.
  11. Introduce Ball 1 & 2 quantity highscore board using short array sort code method.
  12. Introduce Bumper/drop Targets & fruit collection highscore board.
  13. Add Hud display dictionary randomizer
  14. Put Press Enter to start game
1 Like

Maybe my wording was bad. I’m interested in the world size of the ball, not the scale. A real pinball ball has a diameter of 2.7cm. And at that “scale” (size, not the transformation scale) I expect issues. I would like to know the size in m/cm/inch of the ball.

Thankyou, hopefully the following will answer your question which was obtained from windows copilot :-

My Question to Copilot ?

What does a sphereMesh scale size of 1 output as a radius measurement ?

Copilot answer :-

The diameter of a default Godot SphereMesh at scale = 1 is 1 unit.

This comes directly from the fact that the SphereMesh’s default radius is 0.5 Godot Engine.
Diameter = radius × 2 → 0.5 × 2 = 1.0 unit.

Why this sometimes feels confusing

Godot’s built‑in meshes often use radius, not full size, as their defining property.
So:

  • SphereMesh radius = 0.5 → diameter = 1

Summary

Mesh Type Default Property Resulting Size at Scale = 1
SphereMesh radius = 0.5 1 unit diameter

My Question to Copilot ?

Does the radius measurement above refer to centimeters ?

Copilot answer :-

Short answer: No — the radius does not refer to centimeters.

In Godot, all 3D measurements are in generic “engine units,” not real‑world units. By default:

1 Godot unit = 1 meter (this is the convention used by physics, navigation, and most assets)

A SphereMesh with radius = 0.5 therefore has:

Radius = 0.5 meters

Diameter = 1 meter

Nothing in Godot automatically converts units to centimeters, inches, or any other real‑world measurement. If you want centimeters, you must define that convention yourself (e.g., treat 0.01 units as 1 cm).

My Question to Copilot ?

Will Godot Engine performance drop if objects are scaled around the 1 meter ball perspectively?

Copilot answer :-

Short version: No — if every object in your game is scaled consistently around a 1‑meter ball, physics performance will not be negatively affected.
In fact, you’ll be operating in the range where Godot’s physics engine is most stable and efficient.

Let’s break down why this matters.

:gear: Godot’s physics engine has a “sweet spot”

Godot (both 3D and 2D) is tuned for real‑world‑ish scales, meaning:

  • 1 unit ≈ 1 meter
  • Objects typically between 0.1 m and 10 m behave most reliably
  • Colliders, inertia, and gravity calculations are optimized for this range

A 1‑meter sphere sits right in the ideal zone.

ߧ What actually affects physics performance?

Performance depends on:

  • Number of bodies
  • Number of collisions per frame
  • Complexity of shapes
  • Continuous collision detection (CCD)
  • Solver iterations

Object size only affects performance when it becomes extreme, such as:

  • Very tiny objects (1 cm or smaller)
    • Harder to detect collisions
    • More tunneling
    • Requires CCD → more CPU cost
  • Very large objects (100 m or more)
    • Floating‑point precision issues
    • Broadphase collision grid becomes less efficient

But if everything is scaled around a 1‑meter ball, you avoid both extremes.

ߧ So what happens if all objects are scaled relative to the 1‑meter ball?

You get:

  • Stable collisions
  • Predictable mass and inertia
  • No tunneling issues
  • No need for high‑cost CCD
  • No floating‑point precision problems
  • No unusual solver strain

In other words, optimal performance.

ߧ Why this works

Physics engines don’t care about “meters” or “centimeters” — they care about numerical ranges.

When all objects are sized consistently:

  • Collision shapes overlap predictably
  • The broadphase can efficiently partition space
  • The solver doesn’t need extreme values
  • Forces and impulses stay within stable ranges

This keeps the simulation fast and accurate.

ߎ Copilot Final answer

If all objects are sized relative to a 1‑meter sphere, your physics engine will run efficiently and behave exactly as expected.
You’re using the scale Godot is designed for.

My comment :-

My ball diameter size is approx 1 meter which appears to be in its optimal state!
I,m glad i did not scale the table mesh objects down, another serindipidy moment during the experimental build period.

ok, that explains why yo don’t get any physics or shadow issues.
But be aware, your physics will look slower with a 1m ball than with a 1cm ball. The physics is way happier with the 1m ball, but it’s not an accurate real motion. To simulate a real pinball in that dimension you would have to rise the gravity and/or speed up the physics.
If it looks good to you, that’s fine and you should keep it, but it’s not an accurate physics simulation as in a real pinball game.
I didn’t mean to confuse you., It was just my curiosity. You are on a good track.

1 Like

Godot v4.6. Kick the Table Pottery Pinball 175 amendments/Upgrade

1.Deleted unused MeshInstance3D from spinner.
2.Modified the ball jam animation in plunger_stick.gd. (a smoother look) (Bug fix)
3.In Flipper scripts changed SoundManager to SoundManager_. (bug fix)
4.Deleted Ridgidbody from sauce & spice mesh models. Spinner area ball collider interference bug fix.
5.Ballsaver spindisk speed reduced with new animations added. (ball gobble bug fix)
6.Deleted Ridgidbody from fruit collection that randomizes the fruit positions on the main playfied. (bug fix)
7.Increased the left & right tilt movement distance. (bug fix)
8.Added sound to the meat, sauce & spice target hit event. (bug fix)
9.Start Game Press Enter Keyboard Hint Introduced + yellow colour values changed to 255.
10.In players_Manager.gd script introduced @export var input_action_Start_Game: String. (Hint key will automatically be updates during keyboard key input updates)

Please enjoy & use what you can from it.

Dropbox link &
Updated Video below

  • upgrade jobs to be done
  1. when in view1 put a hint text to show that No1 key is the main table view, No2 key is the rear table view & No3 key is the plunger view. (preps for the under playfield view intruduction)
  2. In light attract.gd script preserve the in game light visible=true events for the func Check_which_light_was_True().
  3. Run a randomizer for the LightAttract_Mod that is run by func Ready() & EndofGame().
  4. Multiball, Loop circuit & magnaball to be introduced.
  5. Underground Table to be formulated/designed.
  6. liquefy the fruit images when hit with animation or shaders.
  7. On the fly load shader into material slot script to be introduced using the Dot_Matrix_v2 & Dot_Matrix_monochrome_v1
  8. Check for bugs.
  9. Impliment some of the tween guide examples.
  10. Continue to improve on the score Theme enabling objectives.
  11. Introduce Ball 1 & 2 quantity highscore board using short array sort code method.
  12. Introduce Bumper/drop Targets & fruit collection highscore board.
  13. Add Hud display dictionary randomizer

In Project Setting / Physics 3D under default gravity vector I have increased the ‘z’ value to 0.45 & in PlungerGate_Addforce.gd script increased the force value to = 480.
The new above values simulates a slighly heavier ball.
Tha above changes will be in the next upgrade.

If wanting a heavier or lighter ball roll simulation you will need to change the values in Project Setting again. Do not forget to re-adjust the addforce/thrust values in PlungerGate_Addforce, Left/RightFlipper & Ball1 mouse & keyboard controler.gd scripts to reflect the default gravity vector change.

Happy coding :slight_smile:

1 Like

Love all the updates and level of detail you’re providing here. Very encouraging. Game looks very cool too.

1 Like
  • Godot v4.7. Kick the Table Pottery Pinball 1 - amendments/Upgrade
  1. Saved with Godot v4.7 + uploaded a new v4.7 appdata backup. .
  2. In Project Setting / Physics 3D under default gravity vector I have increased the ‘z’ value to 0.45
  3. In PlungerGate_Addforce.gd script increased the force value to = 470.
    The new above values simulates a slighly heavier ball.
    If wanting a heavier or lighter ball roll simulation you will need to change the values in Project Setting again.
    Do not forget to re-adjust the addforce/thrust values in PlungerGate_Addforce, Left/RightFlipper & Ball1 mouse & keyboard
    controler.gd scripts to reflect the default gravity vector change.
  4. Deleted Sprite_flipbook file Fruit_Timer_20.png.import so that it would regenerate a new UID (UID Godot v4.7 bug duplication console error bug fix)
  5. Repositioned offset main gobbler. (bug fix)
  6. Deleted unused scripts.
  7. Playfield Fruit_Collection fruit Tgts now running shader animation.
  8. Materials,Physics & Image files now have there own folders -(bug fix). (job to be done merge the physics folders)
  9. In Hud_1.gd script under func save_Hud1_View() changed the statement ‘if Camera_Load_View==2:save_Hud1_View3’ to ‘save_Hud1_View2()’ (bug fix).
  10. Dmd,Hud & View Hints now hinting when in main, plunger & rear view during save load periods - (bug fix). (job to be done ‘apply mouse centre script’ for key1/2/3 selection events)
  11. Added new information to the screen load save hint events with some upgrade improvements & (bug fixes).
  12. Ball1/2/3 with a new shader animation which is activated when ball enters the wire ramp.
  13. Retro Sun shader added to the Ball Saver guard that sits between the main flippers.
  • upgrade jobs to be done
  1. In light attract.gd script preserve the in game light visible=true events for the func Check_which_light_was_True().
  2. Run a randomizer for the LightAttract_Mod that is run by func Ready() & EndofGame().
  3. Multiball, Loop circuit & magnaball to be introduced.
  4. Underground Table to be formulated/designed with camera view feature.
  5. Check for bugs.
  6. Impliment some of the tween guide examples.
  7. Continue to improve on Table design, Dmd & Hud animations plus score Theme enabling objectives.
  8. Introduce Ball 1 & 2 quantity highscore board using short array sort code method.
  9. Introduce Bumper/drop Targets & fruit collection highscore board.
  10. Add Hud display dictionary randomizer

Dropbox link &
Updated Video below

1 Like
  • Godot v4.7. Kick the Table Pottery Pinball 2 - amendments/Upgrade
  1. Glass shader added to the glass Hud mesh.
  2. Aurora_Borialis shader now running with Playfield Fruit Tgts.
  3. 3D_Fractal_Pyramid shader now running with fruit award light indicators using load shader on the fly into the Sprite material_overlay slot.
  4. Shader mesh Test bug comments added to Test_shader_Load & apple_shader_test_with_one_uv_slot .gd scripts.
  5. In the fruit collection score labels adjusted the property editors sorting offset to 10. (forces it to draw on top of other visuals) (bug fix)
  6. Mouse_Pickup_Ball1 script now lowers the Peapod apron mesh, Plunger gate mesh & the forcfeild that is attached to the plunger stick. (bug fix)
  7. In the Fruit_Meat_Veg.gd script added the missing ‘var steaki=false’ which will now allow the steak collision shape to function. (bug fix)
  8. During the next upgrade must queue the meat,fruit & veg hit events using the ‘pop’ array method to rid of the ‘quick successive’ hit tgt bugs.
  • upgrade jobs to be done
  1. In light attract.gd script preserve the in game light visible=true events for the func Check_which_light_was_True().
  2. Run a randomizer for the LightAttract_Mod that is run by func Ready() & EndofGame().
  3. Multiball, Loop circuit & magnaball to be introduced.
  4. Underground Table to be formulated/designed with camera view feature.
  5. Check for bugs.
  6. Impliment some of the tween guide examples.
  7. Continue to improve on Table design, Dmd & Hud animations plus score Theme enabling objectives.
  8. Introduce Ball 1 & 2 quantity highscore board using short array sort code method.
  9. Introduce Bumper/drop Targets & fruit collection highscore board.
  10. Add Hud display dictionary randomizer
  11. Shader selection for magnaball
  12. Slingshot mechanism to be added to the ball saver guard.
  13. Centre mouse when selecting kepad key 1/2/3 during screen setup periods
  14. During the next upgrade must queue the meat,fruit & veg hit events to rid of the quick successive hit bugs.

Please enjoy & use what you can from it.

Dropbox link above &
Updated Video below

1 Like