"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" xBAM.BallManager Tutorial ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' This is another crazy tool with huge creative potential ! You can create balls of different sizes, shapes, graphics, mass, and opacity. You can have them transform when you hit table objects and you can set your game narrative to change based on the custom ball that is currently in play
***Tip*** You MUST have" Ball Marks(Dirt)" enabled in Future Pinball "Video/Rendering Options" in order to see ball textures properly
Using Script to: 1. define Custom Ball Features including: Size, Mass, Opacity, Ball Texture 2. To enable transforming from one Ball texture to another with game events 3. To enable game events to change when linked to a specific ball
1. Custom Ball Code : Copy and Paste under "Option Explicit" at top of Script
Code:
Function CreateCustomBall ( Source, BallName, Radius, Mass, Opacity ) xBAM.BallRadius = Radius xBAM.BallMass = Mass xBAM.BallOpacity = Opacity
Dim bi Set bi = xBAM.BallManager.CreatCustomBall(BallName) Source.CreateBall bi.Red, bi.Green, bi.Blue, bi.BallNumber AddDebugText "["&xBAM.BallID&"]" CreateCustomBall = bi.BallNumber
End Function
2. Ball Textures: Each ball you create will have 3 textures( 452.bmp, 334.bmp, 269.bmp)
You must unzip these packs and rename the 3 files. For simplicity and clarity, it makes sense to choose a name like the CustomBall your are creating. (ie "Tennis_452", "Tennis_334", "Tennis_269")
****TIP**** Ball Textures must be BOTH imported in Texture Manager and added to "surfaces" that you create in the FP table editor. This part is same as adding textures described in xBAM.SetTexture feature above...
3. Define Balls ( in example below I chose names "BeachBall" , "VolleyBall" and "TennisBall"
In the code above the first 3 numbers (ie 192,192,192) are mixes of the primary colours R,G,B that give the ball it's colour. You can get these numbers from any colour box in FP table editor. 4. Create a ball in a kicker. Typical location is under Sub Createnewball()
Code:
Sub CreateNewBall()
call CreateCustomBall(PlungerKicker, BeachBall, 13.0, 20, 1) ' create a ball in the plunger lane kicker. 'PlungerKicker.CreateBall
' There is a (or another) ball on the playfield BallsOnPlayfield = BallsOnPlayfield + 1
' kick it out.. PlungerKicker.SolenoidPulse End Sub
***TIP: Notice the parameter order as per Custom ball code that you copy and pasted above, "Function CreateCustomBall ( Source, BallName, Radius, Mass, Opacity )" so in above code "call CreateCustomBall(PlungerKicker, BeachBall, 13.0, 20, 1)" this means Source = Plungerkicker, BallName = BeachBall, Radius = 13.0, Mass =20 and Opacity = 1.
You can play with these values. If the Radius is too large the ball won't drain, if the radius is too small the ball will roll under guides. If the Opacity is 0 the ball is invisible
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 5. "Transformation Code" is for Changing custom balls with either hit events or simply in code add the following in same location as above:
Code:
Dim BallTransformations Set BallTransformations = xBAM.BallManager.CreateTransformation call BallTransformations.AddRule(BeachBall, TennisBall) call BallTransformations.AddRule(TennisBall, VolleyBall) call BallTransformations.AddRule(VolleyBall, BeachBall)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Example of hit event (This will rotate between custom balls each time LeftSlingshot is hit)
Code:
Sub LeftSlingshotRubber_Hit() ' add some points AddScore(5) ' flash the lights around the slingshot LeftSlingshotBulb1.FlashForMs 100, 50, BulbOff LeftSlingshotBulb2.FlashForMs 100, 50, BulbOff BallTransformations.UpdateBall(fpBallID) End Sub
Example of changing custom ball with code (this will toggle between custom balls with pressing C, V or B on keyboard)
Code:
Sub FuturePinball_KeyPressed(ByVal KeyCode) If keycode = 48 then call xBAM.BallManager.UpdateBall(fpBallID,BeachBall) If keycode = 47 then call xBAM.BallManager.UpdateBall(fpBallID,VolleyBall) If keycode = 46 then call xBAM.BallManager.UpdateBall(fpBallID,TennisBall) End sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 6. You can also link game events to whatever the current ball is (For instance when tennis ball is in play , have tennis table graphics and ball sounds etc...)
Code:
If xBAM_BallManager.GetBallName(fpBallID) = TennisBall then bla bla bla
In the above example code showing the Left Slingshot_hit code for instance, I added lights that change and a graphic that changes based on the ball in play. See video below. I used the texture swapping feature described previously to change the graphics
Code:
LeftSlingshotRubber_Hit() ' add some points AddScore(5) ' flash the lights around the slingshot LeftSlingshotBulb1.FlashForMs 100, 50, BulbOff LeftSlingshotBulb2.FlashForMs 100, 50, BulbOff BallTransformations.UpdateBall(fpBallID) If xBAM_BallManager.GetBallName(fpBallID) = BeachBall Then BeachLight.State = BulbBlink:VolleyLight.State = BulbOff:TennisLight.State = BulbOff:xBAM.SetTexture "GameImage", "beachball", 0 If xBAM_BallManager.GetBallName(fpBallID) = VolleyBall Then BeachLight.State = BulbOff:VolleyLight.State = BulbBlink:TennisLight.State = BulbOff:xBAM.SetTexture "GameImage", "Volley", 0 If xBAM_BallManager.GetBallName(fpBallID) = TennisBall Then BeachLight.State = BulbOff:VolleyLight.State = BulbOff:TennisLight.State = BulbBlink:xBAM.SetTexture "GameImage", "Tennis", 0 End Sub
If you want to get even fancier, you can attach objects to your custom balls and make the custom ball invisitble to make "Fantasy Pinballs" This is described in the last section of xBAM.miniplayfield tutorial below.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" End of xBAM.BallManager Tutorial '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, xBAM.Miniplayfield Tutorial ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' This is one of the most exciting innovations of BAM that opens the door for unlimited creative possibiliies for Future Pinball! (See usages below.) Original Thread Here: viewtopic.php?nomobile=0f=86&t=6214 You'll see some videos on that thread of crazy stuff, I've done. Swinging ball for Junkyard, Hockey table inside a bubble, 2 player "joust-style" table with Mirroring playfields, Projecting Movies on Room walls, Rotating Ceilings, Table Objects that Jump out at you, VR Rooms etc..
Video Tutorial Here (Sorry for the low resolution Quality) ***NOTE: This is an old video using an older version of BAM, so the menu has changed a little and most importantly Step 2 on video (copying a large "BAM setup segment") is no longer necessary.
Usages: 1. Originally created for scaling, rotating, moving a "Miniplayfield" from beside the table and onto the desired location on the main table playfield
2. Can actually be used on any object or group of objects (including DMD's , overlays, all table objects) can be scaled, rotated, and moved anywhere in the FP environment (both on the table and in the surrounding Games Room)
3. A Sequence of Moveto commands can be used to animate the miniplayfield or object(s) in 1. and 2. above
4. Can be used to attach any object to an invisible ball
***TIP : To understand what is going on with xBAM.Miniplayfield , think of the light saber dual between LUKE SKYWALKER and KYLO REN in the Last Jedi
Luke tricked Kylo into believing he was present when in fact he was projecting an illusion of himself onto the BattleField. That's exactly what xBAM.miniplayfiield does! It takes object(s) or miniplayfield and projects an image of it onto the table or where ever you choose to project it....
This is important to understand because it means you can superimpose up to 16 miniplayfields onto the table or onto each other and they will not interfere with each other, because like Luke Skywalker they are merely ghost projections....
https://www.youtube.com/watch?v=vaiaf5v9XB4 See 6:30 of above video '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' A .Process for Creating and Defining A "Miniplayfield" '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 1. Create a miniplayfield beside the Main Table in Future Pinball Table Editor (for 1. above). Same process as constructing the main table playfield and elements.
2. or Select an object or Group of Objects (for 2. and 3. Above)
3. Load Table, Enter BAM Menu : PressQ, Advanced Menu, Dev Options, Mini-Playfield
4.Starting with IDx 0 (Which is miniplayfiled_0), capture your miniplayfield or object(s) in Yellow Source Box. Press Control-C to copy code to clipboard. Screen should display "Clipboard: Create Miniplayfield" Starting around 10:23 of Video Above.
5.Escape to exit table, and enter FP Script Editor. Press Control-V to Paste code under "Option Explicit"
It should look like this:
Code:
Option Explicit ' Force explicit variable declaration Dim MiniPlayField_0 ' Xmin Xmax Ymin Ymax Zmin Zmax CenX CenY CenZ Set MiniPlayField_0 = xBAM.CreateMiniPlayfield( 208, 308, 484, 584, 0, 100, 258, 534, 50)
6.Reload Table and Return to BAM Mini-Playfield Menu. Move Green Target Box which now contains your Miniplafield or object(s) to desired size, rotation and position. Press Control-C to copy "moveto" command to clipboard. Screen should display "Clipboard: Moveto" See Around 16:10 of video above
7.Escape to exit table, and enter FP Script Editor. Press Control-V to Paste "Moveto" code under previous entry. The Script should now look like this:
This is all that is required for a simple miniplayfield or relocation of non-moving object(s)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' B. Multiple miniplayfields or object groups can each be assigned a separate "miniplayfield" BAM allows 16. To configure just change "Idx" number in Miniplayfield Menu. ***TIP It is best to keep the names that are assigned by BAM for your miniplayfields (" MiniPlayField_0", " MiniPlayField_1", " MiniPlayField_3" etc..)and keep them in order at top of script. So you can fine-tune your settings in Real Time from BAM miniplafield menu.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' C.Object Animation can be achieved by creating a timer in Table Editor and adding a code in the script to go from one "moveto" command created above to another. The BAM/MiniPlayfield Menu has a real-time animation player to assist you. See around 19:16 of above video.
For example, let's create a timer in FP table editor and call it "AnimationTimer" And let's choose to create variable called "AnimationPosition" In the code we can have something like this:
Code:
Dim AnimationPosition Sub AnimationTimer_Expired() AnimationTimer.Enabled False AnimationPosition = AnimationPosition + 1 If AnimationPosition = 1 then Call MiniPlayField_0.MoveTo( bla ,bla, bla, 2) :AnimationTimer.Enabled True, 2000 If AnimationPosition = 2 then Call MiniPlayField_0.MoveTo( bla ,bla, bla, 2) :AnimationTimer.Enabled True, 2000 If AnimationPosition = 3 then Call MiniPlayField_0.MoveTo( bla ,bla, bla, 2) :AnimationTimer.Enabled True, 2000 If AnimationPosition = 4 then Call MiniPlayField_0.MoveTo( bla ,bla, bla, 2) :AnimationTimer.Enabled False:AnimationPosition =0 End Sub
In the above animation, the "miniplayfield" will move from one location to the next and take 2 seconds to get there as the last number in the bam code is for "time to move to position" and AnimationTimer is set to refresh every 2 seconds (2000 ms). This synchronizes the BAM code with FP Timer for a smooth transition. To Trigger above animation you simply require the following anywhere in the FP code.
Code:
AnimationPosition = 0 AnimationTimer.Enabled True
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" D. Assigning an object to a ball
1. Place your object ( A toy or whatever) next to table in FP Table Editor 2. Grab object as "miniplayfield " as described above 3.use xBAM.BallManager To create a custom ball 4.Assign your object to the custom ball using BAM.closeto command
Where x,y Coordinates 440 and 917 are the location of the kicker from which the ball is being released (in this case the usual "plungerkicker"
Ball tracking will automatically stop when ball hits drain or kicker and is "destroyed" or when you use TrackedBallStop code:
Code:
MiniPlayField_0.TrackedBallStop()
The Ball that your object is attached to can be made invisible by setting ball opacity to 0 as described in the BAM.BallManager section. The Video Below Shows the possibilities:
1. AirPlane Flying above pinball 2.Wild's Flame Hologram blazing on top of a "Fireball" Pinball 3. Hockey Puck (Attached a puck toy and made the Custom PInball invisible) 4.Cartoon Ball where I made a cartoon animated object (Used xBam.SetTexture to assign flashing textures to a stock FP droptarget object, used xBAM.Minipalyfield to grab Droptarget object, and then assigned it to an invisible custom ball ie Opacity = 0 using xBAM.BallManager)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' xBAM.Physics Tweaks Tutorial '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' This is by far the most under rated and underused GEM of BAM. This allows Real-time, on the fly tweaking and saving of Physics xml files Original Thread viewtopic.php?nomobile=f=86&t=6276&hilit=tweaks
Under Construction......
FP Physics has mesmorized, confounded , frustrated many and it has lead, in many circles, to an unfavorable opinion of Future Pinball. It may seem overwhelming, but with a little exploration and tweaking, most players can achieve a perfectly acceptable result.
In fact SLAMT1LT is keeping us all in suspense as he claims to have found the perfect physics parameter blend that is more realistic than living
I will link some of the threads describing xml usage and then spend most of the time exploring the BAM.PhysicsTweaks tool and the automatic scripting that it can generate to make FP physics completely customizable
1.In his how-to-setup BAM thread,GeorgeH discusses all the versions of FuturePinball.exe and how the physics paremeters were extracted in files called "XML" files. There are numerous xml's files to try as these are simply recipes of quantities of the various physics parameters. viewtopic.php?nomobile=0f=86&t=5544
2.I believe the new Versions of BAM are being released with all of the popular xml files for you to choose from.
Loading XML files has been one of the cherished features of BAM almost since its inception.
The beauty of xBAM.PhysicsTweaks is that we can now adjust all of the physics parameters in Real-time and immediately see the results
And then BAM will save the new XML file to be used as before or even now has the feature of creating an xml code that we can simply paste into the script and thereby make the xml file redundant !
XBAM.Physics tweaks also has the real time flipper adjustments with an amazing test mode where you can test shots from any angle. And once again BAM will create a flipper code that you can paste into the script.
You can set the physics of each flipper independently ! There many features pertaining to flipper testing that haven't even been tested by users yet that Ravarcade has included. See video below...I just discovered this tool!!!
xBAM.PhysicsTweaks is already an amazing tool....with huge potential as users learn how to use it.
Joined: Mon Dec 14, 2020 8:49 am Posts: 2 Location: Ethiopia
I was told I can use ultimate boot cd to fix or repair a suspected bad mbr. Does anyone have instructions on how to use ultimate boot cd to do this? I cant find instructions on the site.
An English-dubbed Dutch horror film about Sinterklaas being a serial killer.
You do not have the required permissions to view the files attached to this post.
It is currently Sat Jan 16, 2021 5:29 am All times are UTC - 5 hours [ DST ]
Who is online
Users browsing this forum: No registered users and 5 guests
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum