Code/Example Tutorial FizX Lite FizX 3.0 Lite Edition - A Simple Way to Add Physics to a Future Pinball Table (Novices Included)

Coding and examples for future Pinball and BAM
I only noticed that when the slope or if the mass gravity, playfield arent even close to where they need to be and it usually corrects itself once you get it all worked out. That does not mean the physics such as scatter, ball speed etc are going to be correct. Mass will change everything, you can get a whole different play with a single setting, i have 2 tables im having a issue with kickers unless i go out of the range its supposed to stay in.
the t=rex kicker top of table in jurassic park and the right curl kicker in tales from the crypt. if I make it work the gravity is way way to low/ both these tables original settings were 9 to 7.2 slope.
I finally caved on tales from the crypt, may go back to it later, and I havent tried much with jurassic park yet.
 
Follow the actual "written" AIO Example Tutorial, and do it in order (video tutorial is a reference example, only, but always out of date). Then you won't have problems. Trying to skip this and that, and taking shortcuts, or only copying the bits you think you want is not how these AIO Example tables and tutorials are designed to be used.

For the AIO Example table, It takes "minutes", to do a copy and paste of the AIO Code, Add a Timer, add a HUD DMD, add the models, add the sounds, add the textures.... etc. The only thing that takes extra time is adding rubber diverters, sling diverters, Bumpers, etc. Drop target walls are optional. Sling and rubber updates are not optional.

The AIO Example does not... I repeat... does NOT require you to do anything related to DOF, PUP, or PinMechSound. Those are "optional"... but the code used with PinMachSound is self-contained and complete that covers everyone's setup, if you take the extra time to add it to table events. You also get the benefit of Fleep sound for everything. Ball Rolling code works automatically for most tables. I just added it to a table with captive balls on the table... and it just worked (even though there are 3 other balls always on the table).... including before and after each multiball, etc. (this table previously have smoke ball rolling, which I removed)

FizX Lite is for the bare bones of FizX and Flippers. Not much more. It's meant for people who don't want to put in the effort to update a table completely, and it will get them by with the bare minimum.

Trying to add this and that to FizX Lite.... you are wasting time. If you want more than what the FizX Lite example has.... then do things the right way, and use the AIO Example code and follow its tutorial, and have a completely updated table done properly, without issues. I've added it to many tables already.... and have had no problems.

I find setting up the bumpers and diverters take the most time, and I fail to appreciate the difference in the behavior.

I just prefer a minimalist approach, where features can be implemented table by table. My priorities are flipper physics and sound.
 
I only noticed that when the slope or if the mass gravity, playfield arent even close to where they need to be and it usually corrects itself once you get it all worked out. That does not mean the physics such as scatter, ball speed etc are going to be correct. Mass will change everything, you can get a whole different play with a single setting, i have 2 tables im having a issue with kickers unless i go out of the range its supposed to stay in.
the t=rex kicker top of table in jurassic park and the right curl kicker in tales from the crypt. if I make it work the gravity is way way to low/ both these tables original settings were 9 to 7.2 slope.
I finally caved on tales from the crypt, may go back to it later, and I havent tried much with jurassic park yet.

For FizX physics XML, I wouldn't go above 5.3-5.7 (which seems to equal about 7-8 degrees or so in the real world). Even 4.7 slope is fairly fast. Popotte's Wizard has a slope of 4, but it's still relatively brutal, because there is alot of side-to-side motion of the ball and outlane drains that are difficult to recover from.

A good slope angle should balance downward ball movement with side to side. If they are all headed for the center drain, usually the slope is too high. This is especially true on electromechanical and early solid state machines.
 
i didnt think we were supposed to, its all in a series of events.

Maybe one of you guys could write what can be changed and what cannot.
Materials? default material, metal, wood?
I remember reading , but a list of do's and do not's would be helpful for a lot of people, including myself.

I'm nearly sure everything is written in the AIO table comments. If it is not there, DON'T change it. Especially if it affects general physics and/or objects that FizX takes care of.
That being said, nothing is ever tested 100% and you know you can change some strength settings to accommodate for old tables way design methods, like strengths for kickers.

@FireDragon76
XML slope has no effect. It is read from the GUI setting. There is a way but it needs PhysicsXML to set it up and be loaded AFTER the table is loaded and ready to play. And you have to duplicate exactly the full XML for just 1 option... not worth it.
 
I'm nearly sure everything is written in the AIO table comments. If it is not there, DON'T change it. Especially if it affects general physics and/or objects that FizX takes care of.
That being said, nothing is ever tested 100% and you know you can change some strength settings to accommodate for old tables way design methods, like strengths for kickers.

@FireDragon76
XML slope has no effect. It is read from the GUI setting. There is a way but it needs PhysicsXML to set it up and be loaded AFTER the table is loaded and ready to play. And you have to duplicate exactly the full XML for just 1 option... not worth it.
Its bit vague... just IMO
and I mostly watched and applied, I noticed some things different in reading and also in the discussion from back in 2022
But If Im uncertain about what I interpret I ask for clarification, I mean , isnt that what the forum if for ?

thanks,
 
Sure is. When in doubt, ask about :D
 
The FizX Lite Edition has been updated to version 3.0 which has stronger flippers. This version adds sound for ball hits to rubber objects which was not present in version 2.0.

The directions were changed to make it easier to add the new code to the script. Instead of having to open the target table and the Example table side by side to copy the script from one to the other, now you just copy all the code from a text file and paste it into the script.

JLou changed the default values for Table_Slope, PlayField_Friction, and the HitSpeed in the "Auto_Generated Sound Hit Script" which are different from the FizX 3.0 AIO.

See the list of all changes at the bottom of the tutorial.

To update an existing table with FizX 2.0, delete all the code from the first occurrence of "FizX Lite Edition Start" in the script down to "FizX Lite Edition End". This is the section of code that contains all the user-adjustable parameters. Insert in its place all the code from the file, "FizX 3.0 Lite Edition 1.txt". The code that is in the other text files is for the slingshots which has not changed from FizX 2.0. You will also need to add the files from folder "3" of "Fleep Audio Files" to the sound manager of your target table.
 
Last edited:
GeorgeH,

I'm taking my first dive into FizX Lite on MartinB's All-Star Basketball.

One thing I noticed in your original post. On the FlipperNudge instructions you used LF_flippernudge for both right and left flippers. The example table has RF_ for rightflipper. Perhaps a cut and paste error?

Thanks for providing this. I'll let you know how I get along.

Take care,
Brent
 
GeorgeH,

I'm taking my first dive into FizX Lite on MartinB's All-Star Basketball.

One thing I noticed in your original post. On the FlipperNudge instructions you used LF_flippernudge for both right and left flippers. The example table has RF_ for rightflipper. Perhaps a cut and paste error?

Thanks for providing this. I'll let you know how I get along.

Take care,
Brent

You are correct. I changed it.
 
Using the excellent tutorial I was able to add FizX Lite 3.0 to All-Star Basketball more easily than expected. It took me a couple hours but I think 45 minutes is pretty realistic after doing it once or twice.

Several things improved but I still have some issues to overcome.
1) The gate at the top of the shooter lane will still occasionally trap the ball. I started with the default settings and tried several changes with no significant improvement. Some balls go through perfectly, others are slowed, stopped or ricochet back down the lane.

2) The two slingshots at the bottom on All-Star Basketball are really long. Is it possible to get diverter models that are 75, 80 and 85?

3) The two slingshots are nearly dead. I've increased the Omega from 37.0 by stages up to 50k. It still barely moves the ball up the table and within an inch of the post there is almost no rebound.

Thanks again for making this available. If I can get this sorted I may try to do the full version so I could experience it with SSF on the pincab.

Take care,
Brent
 
1) The gate at the top of the shooter lane will still occasionally trap the ball. I started with the default settings and tried several changes with no significant improvement. Some balls go through perfectly, others are slowed, stopped or ricochet back down the lane.

Gates can be problematic. There are times when the ball doesn't want to go through a gate even in the correct direction. Try reducing the mass and gravity in the XML and see if that fixes it. I have found moving the gate around a bit can help sometimes. If that doesn't work, try working through Wecoc's method described here:


2) The two slingshots at the bottom on All-Star Basketball are really long. Is it possible to get diverter models that are 75, 80 and 85?

I attached all the models that JJou created. I looked at the All-Star Basketball table and it looks like it really doesn't have a true slingshot. You might move the diverters and the associated script to the 2 triangular shapes below the flippers. I don't have much experience with early tables so this is a bit of an educated guess.

3) The two slingshots are nearly dead. I've increased the Omega from 37.0 by stages up to 50k. It still barely moves the ball up the table and within an inch of the post there is almost no rebound.

If you added the slingshot code to the rubber bands on both sides of the drain, you should remove it. The code deactivates the normal action of the sling and the diverters take their place. If the diverters are too small, you don't want to use the script. It won't work unless you have both the diverters and the code. You can't have one without the other.

If that doesn't fix it, then you may want to follow the guide in the AIO on how to add the modification to rubber bands. It will require you to replace the main code from the first text file with the main code from the AIO but it should continue to work as it did:

 
Last edited:
GeorgeH,

Thanks for the helpful reply. I'll give your suggestions a try and let you know how it turns out.

Concerning the gates I'll try to figure out the Wecoc's method. I did as you suggested in another thread reducing the mass, gravity and damping in stages until I got to these very low settings but it seemed to have no effect.
<gate mass="0.001" gravity="10.0" damping=".01"></gate>

On All-Star Basketball the long rubbers on the bottom of either side of the drain are the only slingshots on the table. They work just like a modern slingshot with two sensor switches and a kicker mechanism. This is why I was surprised the diverters didn't work on them. Other than them being longer than modern slings there is no difference in form or function. You can see them in use in this video. They are one of the central elements of the deck.

Honestly the original slingshots MartinB used would be fine if you could make them less powerful toward the posts. As they are it will fire the ball an equal distance if you hit the center of the rubber or an inch form the post, which is a little too generous to the player.

Thanks for the reminder that I need to remove the diverter script. I saved a version of the table without the diverters but forgot to remove the associated script. I got just the result you predict. ;)

I'll start doing my homework on the AIO as eventually I'm going to want SSF too. Once you've experienced it going back is tough.

The Lite is an awesome shortcut I'm very happy you provided it. If only the slingshot conversion would work out. I'll going to try applying Lite to another 50's table with shorter slingshots to see if I can make the diverters work.

Take care,
Brent
 
GeorgeH's comments got me to look a little deeper. The FizX XML code I pasted into the script contained <slingshot impulse="0". I bumped it to 100, not impressive, then to "1000" which broke a hole in the backglass, and am now tinkering in the 400 range. Extremely satisfying and having the code allows very granular adjustment of slingshots, bumpers, plunger and nudge. Plus I learned something so that is a win/win.

Can anyone confirm that increasing the impulseRandomness and vectorRandomness values will vary the vector of the ball coming off of the associated table element? That would be cool as having a bumper or sling that is too consistent doesn't feel right. I don't want it to be too easy to nudge into the kicker hole for instance.

Take care,
Brent
 
Honestly the original slingshots MartinB used would be fine if you could make them less powerful toward the posts. As they are it will fire the ball an equal distance if you hit the center of the rubber or an inch form the post, which is a little too generous to the player.

Try right-clicking on the rubber of the band and selecting unlock. There may be a shape point at the center of the front of the rubber band that has the leaf attached. If it is there, don't change it. Instead, try moving the shape points that are located just to the left and right of the center of the front so they are closer to the center. Experiment with different locations until you are satisfied.

I'll start doing my homework on the AIO as eventually I'm going to want SSF too. Once you've experienced it going back is tough.

You will need to add a timer named "BallRolling_Update_Timer" and a DMD named "FizXDmd". Otherwise, all you need to do is replace the code that you added from the first text file with the code from the AOI. Start copying code from the AOI at "COPY ALL CODE TO ANOTHER TABLE - START HERE!" and stop copying after "AIO EXAMPLE TABLE - CODE - END". Then you will need to replace all the lines that start with "RubberBandType" with the code you need for the 2 rubber bands.

The Lite is an awesome shortcut I'm very happy you provided it. If only the slingshot conversion would work out. I'll going to try applying Lite to another 50's table with shorter slingshots to see if I can make the diverters work.

Thanks. I wrote it mainly so that noobs can get started. I could revise the write-up to use the exact same code that I told you to copy from the AOI above but I don't think the FizX people want me to do that. They want the whole Lite version to go away with the next version of FizX.
 
GeorgeH,

I hope you saw my post #63 above. With the change to "<slingshot impulse" the slingshots are now working well.
 
GeorgeH,

I hope you saw my post #63 above. With the change to "<slingshot impulse" the slingshots are now working well.
I had slingshot problems with nightmare on elmstreet, its mostly about the peak of the shot ans where you place the diverters, trial and orror many many times. Also , yes the impulse in the xm,l will also help, you can adjust the variation also by adjusting the shape point markers on the slingshot rubber.
 
As a test I changed the values to vectorRandomness=5 for slingshots, bumpers and kicker. Now there is no unrealistic repeat pattern when playing the table. Before I could let the ball play itself and it would land in the kickout hole at least three times in a row. Now without player input that is very unlikely. I'll try dialing each down a little to see the result. The granularity of adjustments to table elements is a major benefit.

Take care,
Brent
 
Thanks. I wrote it mainly so that noobs can get started. I could revise the write-up to use the exact same code that I told you to copy from the AOI above but I don't think the FizX people want me to do that. They want the whole Lite version to go away with the next version of FizX.
You can update your topic but by using the whole code of AIO. Like i said, i don't want different version of the code wich we won't support.
But if you won't use Full FizX feature after C&P the code from AIO and insert FizX 3D Model, just use FizX-Lite tag on your table name.

You can call you table FizX only if you use all FizX Feature.. Otherwise, call your table as FizX-Lite
 
@HZR @bcarter1234

I hope this, not cause any problems...but if i may suggest....this is another way HERE maybe it could help.
If you want more information, you are welcome.
Note and please....but I kindly ask you to expose not in this thread,but in mine,thanks.
 
Last edited:
You can update your topic but by using the whole code of AIO. Like i said, i don't want different version of the code wich we won't support.
But if you won't use Full FizX feature after C&P the code from AIO and insert FizX 3D Model, just use FizX-Lite tag on your table name.

You can call you table FizX only if you use all FizX Feature.. Otherwise, call your table as FizX-Lite

The code in the Lite version works as is. I don't see it being worth spending anymore time on it since you said FizX-Lite won't be updated in the next version of FizX.

However, anyone who wants to use all the code of the AOI, it will work. As I mentioned above, you will need to add a timer named "BallRolling_Update_Timer" and a DMD named "FizXDmd". Instead of using code from the file "FizX 3.0 Lite Edition 1.txt" in the Lite download, you can use the code from the AOI. Start copying code from the AOI at "COPY ALL CODE TO ANOTHER TABLE - START HERE!" and stop copying after "AIO EXAMPLE TABLE - CODE - END". Then I would recommend deleting all the lines in the script beginning with "RubberBandType" since they are not used (though it will work without doing this). Of course, you still need to call it a Lite version unless you add everything that is in the full version.

