Tutorial Physics/XML "XML" Arguments and Explanations

@ravarcade

this is the standard xml of fp.....which I generate with bam shift + Ctrl + C....
it has been discussed in recent days that many parameters of this xml are wrong or in any case do not work well, even that some parameters are not understood, compared to what is in Physics Tweaks in the bam menu ...

and as I said above if you change for example mass and gravity, other objects do not work well, the mass of the other objects is somehow incorrect.

EDIT:
for sure I will not be the right man to explain certain things, popotte or george would be more suitable than me, I just know that I started all this to get explanations of how xml works, and what needs to be done to improve the physics of a table, and then it turns out that in xml there are things or parameters that are not quite exact of what one expects ..... now if we only have to think about fixing only the spinner, I remain very sad .... my idea was to have a xml suitable with parameters that are useful and use for all tables


'=============================== PHYSICS XML ===========================
'<?xml version="1.0" encoding="utf-8"?>
'<document>
' <physics slope="6" fps="256" threaded="0"></physics>
' <ball newtonDamping="0" mass="18" gravity="4000" damping="0.25"></ball>
' <flipper rotationSpeedChart="{0.0,100.0}[0.0,100.0]" newtonDamping="1" releaseOmega="18" mass="20000" omega="33" moeMethod="0"
' leftXoff="0" leftYoff="0" leftZoff="0"
' rightXoff="0" rightYoff="0" rightZoff="0"></flipper>
' <bumper impulse="85.0" impulseRandomness="10" vectorRandomness="6"></bumper>
' <autoplunger mass="20000.0" force="60000.0"></autoplunger>
' <diverter mass="10000.0" omega="33.0"></diverter>
' <gate mass="2.0" gravity="4500.0" damping="0.25"></gate>
' <kicker impulse="800.0" vukImpulse="1300.0" impulseRandomness="4" vectorRandomness="1"></kicker>
' <plunger mass="20000.0" force="30000.0"></plunger>
' <slingshot impulse="480.0" impulseRandomness="15" vectorRandomness="10"></slingshot>
' <spindisk mass="10000.0" angularDamp="0.33" linearDamp="0.25"></spindisk>
' <spinner mass="45.0" gravity="100.0" angularDamp="0.5" angularAccel="5.0"
' spinDampLoose="0.325" spinBackLoose="2.850"
' spinDampNorm="0.575" spinBackNorm="3.250"
' spinDampTight="0.750" spinBackTight="3.500"></spinner>
' <emkicker mass="10000.0" omega="80.0"></emkicker>
' <varitarget mass="100.0" damping="0.5" tension="3.0" return="15.0"></varitarget>
' <magnet impulse="10.0" impulseRandomness="2"></magnet>
' <nudge impulse="100.0" impulseRandomness="25.0" warningLevel="160" leftAngle="65" upAngle="0.0" rightAngle="295"
' vectorRandomness="4" visualDistance="2" waitPeriod="300" maxBallVelocity="1000.0"></nudge>
' <defaultMat softnessCoef="0.02" elasticCoef="0.1" staticFriction="0.01" kineticFriction="0.02"></defaultMat>
' <playfieldMat softnessCoef="0.03" elasticCoef="0.2" staticFriction="0.01" kineticFriction="0.02"></playfieldMat>
' <metalMat softnessCoef="0.01" elasticCoef="0.05" staticFriction="0.01" kineticFriction="0.02"></metalMat>
' <woodMat softnessCoef="0.03" elasticCoef="0.2" staticFriction="0.01" kineticFriction="0.02"></woodMat>
' <plasticMat softnessCoef="0.02" elasticCoef="0.25" staticFriction="0.01" kineticFriction="0.02"></plasticMat>
' <rubberHardMat softnessCoef="0.04" elasticCoef="0.4" staticFriction="0.01" kineticFriction="0.02"></rubberHardMat>
' <rubberIntMat softnessCoef="0.05" elasticCoef="0.5" staticFriction="0.01" kineticFriction="0.02"></rubberIntMat>
' <rubberSoftMat softnessCoef="0.06" elasticCoef="0.6" staticFriction="0.01" kineticFriction="0.02"></rubberSoftMat>
' <gateMat softnessCoef="0.05" elasticCoef="0.66" staticFriction="0" kineticFriction="0"></gateMat>
' <kickerMat softnessCoef="0.01" elasticCoef="0.05" staticFriction="0.8" kineticFriction="0.8"></kickerMat>
' <rampMat softnessCoef="0.01" elasticCoef="0.05" staticFriction="0.01" kineticFriction="0.02"></rampMat>
' <plungerMat softnessCoef="0.04" elasticCoef="0.4" staticFriction="0.01" kineticFriction="0.02"></plungerMat>
' <spindiskMat softnessCoef="0.05" elasticCoef="0.5" staticFriction="2" kineticFriction="2"></spindiskMat>
'</document>
'=============================== PHYSICS XML ===========================
 