An advantage of using the code from the AOI is you can use the ball rolling code which now has the ability to use different sounds on the ramps if you place the triggers in the correct locations like they are in the AIO example table and add the sounds to the music manager.
 
And if you don't want ball rolling sound, ... you have just to set some value to Falses (OK, you have to read (and understand) the code).
 
Last edited:
And if you don't want ball rolling sound, ... you have just to set some value to False (OK, you have to read (and understand) the code).

True. You probably need to set the following to false unless you plan to use the identified option:

BallRolling_Sound_Enabled = true
DOF_enabled = true
PUP_SSF_enabled = true

The ball rolling sound for ramps default to plastic sound. I couldn't find any directions but you need to replace "BallRolling_PlasticRamp" in the subs "TriggerLaunchRamp_Hit" and "TriggerRamp_Hit" with "BallRolling_WireRamp" or "BallRolling_Wood" if you want to switch the ramp sounds.
 
I have revised the FizX 3.0 Lite Edition guide and the zipped attachment to offer a choice between using the full FizX code from the All-In-One (AIO) example table or the original FizX 3.0 Lite code previously posted. The AIO code version is identical to the version posted elsewhere but includes the latest version of the FizX tweaker. The new FizX tweaker can save changes to parameters while playing the game. There is no need to save values to the script. Another advantage is the tweaker only uses one save location leaving others free for the table developer to use. If you choose to use the AIO code version, you can easily upgrade to the full FizX version from FizX Lite without needing to replace any of the FizX code because it is fully compatible with the full version of FizX. I have published two FizX Lite tables that use the AIO version with the new tweaker so you can try it to see if you like it:

Road Runner 1.03

The Hungry Dead 1.4
 
Last edited:
I was wondering about the ramp sounds....
I couldnt seem to get hte right sound even changing the code to match the default names of the triggers or vice versa
I get sidetracked and forget wha the heck im doing A LOT
 
I was wondering about the ramp sounds....
I couldnt seem to get hte right sound even changing the code to match the default names of the triggers or vice versa
I get sidetracked and forget wha the heck im doing A LOT

One thing about implementing FizX Lite by the new method is you can progress to the point where your skills end and stop. I wrote the directions that way. It should be pretty easy to add the code and a DMD and call it done (Options 1 and 2). I don't think it would be any more difficult than adding FizX Lite with the original code and you will have the new tweaker using the new method. Then you can work your way up to adding ramp sound. I managed to add sound to the ramps on "Road Runner" which has a pretty complicated system of ramps. I had to use the few coding skills I have but I am no expert so I think it is doable by many folks. There are lots of tables that don't have ramps like "The Hungry Dead".

I didn't add this to the directions but you might want to save versions of your table at different stopping points. If you get in over your head, you can always drop back to the earlier version and finish it without ramps or whatever problem area you are having. It is also a good idea to turn on the option in FP that automatically saves backups of the table every time you save.
 
General chit-chat
Help Users
You can interact with the ChatGPT Bot in any Chat Room and there is a dedicated room. The command is /ai followed by a space and then your ? or inquiry.
ie: /ai What is a EM Pinball Machine?
  • No one is chatting at the moment.
  • Chat Bot Mibs Chat Bot Mibs:
    apollo2000 has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Gmelo1 has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    jose49 has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    darcel has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    cocopops has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Nightvoice has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    drew1 has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Cicero Silva has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    manstein has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    1000 has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Destruck62 has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    WeadlyDeapon has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    SaixXemnas has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Gege has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Fatmeatball has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    titomajo has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    daveseawater has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    rockin ray has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Citron68 has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    hammerpower has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    max37170 has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    OZZOLO has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    GG974 has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    MSev has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    sghure has left the room.
      Chat Bot Mibs Chat Bot Mibs: sghure has left the room.
      Back
      Top