Last edited:
Ok, now I think it's time to talk about something else,not of mass or gravity....but of the other two parameters that make up this second line of the xml..
' <ball newtonDamping="0" mass="18" gravity="4000" damping="0.25"></ball>

I did some tests on DK, changing the values, after Anonet's explanation, of what they can be and do, (I can't find her where she is) ...it seems that somehow by adjusting the values you can to dispel the accumulated force or speed of the ball, thus slowing it down at its apex, if I remember correctly.

but if you have other suggestions they are are welcome.
 
Rafal added newtonDamping to a later version of BAM. I always set it to 0 because it is extremely strong and I use damping instead. I think of damping like dampening. It tends to dampen the effects of the ball or you can think of it like AnonTet said. If you set it too high, the ball will not spin at all and will just slide around the table. You need to use a custom ball when making adjustments that has a pattern like the soccer ball to make sure the ball spins.
 
You need to use a custom ball when making adjustments that has a pattern like the soccer ball to make sure the ball spins.
And not spin too much.
 
Yes....with a custom ball, the damping is more evident, the more you increase it the more the ball does not spin, but I had the feeling that by changing the value, you get a benefit.....the ball seems more stable, if that's the right term.

instead this is more effective, if you put it plus 0.002, the ball nails like concrete, but at that value it helps to dissipate too much force and speed, caused by the high configuration of the omega in the fins,if then it is added up with the one in editor of Fp.

if we tend to increase the omega to try to hit the targets or ramps positioned in the top playfield, this has a side effect in the ball, that when you hit a peg or a rubber, in the lower part of the playfield, you see that the ball splashes from all sides....then to prevent the ball from reaching too high a speed, I use xBAM.BallSpeedLimit = xxxx 1500/3500

this is the configuration I have perfected for DK

<ball newtonDamping="0.002" damping="2"></ball>
 
1. Bumper1.Impulse = Kicker1.Impulse =...
Nope, it will not work. Maybe i will find way to chage strength slider from script.
@ravarcade

is it possible to put the kicker force in script too? because even if I increase the force that is in the editor (see photo) it is not enough to kick the ball in certain situations, if "we" change the mass and gravity values in the ball

Cattura55.JPG
 
Last edited:
As far as I know, please correct me here, the ball should "slide" when propelled with enough force up to the point it starts spinning. The ball is not always spinning or sliding (or even jumping which happens a lot in real tables).
 
Yes....with a custom ball, the damping is more evident, the more you increase it the more the ball does not spin, but I had the feeling that by changing the value, you get a benefit.....the ball seems more stable, if that's the right term.

instead this is more effective, if you put it plus 0.002, the ball nails like concrete, but at that value it helps to dissipate too much force and speed, caused by the high configuration of the omega in the fins,if then it is added up with the one in editor of Fp.

if we tend to increase the omega to try to hit the targets or ramps positioned in the top playfield, this has a side effect in the ball, that when you hit a peg or a rubber, in the lower part of the playfield, you see that the ball splashes from all sides....then to prevent the ball from reaching too high a speed, I use xBAM.BallSpeedLimit = xxxx 1500/3500

this is the configuration I have perfected for DK

<ball newtonDamping="0.002" damping="2"></ball>
I tried your values on Twilight Zone and didn't get enough spin. I should mention that damping is also affected by mass and gravity though perhaps to a lesser extent than mass and gravity are to each other. ...So your mass and gravity are probably different from mine. These values seemed to work:

<ball newtonDamping="0.001" mass="81.5" gravity="7200" damping="1.2"></ball>

Normally a value of 1.2 on the damping makes the ball not spin at all. This seems to be countered by newtonDamping somehow. ...And I do agree with AnonTet that the ball should slide a bit but still spin after the initial force is over..
 
Last edited:
Just to make sure, when you guys write spin is on the ball axis or do you mean ball rolling? I used spinning above but meant rolling (just remembered the word while reading the above post). One of those doubts created by language barrier :)

/edit
got lost in semantics I almost forgot I wanted to ask if you think it's beneficial using both?
 
Just to make sure, when you guys write spin is on the ball axis or do you mean ball rolling? I used spinning above but meant rolling (just remembered the word while reading the above post). One of those doubts created by language barrier :)

/edit
got lost in semantics I almost forgot I wanted to ask if you think it's beneficial using both?
I guess there is a difference. The ball will spin sometimes in a different direction than its trajectory when it hits an object. It will often slide a bit when you hit it with a flipper. I guess at lower speeds the ball should roll. At higher speeds, the ball may spin in a different direction when it hits an object. That seems right anyway.

I haven't used a light ball in years but I am thinking it will roll more than a heavy ball.

I would say you should probably have some roll and some spin. If you set damping way too high, you don't get spin or roll. And as JP says, you shouldn't have too much spin either.
 
this is my mass and gravity, much less....but you have to consider how fast and hard you hit the ball with your fins

' <ball newtonDamping="0.002" mass="20" gravity="5000" damping="2"></ball>
 
@ravarcade

is it possible to put the kicker force in script too? because even if I increase the force that is in the editor (see photo) it is not enough to kick the ball in certain situations, if you change the mass and gravity values in the ball


View attachment 19373
You can use .SetVelocity.
 
this is my mass and gravity, much less....but you have to consider how fast and hard you hit the ball with your fins

' <ball newtonDamping="0.002" mass="20" gravity="5000" damping="2"></ball>
I tried your settings and the ball slides around too much. Like JP said earlier, all the settings in the XML affect each other so there must be something else in your XML that is different from mine.
 
@GeorgeH @wild
The playfieldMAT and / or woodMat are probably the culprits of said difference namely the friction values
 
You can use .SetVelocity.
Gimli , made a code using SetVelocity, called it boost .....but it is difficult to explain the whole fact

let's say you create a "sub" with the magical "NewtonPhysicsTick" code

then I create timers, with SetVelocity,BallTrajectory,....and ball.speed which adjusts the speed of the ball you want
with the name of the kicker concerned, i.e. each kicker has its own timer of call.

but there are problems, for example with a plunger that has a "PlungerPercentage" system,with some kickers the boost does not work for example with kicker stelt.....with autoplungen that is what is put in out-line left ... commonly called kickback ..... I also have problems

must be finalized .... but among other things hockey, billiards, xml ... etc ect ... for now it is stopped

if @Gimli allows me to show I do ....
 
So, use your .xml
<kicker impulse="800.0" vukImpulse="1300.0" impulseRandomness="4" vectorRandomness="1"></kicker> (original .xml)
Put 1 600 instead of 800 (double the value, whatever it is). After, you can play with the strenght. And if it's not enough, put 2 400.
 
I tried your settings and the ball slides around too much. Like JP said earlier, all the settings in the XML affect each other so there must be something else in your XML that is different from mine.
but I would say not only this, you have to consider that we have dynamical fins set differently, now if the ball seems to slide and not turn, as you see it in the table? George....
in my opinion it turns .... but I could lower the damping = "2" to 1 , 5

View attachment dktest.mp4



are tests to be done, I stopped on DK, I did not go ahead, for various problems .... kicker, plunger and boost, but also because since I knew that the masses are not correct according to the ball .... but also for other things
 
Last edited:
So, use your .xml
<kicker impulse="800.0" vukImpulse="1300.0" impulseRandomness="4" vectorRandomness="1"></kicker> (original .xml)
Put 1 600 instead of 800 (double the value, whatever it is). After, you can play with the strenght. And if it's not enough, put 2 400.
in fact for another table of mine, an "EM", .... Stardust, ..... that uses a lot of rubber(slingshot), bumpers, gate .... for now I'm trying with this configuration.....I lowered the other masses, increased the forces ..... all according to my perceptions ....
the table seems to work fine ....but remember, it is not only xml ...... that matters, but also other factors, dynamic flippers, xBAM.BallSpeedLimit, the damned rubber and slingshot ... which are a "hard bone" to configure in xml


'================================ PHYSICS XML ===========================
'<?xml version="1.0" encoding="utf-8"?>
'<document>
' <physics slope="8.5" fps="256" threaded="0"></physics>
' <ball newtonDamping="0.002" mass="25" gravity="5300" damping="2"></ball>
' <flipper rotationSpeedChart="{0.0,100.0}[0.0,100.0]" newtonDamping="1" releaseOmega="18" mass="20000" omega="33" moeMethod="0"
' leftXoff="0" leftYoff="0" leftZoff="0"
' rightXoff="0" rightYoff="0" rightZoff="0"></flipper>
' <bumper impulse="95.0" impulseRandomness="0" vectorRandomness="6"></bumper>
' <autoplunger mass="10000.0" force="80000.0"></autoplunger>
' <diverter mass="10000.0" omega="30.0"></diverter>
' <gate mass="1.0" gravity="1500.0" damping="0.25"></gate>
' <kicker impulse="1200.0" vukImpulse="1500.0" impulseRandomness="4" vectorRandomness="1"></kicker>
' <plunger mass="10000.0" force="80000.0"></plunger>
' <slingshot impulse="500.0" impulseRandomness="5" vectorRandomness="3"></slingshot>
' <spindisk mass="10000.0" angularDamp="0.33" linearDamp="0.25"></spindisk>
' <spinner mass="45.0" gravity="100.0" angularDamp="0.5" angularAccel="5.0"
' spinDampLoose="0.325" spinBackLoose="2.850"
' spinDampNorm="0.575" spinBackNorm="3.250"
' spinDampTight="0.750" spinBackTight="3.500"></spinner>
' <emkicker mass="10000.0" omega="85.0"></emkicker>
' <varitarget mass="100.0" damping="0.5" tension="3.0" return="15.0"></varitarget>
' <magnet impulse="10.0" impulseRandomness="2"></magnet>
' <nudge impulse="240.0" impulseRandomness="25.0" warningLevel="100" leftAngle="60" upAngle="0" rightAngle="320"
' vectorRandomness="4" visualDistance="2" waitPeriod="300" maxBallVelocity="1000.0"></nudge>
' <defaultMat softnessCoef="0.02" elasticCoef="0.1" staticFriction="0.01" kineticFriction="0.02"></defaultMat>
' <playfieldMat softnessCoef="0.03" elasticCoef="0.2" staticFriction="0.01" kineticFriction="0.02"></playfieldMat>
' <metalMat softnessCoef="0.01" elasticCoef="0.05" staticFriction="0.01" kineticFriction="0.02"></metalMat>
' <woodMat softnessCoef="0.03" elasticCoef="0.2" staticFriction="0.01" kineticFriction="0.02"></woodMat>
' <plasticMat softnessCoef="0.02" elasticCoef="0.25" staticFriction="0.01" kineticFriction="0.02"></plasticMat>
' <rubberHardMat softnessCoef="0.05" elasticCoef="0.8" staticFriction="0.01" kineticFriction="0.02"></rubberHardMat>
' <rubberIntMat softnessCoef="0.06" elasticCoef="0.4" staticFriction="0.01" kineticFriction="0.02"></rubberIntMat>
' <rubberSoftMat softnessCoef="0.07" elasticCoef="0.5" staticFriction="0.01" kineticFriction="0.02"></rubberSoftMat>
' <gateMat softnessCoef="0.05" elasticCoef="0.66" staticFriction="0" kineticFriction="0"></gateMat>
' <kickerMat softnessCoef="0.01" elasticCoef="0.05" staticFriction="0.8" kineticFriction="0.8"></kickerMat>
' <rampMat softnessCoef="0.01" elasticCoef="0.05" staticFriction="0.01" kineticFriction="0.02"></rampMat>
' <plungerMat softnessCoef="0.04" elasticCoef="0.4" staticFriction="0.01" kineticFriction="0.02"></plungerMat>
' <spindiskMat softnessCoef="0.05" elasticCoef="0.5" staticFriction="2" kineticFriction="2"></spindiskMat>
'</document>
'=============================== PHYSICS XML ===========================
 
Last edited:
The playfieldMAT and / or woodMat are probably the culprits of said difference namely the friction values
and what would be the optimal ones?
 
@ravarcade

is it possible to put the kicker force in script too? because even if I increase the force that is in the editor (see photo) it is not enough to kick the ball in certain situations, if "we" change the mass and gravity values in the ball

View attachment 19373
Nope. You can't change any global setting for one single object. Kicker impulse and all other kicker params from xml are for all kickers. Also you can't change that params after script starts.
 
wild said:
and what would be the optimal ones?

That would depend on the ball mass and gravity I suppose?! A lighter ball will have less friction so it'll travel further than a heavier ball on the same material settings.

Someone correct me if i'm wrong, please. I'm not particularly gifted at this.
 
Last edited:
Nope. You can't change any global setting for one single object. Kicker impulse and all other kicker params from xml are for all kickers. Also you can't change that params after script starts.
ok,thanks for your reply.

That would depend on the ball mass and gravity I suppose?! A lighter ball will have less friction so it'll travel further than a heavier ball on the same material settings.

Someone correct me if i'm wrong, please. I'm not particularly gifted at this.
sure is the problem I have in DK, first without mass and gravity, the plunger works fine, now it doesn't ..it's the same for kickers
we should try to play with these values .... I still have to try it on DK

' <kicker impulse="1200.0" vukImpulse="1500.0" impulseRandomness="4" vectorRandomness="1"></kicker>
' <plunger mass="10000.0" force="80000.0"></plunger>

instead it concerns the gates, I had problems with my "EM",Stardust, which I am trying to do .... in fact I have lowered both mass and gravity of the gate, and it works better, it does not do much resistance to the ball now

' <gate mass="1.0" gravity="1500.0" damping="0.25"></gate>
 
Raising the kicker / plunger values in the XML won't do much if the GUI slider is all the way to the left. Can you still move the slider to the right in the GUI. I have this feeling it acts like a multiplier.

If you already have the sliders all the way to the right then I'm out of ideas for now and only by testing you can get somewhere. Regarding gate mass I believe you could start by setting the damper to 0 (thing of damping as something that adds resistance)
 
I keep forgetting that i'm used to english acronyms... It's FP program. Just open it and click select the plunger.

Doesn't matter though. I just noticed your post #106 above that the kicker is already all the way to the right so i'm assuming you have the plunger also at maximum strength
 
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.
      JonPurpleHaze @ JonPurpleHaze: Heard a different Aaron Neville song earlier, saw him in New Orleans...
      • Like
      Reactions: xenonph
      Back
      Top