Future Pinball v1.9.1.20101231 Manual
Future Pinball v1.9.1.20101231 Manual
Future Pinball v1.9.1.20101231 Manual
Solutions
(Version 1.9.1.20101231)
www.newtondynamics.com
This manual should help you learn the basics of the program,
how each object works and provide tips on creating you own
tables. Please excuse any spelling / grammar errors. Some of
the screen shots have been taken under Windows Vista and the
other half under Windows XP hence a slightly different look.
Editor Overview
This part of the manual provides a simple overview of the main editor and the
functionality of the various parts on the main window. For more detailed help on
using the editor refer to the Editor Functionality part of the manual (link)
When you first run Future Pinball, it will open up the Editor in a blank state (i.e.,
no table has been loaded). At this point most of the buttons and menu times are
disabled. Only loading an existing table or creating a new table is allowed. You
can also change the default settings Future Pinball under the Preferences menu.
Loading one of the Demo Tables (File / Load) that comes with Future Pinball will
activate all of the controls and display something similar to the following picture
(of course the main table design will be different depending on what table you
have actually loaded)
The Editor is made up out of the following major components:
This Section Describes the Menu options available to the Table Editor.
File
New (or Control + N)
Will Create a New (mostly blank) table for you to start working
with. The New table also comes with a simple but generic
script which help you create a game with up to 4 players, A
bonus system and Tilt and High score support. This generic
script provides an excellent starting frame work for your table.
Close
Will Close the currently active table. If the table has been
changed but not saved, the editor will ask if you wish to save
the table.
Will Save the currently active table back to disk. If you have
created a new table (and thus it hasn't been saved to disk
previously), Future Pinball will ask you for a file name to save
the table to.
Save As...
This allows you to save the currently active table under a new
file name.
Table Launcher (or F4)...
Generate Blueprint...
Allows you to edit and create DMD Fonts for use with the DMD
Display object. For more information see the DMD Font Editor
section of this manual. (link)
Allows you to edit and create resource libraries for your table.
For more information see the Resource Library Editor section
of this manual. (link)
This list show the last 10 tables which have been loaded. this
allows you to load a recently loaded table without having to go
though the windows file requestor each time. You Can use
keyboard shortcuts ie 'Alt F 1' to load the last loaded table (the
first entry in the recent file list).
Exit
Will exit the Future Pinball Editor. If the any of the current
tables have been changed but not saved, the editor will ask if
you wish to save each table.
Edit
Select All (or Control + A)
This will select all objects in the current view of the table editor
workspace.
This will bring up a simple find dialog that will allow to to find
an object on the table (obviously you will have to know its
name). If the object is found then it will be automatically
selected.
This will undo any changes you have made. Pressing this
repeatedly will continue to undo your changes.
Will Paste the contents (if any) of the clipboard onto the
current table.
Script...
Table Info...
Texture Manager...
Sound Manager...
Music Manager...
Model Manager...
Will open up the Model Manager which allows you to import
specially created Future Pinball Model files into your table. For
more information see the Model Manager Chapter (link).
Font Manager...
Will open up the Light List Manager which allows you to create
Light Lists needed by the Light Sequencer object. For more
information see the Light List Manager Chapter (link).
Will start playing the table but will also display the Debug
Window which displays any text given to it via the
AddDebugText script command. For more information see the
Global Scripting Commands Chapter (link).
Preferences
Editor Options...
The Editor Options allow you to tweak what information the
editor gives you when you click on object. It also allows you to
define the colours used to render the table in the editor to suit
your own preferences. For more information see the Editor
Options Chapter (link).
Window
Tile
Currently Unsupported.
Window / Table
Lists the Table(s) which have been loaded into the editor.
Future Pinball allows multiple tables to be loaded at once.
Useful if you wish to copy elements from one table to another.
The currently active table is marked with a tick. To change
tables, select the name of the table desired to be the current
table.
About
Open Manual.. (or F1)
This will bring up the following dialog which loads a RSS feed
from http://fprelease.free.fr/ which shows the latest 50 tables
released for Future Pinball aswell as table information, release
date, rating aswell as a screen shot of the table.
Clicking on a table in the table will display the details about
that table. Clicking on Find out more and Download Table
will go to http://fprelease.free.fr/ where you can download the
table. Clicking on View the Top Rated Tables will change the
listing to show the top rated tables.
Reload Rss Feed will manually reload the RSS feed although
this will be updated every 7 days automatically.
About..
Will open the About box dialog display the credits for Future
Pinball.
This is the main control toolbar for Future Pinball. It contains the
following Buttons:
Select
Magnify
Play Table
Will start playing the current table. Refer to the Playing a Table
chapter. (link)
Script
Will open up the Script Editor. Refer to the Script Editor
chapter. (link)
Table
Translite
Will change to the Translite Work Space View. This allows you
to edit and place objects which are attached to the translite (the
backbox).
They layer buttons allow to toggle which layers are displayed on the
Table Editor Workspace.
Holding down SHIFT when selecting a layer will turn off all other
layers.
Future Pinball will remember which layers have been selected (or
not selected) each time you run Future Pinball.
Layers only help in the editing process and are not used for Playing
(or Rendering the table). For more information on Layers refer to the
Editor Functionality chapter (link).
Table Editing Workspace
The Table Editor Workspace is where you will be working when developing a
Future Pinball Table. It show all the objects on the table and allows you to
click on each object to edit it. (change a property or move it around a bit).
For more information refer to the Editor Functionality chapter (link).
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Playing a Table
The name of the Table, version and Author (as defined in the Table
Information (link) dialog) is also displayed.
Future Pinball requires a fairly decent video card to run. If your video
card is unable to support hardware acceleration, it will be extremely
slow (aswell as you may get graphic corruption). If Future Pinball
detects this it will bring up the following warning dialog. You should try
downloading the latest drivers for you video card to upgrading your
video card.
The Keys used to control the flippers, start a game, nudge the table
are defined by the Key Preferences (link) dialog. Depending on the
person and how they have scripted the table the ways to start the
game may differ but if it is scripted correctly then the default method
will be to press 5 (insert coin) to insert coins (for credits) and pressing
1 (start button) multiple times to start the required number of player
games.
Pressing (and holding down) Enter (Plunger) will pull back the
Plunger. Releasing the plunger key will fire the ball onto the playfield.
Using the Shift (Left and Right Flipper) keys will flip the flippers.
The Table can be nudged with the Z (Nudge Left), Space (Nudge
Forward) and / (Nudge Right). Be careful not to nudge too hard else
the table may tilt.
Full Table 2 ( F2 )
Full Table 1 ( F1 )
Shows 80% of the Table and will As with Full Table 1, but the camera
pan up and down to is positioned
follow the closest ball at the Top of Higher off the Playfield.
the Playfield.
Scrolling 2 ( F4 )
Scrolling 1 ( F3 )
The Camera will closely follow the As with Scrolling 1, but the camera
is positioned Higher
ball only showing about 2/3
of the Playfield. The Playfield will off the Playfield and will show
appear to scroll up and down. slightly more of the Playfield.
Low Angle 2 ( F6 )
Low Angle 1 ( F5 )
The Camera is positioned just As with Low Angle 1, but the
behind the lower Flippers Camera will move along
and will pan up and down following the Glass (so the table scrolls)
the Closest Ball. following the ball as it
Traverses the playfield.
Fixed View ( F7 )
There are some special camera modes in Future Pinball which allow
you to see various aspects of the pinball machine. There are cycled
though each time you press the F8 key.
Top View ( F8 )
Apron View ( F8 )
Top Down View of the Apron Top down (almost) view of the entire
allowing you to Playfield.
read the Rule sheet for the pinball.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Launcher
The Table Launcher allows you to load (and run) any of the tables
stored in the Tables Sub-directory in the main Future Pinball
installation directory. The Launcher acts as a mini-front end as it will
scan for all Future Pinball Tables within the Tables Sub-directory (and
any sub-directories with in that) and display them in a list along with
bits of the table information (the Table Name, The Version of the
Table, The Author of the Table and its description). This information is
generally entered into the Table Information Dialog (link) by the
Author of the Table.
When the Table Launcher dialog is opened, it will close any currently
opened table(s).
Selecting a table from the list will allow you to load and run the
specified table. You can either double click the table name or select
the table and press the button. If no table has been
selected, then the button will be disabled.
This will exit the launcher and return back to the Table
Editor.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Editor Functionality
This part of the manual will help you learn how the Table Editor
works in Future Pinball, How to Create new objects, move them
around the table and modify them. It doesn't cover the specifics of
the various objects used in the examples. You will have to refer to
the relevant object's help.
The Table Editing Workspace provides the area in which you can
create your own pinball machine. The Editor is designed to work as
simply as possible and provides a clean top down 2D view of the
table. The Table Elements are drawn onto the workspace and from
there you can play with using a combination of mouse and/or
keyboard actions.
This chapter is quite large but provides all the basic elements for you
to learn how to create your very own table in Future Pinball.
The Colours that are used to draw the table components are
definable in Editor Options Window (link).
Select the "Objects" button. If you leave the mouse cursor over
the button a little tool tip will appear giving a more detailed
explanation of what the button does.
Now Select the Peg button from the pop up button list. Again
leaving the mouse cursor over a button will bring up a tool tip.
When you select an object type (in this case the Peg), the
cursor will change into a Crosshair.
Moving the Crosshair cursor to the location on the table where
you wish to create the object and pressing the Left mouse
button will create the object. If you do not wish to create an
object (i.e. you have accidentally clicked on an objects button),
press the "Select" button on the main left toolbar to revert back
into normal editing mode.
The object that you have created will then be drawn on the
Table Workspace. Selected objects are drawn with a thicker line
colour. The colour of this colour is your system's Highlight
Colour, defined in Microsoft's Windows Display Properties. If
you are using the Blue XP theme, it will be blue. If you prefer the
Green XP Theme, it will be a green colour.
When an object is Selected, the Editors Property window will
change to show you the available properties for that object (in
this example not all are shown)
Selecting one of the Models in the list will change that object
over to use that model. The preview window will also change.
Note that the preview window will not draw the object in the
colour that you have specified for that object's properties. The
preview image is a static image that comes with that model.
The Peg will then be re-drawn using the new model data.
The Sub Menu for each object may slightly change depending
on the object type but the commands are consistent for all
object types. In general, objects that use a 3d Model will bring
up a shorter menu. Objects which use Shapepoints to define
their shape have a few more operations that can be done to
them (such as rotating, flipping, etc.). For more information on
Shapepoints refer to the Shapepoint chapter (link).
Sub-menu for Model Based Sub-menu For Shapepoint
objects based Objects
Selecting the 'Copy' menu item will copy the object into the
clipboard.
You can also copies from other tables loaded into the editor so if
you like what somebody else has done in their table design, you
can just select what you want, copy it and paste it into your own
table.
Pasting Objects. (Control + V or
Shift + Control + V)
Once you have an object(s) in the clipboard you can then paste
it back onto the table. Again use the Right Mouse Menu and
Select 'Paste'.
This will paste the objects which are in the clipboard onto the
table. When you copy an object, all its properties are also
copied which includes its location on the table. As you are
effectively duplicating an item, it will be created OVER the object
it was based on.
Select the object and then move it to the location you wish to
place the object at. (by holding down the mouse and dragging
the object or using the cursor keys)
Deleting Objects.
Objects can be deleted if not needed. Just select the object you
wish to remove and press the 'Delete' key on the keyboard.
Undoing Changes.
The Future Pinball Editor also contains an undo buffer which will
remember the last 16 changes made to the Table (i.e., deleting
objects, moving objects, changing properties of an object). If you
wish to undo a mistake made, press 'Control + Z' on the
keyboard or select 'Undo' under the main Edit menu list (top of
screen).
All this means is that you will not be able to change common
properties of the objects selected. But you can still copy them to
the clipboard, delete them, or perform any other action on them.
Releasing the Mouse button will then select all objects within the
selection box.
Some objects (in this case the Peg) will draw a Purple Guide
Line indicating how to position other objects around it. In the
case of the Peg it shows the rubber line. i.e., where the rubber
should rest against.
Selecting Overlaying
Selected Overlaying Objects
Objects
Select the object which is in the way (in this case the plastic
surface is obscuring the selection of the items below it), press
the Right Mouse Button and Select 'Send to Back'
The Surface is then sent to the back of the Table Workspace,
and the objects that where obscured and now selectable. (in this
case we have selected the ornament hole around the slingshot
kicker hammer).
It is important to note that sending objects to the Back (or the
Front) may change how it is rendered in the game. This only
applies to objects which are either Transparent (or partially
transparent) or objects which have the Crystal flag set (if
available). If you see 'rendering' issues with objects on your
table, you will have to adjust the drawing order by sending
objects to the back so they are drawn first.
Layers.
Future Pinball supports up to 10 Editing Layers which every
object can be assigned to. This allows you group similar objects
to a specific layer. For example. Assigning all Surfaces to say
Layer 2 will then allow you to click one button (the Layer 2
Button) and toggle displaying them or not allowing instant
access to editing the objects underneath. This is also very
useful to limiting what information gets exported when a Blue
Print is created.
Layers only help in the editing process and are not used for
Playing (or Rendering the table).
The Layer Buttons are on the Left hand Toolbar in the Main
Editing Window. They are numbered from 1 to 0 (with 0 being
Layer 10)
will stop the Table Editor from drawing any objects assigned to
that Layer. So instantly you can have full access to anything
underneath. If used correctly Layer can make you job of editing
tables much easier. Layers don't make any difference to the
rendering of an object and are only an Editing tool.
Snapping the Object to the nearest
mm
You can snap the Object to the nearest mm boundary. Right
mouse click on the object and select "Snap to Nearest mm".
Randomise Orientation
You can randomise the orientation of model based objects
(which is useful for making sure that screws/bolts all dont look
the same). Right mouse click on the object and select
"Randomise Orientation".
Translating an object.
Object(s) can easily be Translated (moved by precise
constraints) by the Translate Menu option.
Select the 'Flip X' menu option to Flip the Selected Object on the
X axis.
Selecting the 'Flip Y' menu option will Flip the Selected Object
on the Y Axis.
Rotating an Object.
You can also arbitrarily rotate a Shapepoint-based object around
its center point.
Selecting the Rotate menu option will bring up the following
dialog;
The Lock menu item is also checked. You Will have to unlock an
object before you will be allowed to move it.
Ball Spacing Guide
Holding down Control on the keyboard will draw a red circle
around the cursor. This red circle represents the true size of a
pinball. You can use this to ensure that when placing table parts
near each other that there is enough room for the ball to still
pass between them (where appropriate).
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Shape Points
Selection of Shapepoints.
Selecting an object which uses Shapepoints (in this case, a
Surface) will show the shapepoints for that object (unless you
have the Always Show Shapepoints option enabled in the Editor
Options (link).
You can then click on a shapepoint (which will be highlighted in
your systems Highlight Colour, defined in Microsoft's Windows
Display Properties).
You can see that the new point is now selected. you can then
edit it just as you would any other shapepoint.
If you insert a new Shapepoint using point '5' as the start, then
the new point will be created between the '1' and '5'
Shapepoints. Again as each object works slightly differently, it is
best to experiment a little with each type.
Deleting a Shapepoint
You can Delete Shapepoints from an object (providing it doesn't
reduce the minimum number of Shapepoints required for that
object). Just select the shapepoint you wish to delete and press
the "Delete" key on the keyboard.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Ramp Points
You may notice that the last ramp point is drawn differently than the
others. This ramp point signifies that this is the end point of the ramp or
more specifically where the ramp reached it's end height. This allow
ramps to be created which go up to a set height and then run flat from
that point onwards. Only a single ramp point can be marked as the 'end
point'.
To mark a point as being a end ramp point, right click on the point you
require and select the Mark as Ramp End Point menu option. You are
unable to make the first shape point (the start) as the end point. This
menu option will be greyed out. It you want a flat ramp then set the start /
end heights of the ramp to be the same.
When you can click on a ramp point, depending on the object, the
editors property panel will change over to one of the following.
This is much the same as shape points with the only exception being the
Ring Type option. This allows you to select (for wire ramps only) a metal
ring which will be placed at that ramp point.
Selecting a Ring type will show a preview of object in the window below.
The Editor will also show the ring choosen.
After laying out your Pinball Design you will need to start working on
graphics for it. Obviously the main graphic on a pinball is the
playfield texture. In order to be able to place you graphics at the
desired place you will need to create a Blueprint of the table.
Selecting 'Generate Blueprint...' from the File Menu will open up the
following window:
This dialog allows you to specify the sizes, colours and what is
actually rendered on the blueprint.
Render Options
The Blueprint Colour defines what colour to render the
blueprint with. It is always rendered onto a White background.
This is purely cosmetic.
Export Options
Render 3D Models
Clicking will then ask you for a Filename and where to save
the file to. The resulting Blueprint will be saved to the filename
specified (as a Microsoft Windows Bitmap .BMP). The following is
the Blueprint output from the Future Pinball demo table Sci-Fi
Classic: (much smaller than the real output)
Clicking will exit and return you back to the Table Editor.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Command Line Options
example..
/Play
The Play command will play the opened table once it has
loaded. If no table is "opened" then this command will have no
effect
example..
/Exit
The Exit command will exit future pinball after the specified table
has been loaded and played (when the user exits from playing
the table) and return back to the calling program (either a front
end or Windows).
example..
/ArcadeRender
This command line switch makes the Arcade Render Mode
available in the Video Preference dialog. For more information
about setting up Arcade Render then refer to the Video
Perferences section of this manual (link).
example..
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Information
The Table Information allows you to set various information about your table which
is displayed on the initialisation screen when you play your table. The Table
Information dialog also allows you to set the defaults of the fpRam file which
contains the high scores and other game information. (providing the script of the
table uses the appropriate global script variables.
Clicking Table Info (in the Table Menu) will bring up the following dialog;
This will Cancel any changes you have made and return back to the
Table Editor.
Table / Author Details
This Allows you to input details about yourself and the table which details
various information out your table (or a table somebody else has done). Most
of this information is displayed on the initialisation screen when a table is first
played.
Table Name
Allows you to give a more descriptive name to your table (instead of the
name property of the Table). This is displayed on the initialisation screen
when you press Play...
Version
Allows you to note the version of your table (ie version 1, beta 2, etc.).
This is also displayed on the initialisation screen.
Table Author
Allows you to note the author(s) of your table. This is also displayed on
the initialisation screen.
Release Date
Allows you to leave you email address (if you wish) so anybody can
contact you about your table.
Clicking this button will launch your email program and open up
a blank email to allow somebody to send you comments on your table.
Web Page
Allows you to leave your home page Web page address in case anybody
is interested in visiting it.
Clicking this button will open up the specified web page in your
current web browser.
Description
Allows you to give a 1 line descriptive tag line about your table.
Rule Set
Allows up to 2048 characters (2K) of text which you can use to describe
the rule set for your table.
Loading Picture
Text Colour
Defines the colour of the all text drawn (with the exception of the Debug
text window) onto the screen. This includes the initialisation screen,
paused dialogs and high score entry windows.
Non-Volatile Ram Defaults
The values displayed in the dialog are the defaults for the various global
script variables. It does not show you the current values, only those that it will
use if the file is not found (generally the first time you run a table). This of
course also makes sense if you actually use the built-in non-volatile ram
system built into Future Pinball.
Allows you to define how many balls your game will have. You can select
between 1 and 9 Balls per game.
Allows you to define the initial Jackpot of the machine. If you don't wish
to script a jackpot into your table, then you will not need to set this value.
Future Pinball contains a Built-In High Score system to help provide High
Score Support to all tables with minimal scripting required. This keeps a
High Score Table (of 4 entries) for the current table.
Initials
Allows you to assign the default initials (a maximum of 3
alphanumeric characters) for the top 4 high scores.
Score
Allows you to assign the default scores for the top 4 high scores. You
should always ensure that the values to put into these fields are
achievable on your table.
Title ( nvSpecialHighScoreTitle )
The Title of the Special Score. This is displayed on the High Score
entry screen (if the player beats it) as well as on the paused screen.
As mentioned above if left blank, then the special high score will not
be used in the game engine. This field can be a maximum of 16
characters.
Initials ( nvSpecialHighScoreName )
Value ( nvSpecialHighScore )
Text ( nvSpecialHighScoreText )
Clicking this button will delete the .fpRam file which essentially
restores the defaults to the global script variables. Any variable
which is also persisted (such as nvCredits, etc.) will also be reset
(usually to 0).
Object Count
This shows you the maximum number of objects the editor will allow you to
put on a table and how many of those you are using.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
The Texture Manager
The Texture Manager allows you to include graphics into your table which can be used for
skinning the models or drawn onto the playfield. Textures MUST be loaded into the current Table
before Future Pinball will be able to use them.
Future Pinball supports 3 graphic formats. .BMP (Windows Bitmap), .JPG and .TGA (True Vision
Targa). .TGA is extremely useful as it can contain alpha information for each pixel allowing for
some very nice transparent/translucent effects.
Textures can either be physically included into the Table file (making the file size bigger) or
Linked to a Future Pinball Resource Library. Libraries allows You (The Table Designer) to use
common resources pooled into a single external file. The benefits of this is that these resources
can be enhanced and all tables which use them will automatically use the latest version.
The Maximum Texture size for most video cards is 4096x4096. Textures of this size require huge
amounts of video ram and should be used very sparingly. Future Pinball will ensure that all
textures conform to the maximum allowed size on each machine (as the table is run).
It is important to note that ALL textures should have dimensions which are a power of
two (i.e., 64, 128, 256, 512, 1024, 2048, 4096) for both the Width and the Height of the
texture (though they don't necessary have to be the same). This is a limitation with the
video card and not Future Pinball. If the Texture you wish to add to the table is not of a
power of two, then the Future Pinball will automatically re-scale the image to its nearest
power of 2 dimension when the game is run, so it is best to ensure that all textures
follow these rules as it makes the loading of textures into the video card much faster if it
doesn't have to rescale the image first.
When the Texture Manager is opened it will open up in a new window. This lists the currently
loaded textures that the current table knows about. It also shows a preview of the currently
selected texture.
This window is split up into 4 main sections. The Texture Preview Window, The Texture List,
Adding a New Image and Image Management.
Texture List
The Texture List shows all of the currently loaded textures this table is able to use (though
this doesn't necessary mean it will use them all but they are available to be used). This
window shows the symbolic name used to reference the Texture, if the texture was actually
used that last time it was run, whether it is linked to a library or not (which means it is loaded
from that library when the table is first loaded into the Future Pinball Editor. If the Texture is
Linked, then it will also show the Linked Details (Library File name and the Texture File
Name within that library).
The Texture list is sorted into Alphabetical order based on the Texture Name
You will first need to select a Texture First before some of the functionality of the Texture
Manager becomes available.
In order for the Used column to be populated the table must first be run. This marks the
textures image used by the table. You can use this information to remove un-needed
textures from your table which will help reduce loading times aswell as memory
requirments. Textures which have been included in Image Lists (see the Image List
Manager (link)) will automatically be marked as being used.
Selecting this button will bring up a standard Windows File Requestor which will allow you to
specify which Image File to load. Only .BMP, .JPG and .TGA files will be allowed to be
loaded.
This will Import an Image stored in a Future Pinball Resource Library. As with
Import, the Image will be physically imported. Selecting this button will bring up the following
File Requestor asking which Library to load the Image from.
Selecting the Library you want to use, the Texture Manager will then display the contents of
that library (Note. It will only display contents of the same type as what you are wanting to
import (in this case Images). Although the library can contain other types (i.e. Sounds,
Models) only Images in this instance will be listed.
Use your Mouse to Select which Images to Import into your table. You can HOLD DOWN
Control to select Multiple Images to import at once.
This works exactly the same as , but it will Link to the Image
instead of Physically Importing it. When a user tries to load a table where the library can't be
found, then the following Warning Dialog is displayed. If you are Linking to any non-standard
Libraries (Libraries created by other table developers you must ensure that the users of your
table either have that library or you include that library as part of your table release.
Image Management (For these options to work, a Texture must be selected
from the Texture List)
This will Reimport an Image over the selected Texture. This is mainly for updating
one of your textures when you have changed it with an external graphics package (such as
PaintShopPro, PhotoShop or Gimp). Clicking on this button will bring up the following dialog
which will ask if you are sure you wish to Replace the current texture
Clicking yes will bring up a file requesting asking for the new file. The Texture Manager will
automatically work out if you originally imported the image from your hard drive or a
Resource Library File. You then Re-Import your new Image in the same manner as
described above.
This allows you to remove (delete) a Texture that you no longer need (or wish) to
use. This will make your Table size much smaller. Clicking on this button will bring up the
following dialog which will ask if you are sure you wish to Delete the current texture
The Texture Manager doesn't actually delete the Texture from your Hard Drive (or from a
Resource Library). It only removes it from the Table.
If you HOLD DOWN Control when clicking , then the Texture Manager will Delete
ALL Textures from the Current Table. This is useful if you wish to start again with a full set of
new textures.
This allows you to remove (delete) any Textures which where marked as being
unused the last time the table was run (The unused column will be populated). This will
make your Table size much smaller and increase loading time and memory requirements.
Clicking on this button will bring up the following dialog which will ask if you are sure you
wish to Delete All of the unused textures.
The Texture Manager doesn't actually delete the Textures from your Hard Drive (or from a
Resource Library). It only removes it from the Table.
Will allow you to rename a Textures symbolic name (which is used throughout the
Future Pinball Editor). The currently selected Texture name in the Texture List will be
highlighted and you can type in a new name. Press Enter to Finish off.
This allows you to Export (i.e. Save to Disk) a Texture. Use this when you wish the
change the graphics of an existing Image where you don't have the original image on your
hard disk.
Selecting a texture in the Texture List will show you the Width and Height (in pixels) and the
amount of Video Ram (VRAM) required for this texture (once it has been converted to a
format compatable with your video card). This allows you to see at a glance the
requirements for each texture on the video card.
As Future Pinball (and computer games in general) require power of 2 textures, if the
texture is not a power of 2 then the Image Information panel will show you the sizes (in
brackets) that Future Pinball will resize your image in order to comply with the power of 2
rule. Resizing the image does slow down Future Pinball and only a quick approximate
resize algorithm is used. For best results it is recommended to use an external Image
manipulation program to resize the image appropriately.
Clicking on the Transparent Colour Selection will bring up the Colour Selection Dialog.
Choose the Colour you would like to use.
Extra Flags
This option allows you to specify if the texture is allowed to use any hardware
ST3C compression (on your video card or the video card of the person playing your table) if
the ST3C option is enabled in the Video Preferences of Future Pinball. ST3C compression
is good for ensuring that the texture doesn't require as much video memory (for video cards
with a small amount of RAM) but it does reduce the quality of the texture. For the majority of
textures this isn't really noticeable (certainly JPG and textures used as the back of the table)
but for the Main Playfield Texture I recommend that this option be turned off as you will want
the best quality rendering for the main Image.
This option allows you to specify to specifically disable any texture filtering
applied on a per texture basis. This is extreamly important if the texture is to be used on the
DMD display object (either type). Without disabling the filtering the image may be blurred
(depending on the person playing your table video preferences)
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
The Sound and Music Managers
This Section of the Manual covers both the Sound and the Music
managers as they are essentially the same, differing only in the type
of data they allow you to include with your table. If you are familiar
with the Texture Manager, the Sound/Music managers will be very
simple to use as they work in exactly the same fashion.
Future Pinball support the .WAV (Windows Wave) and .OGG (Ogg
Vorbis) format for Sound effects and the .MP3 and .OGG formats for
Music Files. For Music I recommend that the Ogg Vorbis format be
used as it compacts better than MP3 while providing better sound
quality. It also Loops a lot better than MP3 making it more suitable
for theme music which plays repeatedly in the background. Ogg
Vorbis will also compress Sound Effects much better than the WAV
format.
Sounds and Music can either be physically included into the Table
file (making the file size bigger) or linked to a Future Pinball
Resource Library. Libraries allow You (The Table Designer) to use
common resources pooled into a single external file. The benefits of
this is that these resources can be enhanced and all tables which
use them will automatically use the latest version.
You will first need to select a Item First before some of the
functionality of the Sound / Music Manager becomes available.
Extra Flags
There are currently no Extra Flags for Sounds / Music Files at
the moment.
Will stop any sound (mainly for long Music files) being
currently played.
Clicking yes will bring up a file requesting asking for the new file.
The Sound / Music Manager will automatically work out if you
originally imported the file from your hard drive or a Resource
Library File. You then Re-Import the new File in the same
manner as described above.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
The Model Manager
Model can either be physically included into the Table file (making the
file size bigger) or Linked to a Future Pinball Resource Library.
Libraries allows You (The Table Designer) to use common resources
pooled into a single external file. The benefits of this is that these
resources can be enhanced and all tables which use them will
automatically use the latest version. For Models is it
RECOMMENDED that you always link to the Model Library supplied
with Future Pinball.
If you are familiar with the Texture Manager then the Model manger
will be very simple to use as it works in exactly the same fashion.
In order for the Used column to be populated the table must first
be run. This marks the models used by the table. You can use
this information to remove un-needed models from your table
which will help reduce loading times aswell as memory
requirments.
Clicking yes will bring up a file requesting asking for the new file.
The Model Manager will automatically work out if you originally
imported the file from your hard drive or a Resource Library File.
You then Re-Import the new File in the same manner as
described above.
The Model Manager doesn't actually delete the Models from your
Hard Drive (or from a Resource Library). It only removes it from
the Table.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
The Image List Manager
The Image List Manager allows you to create Animated Image Lists that
can be use for the Overlay Table object. These lists contain references
to Images that have been included into your table via the Texture
Manager. For More Information about Importing Images please see the
Texture Manager (link). It is not necessary that the dimensions of each
image being placed in the list be the same, as the objects which use the
Image List will scale the image to be correct.
Image Lists (and the Overlay or STA objects) allow you to create Page
Flipping Animations on either the Backbox (Translite) or the HUD
(Screen Overlay). For more information on this refer to the OverLay
Object (link) and/or the STA object (link).
Create New
Pressing the button will create a NEW Image list. A
Default Name of "ImageList1" will be given to the new list so you
may want to give it a more descriptive name. If "ImageList1"
already exists, then "ImageList2" is used and so on.
The Left Master Texture Selection List displays all the Textures
(Images) that have been loaded into the current table (via the
Texture manager). If you select an Item from this list, it will display
a small preview picture of that Texture.
The Right Included Image List displays all of the Textures that the
current Image List will use (as well as the frame index of each
Image)
This will exit the Image List Editor Dialog and return
back to the Image List Manager.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
The DMD Font Manager
DMD Fonts can either be physically included into the Table file
(making the file size bigger) or linked to a Future Pinball Resource
Library. Libraries allow You (The Table Designer) to use common
resources pooled into a single external file. The benefits of this is
that these resources can be enhanced and all tables which use them
will automatically use the latest version.
Dmd Fonts are created using the DMD Font Editor (link) and have a
.dmdf extention.
You will first need to select a Item First before some of the
functionality of the DMD Font Manager becomes available. A
Preview is shown of the currently selected DMD Font.
Clicking yes will bring up a file requesting asking for the new file.
The DMD Font Manager will automatically work out if you
originally imported the file from your hard drive or a Resource
Library File. You then Re-Import the new File in the same
manner as described above.
This allows you to remove (delete) a DMD Font file
that you no longer need (or wish) to use. This will make your
Table size much smaller. Clicking on this button will bring up the
following dialog which will ask if you are sure you wish to Delete
the current item.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
The Light List Manager
The Light List Manager allows you to create the Light Lists required
by the Light Sequencer. These lists contain which Lights the Light
Sequencer should use when processing its built-in effects. The Light
Sequencer basically performs the full table Light Shows seen in
many commercial pinball games. For more information on this, refer
to the Light Sequencer Object.
This Dialog Allows one to Create A New Image List, Edit an Existing
List, Rename a List and Delete a List.
Create New
Pressing the button will create a NEW Light list. A
Default Name of "LightList1" will be given to the new list so you
may want to give it a more descriptive name. If "LightList1"
already exists, "LightList2" is used and so on.
The Left Master Light Selection List displays all the Lights (or
objects which have a bulb) that have been created on the
current table. It also shows the Location of the Light (either the
Playfield or the Backboard) and if the Light is classified as being
a G.I. (General Illumination) object. This information will make it
easier to help plan which light to include depending on the
desired effect you wish the Light Sequencer to do.
The Right Included Light List displays all of the Lights in the
current Image List (as well as the location information as
described above)
This will exit the Light List Editor Dialog and return
back to the Light List Manager.
Ok
This will exit the Light List Manager Dialog and
return back to the Table Editor.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Library Resource Manager
The Library Resource Manager allows you to create and modify Future
Pinball Libraries. Libraries allow you (the Table Designer) allow you to
use common resources pooled into a single external file. The benefit of
this is that these resources can be enhanced and all tables which use
them will automatically use the latest version.
Libraries also allow you to separate your graphics, sounds, models and
music from the main table file. Thus if used right items which don't
change much (graphics, sounds) can be stored in a library and if you
need to make any changes to the table design or the script then you will
only need to let people have the updated table file (providing they
already have the libraries for your table)
Future Pinball comes with a few libraries which you can use. These
libraries contain common textures needed by the various objects,
common sounds and all the models available to be used on your table.
It is best not to modify the default libraries which come with Future
Pinball (they start with the letters 'fp') as these will be updated with each
release of the program. Although we split our various items into
separate Libraries, you don't need to do this as libraries support mixed
item types (images, sounds, etc.)
Library files (which end in a .fpl file extension) can be located either in
the Libraries sub-directory under the main Future Pinball Directory or
they can be in the same directory as the table you are trying to load.
When the Library Resource Manager is opened it will open up in a new
window.
File
New
Will create a new library file. You will be prompted to
enter the filename of the new library.
Open...
Save As...
Exit...
Library Contents
The Library List shows all of the items in the currently opened
Resource Library File. This window shows the symbolic name used
to reference the item, the Item type (which is either a Image,
Sound, Music or PinModel) and the original import path.
You will first need to select a Item before some of the functionality
of the Library Resource Manager becomes available.
This will allow you to re-import the item over the one in the library.
Clicking Yes will update the library while clicking No will skip this
item. When all the items in the library have been check the
following dialog will be displayed telling you how many items where
updated.
Obviously this function will only work if you have the original source
material used to create the library in the first place, but it's a very
quick way to update the entire library at once.
Resource Management (For these options to work,
a Item must be selected from the Library Contents List)
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
The Font (DMD) Editor
This part of the manual provides a simple overview of the DMD Font Editor and the functionality.
Dmd Fonts are required by the Dmd Display Object.
When you first open up the Font Editor, it will open up the in a blank state (i.e., no font has been
loaded).
Loading one of the Future Pinball Font Files (File / Load) that comes with Future Pinball will activate
all of the controls and display something similar to the following picture;
The Editor is made up out of the following major components:
This Section Describes the Menu options available to the Font Editor.
File
New
Will Create a New DMD Font (blank) for you to start working with.
Open...
Will Open up an existing Future Pinball Dmd Font. A standard windows File
Requestor will ask you for the dmd font file name to load. Future Pinball DMD
Fonts have the file extension of .dmdf
Dmd Fonts are named after their width and height and if they are proportional (p)
and include an outline or not (o).
Close
Will Close the currently active dmd font. If the font has been changed but not
saved, the editor will ask if you wish to save the font.
Will Save the font to disk. If you have created a new font (and thus it hasn't been
saved to disk previously), Future Pinball will ask you for a file name to save the
font to.
Save As...
This allows you to save the currently active table under a new file name.
Special
This will copy all UPPER case character (ie A - Z) to lower case a - z. As most
Pinball DMDs only use upper case characters this allows you to use lower case
letters in the script (when controlling the dmd object) without the character not
displaying. Selecting this option will bring up the following confirmation dialog;
Main Font Edit Window
This is the main window is which you use to draw the individual pixel components of the dmd
font (for the current selected character).
Character Preview
Character Editing
Editing Buttons
Button Description
Rotate
Rotates the current Characters dots in the direction clicked. Dots which
are rotated off the character will appear at the opposite side.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
The Script Editor
The Script Editor allows the Table Script (Visual Basic Scripting
or VBS) to be Created and Modified for the Current Table. This is
the main core of the table logic and allows the Table Creator to
create the rules which govern how the pinball plays. This section
of the manual only describes the functionality of the Script Editor
and not How to Script.
When the Script Editor is opened it will open up in a new window. This
Displays the VBS Script of the currently active table. The editor colour
codes the syntax of the script to allow for more easier reading of the
script.
The Script Editor contains all the standard editing functions found in most
Text Editors which allows the text to be selected, copied to the clipboard
and pasted from the clipboard
File
Script
The Compile Menu Item (or you can press F7) gives the script to
the Visual Basic Scripting Compiler built into Windows and asks
it to compile it. This allows for "SOME" errors to be found without
having to run the table. The Compile option will ONLY pick up
Language Syntax errors (ie incorrect VBS statements) and not
logical errors (how you use them)
Edit
Undo (or Control + Z)
If you exit the Find Dialog, then this option will use the last
known search parameters without having to bring up the
dialog again. (its a quick search)
View
Line Numbers
Expand All
Collapse All
Table
Will start playing the table but will also display the Debug
Window which displays any text given to it via the
AddDebubText script command. For more information see
the Global Scripting Commands Chapter
Preferences
Text Formatting
Will allow you to change the Tab Spacing used for any
Indentation.
Allows you to select the font used as well
as any font attributes (style, size etc) used to display the script.
Clicking on this will bring up the Font Selection Dialog which
displays the fonts currently installed in your Windows Font
directory. Select the Font you wish to use and click
Colour Formatting
Help
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Scripting Basics
This chapter is here to help you learn some of the basics when scripting a table for Future
Pinball. Table logic is scripted in Visual Basic Scripting Language (or VBS for short) via the
Microsoft Scripting Technologies built into Windows XP / 2000. Scripting is designed to be
simple but flexible enough to allow a wide vararity of Original Games to be created. Only a
limited subset of the Visual Basic Scripting Language is used as a lot of extra functionality is
provided by the game engine.
Unfortunately we can't teach you how to script. We can guide you by providing some helpful tips
as well as sample scripts. You can also look though the demo Sci-Fi Table to see how we have
scripted parts of the table as well as the new table script which provides a nice simple 4 player
frame work to use as a basis for your own game.
You can also download a Visual Basic Scripting Help file from Microsoft (link) which may help
you learn the language as well as some of the function calls which are built in to the language.
This help file is very detailed and hence may be complex to some people. It also covers a lot of
areas in the language that Future Pinball does not support, including advanced functions such
as Dictionaries, FileSystemObjects, and the Script Encoder downloadable from Microsoft's Web
Site.
Don't forget that Future Pinball is a Game Construction kit. It requires knowledge of Table
Design, Programming and Graphics. If you are unsure in some areas, then you might want to
join somebody else on the Forum and create a table together using skills that more people can
bring to the table design process.
Script Structure
The Scripting used in Future Pinball is event based. In other words, the script is only called
when something happens on the table (like when the ball hits a target) or for documented
global script events (like the user pressing a key on the keyboard). These are called
'Events'. The script has no main-line (which is normally common in most computer
programming languages) and only runs individual subroutines when an event occurs. If
multiple events happen at once, then the corresponding script subroutine will be called one
at a time. Thus you can be assured that only one part (subroutine) of your script is being run
at any one point.
Visual Basic Script puts these events into Subroutines. These events are detailed in the
Global Script Chapter (link) or in the various table component chapters. You can then
program the script to handle those events.
For Example:
or:
Sub MyDropTarget1_Hit()
' do something
End Sub
As mentioned above it is best to look though the example scripts throughout this manual as
well as the sci-fi / new table scripts supplied with Future Pinball.
Variables
Variables are used to hold values or data that your program can use in the script. These
variables must be defined at the beginning of the script. The DIM script command does this.
Thankfully VBS doesn't require you to specify the type (ie number, string, boolean) of the
variable but you should ensure that if you treat a variable as a number (or whatever) you
continue to do so though the entire script.
Script Example:
Dim MyScore
Dim MyText
There are also several predefined global variables, detailed in the Global Script Chapter
(link), which can be used in your script.
Accessing Table / Translite Components.
Most Objects that you can create on your table (or backglass) ie, Flippers, Kickers,
Plungers can be accessed in the script. You do this by using the name given to the
respective object in the Table Editor for the Name property field. This name should be
unique for the table (ie not used for any other object) and must not contain spaces.
Each object accessable by the script may have several properties and methods (functions)
which can be called from the script. Properties allow you to change characteristics of the
object and methods allow you to get the object to perform some sort of action. You will need
to refer to the appropriate object help chapter as every object is different but Future Pinball
does provide a common interface across all objects to help simplify what you need to
remember.
Script Example: calls the SolenoidPulse() method for the object on your table called
MyFlipper;
MyFlipper.SolenoidPulse()
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Global Script Commands and Variables
Future Pinball contains many Methods and built-in Variables in the Game Engine which you can
use to greatly simplify the scripting required for each table. This section details the Global Script
commands that you can use.
This section describes the global scripting methods (or commands) which are available for
you to use in the creation of your game.
BeginGame()
This method should be called each time the script wishes to start a new game. This will
clear the nvScore and nvSpecialScore variables (to zero) and ensure the camera is
looking at the right place. It also sets the fpGameInPlay to True. The Tilt/Nudging
mechanism will call the script while this flag is True.
EndGame()
This method should be called when a game has been finished. It sets the fpGameInPlay
to False.
LookAtPlayfield()
This method forces the camera back to its normal operational mode (where it follows the
ball on the playfield). Use this after using the LookAtBackbox() method.
LookAtBackbox()
This method changes the camera so it looks at the backbox instead of the playfield. This
is useful if you whish to show off some backglass animation or you have coded up your
own high score entry routines which use one of the built-in display types. This acts the
same as if the user had pressed TAB but it forces the camera change. You must issue a
LookAtPlayfield() command to return the camera to the playfield when you have
finished doing what you want the user to see on the backbox. Pressing TAB will not
change the camera angle. A lot of users may not like the camera being forcibly changed
on them so only use this when absolutely necessary.
The Visual Basic Script command ExecuteGlobal must be used to actually parse and
load up the script into the Visual Basic Scripting Language. After the script has been
loaded then you can call any functions or subroutines in the script as you would
normally.
Script Example:
This method will play a sound effect which has been imported into the table via the
Sound Manager (link). It uses the symbolic name assigned by the sound manager. Spot
sounds effects greatly enhance the realism of a game. There is no limit of the number of
sounds effects which can be played at once. Once a sound has started there is no way
to stop it. The playsound command is primary designed for mechanical sound effects. If
you want better control of sounds you will need to use the PlayMusic command.
A lot of Table objects in Future Pinball contain an auto-sound properties, but there may
be cases where you decide to script the sound effect.
Script Example:
Sub DropTarget1_Hit()
PlaySound "DropTargetDropped"
End Sub
The PlayMusic method allows you to play music files which have been imported into the
table via the Music Manager (link). Future Pinball supports up to 8 individual channels
for music. Each channel can be controlled via the script. This allows for multiple music
files to played at once mainly for the purpose of cross fading between music. For
example. A Table may play some in game music but want to fade into some multiball
music which there are multiple balls on the playfield.
Parameters;
If a parameter is not specified, then Future Pinball will use the default value for that
parameter.
When a Music channel has finished playing (due to the tune not repeating) then the
FuturePinball_MusicFinished() event will be called with the music channel id which
has just stopped.
Script Example:
Channel is the channel number to stop. This must be between 1 (default) and 8.
Script Example:
Volume
The Volume (a value between 0.0 (totally silent) and 1.0 (default) (full
volume) of the Music channel when the effect has finished processing. Note
that the volume is scaled depending on the master volume set by the user.
(via the Page Up and Page Down keys)
Time Time in Milliseconds (1000 = 1 second) to take to process this effect. (default
= 0).
If a parameter is not specified, then Future Pinball will use the default.
Script Example:
' Fade out the Main Music and Fade in the Multiball tune
PlayMusic 2, "MultiballMusic", TRUE, 0
EffectMusic 1, FadeOutAndPause, 0, 3000
EffectMusic 2, PlayAndFadeIn, 1, 3000
This script example starts playing the "MultiBallMusic" on channel 2 (at an initial Volume
of 0). It will then Fade Out any music playing on channel 1 and Fade in the Multiball
Music on channel 2 over a period of 3 seconds (3000 milliseconds)
For this functionality to work you must be using the nvScore and nvSpecialScore
variables.
CurrentPlayer is the current players score which should be used as consideration for a
high score. This must be between 1 (default) and 4.
Issuing this command will check to see if the specified CurrentPlayer score (either
normal score or the special score (if applicable) earns an entry in the high score table. If
so, Future Pinball will bring up one of the following displays which allows the player to
enter in their initials. The text used for the Special High Score is defined in the Game
Information dialog.
The Player has gotten a High Score as well as beaten the current Special High Score (if
Applicable)
The Player has gotten a High Score (but hasn't beaten the
The Player has beaten the Special High Score.
Special High Score or special high scores are not required)
While the user is entering their Initials Future Pinball will only report Flipper Button
Presses to the FuturePinball_KeyPressed() and FuturePinball_KeyReleased() global
script events. This will allow you to flip the flippers as the user selects their initials (which
is normal pinball behavior).
When the user has finished entering in there initials (or the current players score wasn't
high enough to make a highscore) then the FuturePinball_NameEntryComplete()
event will be called.
Please note that while the user is entering in their Initials then the table script
still runs in the background
(i.e., Timers expire, Music finishes)
SortHighScores()
This will sort the Current High Scores (The nvHighScore variables). Usually this is
handled automatically if you use the EnterHighScore() functionality built into Future
Pinball but if you are manually modifying the nvHighScore variables then you will need
to use this command.
Script Example:
Will display the KeyCode passed into the FuturePinball_KeyPressed() onto the Debug
Output Window.
If the Table is not being played in debug mode then this command will have no effect and
will be ignored.
LogDebugTextToDisk()
This command logs the Debug Text Trace History to Disk. This is saved to a file called
"fpDebugTextLog.txt" which is same directory as the currently loaded table. Use this
command if you wish to save large amounts of debug data as the debug window only
displays the last 20 lines issued. The contents of this log file is destroyed (cleared) each
time you issue this command. The Game must be in Debug Mode for logging to occur.
These script events are called from the Game Engine whenever something the script should
be aware off happens (such as the user pressing a key on the keyboard).
FuturePinball_BeginPlay()
This event is called in the Script when the table is just about to be run (after the user
presses the Play button). You should initialise any of your variables needed for your
game script here as well as set up any initial items you want to run as the table is first
turned on (such as Initial Display values, Attract modes, Light displays, etc.)
FuturePinball_EndPlay()
This event is called in the Script whenever the user want to exit the game player (they
have pressed ESC).
KeyCode contains the keycode of the Key which has been pressed by the user. For
more information on keycode see the Script Keycode Section (link).
Script Example:
In this script example, the script is checking to see if any of the flipper buttons (or the
plunger) buttons have been pressed. If so then it will activate those table objects.
KeyCode contains the keycode of the Key which has been released by the user. For
more information on keycode see the Script Keycode Section (link).
Script Example:
In this script example, the script is checking to see if any of the flipper buttons (or the
plunger) buttons have been released so it can then deactivate them.
FuturePinball_Paused()
This event is called in the Script whenever the user Pauses the game. What you do in
this event is up to you but you may want to fade out any music playing.
FuturePinball_UnPaused()
This event is called in the Script whenever the user un-pauses (resumes) the game.
The fpTilted global script variable is set (= TRUE) at this point and will remain set until
you clear it when you have finished handling the tilt.
Channel contains the channel index (a number between 1 and 8) which has finished
playing. The script can then either repeat the tune or start playing another tune (or move
into another game mode if the tune in question was a special fixed length for some sort
of table animation).
FuturePinball_NameEntryComplete( byVal Position, byVal
Special )
This event is called after the EnterHighScore() has finished. (Either by the player
entering in their initials or the score not making it into the high score table). This allows
the script to continue with the game flow once the high score stuff has completed. It also
allows the script to award bonuss (like an extra ball, free game) based on the type of
high score achieved.
Position The High Score Table Entry Position that the score (based on
CurrentPlayer passed into the EnterHighScore() method) made. This
value is between 1 (for the top high score) and 4 (for the last entry). If this
value is 0 then the player didn't make the High Score Table.
Special If 1 then the CurrentPlayer used for the HighScoreEntry() beat the Special
High Score (if applicable). If 0 then the user didn't beat the Special High
score or the special score isn't required
These Variables are global to the script and can be used in your Table Script.
Script Example:
' The player has won the jackpot
AddPoints(nvJackpot)
' reset the jacpot value to the default
nvJackpot = fpInitialJackpot
<Boolean> fpTilted
This variable (or flag) is set (ie = TRUE) when the user has tilted the table (by nudging
the table too hard). You may need to look at the state of this flag when processing some
script statements. (i.e., you may not want to allow the flippers to be flipped if the table
has been tilted). You will need to Clear this flag when your script has handled the Tilt
(however it sees fit). Clearing this flag will also set fpTiltWarnings to 0.
While this flag is set, objects such as Bumpers and Slingshots (which are automated
objects) will not work (ie the ball will bounce naturally off them). You should test the state
of this flag when handing any object events given to the script to ensure that the table
reacts accordingly to the state of the flag.
Future Pinball saves the contents of the following variables to disk so they are
persistant from game to game. Each table has a unique set of these variables.
This file is called the fpRam file and its file name is based on the table name (as
defined in the editor). This initial state of some of these variables is defined by
the Table information dialog (link).
<Integer> nvBallsPerGame
The variable contains the number of balls per game which the script should use. This
value is set in the Table Information Dialog (link).
<Integer> nvCredits
The variable contains the number of credits the machine has. The script should
increment this everytime a coin is inserted and decremented each time a game is
started.
Only values between 1 and 99 are accepted.
CurrentPlayer is the index of the players score (1 - 4) which you wish to use.
CurrentPlayer is the index of the players score (1 - 4) which you wish to use.
This variable allow you to retrieve the high score name for the specified index. This
value should be between 1 and 10.
<Integer> nvSpecialHighScore
These contains the Special high Score value.
<String> nvSpecialHighScoreName
This contains the name (initial) which make up the Special High Score. This name can
only be 3 letters in length. If you try to set this to a blank string (or a string which has a
length less than 3) then they will padded out with a '.' (period) character.
This can be used for any displays which you want to display the Special High Score.
This can be used for any displays which you want to display the Special High Score.
Script Example:
<Integer> nvJackpot
Contains the current value of the Jackpot. If there is no nvRam file for the current table
then is value is initialised to the value set in the Table Information dialog (link).
<Integer> nvTotalGamesPlayed
Contains the total number of games played (providing you increment it when a new
game is started). If there is no nvRam file for the current table then is value is initialised
to zero.
<Integer> nvTiltWarnings
Allows you to change the number of tilt warnings given to the script before the machine
tilts. Valid values are 0 to 9.
<Integer> nvR1 - nvR16
16 General Purpose Registers which can be used to store any numerical value you wish.
These can be used if you wish to save (between plays) special elements of your table.
(for instance, Awards which build between games). If there is no exiting nvRam file for
the current table these registers are set to 0.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Script Keycode Tables
This section give the key codes that the script is able to read in the
FuturePinball_KeyPressed( byVal KeyCode ) and FuturePinball_KeyReleased(
byVal KeyCode ) global script methods.
Not all keys are available to use used in the Script. Any Keys which have fixed
functionality (i.e., Function Keys, Tab, etc.) as described in the Game Key Preferences
Section (link) of this manual are not reported to the script. The Exception to this is the
Function keys, they can be used in the script providing SHIFT is held down first. Keys
assigned to the Table Nudge are also not available.
Alphabet Keys
Key Code Key Code Key Code Key Code Key Code
A 30 B 48 C 46 D 32 E 18
F 33 G 34 H 35 I 23 J 36
K 37 L 38 M 50 N 49 O 24
P 25 Q 16 R 19 S 31 T 20
U 22 V 47 W 17 X 45 Y 21
Z 44
Numerical Keys
Key Code Key Code Key Code Key Code Key Code
1 2 2 3 3 4 4 5 5 6
6 7 7 8 8 9 9 10 0 11
Special Keys
Key Code Key Code Key Code Key Code
UP 200 LEFT 203 RIGHT 205 DOWN 208
INSERT 210 DELETE 211
Function Keys
In order for function keys to be passed into the script (as they are generally used to
change the game camera), the SHIFT key must be held down first (ie SHIFT + F1)
will pass in both SHIFT and F1 into the KeyPressed and KeyReleased script
methods.
Key Code Key Code Key Code Key Code Key Code
F1 59 F2 60 F3 61 F4 62 F5 63
F6 64 F7 65 F8 66 F9 67 F10 68
F11 87 F2 88
Keypad Keys
Key Code Key Code Key Code Key Code Key Code
1 79 2 80 3 81 4 75 5 76
6 77 7 71 8 72 9 73 0 82
NUM LOCK 69 / 181 * 55 - 74 7 6
+ 78 ENTER 156 . 83
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Ascii Table
This section defines the Ascii Character set which can be used for
reference when scripting.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Special Graphic Processing
This chapter of the manual explains some of the more detailed types of
graphics processing that Future Pinball can perform as well as how
colours are used within the program. This section of the manual can get
slightly technical but I will try to explain it as simply as possible (even
though some of the principles do involve advance graphics
programming knowledge).
Texture Mapping
Texture Mapping is a process where a 2 Dimensional (2D) Image is
mapped (or wrapped around) a 3 Dimensional (3D) Model. All the
components you can place on your table in Future Pinball are
based on 3D models. Some have been designed by us and some
are generated by the program based of shapes you have laid out
using Shapepoints (link). 3D models are just that, Data that defines
a shape of an object in 3 Dimensional Space which has a X (left-
right), Y(up-down), and Z (near-far) axis. Models themselves don't
look like much until they have been texture-mapped (or skinned).
Take the following "Naked" Flipper (in all these examples, the
playfield reflections have been set to MAX to help illustrate various
items):
It doesn't look very good until you wrap a specially designed image
(or Texture) around the model;
After applying the texture to the flipper model, you will come up with
the following which is much nicer looking and starts to look like a
real pinball part.
Not all components in Future Pinball need to be Texture Mapped.
Objects like Lane Guides and Plastic Pegs look good as is, but of
course, you can apply a texture map to them if you wish.
Colours in openGL
As Future Pinball uses openGL as its Graphic Rendering
Engine it is very important that you understand how openGL
uses colours as it is different depending on if you are texturing
a model or you are not.
Sphere Mapping
Sphere Mapping is a computer type of rendering which real time
wraps a texture around an object using the camera as a reference
point. That means that if the camera moves, the resulting texture
will also move along with it. It was initially designed as a simple (but
very quick) form of environmental mapping where you can make an
object look like it's reflecting the surrounding environment (which is
horrifically expensive on the video card to render real time). Such
methods have been replaced with Box mapping which gives much
better results but Future Pinball does use it to one great advantage.
It can render extremely nice looking metal objects with the right
texture.
Crystal Rendering
Some Objects (Pegs, Lane Guides, Bumper Caps, Flashers, etc.)
have a Crystal Flag. What this does is render the object semi-
transparent so it can be seen though. A lot of modern day plastic
pegs are semi-transparent as well as a lot of Bumper Caps.
Enamel Mapping
Enamel Mapping allows for a special secondary texture to be
blended in when drawing the object. This texture (called an Enamel
Map) gives the impression of the object reflecting the environment
around it and can be used to great effect on the plastic surfaces in
a pinball as it can reflect the backglass (or distortions) into the
plastic itself. This changes as the player moves around the pinball
machine.
Enamel Maps can be made (in this case we will be reflecing the
trasnlite texture) by flipping the texture upside down and reducing
the colour strength. Note that enamel maps are blended in by
adding the colours together so you will want a very dark enamel
map else it will dominate the colours on the source texture.
Base Texture Enamel Map Texture
For a different effect like heat distortions of the plastic, then a splot
texture can be used (like the following example).
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Rendering Issues
As Future Pinball gives you quite a flexible design system, you will
come across some of these issues from time to time. All of these
rendering issues can be fixed with clever ordering of components on
the playfield using the Send to Back and Send to Front functionality
of the editor as covered in the Editor Functionality Chapter (link).
The order that 'transparent' objects are placed into the separate
rendering phase is very important and to achieve transparency.
The object is blended over any existing graphics; thus, the
correct ordering is required for multiple transparent objects
which need to be drawn over each other.
Of course if the Pegs are do not have the crystal flag set then
the ordering won't matter as the rendering engine only has to
render the one semi-transparent object (the plastic).
Pegs are Solid - No Issues
Of course some camera views may show a more low view of the
table. In the following example in the first picture, the far peg is
drawn last thus it draws over the front peg. Sending that peg to
the Back (so it is drawn first) fixes this rendering issue. This
issue is more rare but it is best to test your table at all the
available camera angles to ensure that no transparency ordering
issues exist.
Incorrect Correct
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Editor Preferences
This will Cancel any changes you have made and return
back to the Table Editor.
General Options
Always Draw Shape / Ramp Points
Colour Formatting
The coloring used for the various objects drawn in the Table
Editor can be changed to suit your own preferences. Clicking on
any of the selection boxes will bring up the Colour
Selection Dialog. Choose the Colour you would like to use.
The Game Key (and Controls) Preferences allow you to redefine what
keys are used to control the game when the table is played, as well
as to define how an attached Joypad can be used to play a table.
Joypads must conform to Microsoft HID (Human Interface Device)
standards as Direct Input™ is used to read in the joypad. All Modern
day Joypads will already conform to this standard. Please refer to
your joypad manual for setting up and calibration under Microsoft
Windows™.
This section of the Manual doesn't cover How to use the Definable
Keys in the Table Script or the General Game Controls. Please refer
to the Global Script Commands section (link) of this manual.
Clicking Game Keys and Controls (in the Preferences Menu) will
bring up the following dialog;
Game Keys
Pressing (or any other Game Key) will allow you to
change the Key used for that function. When clicked the button
will change to . At that point press the new key you wish
to use. The button will then display the new Key name. It is not
possible to use one of the Fixed Game Keys which are reserved
by Future Pinball (These Keys are Escape, All of the Function
Keys, Pause/Break, Tab, Page Up, Page Down and the Home
and End Keys.
JoyPad Controller
The joypad (or joystick) interface in Future Pinball will allow you
to control the various game keys via the joypad as well as the
Analog Plunger functionality built into the game engine. This
allows for very fine tuning of how far the plunger is pulled back
and thus how hard it hits the ball when released. As Future
Pinball joystick interface is aimed at Joypads (for a true console
experience) it relies on a spring centered thumb stick. Pulling
back on the thumb stick (towards yourself) will pull back the
plunger. You can adjust the Plunger by subtle movements of the
thumbstick. When you wish to release the plunger, then just
release the thumbstick (which will be spring centered) and any
ball in the plunger lane will be launched onto the playfield.
This allows you to specify how much Dead zone (Dead zone
is the amount of sway the joystick can have before it starts
registering movement). Not all Joypads center correctly and
this will allow you to tweak the amount of movement
required for your joypad. Most modern day Joypads auto
calibrate so generally the dead zone will not need to be
adjusted. The Dead Zone value (between 0.00 and 1.00) is
displayed next to the slider.
Left Flipper
Right Flipper
Insert Coin 1
Start Game
Special 2
Exit Table
Digital Plunger
Pause Game
Change Camera
Look at Backbox
Analog Plunger
Defines the Joypad Axis to use for the Analog Plunger. The
difference between the Digital and Analog Plunger depends
on the table which is being played. If the table being played
has a traditional pull type plunger then the Analog Plunger
will allow you to pull back the plunger to suit your own
needs. If the table as an auto-plunger then the analog
plunger will have little effect as it is a solenoid that hits the
ball and not your adjustment of the plunger. Selecting this
dropdown box will display a list of the available Analog Axis
(usually X, Y and Z) which can be assigned to this function.
Pressing this button will save the current settings as the
defaults.
TrackIR Controller
The Track IR ( by Natural Point ) interface in Future Pinball will
allows you to control the in game camera via subtle movements
of your head when wearing the Track IR headset. This allows
you to look around the playfield and up at the backbox without
having to press keys on your keyboard and provides a more true
to life pinball playing experience by giving the feeling of standing
in front of the machine. You may wish to adjust the Future Pinball
TrackIR profile to suit your own preferences aswell as disable the
Pause/Precision keyboard controls so they don't interfear with
Future Pinball.
Enable Track IR Support
When you run a table and you have the Track IR enabled,
then the default camera will be the Track IR camera which
will track your head movement. You can still change to one
of the pre-defined camera via pressing F1 - F8. Pressing
F11 we change back to the Track IR camera.
Player Height
This allows you to specify how tall the virtual player is when
standing in Front of the Machine. Adjusting this will allow to
change the default height of the Track IR camera is from the
playfield.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Video and Rendering Options
The Video and Rendering Options Dialog allows you to specify the screen
options used to render the Table (in the Game Player) and what sort of
level of detail to put into that render.
Clicking Video and Rendering Options (in the Preferences Menu) will bring
up the following dialog:
This will write your new preferences to the Windows Registry and
return back to the Table Editor. Any Changes made will immediately take
effect.
This will Cancel any changes you have made and return back to
the Table Editor.
Screen Resolution
This Allows you to selected the video resolution to play at. The
minimum screen width is 640x480 pixels. The Resolution selection
widow will change depending on whether or not Full Screen has been
checked as your video card will support different modes in this mode.
When you have the backbox displaying how you would like then
you will have to save the table (when returned to the editor) for
the settings to be saved so they can be used the next time you
run this table. Pressing Scroll-Lock again will exit the adjustment
mode. When in adjustment mode the translate and scale
positions are displayed on the second monitor.
Playfield / Backbox
Monitor
Allows you to choose which monitor (if multiple are availble) the
selected window (either Playfield or Backbox) is displayed on.
Resolution
Full Screen
If Ticked, then Future Pinball will play the Table (at the resolution
specified) at Full Screen (which generally runs faster than in
windowed mode). If not Ticked, then a Window on your Desktop
will be used.
Arcade Mode
If Ticked, then Future Pinball will render the table in Arcade Mode
(Designed for Homebrew cabinets) which draws the table in a
way which fills up the entire screen with a slight perspective
angle.
The monitor position will have to be adjusted (as described in
Use Second Monitor for Backbox above) to scale and streach the
view to fit your monitor/resolution (remember to save the table
after adjusting the settings). NOTE: This mode is more effective if
the rotation is set to 90 or 270 degrees. When Arcade Mode is
enabled extra options are available in the Monitor Adjust mode.
16bpp / 32bpp
Defines the number of Bits Per Pixel at which to render the Game
graphics The more bits the better it will look. This is ONLY valid in
Full Screen mode. 32bpp is a bit slower than 16bpp but much
nicer looking. This applies to both windows if you are using
multiple screens.
Vertical Sync
Rendering Options
All of these options allow for scalability of the rendered Table to suit
the horse power of the video card. As you upgrade you video card
Future Pinball will allow you to enhance each table without having to
get a better version of the table. Thus Tables will only look better as
your system specs increase.
Renders the Game Room which the Pinball Machine sits in. You
may wish to disable this feature if you wish to reduce the total
number of polygons the game engine has to process (and thus
helping it run faster).
Render Ornaments
Some Playfield Objects in Future Pinball can be marked as being
Ornamental (which means they are not essential to game play
but only provide eye candy). With this option enabled objects
marked as being ornaments will be drawn. If it is disabled (not
ticked), then Ornaments will not be drawn hence reducing the
total number of polygons the game engine has to process (and
thus helping it run faster)
Renders the Backboard reflection (of the translite) onto the Glass
(The Glass overlay option must be also enabled). This gives a
more true to life look but again some people may find it
distracting.
Changes the model used to render the actual pinball on the table.
If Enabled (the Default) a very detailed pinball is used otherwise a
low quality version is used. This can reduce the total polygon
count significantly (almost a 1000 polygons per ball) for tables
with multiple pinball's on the screen at once.
Ball Marks
If enabled, then the ball will have very subtil markings on it which
help show off how the ball is rolling on the table.
This enables (providing you video card support it) non power of 2
texture support. This is a new feature of video cards which allows
the hardware to use a texture which is not a multiple of 2 (for
more information refer to the Texture Manager chapter). If your
video card supports this feature and the table has textures which
are non power of 2, then they can be used nativly and don't have
to be scaled by the software to the correct size. This reduces the
amount of memory required by the game aswell as texture
bandwidth which means it can be processed faster. Note that
some older video cards say that they support this option but don't
support it 100%. If you get rendering issues with this option
turned on then obviously turn it off.
This will disable GLSL Shader support in Future Pinball (if your
video card supports it). Future Pinball uses customer GPU
programs (called shaders) to perform some rendering (such as
the DMD) aswell as to gain speed advantages. You can disable
shader support if you wish via this option. Please note that some
functionality in Future Pinball will either be reduced or not
available with Shaders turned off.
Defines how ROUND a round light looks. The higher the number
the better it will look but it will also require more polygons to be
drawn. You can select from 16, 24, 32 (Default) and 64.
As with Round Lights, this defines how round a rubber looks. You
can select from 8, 16 (Default), 24, 32 and 64. 8 Will make the
rubber appear slightly hexagonal while 64 will look very nice
indeed. Of course the higher the number the more polygons and
as rubbers are very common on Pinballs it can have a great
effect on the run-time speed. This render shape of a rubber
doesn't affect the collision shape of it (which is perfectly round)
Sides on Rubbers
Defines how round a Wire Guide is. You can select from 6, 8, 12
(Default), 16 and 20. Again this increases the total amount of
Polygons needed to be processed.
Model Quality
Quality Description
Always use the LOD (Low Polygon Model) at all
Low
times. (if a LOD model exists)
/ /
These 3 buttons allow you to quickly preset all the above values
to either their Minimum, Medium (Defaults) or Maximum values.
Rendering Quality
High Quality Textures
If this option is set (Checked), then Future Pinball will use the
Textures in the current table to their best detail. If the Flag is not
checked the Future Pinball will scale each texture in Half to
reduce the Texture memory required in the video card (this
reduces by 4 the memory required for each texture). This allows
for more textures to be stored on low spec systems without
swapping between the System Ram and the Video Ram.
Texture Filtering
Filtering Description
The Texture is drawn as is. If it drawn larger than the
None source texture, then it is pixel expanded which may
look blocky.
Bilinear interpolation is a process that enhances
textures that would normally be larger on-screen
than in texture memory, i.e. a single texel is used for
Bilinear
more than one screen pixel. Regular texture
(Default)
mapping would appear to be 'blocky' in this case.
Bilinear interpolation reduces the blockyness by
interpolating between pixels.
Like Bilinear Filtering, this is used to smooth flat
surfaces by averaging the colors of adjacent pixels,
which blurs them and removes blockiness when
Trilinear
examined closely. Trilinear also takes into count the
distance of the texture from the camera and blurs it
more if it is far away.
Z-Buffer Depth
Anisotropic Filtering
Antialiasing
Both nVidia and ATI now support this type of filtering in hardware,
but each approaches the problem somewhat differently, and this
has repercussions both in overall performance and in rendered
scene quality.
Rendering Options
Hardware Lights To Use
You can select how many Hardware Lights to use (the default
being 2). 0 Means no Hardware Lights. Future Pinball will use up
to a maximum of 7.
Preference is always given to the closest Lit Flashers (to the
camera) when allocating Hardware Lights (this is done real time)
Flares on Flashers
If this option is enabled, then Future Pinball will draw a Halo Flare
(an extra Alpha Blended graphic) over a Lit Flasher greatly
enhancing the look of the flasher when lit. Off course it provides a
little more work for the video card and you may wish to disable
this option if your video card is struggling to render fast enough.
Camera System
Default Camera
Camera Description
Full Shows 80% of the Table and will pan up and down to
Table 1 follow the closest ball at the Top of the Playfield.
Full As with Full Table 1, but the camera is positioned
Table 2 Higher off the Playfield.
The Camera will closely follow the ball only showing
Scrolling
about a 2/3 of the Playfield. The Playfield will appear to
1
scroll up and down.
As with Scrolling 1, but the camera is positioned Higher
Scrolling
off the Playfield and will show slightly more of the
2
Playfield.
Low The Camera is positioned just behind the lower Flippers
Angle 1 and will pan up and down following the Closest Ball.
Low As with Low Angle 1, but the Camera will move along
Angle 2 the Glass following the ball as it Traverses the playfield.
Fixed The Camera shows the Entire table and is fixed in
View place.
If Enabled (The default) then the camera will pan up and down to
follow the ball. If Disabled then the camera will remain static.
Processor Affinity
Set Threading to Single Processor (only applicable to multicore
processors)
If this option is set (Checked), then Future Pinball will only use a
single processor when playing a game (the Editor will still be
multi-threaded). This * MAY * improve performance on your
machine though this is highly subjective due to constantly
changing games and display drivers which are moving to multi-
core setups.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Table / Playfield
The Table (or Playfield) is what the ball rolls on. It is usually
brightly textured with graphics and provides the base for all
other objects in a pinball machine to bolt to.
You can alternately select between the table view and the
translite (backglass) view by pressing the Translite button on
the left tool bar. Depending on the view selected the bottom
object palette toolbar will enable or disable certain objects as
some objects can only be placed on certain views.
The Table (or Main Playfield) is automatically created for you (and
there is no way to delete it). The Table view in Future Pinball also
shows the cabinet thickness as well as the lock down bar.
Name
Grid Size
Playfield Colour
Playfield Image
Width
Table Slope
Glossiness
Machine Type
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Translite / Backglass
The Translite (or Backglass) is the the glass within the front of the
backbox, with ink artwork silk-screened onto the back of it. Since it is the
most visible part of the game and has to attract players, the artwork is
often spectacular.
You can alternately select between the table view and the translite
(backglass) view by pressing the Translite button on the left tool bar.
Depending on the view selected, the bottom object palette toolbar will
enable or disable certain objects as some objects can only be placed on
certain views.
The Translite view also allows you to place objects (such as score
displays) onto the backbox as well as onto the back board within the
cabinet as some game place flashers (or other objects) there.
The Translite view in Future Pinball also shows the backbox cabinet thickness as
well as the back board which sits underneath the playfield glass (and inside the
cabinet).
Selecting a blank area on the translite (where there is not other object) will select
the translite and bring up the following property sheet:
Grid Size
Allows you to change the size (or the spacing) of the grid.
Valid values range from 5 to 50 millimeters.
Translite Width
Translite Height
Translite Colour
Button Colour
Defines the colour of the Flipper and Start Buttons (on the
cabinet). It is best never to use Full Strength colours (i.e.,
where either the Red, Green or Blue components are at
their Limits) as this will adversely affect how the object is
Shaded by the Lighting system. For more information on the
use of Colour refer to the Special Graphic Processing
chapter (link).
Cabinet Image
Poster Image
The Translite view also shows the Virtual Screen (or HUD) which allows you to
position objects when are drawn onto the screen in a fixed position which
doesn't move when the camera does. An example of this is the overlay object
(link) which can allow you to place a little logo on the screen when is always
drawn over everything else.
The virtual screen is drawn in the Purple Guide Lines and is mapped to
whatever screen resolution the user decides to play your table in.
Note it is not possible to remove the Future Pinball icon drawn in the Bottom
Right hand of the HUD. The Newton Graphic will however fade out after 10
seconds of playing a table.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Surfaces
Surfaces in Future Pinball allow you to create areas for the Ball to Roll
on (such as secondary playfields) or to shape playfield plastics which
cover various parts of the table.
Surfaces are the fundamental building block when designing your table as they
allow you to create height on your table. As other playfield objects can only be
attached to surfaces, then you will need to create Surfaces / Plastics for them to
sit on.
When you create a Surface on your table, a simple four cornered surface will be
created onto the table workspace. As surfaces are shapepoint based, you will
need to be familiar with shapepoints (link) before continuing.
Selecting the surface will bring up the following property sheet:
Name
Top Colour
Top Texture
Side Colour
Side Texture
Automatic Texture
Coordinate
Texture Coordinate
Render object
Top Height
Bottom Height
Dropped
If Enabled (Ticked ) then the object will afftect the ball (ie
the ball will bounce off it). If disabled then the ball will roll
though the object even if it is being drawn (see the
Render Object property above)
Material Type
Surface is a Playfield
Playfield
Enamel Map
<Boolean> .Render
This allows you to turn On (or Off) the render state of the object
(making the object vanish if set to FALSE). If the .Collidable
property is enabled (set to TRUE) then the ball will still interact with
the surface even if the object is not rendered.
Script Example:
<Boolean> .Dropped
This allows the object to drop to its Bottom Height (The top of the
surface is still drawn). When a object is dropped the Collidable
state is set to FALSE (aswell as enabled when you set the
.Dropped property to FALSE).
Script Example:
Script Example:
The Surface object doesn't have any Methods than can be called via
the script.
_Hit()
This event is signaled to the script whenever the Ball Hits a the
surface (providing the Generate Hit Event property is set)
Script Example:
Sub MySurface_Hit()
PlaySound "HitSound"
AddPoints(250)
End Sub
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Walls (or Guides)
When you create a Wall on your table, a simple straight Wall is created on the
table workspace. As Walls are shapepoint based, you will need to be familiar
with shapepoints (link) before continuing. You can add more shapepoints to
the Wall and shape it as you wish.
Selecting the Wall will bring up the following property sheet:
Name
Top Colour
Defines the colour of the Top of the Wall. If the object is
to be rendered with a texture, then the texture will be
tinted with this colour. If the object has no texture, then it
will be rendered in this colour. It is best never to use Full
Strength colours (i.e., where either the Red, Green or
Blue components are at their Limits) as this will
adversely affect how the object is Shaded by the
Lighting system. For more information on the use of
Colour refer to the Special Graphic Processing chapter
(link).
Top Texture
Side Colour
Side Texture
Automatic Texture
Coordinate
Texture Coordinate
Render object
Surface
Height
Width
Dropped
Material Type
This Section describes the object and how it can be accessed and
controlled via the script at run-time. Note that you access the object via the
name given in the Name property field
<Boolean> .Render
This allows you to turn On (or Off) the render state of the object
(making the object vanish if set to FALSE). If the .Collidable
property is enabled (set to TRUE) then the ball will still interact
with the surface even if the object is not rendered.
Script Example:
<Boolean> .Dropped
This allows the object to drop into the surface that it is attached to
(The top of the wall is still drawn). When a object is dropped the
Collidable state is set to FALSE (aswell as enabled when you set
the .Dropped property to FALSE).
Script Example:
<Boolean> .Collidable
If this property is TRUE then the ball will be affected if it hits this
wall (aswell as generating a _HIT() event). If set to FALSE then
the ball will ignore this wall and roll though it.
Script Example:
' allow the ball to pass through the object
MyWall.Collidable = FALSE
The Wall object doesn't have any Methods than can be called via the
script.
_Hit()
This event is signaled to the script whenever the Ball Hits a the
Wall (providing the Generate Hit Event property is set)
Script Example:
Sub MyWall_Hit()
PlaySound "HitSound"
AddPoints(250)
End Sub
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Wire Guides
When you create a Wire Guide on your table, a simple straight guide
is created on the table workspace. As Wire Guides are shapepoint
based, you will need to be familiar with shapepoints (link) before
continuing. You can add more shapepoints to the guide and shape it
as you wish.
Colour
Texture
Allows you to wrap a texture around the
object. Textures are imported into the
Table via the Texture Manager (link).
Selecting a Texture will also show a small
preview picture of the texture. In the case
of the Wire Guide object, you will only
need to texture it if you want a Metal Look.
Sphere Mapping
Mark As Ornamental
Surface
Height
Width
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Lane Guides
When you create a Lane Guide on your table, the Lane Guide model
will be drawn onto the table workspace.
Selecting this model will bring up the following property sheet:
Model
Texture
Colour
Rotation
Surface
Offset
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Pegs
When you create a peg on your table, the peg model will be drawn
onto the table workspace. As covered in the Main Editor Functionality
chapter of this manual (link) the purple guide line is there to let you
know where to wrap a rubber around the object.
Selecting this model will bring up the following property sheet:
Model
Texture
Crystal
Colour
Mark As Ornamental
If the Peg is non essential to game play (ie
it's not holding up a critical rubber) and is
purely eye candy for your table to look
good, you may wish to enable this flag so
people with lower spec machines can turn
off ornament rendering to ease the load on
their machines. If the Peg is hidden by a lot
of other objects and rarely seen during
game play you may also wish to enable this
flag. It is important to note that ornamental
objects will not be collidable with the ball.
Rotation
When Hit
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Ornaments
When you place an ornament on your table, the selected model will
be drawn onto the table workspace.
Notice that ornaments are drawn in a different colour to usual
objects. This is so you can tell at a glance what objects are marked
as being ornamental (ie non essential to game play) and those
objects that are essential (ie Flippers, Pegs, etc.). The colour used to
draw ornamental objects is defined via the Editor Preferences (link).
Selecting this model will bring up the following property sheet:
Model
Texture
Colour
Mark As Ornamental
Rotation
Surface
Offset
Playfield
Auto-Plungers are used to launch a ball onto the playfield. They are a
modern day alternative to a manually controlled plunger. This sort of
object is also commonly used for the kickback mechanism which
returns the ball to the main playfield if it is lost down an outlane.
When you create a Auto-Plunger on your table, the object will be drawn onto
the table workspace.
Name
Texture
Colour
Y
Defines the Y location (again in millimeters from the
top left hand corner of the playfield) of the object on
the Table.
Rotation
Playfield
Strength
This field allows you the set how strong the the
Auto-Plunger is (i.e., how hard it hits the ball). A
Slider Position to the Left of the Middle is weaker
and Stronger if it is towards the Right.
Length
Alignment Description
Short The V-Cutout is 220mm in Length.
Regular The V-Cutout is 305mm in Length.
Long The V-Cutout is 390mm in Length.
Texture
Colour
Solenoid
This Section describes the object and how it can be accessed and controlled
via the script at run-time. Note that you access the object via the name given
in the Name property field
.SolenoidOn()
This Method will turn ON the Solenoid for the Auto-Plunger. This
will cause the Auto-Plunger rod to move forward which if it
makes contact with a ball, will help push the ball in the direction
of the auto-plunger. It is not possible to permanently turn on the
solenoid for a Auto-Plunger as this method will call the
SolenoidPulse() method.
If the Auto-Plunger object is being used for a kickback
type mechanism, obviously
(like a real pinball) careful timing is needed between a ball
hitting an outlane switch
and the solenoid being fired (and thus hopefully hitting
the ball).
Script Example:
.SolenoidOff()
This Method will turns OFF the Solenoid for the Auto-Plunger.
Script Example:
MyAutoPlunger.SolenoidOff()
Script Example:
' The User Has Pressed A Key on the Keyboard.
'
Sub FuturePinball_KeyPressed(ByVal KeyCode)
' The Player wants to launch the ball
If (KeyCode = GetKeyCode(PlungerKey)) Then
MyAutoPlunger.SolenoidPulse()
End If
End Sub
or;
MyAutoPlunger.SolenoidPulse(500)
The Auto-Plunger object doesn't have any Events which it can call
via the script.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Bumpers
Bumpers are round, mushroom-shaped objects set into the playfield of most pinball
machines. They fall into two categories: active and passive. Both types register a hit when
the a ball collides with them. Active bumpers, the most common, are round mushroom-
shaped targets set into the playfield which forcefully kick the ball away when struck.
Passive bumpers look similar to active bumpers, but do not kick the ball when hit. Active
bumpers are sometimes called Jet, Thumper or Pop Bumpers. Bumpers also contain a
bulb within them which lights up the Bumper Cap either when the bumper is hit or for
specific game rules.
As with all Objects which contain a Light Bulb (Lights, Bumpers, Flashers), Future Pinball
can draw a Halo around the bulb when it is illuminated. This effect is commonly used in
video games and greatly enhances the visual quality of the light as well as the surrounding
areas.
When you create a Bumper on your table, the object will be drawn on to the table workspace. The
Purple Guide line shows the position of the Trigger Skirt (if the Bumper has one).
Selecting this object will bring up the following property sheet:
Name
Sets the name of the object which is used to reference the object via
Script events. The name must be unique for the table and may not
contain any spaces. As with all Object Names, you should give a
descriptive name to your object.
Cap Model
This field shows the list of available models which have been loaded into
your table. Future Pinball contains a large collection of models in the
libraries supplied. You can import more models into your table by using
the Model Manager (link). Only models which have the same object type
of the current object are listed. Selecting a model will also show a small
preview picture of the selected Model.
Cap Texture
Allows you to wrap a texture over the Cap. Textures are imported into
the Table via the Texture Manager (link). Selecting a Texture will also
show a small preview picture of the texture. For Crystal caps you won't
need to specify a texture.
Crystal
Lit Colour
Defines the colour of the Cap when the Bulb within the Bumper has
been turned ON (more of this below). If the object is to be rendered with
a texture, the texture will be tinted with this colour. If the object has no
texture, it will be rendered in this colour. It is best never to use Full
Strength colours (i.e., where either the Red, Green or Blue components
are at their Limits) as this will adversely affect how the object is Shaded
by the Lighting system. For more information on the use of Colour refer
to the Special Graphic Processing chapter (link).
Unlit Colour
Defines the colour of the Cap when the Bulb within the Bumper has
been turned OFF (more of this below). The same colour guidelines
should be followed as described by the Lit Colour.
Base Model
This field shows the list of available models which have been loaded into
your table. Future Pinball contains a large collection of models in the
libraries supplied. You can import more models into your table by using
the Model Manager (link). Only models which have the same object type
of the current object are listed. Selecting a model will also show a small
preview picture of the selected Model.
Base Colour
Defines the colour of the Base. It is best never to use Full Strength
colours (i.e., where either the Red, Green or Blue components are at
their Limits) as this will adversely affect how the object is Shaded by the
Lighting system. For more information on the use of Colour refer to the
Special Graphic Processing chapter (link).
If enabled (Ticked ), the Bumper Base will not include a Metal ring
which when triggered (via the Trigger Skirt) will forcibly kick the ball
away from the Bumper.
Trigger Skirt
If enabled (Ticked ), the Bumper Base will also include a Trigger Skirt
which allows you to be Notified that the ball has hit the bumper (more
specifically the skirt). If the Bumper is Active (it not Passive), the ball will
also be forcibly kicked away. (This behavior can be overridden in the
script)
Skirt Colour
Defines the colour of the Skirt. It is best never to use Full Strength
colours (i.e., where either the Red, Green or Blue components are at
their Limits) as this will adversely affect how the object is Shaded by the
Lighting system. For more information on the use of Colour refer to the
Special Graphic Processing chapter (link).
Defines the X location (based in millimeters from the top left hand corner
of the playfield) of the object on the Table.
Defines the Y location (again in millimeters from the top left hand corner
of the playfield) of the object on the Table.
Rotation
This field allows you to draw the object at a different rotation on the
Table. Valid values range from 0 to 359 degrees. The rotation affects all
of the various components of the Bumper (Cap, Base, Ring and Skirt).
Surface
Defines what Surface (or Wall) the object is attached to. If no Surface is
specified, the Bumper is assumed to be attached to the Main Playfield.
For more information on this refer to the Surface Object (link).
If Enabled (Ticked ), the object will also reflect off the Surface it is
attached to (providing that surface is marked as being a 'Playfield'). If
you don't want the object to reflect off the playfield (providing the user
has that video option enabled), uncheck this option. If the object isn't
generally visible you may, with to disable reflections for this object to
save on the rendering processing.
If Enabled (Ticked ), and the Bumper has a Trigger Skirt, the Bumper
Bulb will Momentary invert its current state (if it is On, it will turn Off, etc.)
for a fraction of a second. This allows simple flashing of the bulb each
time the bumper is hit by a ball (which is a common effect in pinball
machines).
State
This field allows you to set the Bumpers Bulb State. Each Bumper has a
bulb built into it which when used will illuminate the Bumper Cap with the
Lit / Unlit colours (depending on the state). The Bulb (like a real pinball)
takes around 30 milliseconds to go to full brightness and thus the Cap
will gradually Brighten or Dim. If the Halo option has been enabled by
the Player, a Halo is also drawn over the Bulb which greatly enhances
the visual quality of the lighting effect.
Blink Pattern
Defines a special Blink Pattern the Bulb will follow when the State has
been set to BulbBlink. This pattern is defined out of a string made up
out of 0s (turn bulb Off) and 1s (turn bulb On). At least 2 pattern states
must be given (i.e., 10, 01, 11 or 00) with a maximum of 32 individual
states. Blink Patterns allow for some very creative light changes to be
made especially which using in conjunction if other objects which contain
a light bulb (Lights, Flashers, Bumpers, etc.)
Blink Interval
Defines the Period (in milliseconds) Future Pinball takes to process each
state within a Blink Pattern. When the Blink Pattern has been fully
processed it will begin again from the start and keep on repeating while
ever the State is BulbBlink. The Interval must be at least 25
milliseconds.
Strength
If the Bumper is 'Active' and has a Trigger Skirt assigned to it, this field
allows you the set how strong the Bumper Solenoid is (i.e., how hard it
hits the ball away). A Slider Position to the Left of the Middle is weaker
and Stronger if it is towards the Right.
Please note that there will always be a slight variance in power applied
due to the fact that a pinball solenoid doesn't charge up at constant rate
each time it is turned on.
Solenoid
This field allows you to automate playing of a sound effect when the ball
hits the Bumper Skirt (if it has one) and the Solenoid Ring fires. Sounds
are imported into the Table via the Sound Manager (link). This
functionality removes the need for a PlaySound (link) script command.
This Section describes the object and how it can be accessed and controlled via the script at
run-time. Note that you access the object via the name given in the Name property field.
If the Light Sequencer is currently running on this object, changing the State
will not take effect until the Light Sequencer has finished running. When the
Sequencer has finished the Bulb will have the last State set via the script. For
more information see the Light Sequencer Object (link)
Script Example:
MyBumper.State = BulbOn
You can also use the State to help in game play decisions; i.e.,.
MyBumper.BlinkPattern = "10"
or:
MyBumper.BlinkPattern = "1101110"
Script Example:
MyBumper.BlinkInterval = 100
MyBumper.State = BulbBlink
MyBumper.BlinkPattern = "10"
MyBumper.BlinkInterval = 150
Script Example:
State sets the lit state of the bulb. Valid values are BulbOff, BulbOn or BulbBlink.
BlinkPattern allows you to define a special Blink Pattern the Bulb will follow when
the State has been set to BulbBlink. This pattern is defined out of a string made up
out of 0s (turn bulb Off) and 1s (turn bulb On). At least 2 pattern states must be given
(i.e., "10", "01", "11" or "00") with a maximum of 32 individual states. If the Bulb is
currently following another Blink Pattern, setting this will immediately change the
blink pattern over to the new one. If no string is specified, the current pattern in the
.BlinkPattern property is not changed.
BlinkInterval is a positive number and is the time it takes to process each state
within the Blink Pattern. The Interval must be at least 25 milliseconds and if no value
is specified, the current value in the .BlinkInterval property is not changed.
Script Example:
This method allows you to flash (turn the Bulb On and then Off again) the Bulb for a
number of milliseconds and then set the Bulb state to a defined value when that time
has elapsed. This effect is commonly used in Pinball when enabling a Bulb due to the
player completing a sequence on the table via following the game rules (though in
the case of the bumper object this isn't likely) as it is more noticeable than just
turning on a bulb.
TotalTime is a positive number and is the time in milliseconds to flash to the bulb for.
Ideally it should be divisible by the BlinkInterval parameter for a totally smooth
transition to the EndBulbState parameter.
BlinkInterval is a positive number and is the time to hold each Flash state for. The
Interval must be at least 25 milliseconds and if no value is specified, 75 is used.
EndBulbState defines the state of the bulb after the TotalPeriod has expired. If the
Bulb's .State is read which the bulb is flashing for the desired interval, it will return
the EndBulbState.
The following Solenoid based methods available to the Bumper are for Active Bumpers
only (and they contain a Bumper Ring). If the Bumper is Passive, these commands will
have no effect.
The Bumper kicking the ball is basically automatic. i.e., When the Trigger Skirt is hit by
the ball, the Bumper Ring will automatically trigger providing that the Solenoid is not
currently on or the global script variable fpTilted is not set (for more information on this
refer to the Global Script chapter (link)). It is possible to override this behavior in the
_Hit() event.
.SolenoidOn()
This Method will turn ON the Solenoid for the Bumper. This will move the Bumper
Ring downwards.
Script Example:
.SolenoidOff()
This Method will turns OFF the Solenoid for the Bumper Ring. If the Solenoid is
currently ON, it will return the Bumper Ring to its default position.
Script Example:
MyBumper.SolenoidOff()
Script Example:
MyBumper.SolenoidPulse()
or;
MyBumper.SolenoidPulse(500)
_Hit()
Please note that only the Trigger Skirt will get Hit() events via the script.
If the Ball has hit the Trigger Skirt of a Bumper, this event is ONLY called if the
Solenoid is OFF and the table is not tilted (the global script variable fpTilted is not
set). If the Solenoid is On, the ring is already down and it would be impossible for it
hit the Trigger Skirt (thus triggering the hit). If the Table is Tilted, the game engine will
not trigger automatic events (in this case, the solenoid firing and the ball being hit
back out into the playfield at force). For more information on the fpTilted variable
refer to the Global Script chapter (link).
Script Example:
Sub MyBumper_Hit()
PlaySound "BumperSound"
AddPoints(100)
End Sub
The same is also true if the 'Flash When Hit' property is enabled. The Bulb is primed
to flash when the _Hit() event is called. If you some reason you wish to override this
behavior in the script, issuing a MyBumper.State = MyBumper.State script
command with stop this from happening.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Diverters
When you create a Diverter on your table, the object will be drawn
on to the table workspace. A second version of the model will also
be drawn. This shows you how the Diverter will swing based on its
properties.
Selecting this object will bring up the following property sheet:
Name
Model
Texture
Sphere Mapping
Colour
Start Angle
Surface
Solenoid
.SolenoidOn()
This Method will turn ON the Solenoid for the Diverter.
This will move the Diverter around to reach the end of
its swing.
Script Example:
.SolenoidOff()
This Method will turns OFF the Solenoid for the
Diverter. If the Solenoid is currently ON, the Diverter
will return to its start angle.
Script Example:
MyDiverter.SolenoidOff()
Script Example:
MyDiverter.SolenoidPulse
or;
MyDiverter.SolenoidPulse(500)
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: EM Kicker
Em-Kickers are generally used to kick ball out onto the playfield from
either the Plunger lane or from a locking mechanism on the playfield.
When you create a Em-Kicker on your table, the object will be drawn onto the
table workspace.
Selecting this object will bring up the following property sheet:
Name
Texture
Colour
Rotation
Playfield
Strength
This field allows you the set how strong the the Em-
Kicker is (i.e., how hard it hits the ball). A Slider
Position to the Left of the Middle is weaker and
Stronger if it is towards the Right.
Length
Alignment Description
Short The V-Cutout is 220mm in Length.
Regular The V-Cutout is 305mm in Length.
Long The V-Cutout is 390mm in Length.
Texture
Colour
Solenoid
This Section describes the object and how it can be accessed and controlled
via the script at run-time. Note that you access the object via the name given
in the Name property field
.SolenoidOn()
This Method will turn ON the Solenoid for the Em-Kicker. This
will cause the Em-Kicker to swing on its axis which if it makes
contact with a ball, will help push the ball in the direction of the
Em-Kicker. It is not possible to permanently turn on the solenoid
for a Em-Kicker as this method will call the SolenoidPulse()
method.
If the Em-Kicker object is being used for a kickback type
mechanism, obviously
(like a real pinball) careful timing is needed between a ball
hitting an outlane switch
and the solenoid being fired (and thus hopefully hitting
the ball).
Script Example:
.SolenoidOff()
This Method will turns OFF the Solenoid for the Em-Kicker.
Script Example:
MyEmKicker.SolenoidOff()
Script Example:
or;
MyEmKicker.SolenoidPulse(500)
The Em-Kicker object doesn't have any Events which it can call via
the script.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Flippers
When you create a Flipper on your table, the object will be drawn onto
the table workspace. A second version of the model will also be
drawn. This shows you how the Flipper will swing based on its
properties.
Selecting this object will bring up the following property sheet:
Name
Model
Colour
Start Angle
Defines the start angle of the flipper (when
the Solenoid is OFF). Valid values range
from 0 to 359 degrees.
Swing
Surface
Strength
Elasticity
Speed Description
The Rubber is quiet Hard
Hard (Default) will have less impact on
the Ball
Intermediate Somewhere in between
Flipper Up
Flipper Down
This field allows you to automate playing of
a sound effect when the Solenoid is turned
OFF (after being turned OFF). Sounds are
imported into the Table via the Sound
Manager (link). This functionality removes
the need for a PlaySound (link) script
command.
.SolenoidOn()
This Method will turn ON the Solenoid for the Flipper.
This will move the Flipper Up to reach the end of its
swing.
Script Example:
Script Example:
MyFlipper.SolenoidOff()
Script Example:
MyFlipper.SolenoidPulse()
or;
MyFlipper.SolenoidPulse(500)
The Flipper object doesn't have any Events which it can call
via the script.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Kickers / Gobble Holes
When you create a Kicker on your table, the object will be drawn on
to the table workspace.
Selecting this object will bring up the following property sheet:
Name
Model
Render Model
Texture
Colour
Y
Defines the Y location (again in millimeters
from the top left hand corner of the
playfield) of the object on the Table.
Rotation
Playfield
Type
Type Description
The Ball is kicked out of
Directional the Kicker based on the
Rotation of the Kicker.
GobbleHole The Solenoid
commands have no
effect. It is only possible
to destroy a ball in this
type of kicker.
The Ball is kicked out of
the Kicker upwards. The
rotation property will
VerticalUpKicker
only affect how the
model is rendered on
the playfield.
Strength
Solenoid
Script Example:
MyKicker.CreateBall 255,0,0
Script Example:
MyKicker.CreateCaptiveBall()
MyKicker.CreateCaptiveBall 0,255,0
.DestroyBall()
This Method will Destroy (remove from the playfield)
any Ball in the kicker. If there is no Ball in the kicker
then this command has no effect.
Script Example:
.SolenoidOn()
This Method will turn ON the Solenoid for the Kicker. If
there is a ball in the kicker (and depending on the Type
property), then it will be kicked out. It is not possible to
permanently turn on the solenoid for a kicker as this
method will call the SolenoidPulse() method
Script Example:
.SolenoidOff()
This Method will turns OFF the Solenoid for the Kicker.
Script Example:
MyKicker.SolenoidOff()
Script Example:
MyKicker.SolenoidPulse()
or;
MyKicker.SolenoidPulse(500)
_Hit()
This event is called whenever a Ball rolls into the
Kicker. The event is still called even if the table is Tilted
(the global script variable fpTilted is set). For more
information on the fpTilted variable refer to the Global
Script chapter (link).
Script Example:
Sub MyKicker_Hit()
PlaySound "Drain"
AddPoints(100)
End Sub
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Plungers
Plungers are used to launch a ball onto the playfield. They are manually
controlled by the player who pulls it back and then releases it at the desired
point thus hitting the ball and putting it into play.
When you create a Plunger on your table, the object will be drawn onto the table
workspace. Only 1 plunger is allowed to be created on the table.
Electro-Mechanical,
WoodRail Machine
Solidstate or
WedgeHead Machine
It is extremely important that the plunger tip (the rubber) is not blocked by other
objects (walls, surfaces, etc.) on the table otherwise it will not be able to move
or it will stick. This is due to the true physics engine used in Future Pinball.
The Plunger can only be created on the Main Playfield and only at the front of the
machine. The Face plate (which is drawn on the outside of the cabinet) will
automatically follow the position of the Plunger as you move it Left or Right in the editor.
It is not possible to change the texture of the Face Plate.
Name
Model
This field shows the list of available models which have been
loaded into your table. Future Pinball contains a large
collection of models in the libraries supplied. You can import
more models into your table by using the Model Manager
(link). Only models which have the same object type of the
current object are listed. Selecting a model will also show a
small preview picture of the selected Model.
Texture
Plunger Colour
Strength
This field allows you the set how strong the the Plunger is
(i.e., how hard it hits the ball). A Slider Position to the Left of
the Middle is weaker and Stronger if it is towards the Right.
The V-Cutout also contains a hole for the Plunger lane switch.
Length
Alignment Description
Short The V-Cutout is 220mm in Length.
Regular The V-Cutout is 305mm in Length.
Long The V-Cutout is 390mm in Length.
Texture
Colour
If Enabled (Ticked ) then the object will also reflect off the
Main Playfield Surface. If you don't want the object to reflect
off the playfield (providing the user has that video option
enabled) then uncheck this option. If the object isn't generally
visible you may with to disable reflections for this object to
save on the rendering processing.
This Section describes the object and how it can be accessed and controlled via the
script at run-time. Note that you access the object via the name given in the Name
property field
The Plunger object doesn't have any properties which can be modified via the
script.
The Methods available to the Plungers
Script Example:
.LetGo()
This Method will release the plunger and if it has been pulled back (via the
Pull() method) then the plunger rod will quickly return back to its normal
position. If the Plunger Tip (the rubber) hits a Ball then it will be forced
upwards. This method is generally called from within the
FuturePinball_KeyReleased() event. For more information on this event
refer to the Global Script chapter (link).
Script Example:
The Plunger object doesn't have any Events which it can call via the script.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Popups
When you create a Popup on your table, the object will be drawn
onto the table workspace.
Selecting this object will bring up the following property sheet:
Name
Model
Texture
Sphere Mapping
Crystal
Colour
Rotation
Playfield
Solenoid
This Section describes the object and how it can be accessed and
controlled via the script at run-time. Note that you access the object
via the name given in the Name property field
.SolenoidOn()
This Method will turn ON the Solenoid for the Popup. If
the Popup is Down, this command will raise the object
so it is above the playfield. Only when the object is
above the playfield will it interact with the ball.
Script Example:
.SolenoidOff()
This Method will turns OFF the Solenoid for the Popup.
If the object is above the playfield, it will drop back
down into the playfield and will not interact with the ball
anymore.
Script Example:
MyPopup.SolenoidOff()
Script Example:
MyPopup.SolenoidPulse()
or;
MyPopup.SolenoidPulse(500)
The Popup object doesn't have any Events which it can call
via the script.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Round Rubbers
When you create a Round Rubber on your table, the object will be
drawn onto the table workspace.
Rubber Type
Metric Imperial
Rubber Size
(Millimeters) (Inches)
Tiny
9.525 3/8
(Default)
MiniPost 11.112 7/16
Post 19.05 3/4
Passive
44.45 1 3/4
Bumper
Colour
Surface
Offset
Elasticity
Speed Description
The Rubber is quiet Hard will
Hard
have less impact on the Ball
Intermediate
Somewhere in between
(Default)
The Rubber is quiet Soft and
Soft will rebound the ball much
further
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Shapeable Rubbers
Shapeable Rubbers are also designed to sit around the various Pegs in Future
Pinball. A Rubber has much more elasticity than other objects and affects the
ball the most when hit. Shapeable rubber also include special properties to
allow them to become Slingshots or to have Leaf Triggers.
When you create a Shapeable Rubber on your table, the object will be drawn onto the
table workspace. As Shapeable Rubbers are shapepoint based, you will need to be
familiar with shapepoints (link) before continuing. You can add or delete shapepoints to
the rubber and shape it as you wish.
As covered in the Main Editor Functionality chapter of this manual (link), Shapeable
rubbers are designed to be placed around the peg object and the peg object provides a
guide on how to place the rubber around the object.
Name
Colour
Offset
Slingshot Strength
Elasticity
Defines how much rebound the object puts into the ball when
the ball hits it and bounces off
Speed Description
The Rubber is quiet Hard will have less
Hard
impact on the Ball
Intermediate Somewhere in between
(Default)
The Rubber is quiet Soft and will rebound
Soft
the ball much further
Slingshot
To create either a Leaf Switch or Slingshot you will have to select a shapepoint on
the rubber. Right clicking the shapepoint will bring up the following menu.
Moving your mouse cursor over the Special Attributes sub-menu item will bring up
an other sub-menu. This gives you the option of making a Leaf Trigger (Single
Leaf) or Slingshot. Selecting either of these will create the specified object at that
location. (in the following example we have selected to create a Slingshot)
The editor will draw the corresponding Single Leaf or Slingshot model at that
location. The right mouse button context menu will also draw a check mark on the
selected property. This model will also be drawn when the game is played.
Obviously it is important that you design the shape of the rubber to accommodate
the shape of the attached Slingshot Hammer or Leaf trigger.
Single Leaf as also simply selected via the right mouse button context menu.
Future Pinball only supports one Slingshot Hammer per shapeable rubber. If you try
to assign another shapepoint to a slingshot, the editor will bring up the following
dialog. This allows you to either move the Slingshot to the new location or cancel
out of the change.
You are allowed up to 8 Leaf Switches per Shapeable Rubber (though most pinball
designs would only use 1 to 3 leaves). It is possible to know which leaf of a
shapeable rubber has been triggered (by the rubber being hit by a ball).
Setting the Shapepoint to the immediate Left of the this Leaf Trigger will move the
Leaf Trigger over to that shapepoint. As there must be at least one blank
shapepoint between shapepoints which have special attributes
You can set a second Leaf Trigger (Shapeable Rubbers support a maximum of 8)
to the object providing there is a blank shapepoint in-between. You can create extra
shapepoints to overcome this but remember that this may reduce the contact zone
of the leaf trigger (as described above)
Setting a blank shapepoint to either a Slingshot or a Leaf will automatically clear the
special attributes of the shapepoints either side of the shapepoint.
Setting the Event ID field for this shapepoint will allow you to input a number
(unique to this shapepoint/rubber) which can be used in your script (via the
Rubbers Hit() event) to know which leaf of the rubber was hit. (more of this is
covered below)
This Section describes the object and how it can be accessed and controlled via
the script at run-time. Note that you access the object via the name given in the
Name property field.
The Shapeable Rubber object doesn't have any properties which can be
modified via the script.
The Methods available to the Shapeable rubber are for rubbers which contain
a SlingShot Hammer element. If the rubber doesn't have a slingshot, these
commands will have no effect.
The Slingshot hammer is basically automatic. i.e., When the rubber is hit by the
ball, the slingshot hammer will automatically trigger providing that the Solenoid
is not currently on or the global script variable fpTilted is not set (for more
information on this refer to the Global Script chapter (link)). It is possible to
override this behavior in the _Hit() event.
.SolenoidOn()
This Method will turn ON the Solenoid for the Slingshot Hammer. This will
move the Hammer outwards thus bending the Rubber outwards as well.
Script Example:
.SolenoidOff()
This Method will turns OFF the Solenoid for the Slingshot Hammer. If the
Solenoid is currently ON, it will return the Hammer back to its default
position and thus relaxing the rubber.
Script Example:
MyRubber.SolenoidOff()
Script Example:
MyRubber.SolenoidPulse()
or;
MyRubber.SolenoidPulse(500)
_Hit()
This event is signaled to the script whenever the Ball Hits a Rubber which
has either has a Leaf Switch and/or a Slingshot Hammer. The event will
ONLY be generated when it hits the contact zone for a Leaf or Slingshot
Hammer.
If the Ball has hit the contact Zone of a Slingshot, this event is ONLY
called if the Solenoid is Off and the table is not tilted (the global script
variable fpTilted is not set). If the Solenoid is On, the rubber is stretched
and it would be impossible for the ball to hit the rubber and thus triggering
the leaves either side of the hammer. If the Table is Tilted, the game
engine will not trigger automatic events (in this case, the solenoid firing
and the ball being hit back out into the playfield at force). For more
information on the fpTilted variable refer to the Global Script chapter
(link).
Script Example:
Sub MyRubber_Hit()
PlaySound "SlingshotSound"
AddPoints(50)
' Flash the lights around the slingshot
LeftSlingshotBulb1.FlashForMs 100, 50, BulbOff
LeftSlingshotBulb2.FlashForMs 100, 50, BulbOff
End Sub
If the Ball has hit the contact Zone of a Leaf Trigger, the event is also
called. Any value entered into the Event ID shapepoint property (for the
Leaf Switch) will be able to be read in the script through the global script
variable fpEventID. For more information on this variable refer to the
Global Script chapter (link). This allows you to tell which Leaf Switch the
ball has hit if the Shapeable Rubber contains multiple Leaves. If the
Rubber only contains one Leaf, you can ignore this value.
For example, the following rubber has the Event ID set to 10 for the left
Leaf Trigger and 20 for the Right Trigger;
Script Example:
Sub MyRubber_Hit()
' Has the Ball hit the Left or Right Leaf Trigger ?
If fpEventID = 10 Then ' Left Leaf
PlaySound "SoundA"
' add some points
AddPoints(5)
Else ' Right Leaf
PlaySound "SoundB"
AddPoints(5)
End If
End Sub
i.e.,.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Model Rubbers
When you create a Model Rubber on your table, the object will be
drawn on to the table workspace.
Selecting this object will bring up the following property sheet:
Model
Texture
Colour
Rotation
Surface
Offset
Defines the offset (in millimeters) from the
attached Surface to draw the Rubber at.
Valid values range from 0 to 150
millimeters.
Elasticity
Speed Description
The Rubber is quiet Hard will
Hard
have less impact on the Ball
Intermediate
Somewhere in between
(Default)
The Rubber is quiet Soft and
Soft will rebound the ball much
further
Playfield
Defines which playfield the Rubber will
reflect off. Only surfaces which have the
'Surface is a Playfield' flag set will be
listed.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Leaf Targets
When you create a Leaf Target on your table, the object will be
drawn onto the table workspace.
Selecting this object will bring up the following property sheet:
Name
Model
Texture
Colour
Rotation
Surface
When Hit
_Hit()
This event is signaled to the script whenever the Ball
Hits a Leaf Target.
Script Example:
Sub MyTarget_Hit()
PlaySound "TargetHitSound"
AddPoints(100)
End Sub
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Drop Targets
Drop Targets are used to enhance game play by giving the player something to aim for to
advance the game. Drop Targets in Future Pinball will drop into the Playfield when hit by the
Ball. They can be either Single or created in Banks of up to 10.
When you create a Drop Target on your table, the object will be drawn onto the table workspace.
Name
Sets the name of the object which is used to reference the object via Script
events. The name must be unique for the table and may not contain any
spaces. As with all Object Names, you should give a descriptive name to your
object.
Model
This field shows the list of available models which have been loaded into your
table. Future Pinball contains a large collection of models in the libraries
supplied. You can import more models into your table by using the Model
Manager (link). Only models which have the same object type of the current
object are listed. Selecting a model will also show a small preview picture of
the selected Model.
Texture
Allows you to wrap a texture around the object. Textures are imported into the
Table via the Texture Manager (link). Selecting a Texture will also show a
small preview picture of the texture.
Colour
Defines the colour of the Object. If the object is to be rendered with a texture,
then the texture will be tinted with this colour. If the object has no texture, then
it will be rendered in this colour. It is best never to use Full Strength colours
(i.e., where either the Red, Green or Blue components are at their Limits) as
this will adversely affect how the object is Shaded by the Lighting system. For
more information on the use of Colour refer to the Special Graphic Processing
chapter (link).
Defines the X location (based in millimeters from the top left hand corner of
the playfield) of the object on the Table.
Defines the Y location (again in millimeters from the top left hand corner of the
playfield) of the object on the Table.
Rotation
This field allows you to draw the object at a different rotation on the Table.
Valid values range from 0 to 359 degrees.
Surface
Defines what Surface (or Wall) the object is attached to. If no Surface is
specified, then the Target is assumed to be attached to the Main Playfield. For
more information on this refer to the Surface Object (link).
Bank Count
This field allows you specify how many individual drop targets will make up
this bank. Valid values range from 1 to 10. When a Drop Target object has a
Bank count greater than 1, then the editor will number each Drop Target. This
number is passed into the HIT() event via the global fpEventID variable. For
more information refer to the HIT() event below.
Bank Spacing
This field allows you to adjust the spacing (in millimeters) between multiple
drop targets (if the Bank Count is greater than 1). Valid values range from 1
and 32 millimeters.
When Hit
This field allows you to automate playing of a sound effect when the Ball hits a
Target (causing it to Drop). Sounds are imported into the Table via the Sound
Manager (link). This functionality removes the need for a PlaySound (link)
script command.
When Reset
This field allows you to automate playing of a sound effect when the Drop
Target bank is reset (pops back up) via the SolenoidPulse() script method.
Sounds are imported into the Table via the Sound Manager (link). This
functionality removes the need for a PlaySound (link) script command.
This Section describes the object and how it can be accessed and controlled via the script at run-
time. Note that you access the object via the name given in the Name property field
Script Example:
Or:
.SolenoidOn()
This Method will turn ON the Solenoid for the Drop Target. If the Drop Target is Down
(Dropped), then this command will pop the target back up. It is not possible for the Ball to
drop a Target if the Solenoid is ON. If the Drop Target has a Bank Count Greater than 1,
then ALL of the individual targets are reset.
Script Example:
.SolenoidOff()
This Method will turns OFF the Solenoid for the Drop Target.
Script Example:
MyDropTarget1.SolenoidOff()
PulseTime is a positive number and is the time in milliseconds to hold the Solenoid On for.
If no value is specified, then a pulse of 100ms will be used.
Script Example:
MyDropTarget1.SolenoidPulse()
or;
MyDropTarget1.SolenoidPulse(500)
TargetNumber is a positive number between 1 and the number of Targets in the Bank. If
no value is specified then ALL Targets will popdown.
Script Example:
MyDropTarget1.PopDown()
or;
MyDropTarget1.PopDown(1)
_Hit()
This event is signaled to the script whenever the Ball Hits a Drop Target. If the Solenoid is
ON when the ball hit the target, it is impossible for the Target to drop (and hitting the
switch), thus you will not get this event.
If the Drop Target has a Bank Count greater than 1, then you will be able to check which of
the individual drop targets has been hit. this is done via though the global script variable
fpEventID. This is set (for the duration of the HIT() event) to the number (as drawn in the
editor) of the drop target).
If the Drop Target has a Bank Count equal to 1, then you can ignore this value (though it
will be set to 1) as it's obvious which target was hit.
For more information on this variable refer to the Global Script chapter (link).
Script Example:
' single drop target (or I don't care which one is hit)
Sub MyDropTarget1_Hit()
PlaySound "TargetHitSound"
AddPoints(250)
End Sub
or:
' do something depending on which drop target was hit within the
Sub MyDropTarget1_Hit()
PlaySound "TargetHitSound"
AddPoints(250)
Select Case (fpEventID)
Case 1: ' do something
Case 2: ' do something
Case 3: ' do something
' etc.
End Select
End Sub
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Roto Targets
Roto Targets were quite popular on older Mechanical Pinballs. They were complex wheel
objects which had multiple targets on them. These wheels rotated (thus changing the targets
the player could hit) as the game play progressed. Two types where available: A vertical type
which went into the playfield, and a carousel type which was horizontal to the playfield. Both
types spun around a central axis. Both types of mechanisms usually had a lot of table
components around them, limiting which targets could be hit by the ball.
When you create a Roto Target on your table, the object will be drawn onto the table workspace. Roto
Targets can only be created on the Main playfield.
The first 3 targets on the wheel will be numbered so you can see the direction they are ordered (which is
always clockwise).
Name
Sets the name of the object which is used to reference the object via Script
events. The name must be unique for the table and may not contain any
spaces. As with all Object Names, you should give a descriptive name to your
object.
Model
This field shows the list of available models which have been loaded into your
table. Future Pinball contains a large collection of models in the libraries
supplied. You can import more models into your table by using the Model
Manager (link). Only models which have the same object type of the current
object are listed. Selecting a model will also show a small preview picture of
the selected Model.
Image List
Defines the Image List for the Roto Target to use. The Image list allows you to
specify individual textures to each of the targets on the wheel. Starting from
the first target and moving to the last. If you specify less images in the image
list than there are targets on the wheel, then the list will repeat until all targets
have been textured. Image Lists are created by the Image List manager
(link).
Colour
Defines the colour of the Object. If the object is to be rendered with a texture,
then the texture will be tinted with this colour. If the object has no texture, then
it will be rendered in this colour. It is best never to use Full Strength colours
(i.e., where either the Red, Green or Blue components are at their Limits) as
this will adversely affect how the object is Shaded by the Lighting system. For
more information on the use of Colour refer to the Special Graphic Processing
chapter (link).
Defines the X location (based in millimeters from the top left hand corner of
the playfield) of the object on the Table.
Defines the Y location (again in millimeters from the top left hand corner of the
playfield) of the object on the Table.
Rotation
This field allows you to draw the object at a different rotation on the Table.
Valid values range from 0 to 359 degrees. This field is ignored if the Carousel
property has been ticked .
Offset
This field allows you to draw the object at a different offset from the playfield
surface. This allows you to "fit" the wheel depending on how it is to fit into any
surrounding components and how many targets (spokes) you want visible
above the playfield. Valid values range from 0 to 40 millimeters. This field is
ignored if the Carousel property has been ticked .
Target Count
This field allows you specify how spokes (ie targets) the wheel will have. The
circumerence of the wheel will automatically be adjust to ensure that each
target will fit. Valid values range from 8 and 16.
Radius
This field allows you to adjust the calculated radius of the Roto Target is you
wish to make it slightly smaller or larger. Change this target count will reclac
this value. Future Pinball will only allow you to adjust the radius of the roto
target by upto 25% of the calculated radius.
If Enabled (Ticked ), then the first Target (and the entire wheel) will be
centered (either vertically or horizontally). If Disabled, then the entire wheel is
rotated half a step. This allows you to adjust wheel to suit the requirements
you have about which targets are visible/hittable.
Step Delay
This field allows you specify how long the delay (in milliseconds) the roto
target will pause between steps. Valid values range from 0 and 250
milliseconds.
If Enabled (Ticked ), then the object will also reflect off the main playfield. If
you don't want the object to reflect off the playfield (providing the user has that
video option enabled), then uncheck this option. If the object isn't generally
visible you may with to disable reflections for this object to save on the
rendering processing.
When Hit
This field allows you to automate playing of a sound effect when the Ball hits
any of the Targets. Sounds are imported into the Table via the Sound
Manager (link). This functionality removes the need for a PlaySound (link)
script command.
Motor Whir
This field allows you to automate playing of a sound effect when the Roto
Target rotates (moves to the next target) via the StepForward() or
StepBackwards() script methods. Sounds are imported into the Table via the
Sound Manager (link). This functionality removes the need for a PlaySound
(link) script command.
This Section describes the object and how it can be accessed and controlled via the script at run-time.
Note that you access the object via the name given in the Name property field
Script Example:
Script Example:
or;
MyRotoTarget.StepForward(8)
Script Example:
MyRotoTarget.StepBackward()
or;
MyRotoTarget.StepBackward(8)
_Hit()
This event is signaled to the script whenever the Ball Hits one of the targets on the roto
wheel.
The global script variable fpEventID will be set to the ID (number) of the target hit. This is
set (for the duration of the HIT() event) to the number (as drawn in the editor) of the target.
If you only wish to know that a target was hit (but not which one), then you can ignore this
value.
For more information on this variable refer to the Global Script chapter (link).
Script Example:
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Swinging Targets
When you create a Swinging Target on your table, the object will be
drawn onto the table workspace.
Model
Texture
Colour
Rotation
When Hit
.SolenoidOn()
This Method will turn ON the Solenoid/Motor for the
Swing Target. This will cause the Target to start
swinging again. Script Example:
.SolenoidOff()
This Method will turns OFF the Solenoid/Motor for the
Swing Target. If the Solenoid/Motor is currently on then
the Swinging Target will slowly slow down and stop.
Script Example:
MySwingTarget.SolenoidOff()
Script Example:
MySwingTarget.SolenoidPulse()
or;
MySwingTarget.SolenoidPulse(500)
_Hit()
This event is signaled to the script whenever the Ball
Hits a Swinging Target. (Whether it's moving or not)
Script Example:
Sub MySwingTarget_Hit()
PlaySound "TargetHitSound"
AddPoints(100)
End Sub
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Vari-Targets
Vari Targets were used in older Mechanical Pinballs. They moved backwards when the ball hit
them and depending on how hard the ball hit them, the more they would move until they
reached the extent of their movement. A solenoid would then release the Vari-Target and it
would moved back to it's original (home) position. A number of switch positions can be given
between the extents of movement so a game could tell the position of the Vari-Target.
When you create a Vari-Target on your table, the object will be drawn onto the table workspace. Vari-
Targets can only be created on the Main playfield. To get the best alignment of the Vari-Target object
and the Vari-Target ornament hole its reconmended to set both objects to have the same X/Y
coordinates. You should then set the rotation property to the required angle. The editor view will show
the extents of the Vari-Target movement to help you get the alignment right
Sets the name of the object which is used to reference the object via Script
events. The name must be unique for the table and may not contain any
spaces. As with all Object Names, you should give a descriptive name to your
object.
Model
This field shows the list of available models which have been loaded into your
table. Future Pinball contains a large collection of models in the libraries
supplied. You can import more models into your table by using the Model
Manager (link). Only models which have the same object type of the current
object are listed. Selecting a model will also show a small preview picture of
the selected Model.
Image List
Defines the Image List for the Roto Target to use. The Image list allows you to
specify individual textures to each of the targets on the wheel. Starting from
the first target and moving to the last. If you specify less images in the image
list than there are targets on the wheel, then the list will repeat until all targets
have been textured. Image Lists are created by the Image List manager
(link).
Sphere Mapping
If Enabled (Ticked ), then any texture is Sphere Mapped onto the object. For
more information on Sphere Mapping refer to the Special Graphic Processing
chapter (link).
Colour
Defines the colour of the Object. If the object is to be rendered with a texture,
then the texture will be tinted with this colour. If the object has no texture, then
it will be rendered in this colour. It is best never to use Full Strength colours
(i.e., where either the Red, Green or Blue components are at their Limits) as
this will adversely affect how the object is Shaded by the Lighting system. For
more information on the use of Colour refer to the Special Graphic Processing
chapter (link).
Defines the X location (based in millimeters from the top left hand corner of
the playfield) of the object on the Table.
Defines the Y location (again in millimeters from the top left hand corner of the
playfield) of the object on the Table.
Rotation
This field allows you to draw the object at a different rotation on the Table.
Valid values range from 0 to 359 degrees. This field is ignored if the Carousel
property has been ticked .
Switch Count
This field allows you specify how intermediate switches that Vari-Target has
between the extents of the target movement. Valid values are between 3 and
10.
If Enabled (Ticked ), then the object will also reflect off the main playfield. If
you don't want the object to reflect off the playfield (providing the user has that
video option enabled), then uncheck this option. If the object isn't generally
visible you may with to disable reflections for this object to save on the
rendering processing.
Tension
This field allows you the set how strong the Spring Tension on (which effects
how easy or hard it is to move the Vari-Target with each hit of the ball). A
Slider Position to the Left of the Middle is weaker and Stronger if it is towards
the Right.
This Section describes the object and how it can be accessed and controlled via the script at run-time.
Note that you access the object via the name given in the Name property field
This object doesn't have any properties which can be modified via the script.
.SolenoidOn()
This Method will turn ON the Solenoid for the Vari-Target. This will allow the Target to
return to its original (home) position. If the ball hits the Vari-Target while the solenoid is
ON, then it will move backwards with the hit but will not lock into place as it will resume
returning to it's home position.
It is important to note that the script will get HIT() events as the Vari-Target moves back to
its home position as the target will move over the switch contacts.
Script Example:
.SolenoidOff()
This Method will turns OFF the Solenoid for the Varti-Target.
Script Example:
MyVariTarget.SolenoidOff()
PulseTime is a positive number and is the time in milliseconds to hold the Solenoid On for.
If no value is specified, then a pulse of 100ms will be used.
Script Example:
MyVariTarget.SolenoidPulse()
or;
MyVariTarget.SolenoidPulse(1000)
_Hit()
This event is signaled to the script whenever the Ball Hits the Vari-Target and it moves
backwards enough to hit one of the intermediate switch positions. The maximum value of
this will be the Switch Count property (as set in the editor). If the value is 0 then the Vari-
Target has returned back to it's home position.
The global script variable fpEventID will be set to the ID (number) of the target hit. This is
set (for the duration of the HIT() event).
If you only wish to know that a Vari-Target was hit (and moved but now how far), then you
can ignore this value.
For more information on this variable refer to the Global Script chapter (link).
Script Example:
or:
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Bulbs
Bulbs are commonly used in pinballs to add atmosphere and general lighting (called
General Illumination). Bulbs can either be On, Off or be following a special Blink
Pattern. The Star Trigger surround is also classified as a playfield Bulb.
As with all Objects which contain a Light Bulb (Lights, Bumpers, Flashers), Future
Pinball can draw a Halo around the bulb when it is illuminated. This effect is
commonly used in video games and greatly enhances the visual quality of the light
as well as the surrounding areas.
When you create a Bulb on your table, the object will be drawn onto the current workspace.
Bulbs can be placed on both the table workspace and the Translite workspace
When a Bulb is selected, the Purple Guide line shows the radius of the light glow the bulb
emits.
Selecting this object will bring up the following property sheet:
Name
Sets the name of the object which is used to reference the object via
Script events. The name must be unique for the table and may not
contain any spaces. As with all Object Names, you should give a
descriptive name to your object.
Model
This field shows the list of available models which have been loaded
into your table. Future Pinball contains a large collection of models in
the libraries supplied. You can import more models into your table by
using the Model Manager (link). Only models which have the same
object type of the current object are listed. Selecting a model will also
show a small preview picture of the selected Model.
Render Model
Lens
Allows you to wrap a Lens texture over the Bulb. Textures are
imported into the Table via the Texture Manager (link). Selecting a
Texture will also show a small preview picture of the texture. If you are
using a Wedge Bulb, you will not need to use a lens texture.
Crystal
Lit Colour
Defines the colour of the Bulb when it has been turned ON (more of
this below). If the object is to be rendered with a texture, the texture
will be tinted with this colour. If the object has no texture, it will be
rendered in this colour. It is best never to use Full Strength colours
(i.e., where either the Red, Green or Blue components are at their
Limits) as this will adversely affect how the object is Shaded by the
Lighting system. For more information on the use of Colour refer to the
Special Graphic Processing chapter (link).
Unlit Colour
Defines the colour of the Bulb when it is turned OFF (more of this
below). The same colour guidelines should be followed as described
by the Lit Colour.
In the following example you can see 2 lights. The Left bulb's halo is
drawn as normal but the Right bulb's halo is drawn as an Ordered
Halo. This allows the rendering engine in Future Pinball to make
objects (such as the example metal surface) totally Opaque, though in
some cases you will want the halo to come though the graphic such as
plastics which illuminate with the light the bulbs underneath generate.
This option relies on the Ordering of the object within the editor. You
much ensure that the Bulb is drawn before the surface. You can
achieve this by selecting the Bulb, clicking the right mouse button and
sending it to the back via the popup mouse menu.
Glow Radius
Defines the Radius (based in millimeters) of the Halo (if one is drawn).
This allows you to set how brightly a bulb affects the area around it.
For Slingshots you may wish to set this to a larger value so it brightens
up more of the area. Valid values range from 20 to 200.
Defines the X location (based in millimeters from the top left hand
corner of the playfield) of the object on the Table.
Defines the Y location (again in millimeters from the top left hand
corner of the playfield) of the object on the Table.
Rotation
This field allows you to draw the object at a different rotation on the
Table. Valid values range from 0 to 359 degrees.
Surface
Defines what Surface (or Wall) the object is attached to. If no Surface
is specified, the object is assumed to be attached to the Main
Playfield. For more information on this refer to the Surface Object
(link). If the Bulb has been placed onto the Translite, this field is
ignored.
Reflects off Playfield
If Enabled (Ticked ), the object will also reflect off the Surface it is
attached to (providing that surface is marked as being a 'Playfield'). If
you don't want the object to reflect off the playfield (providing the user
has that video option enabled), uncheck this option. If the object isn't
generally visible, you may with to disable reflections for this object to
save on the rendering processing.
State
This field allows you to set the Bulb State. The Bulb (like a real pinball)
takes around 30 milliseconds to go to full brightness and thus the light
will gradually Brighten or Dim. If the Halo option has been enabled by
the Player, a Halo is also drawn over the Bulb which greatly enhances
the visual quality of the lighting effect.
State Description
BulbOff Turns Off the Bulb.
BulbOn Turns On the Bulb.
The Bulb will follow 'pattern' defined by the Blink
BulbBlink
Pattern field.
Blink Pattern
Defines a special Blink Pattern the Bulb will follow when the State has
been set to BulbBlink. This pattern is defined out of a string made up
out of 0s (turn bulb Off) and 1s (turn bulb On). At least 2 pattern states
must be given (i.e., 10, 01, 11 or 00) with a maximum of 32 individual
states. Blink Patterns allow for some very creative light changes to be
made especially which using in conjunction if other objects which
contain a light bulb (Lights, Flashers, Bumpers, etc.)
Blink Interval
Script Example:
MyBulb.State = BulbOn
You can also use the State to help in game play decisions; i.e.,
Script Example:
MyBulb.BlinkPattern = "10"
or:
MyBulb.BlinkPattern = "1101110"
Script Example:
MyBulb.BlinkInterval = 100
MyBulb.State = BulbBlink
MyBulb.BlinkPattern = "10"
MyBulb.BlinkInterval = 150
State sets the lit state of the bulb. Valid values are BulbOff, BulbOn or
BulbBlink.
BlinkPattern allows you to define a special Blink Pattern the Bulb will follow
when the State has been set to BulbBlink. This pattern is defined out of a
string made up out of 0s (turn bulb Off) and 1s (turn bulb On). At least 2 pattern
states must be given (i.e., "10", "01", "11" or "00") with a maximum of 32
individual states. If the Bulb is currently following another Blink Pattern, setting
this will immediately change the blink pattern over to the new one. If no string is
specified, the current pattern in the .BlinkPattern property is not changed.
BlinkInterval is a positive number and is the time it takes to process each state
within the Blink Pattern. The Interval must be at least 25 milliseconds and if no
value is specified, the current value in the .BlinkInterval property is not
changed.
Script Example:
BlinkInterval is a positive number and is the time to hold each Flash state for.
The Interval must be at least 25 milliseconds and if no value is specified, 75 is
used.
EndBulbState defines the state of the bulb after the TotalPeriod has expired.
If the Bulbs .State is read which the bulb is flashing for the desired interval, the
it will return the EndBulbState.
Script Example:
The Bulb object doesn't have any Events which it can call via the script.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Round Lights
Lights are one of the most common pinball parts which are used to add
atmosphere as well as give the play indication of game play and progress
As with all Objects which contain a Light Bulb (Lights, Bumpers, Flashers),
Future Pinball can draw a Halo around the bulb when it is illuminated. This
effect is commonly used in video games and greatly enhances the visual quality
of the light as well as the surrounding areas.
When you create a Round Light on your table, the object will be drawn on to the current
workspace. Lights can be placed on both the Table and Translite workspaces. The Light
will be drawn in the colours specified in the properties.
Name
Lens
Allows you to put a Lens texture over the Light. Textures are
imported into the Table via the Texture Manager (link).
Selecting a Texture will also show a small preview picture of
the texture. Unlike most objects in Future Pinball, if no Lens is
specified, the following default texture is used:
TIP: If you wish to have older style lights (as those found on
electro mechanical pinballs), you should use a simple plain
white texture
Diameter
Lit Colour
Unlit Colour
Border Width
Border Colour
Defines the colour of the Border around the Light (if it has
one). The same colour guidelines should be followed as
described by the Lit Colour.
Y
Defines the Y location (again in millimeters from the top left
hand corner of the playfield) of the object on the Table.
Surface
State
This field allows you to set the Light State. The Light (like a
real pinball) takes around 30 milliseconds to go to full
brightness and thus the light will gradually Brighten or Dim. If
the Halo option has been enabled by the Player, a Halo is
also drawn over the Light which greatly enhances the visual
quality of the lighting effect.
State Description
BulbOff Turns Off the Bulb.
BulbOn Turns On the Bulb.
The Bulb will follow 'pattern' defined by the
BulbBlink
Blink Pattern field.
Blink Pattern
Defines a special Blink Pattern the Light will follow when the
State has been set to BulbBlink. This pattern is defined out
of a string made up out of 0s (turn Light Off) and 1s (turn
Light On). At least 2 pattern states must be given (i.e., 10, 01,
11 or 00) with a maximum of 32 individual states. Blink
Patterns allow for some very creative light changes to be
made especially which using in conjunction if other objects
which contain a light bulb (Lights, Flashers, Bumpers, etc.)
Blink Interval
This Section describes the object and how it can be accessed and controlled via
the script at run-time. Note that you access the object via the name given in the
Name property field.
Script Example:
MyLight.State = BulbOn
You can also use the State to help in game play decisions; i.e.,.
Script Example:
MyLight.BlinkPattern = "10"
or:
MyLight.BlinkPattern = "1101110"
Script Example:
MyLight.BlinkInterval = 100
MyLight.State = BulbBlink
MyLight.BlinkPattern = "10"
MyLight.BlinkInterval = 150
Script Example:
State sets the lit state of the bulb. Valid values are BulbOff, BulbOn or
BulbBlink.
BlinkPattern allows you to define a special Blink Pattern the Bulb will
follow when the State has been set to BulbBlink. This pattern is defined
out of a string made up out of 0s (turn bulb Off) and 1s (turn bulb On). At
least 2 pattern states must be given (i.e., "10", "01", "11" or "00") with a
maximum of 32 individual states. If the Bulb is currently following another
Blink Pattern, setting this will immediately change the blink pattern over to
the new one. If no string is specified, the current pattern in the
.BlinkPattern property is not changed.
Script Example:
BlinkInterval is a positive number and is the time to hold each Flash state
for. The Interval must be at least 25 milliseconds and if no value is
specified, 75 is used.
EndBulbState defines the state of the Light after the TotalPeriod has
expired. If the Bulbs .State is read which the bulb is flashing for the
desired interval, the it will return the EndBulbState.
Script Example:
The Round Light object doesn't have any Events which it can call via the script.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Shapeable Lights
Lights are one of the most common pinball parts which are used to add
atmosphere as well as give the play indication of game play and progress
As with all Objects which contain a Light Bulb (Lights, Bumpers, Flashers),
Future Pinball can draw a Halo around the bulb when it is illuminated. This
effect is commonly used in video games and greatly enhances the visual quality
of the light as well as the surrounding areas.
When you create a Shapeable Light on your table, the object will be drawn on to the
current workspace. Lights can be placed on both the Table and Translite workspaces.
As Shapeable Lights are shapepoint-based, you will need to be familiar with
shapepoints (link) before continuing. The Light will be drawn in the colours specified in
the properties.
Selecting this object will bring up the following property sheet:
Name
Lens
Allows you to put a Lens texture over the Light. Textures are
imported into the Table via the Texture Manager (link).
Selecting a Texture will also show a small preview picture of
the texture. Unlike most objects in Future Pinball, if no Lens is
specified, the following default texture is used;
TIP: If you wish to have older style lights (as those found on
electro mechanical pinballs), you should use a simple plain
white texture
Lit Colour
Unlit Colour
Border Width
Border Colour
Defines the colour of the Border around the Light (if it has
one). The same colour guidelines should be followed as
described by the Lit Colour.
Glow Radius
Surface
State
This field allows you to set the Light State. The Light (like a
real pinball) takes around 30 milliseconds to go to full
brightness and thus the light will gradually Brighten or Dim. If
the Halo option has been enabled by the Player, a Halo is
also drawn over the Light which greatly enhances the visual
quality of the lighting effect.
State Description
BulbOff Turns Off the Bulb.
BulbOn Turns On the Bulb.
The Bulb will follow 'pattern' defined by the
BulbBlink
Blink Pattern field.
Blink Pattern
Defines a special Blink Pattern the Light will follow when the
State has been set to BulbBlink. This pattern is defined out
of a string made up out of 0s (turn Light Off) and 1s (turn
Light On). At least 2 pattern states must be given (i.e., 10, 01,
11 or 00) with a maximum of 32 individual states. Blink
Patterns allow for some very creative light changes to be
made especially which using in conjunction if other objects
which contain a light bulb (Lights, Flashers, Bumpers, etc.)
Blink Interval
The Shapeable Light object also includes 2 crosshair elements which can be
shifted to achieve different rendering properties.
These crosshairs are called the Halo Marker and the Texture (or Lens) Focal Point.
Selecting either of the crosshairs will highlight it and display the name of the cross
hair.
This can be used to change the appearance of the Lens on the Light;
The Default Position
Shifting the Texture Focal Point up will change how the same texture is rendered.
It is best to experiment with the Texture Focal point with your own Lights
and Lens Texture.
Halo Marker
Selecting the Halo Crosshair (which is shaped with a cross and 2 inner circles)
will allow you to change how the Halo is drawn over the object and thus the
position of the bulb underneath the Lens.
This Section describes the object and how it can be accessed and controlled via
the script at run-time. Note that you access the object via the name given in the
Name property field.
Script Example:
MyLight.State = BulbOn
You can also use the State to help in game play decisions; i.e.,.
Script Example:
MyLight.BlinkPattern = "10"
or:
MyLight.BlinkPattern = "1101110"
Script Example:
MyLight.BlinkInterval = 100
MyLight.State = BulbBlink
MyLight.BlinkPattern = "10"
MyLight.BlinkInterval = 150
Script Example:
State sets the lit state of the bulb. Valid values are BulbOff, BulbOn or
BulbBlink.
BlinkPattern allows you to define a special Blink Pattern the Bulb will
follow when the State has been set to BulbBlink. This pattern is defined
out of a string made up out of 0s (turn bulb Off) and 1s (turn bulb On). At
least 2 pattern states must be given (i.e., "10", "01", "11" or "00") with a
maximum of 32 individual states. If the Bulb is currently following another
Blink Pattern, setting this will immediately change the blink pattern over to
the new one. If no string is specified, the current pattern in the
.BlinkPattern property is not changed.
Script Example:
BlinkInterval is a positive number and is the time to hold each Flash state
for. The Interval must be at least 25 milliseconds and if no value is
specified, 75 is used.
EndBulbState defines the state of the Light after the TotalPeriod has
expired. If the Bulbs .State is read which the bulb is flashing for the
desired interval, the it will return the EndBulbState.
Script Example:
The Shapeable Light object doesn't have any Events which it can call via the
script.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Light Images
Light Images work in the same way as all the over Light/Bulb objects in Future Pinball but
they use a texture animation to animate the Off to On States (with any number of animation
frames). This allows for much more complex light designs.
As with all Objects which contain a Light Bulb (Lights, Bumpers, Flashers), Future Pinball can
draw a Light Images around the bulb when it is illuminated. This effect is commonly used in
video games and greatly enhances the visual quality of the light as well as the surrounding
areas.
When you create a Light Image on your table, the object will be drawn onto the current workspace.
Light Image can be placed on both the table workspace and the Translite workspace
When a Light Image is selected, the Purple Guide line shows the radius of the light halo glow the bulb
emits. If the object has been told not to render the halo glow then the guide line will not be drawn.
Selecting this object will bring up the following property sheet:
Name
Sets the name of the object which is used to reference the object via Script
events. The name must be unique for the table and may not contain any
spaces. As with all Object Names, you should give a descriptive name to
your object.
Image List
Defines the Image List for the Light Image to use. The Light Image uses
Image Animation to change between the OFF and ON states with the First
frame being the OFF state and the Last frame being the ON state. There is
no limit to the number of frames between those 2 states. Image Lists are
created by the Image List manager (link). A Preview of the first frame of the
Image List is also displayed.
Colour
Defines the colour of any drawn image (from the Image List). It is best
never to use Full Strength colours (i.e., where either the Red, Green or Blue
components are at their Limits) as this will adversely affect how the object
is Shaded by the Lighting system. For more information on the use of
Colour refer to the Special Graphic Processing chapter (link).
If enabled (Ticked ), any halo associated with this Light Image also is
drawn.
Halo Colour
Defines the colour of any the Halo (if it is drawn). It is best never to use Full
Strength colours (i.e., where either the Red, Green or Blue components are
at their Limits) as this will adversely affect how the object is Shaded by the
Lighting system. For more information on the use of Colour refer to the
Special Graphic Processing chapter (link).
Glow Radius
Defines the Radius (based in millimeters) of the Halo (if one is drawn). This
allows you to set how brightly a bulb affects the area around it. Valid values
range from 20 to 200.
Defines the X location (based in millimeters from the top left hand corner of
the playfield) of the object on the Table.
Defines the Y location (again in millimeters from the top left hand corner of
the playfield) of the object on the Table.
Width
Defines the Width of the Light Image in millimeters. Must be greater than 5
millimeters.
Height
Defines the Height of the Light Image in millimeters. Must be greater than 5
millimeters.
Rotation
This field allows you to draw the object at a different rotation on the Table.
Valid values range from 0 to 359 degrees.
Surface
Defines what Surface (or Wall) the object is attached to. If no Surface is
specified, the object is assumed to be attached to the Main Playfield. For
more information on this refer to the Surface Object (link). If the Light
Image has been placed onto the Translite, this field is ignored and won't be
displayed.
Update Interval
Defines the update interval (in Milliseconds) of the Light Image when it is
animating individual images from the Image List when changing state
between OFF-ON-OFF. The Lower the value, the faster the Animation will
will work. The value must be at least 25 milliseconds.
Generally you will not need to change this value unless you wish to change
how fast any page flipping animations work.
State
This field allows you to set the Light Image State. The Light Image uses
Image Animation to change between the OFF and ON states. If the Halo
option has been enabled by the Player, a Halo is also drawn over the Bulb
which greatly enhances the visual quality of the lighting effect.
Blink Pattern
Defines a special Blink Pattern the Light Image will follow when the State
has been set to BulbBlink. This pattern is defined out of a string made up
out of 0s (turn bulb Off) and 1s (turn bulb On). At least 2 pattern states
must be given (i.e., 10, 01, 11 or 00) with a maximum of 32 individual
states. Blink Patterns allow for some very creative light changes to be made
especially which using in conjunction if other objects which contain a light
bulb (Lights, Flashers, Bumpers, etc.)
Blink Interval
Defines the Period (in milliseconds) Future Pinball takes to process each
state within a Blink Pattern. When the Blink Pattern has been fully
processed it will begin again from the start and keep on repeating while
ever the State is BulbBlink. The Interval must be at least 25 milliseconds.
If this period is less than the total time if takes the Light Image to change
from one state to the other (ie OFF to ON) (which is the number of Frames
in the Image List * The Animation Update Interval) then not all frames of the
animation will be shown.
Halo Marker
Selecting the Halo Crosshair (which is shaped with a cross and 2 inner circles) will allow you
to change how the Halo is drawn over the object and thus the position of the bulb
underneath the Lens.
\
This Section describes the object and how it can be accessed and controlled via the script at run-
time. Note that you access the object via the name given in the Name property field.
If the Light Sequencer is currently running on this object, changing the State will
not take effect until the Light Sequencer has finished running. When the
Sequencer has finished the Bulb will have the last State set via the script. For
more information see the Light Sequencer Object (link)
Script Example:
MyLightImage.State = BulbOn
You can also use the State to help in game play decisions; i.e.,
Script Example:
MyLightImage.BlinkPattern = "10"
or:
MyLightImage.BlinkPattern = "1101110"
Script Example:
MyLightImage.BlinkInterval = 100
MyLightImage.State = BulbBlink
MyLightImage.BlinkPattern = "10"
MyLightImage.BlinkInterval = 150
Script Example:
If (MyLightImage.Lit = TRUE) Then
' .. Do Something ..
End If
State sets the lit state of the bulb. Valid values are BulbOff, BulbOn or BulbBlink.
BlinkPattern allows you to define a special Blink Pattern the Light Image will follow
when the State has been set to BulbBlink. This pattern is defined out of a string made
up out of 0s (turn bulb Off) and 1s (turn bulb On). At least 2 pattern states must be
given (i.e., "10", "01", "11" or "00") with a maximum of 32 individual states. If the Bulb is
currently following another Blink Pattern, setting this will immediately change the blink
pattern over to the new one. If no string is specified, the current pattern in the
.BlinkPattern property is not changed.
BlinkInterval is a positive number and is the time it takes to process each state within
the Blink Pattern. The Interval must be at least 25 milliseconds and if no value is
specified, the current value in the .BlinkInterval property is not changed.
Script Example:
This method allows you to flash (turn the Light Image On and then Off again) for a
number of milliseconds and then set the Bulb state to a defined value when that time
has elapsed. This effect is commonly used in Pinball when enabling a Bulb due to the
player completing a sequence on the table via following the game rules as it is more
noticeable than just turning on a bulb.
TotalTime is a positive number and is the time in milliseconds to flash to the Light
Image for. Ideally, it should be divisable by the BlinkInterval parameter for a totally
smooth transition to the EndBulbState parameter.
BlinkInterval is a positive number and is the time to hold each Flash state for. The
Interval must be at least 25 milliseconds and if no value is specified, 75 is used.
EndBulbState defines the state of the bulb after the TotalPeriod has expired. If the
Bulbs .State is read which the bulb is flashing for the desired interval, the it will return
the EndBulbState.
This command destroys the contents of the .BlinkInterval and .BlinkPattern
properties.
Script Example:
The Light Image object doesn't have any Events which it can call via the script.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: HUD Light Images
Light Images work in the same way as all the over Light/Bulb objects in Future Pinball but
they use a texture animation to animate the Off to On States (with any number of animation
frames). This allows for much more complex light designs.
As with all Objects which contain a Light Bulb (Lights, Bumpers, Flashers), Future Pinball can
draw a Light Images around the bulb when it is illuminated. This effect is commonly used in
video games and greatly enhances the visual quality of the light as well as the surrounding
areas.
The HUD Light Image works exactly the same as the normal Light Imagel but is drawn on the
HUD instead of the Playfield/Translite.
When you create a Light Image on your table, the object will be drawn onto the current workspace.
Light Image can be placed on both the table workspace and the Translite workspace
When a Light Image is selected, the Purple Guide line shows the radius of the light halo glow the bulb
emits. If the object has been told not to render the halo glow then the guide line will not be drawn.
Selecting this object will bring up the following property sheet:
Name
Sets the name of the object which is used to reference the object via Script
events. The name must be unique for the table and may not contain any
spaces. As with all Object Names, you should give a descriptive name to
your object.
Image List
Defines the Image List for the Light Image to use. The Light Image uses
Image Animation to change between the OFF and ON states with the First
frame being the OFF state and the Last frame being the ON state. There is
no limit to the number of frames between those 2 states. Image Lists are
created by the Image List manager (link). A Preview of the first frame of the
Image List is also displayed.
Colour
Defines the colour of any drawn image (from the Image List). It is best
never to use Full Strength colours (i.e., where either the Red, Green or Blue
components are at their Limits) as this will adversely affect how the object
is Shaded by the Lighting system. For more information on the use of
Colour refer to the Special Graphic Processing chapter (link).
If enabled (Ticked ), any halo associated with this Light Image also is
drawn.
Halo Colour
Defines the colour of any the Halo (if it is drawn). It is best never to use Full
Strength colours (i.e., where either the Red, Green or Blue components are
at their Limits) as this will adversely affect how the object is Shaded by the
Lighting system. For more information on the use of Colour refer to the
Special Graphic Processing chapter (link).
Glow Radius
Defines the Radius (based in millimeters) of the Halo (if one is drawn). This
allows you to set how brightly a bulb affects the area around it. Valid values
range from 20 to 200.
Defines the X location (based in millimeters from the top left hand corner of
the playfield) of the object on the Table.
Defines the Y location (again in millimeters from the top left hand corner of
the playfield) of the object on the Table.
Width
Defines the Width of the Light Image in millimeters. Must be greater than 5
millimeters.
Height
Defines the Height of the Light Image in millimeters. Must be greater than 5
millimeters.
Rotation
This field allows you to draw the object at a different rotation on the Table.
Valid values range from 0 to 359 degrees.
Surface
Defines what Surface (or Wall) the object is attached to. If no Surface is
specified, the object is assumed to be attached to the Main Playfield. For
more information on this refer to the Surface Object (link). If the Light
Image has been placed onto the Translite, this field is ignored and won't be
displayed.
Update Interval
Defines the update interval (in Milliseconds) of the Light Image when it is
animating individual images from the Image List when changing state
between OFF-ON-OFF. The Lower the value, the faster the Animation will
will work. The value must be at least 25 milliseconds.
Generally you will not need to change this value unless you wish to change
how fast any page flipping animations work.
State
This field allows you to set the Light Image State. The Light Image uses
Image Animation to change between the OFF and ON states. If the Halo
option has been enabled by the Player, a Halo is also drawn over the Bulb
which greatly enhances the visual quality of the lighting effect.
Blink Pattern
Defines a special Blink Pattern the Light Image will follow when the State
has been set to BulbBlink. This pattern is defined out of a string made up
out of 0s (turn bulb Off) and 1s (turn bulb On). At least 2 pattern states
must be given (i.e., 10, 01, 11 or 00) with a maximum of 32 individual
states. Blink Patterns allow for some very creative light changes to be made
especially which using in conjunction if other objects which contain a light
bulb (Lights, Flashers, Bumpers, etc.)
Blink Interval
Defines the Period (in milliseconds) Future Pinball takes to process each
state within a Blink Pattern. When the Blink Pattern has been fully
processed it will begin again from the start and keep on repeating while
ever the State is BulbBlink. The Interval must be at least 25 milliseconds.
If this period is less than the total time if takes the Light Image to change
from one state to the other (ie OFF to ON) (which is the number of Frames
in the Image List * The Animation Update Interval) then not all frames of the
animation will be shown.
Halo Marker
Selecting the Halo Crosshair (which is shaped with a cross and 2 inner circles) will allow you
to change how the Halo is drawn over the object and thus the position of the bulb
underneath the Lens.
\
This Section describes the object and how it can be accessed and controlled via the script at run-
time. Note that you access the object via the name given in the Name property field.
If the Light Sequencer is currently running on this object, changing the State will
not take effect until the Light Sequencer has finished running. When the
Sequencer has finished the Bulb will have the last State set via the script. For
more information see the Light Sequencer Object (link)
Script Example:
MyLightImage.State = BulbOn
You can also use the State to help in game play decisions; i.e.,
Script Example:
MyLightImage.BlinkPattern = "10"
or:
MyLightImage.BlinkPattern = "1101110"
Script Example:
MyLightImage.BlinkInterval = 100
MyLightImage.State = BulbBlink
MyLightImage.BlinkPattern = "10"
MyLightImage.BlinkInterval = 150
Script Example:
If (MyLightImage.Lit = TRUE) Then
' .. Do Something ..
End If
State sets the lit state of the bulb. Valid values are BulbOff, BulbOn or BulbBlink.
BlinkPattern allows you to define a special Blink Pattern the Light Image will follow
when the State has been set to BulbBlink. This pattern is defined out of a string made
up out of 0s (turn bulb Off) and 1s (turn bulb On). At least 2 pattern states must be
given (i.e., "10", "01", "11" or "00") with a maximum of 32 individual states. If the Bulb is
currently following another Blink Pattern, setting this will immediately change the blink
pattern over to the new one. If no string is specified, the current pattern in the
.BlinkPattern property is not changed.
BlinkInterval is a positive number and is the time it takes to process each state within
the Blink Pattern. The Interval must be at least 25 milliseconds and if no value is
specified, the current value in the .BlinkInterval property is not changed.
Script Example:
This method allows you to flash (turn the Light Image On and then Off again) for a
number of milliseconds and then set the Bulb state to a defined value when that time
has elapsed. This effect is commonly used in Pinball when enabling a Bulb due to the
player completing a sequence on the table via following the game rules as it is more
noticeable than just turning on a bulb.
TotalTime is a positive number and is the time in milliseconds to flash to the Light
Image for. Ideally, it should be divisable by the BlinkInterval parameter for a totally
smooth transition to the EndBulbState parameter.
BlinkInterval is a positive number and is the time to hold each Flash state for. The
Interval must be at least 25 milliseconds and if no value is specified, 75 is used.
EndBulbState defines the state of the bulb after the TotalPeriod has expired. If the
Bulbs .State is read which the bulb is flashing for the desired interval, the it will return
the EndBulbState.
This command destroys the contents of the .BlinkInterval and .BlinkPattern
properties.
Script Example:
The Light Image object doesn't have any Events which it can call via the script.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Flashers
Flashers are a more modern day pinball object used in special effects. Flasher
are much brighter than normal Pinball Lights (both Playfield and General
Illumination) and are only designed to Flash and not be permanently turned on.
Flashers also (if enabled) affects the lighting on the table by Lighting up the
entire table with an extra light source (the same colour as the Flasher). This
add much more realism to the Table but at a heavy cost of a lot of extra lighting
calculations. For more information refer to the Video Preferences chapter (link).
When you create a Flasher on your table, the object will be drawn onto the current
workspace. Flashers can be placed on both the table workspace and the Translite
workspace.
Model
This field shows the list of available models which have been
loaded into your table. Future Pinball contains a large
collection of models in the libraries supplied. You can import
more models into your table by using the Model Manager
(link). Only models which have the same object type of the
current object are listed. Selecting a model will also show a
small preview picture of the selected Model.
Lit Colour
Unlit Colour
Rotation
Surface
If Enabled (Ticked ) then the object will also reflect off the
Playfield Surface specified by the Playfield property. If you
don't want the object to reflect off the playfield (providing the
user has that video option enabled) then uncheck this option.
If the object isn't generally visible you may with to disable
reflections for this object to save on the rendering processing.
Playfield
State
This field allows you to set the Flasher State. The Flashers
are high energy lights and brighten much more and quicker
than a standard pinball light. If the Halo option has been
enabled by the Player, a Halo is also drawn over the Flasher
which greatly enhances the visual quality of the lighting effect.
State Description
BulbOff Turns Off the Bulb.
BulbOn Turns On the Bulb.
The Bulb will follow 'pattern' defined by the
BulbBlink
Blink Pattern field.
Blink Pattern
Blink Interval
This Section describes the object and how it can be accessed and controlled via
the script at run-time. Note that you access the object via the name given in the
Name property field.
Script Example:
MyFlasher.State = BulbOn
You can also use the State to help in game play decisions; i.e.,.
Script Example:
MyFlasher.BlinkPattern = "10"
or:
MyFlasher.BlinkPattern = "1101110"
<Integer> .BlinkInterval = { Period in Milliseconds }
Allows you to set the Period (in milliseconds) Future Pinball takes to
process each state within a Blink Pattern. When the Blink Pattern has
been fully processed it will begin again from the start and keep on
repeating while ever .State is set to BulbBlink. The Interval must be at
least 25 milliseconds. If the Flasher is currently Blinking, setting this will
reset the current Blink timer to the new value specified.
Script Example:
MyFlasher.BlinkInterval = 100
MyFlasher.State = BulbBlink
MyFlasher.BlinkPattern = "10"
MyFlasher.BlinkInterval = 150
Script Example:
BlinkPattern allows you to define a special Blink Pattern the Bulb will
follow when the State has been set to BulbBlink. This pattern is defined
out of a string made up out of 0s (turn bulb Off) and 1s (turn bulb On). At
least 2 pattern states must be given (i.e., "10", "01", "11" or "00") with a
maximum of 32 individual states. If the Bulb is currently following another
Blink Pattern, setting this will immediately change the blink pattern over to
the new one. If no string is specified, the current pattern in the
.BlinkPattern property is not changed.
Script Example:
BlinkInterval is a positive number and is the time to hold each Flash state
for. The Interval must be at least 25 milliseconds and if no value is
specified then 75 ms is used.
EndBulbState defines the state of the Flasher after the TotalPeriod has
expired. If the Bulbs .State is read which the bulb is flashing for the
desired interval, the it will return the EndBulbState.
The Flasher object doesn't have any Events which it can call via the script.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: The Light Sequencer
Future Pinball contains a device called the 'Light Sequencer' (or LS for short). What this
basically does is take a Light List created by the Light List Manager (link) and runs full table
special lighting effects that you would see on a commercial pinball game. This saves you having
to manually coding hundreds if not thousands of script lines.
The Light Sequencer, when running, takes control of the lights you specify for it to use. It does
this by overlaying the effect over the lights without affecting the true state of the light. As many
scripts use lights for game conditionals (i.e., If MyLight.State = BulbOn then award bonus and
turn light off) the Light Sequencer ensures that your script does not need to worry about
whether or not the Sequencer is currently running. It is totally transparent to your table.
Changing the value of a light while a sequence is running will not actually turn a light on or off
(or even to blinking), but it will remember what the current state is so when the Sequencer is
finished, the light will be restored to the last set state.
Multiple Light Sequencers can be placed on the table allowing for different sections of the table
to have its own effects if needed (such as split playfields) or effects which have use a different
centre point (more of this in a bit). Each Light Sequencer can have its own Light List so you can
use different Sequencers to control different parts of the table. A light can also exist in multiple
lists so there is no limitations about which lights can be where.
Please note that when the Light Sequencer mentions a 'Light', it isn't just referencing the Light
objects but also Bumpers, Flashers, Em Reels and Bulbs.
As the Light Sequencer requires the use of a Light List, you will need to be familiar with the Light List
Manager (link) before continuing.
When you create a Light Sequencer on your table, the object will be drawn onto the current workspace.
Light Sequencers can be placed on both the Table and Translite workspaces.
It is important to note that the light sequencer will only process lights in the view in which it has been
created. For example. If you create a Light Sequencer in the Translite workspace view then it will only
process lights (as specified in the Light List) which have also been placed on the Translite. There is an
option for a Light Sequencer created in the Table Work space to also include any Translite lights allows
for full machine lighting effects.
Sets the name of the object which is used to reference the object via Script
events. The name must be unique for the table and may not contain any
spaces. As with all Object Names, you should give a descriptive name to your
object.
The centre reference point which the Light Sequencer uses to base all its
effects from (based in millimeters from the top left hand corner of the table). If
an effect rotates around (or uses the centre) point then you can move it to
change where the effect starts from (or uses as its centre).
A secondary icon is drawn onto the current view which graphically shows the
Virtual Centre.
Click on the centre point icon and you can move it around the table.
When you first create a light sequencer, the centre point will be set to the
centre of the table.
Instructs the Light Sequencer to also use lights in the specified Light List if
they are on the translite (backbox). This allows effects to run over the full
machine and not just being limited to either the Playfield or the Backbox. This
option is only available if the Light Sequencer has been created onto the
Table workspace view.
Include
Description
Translite Lights
The Lighting Effect will also include any Translite Lights
Yes
included in the Light List
The Effect will only use Lights in the Light List which are on
No
the Playfield
Light List
Defines the Light List for the Sequencer to use. Light Lists are created by the
Light List manager (link).
Update Interval
Defines the update interval (in Milliseconds) of the light sequencer. The Lower
the value, the faster the effects will run. This value must be at least 5
Milliseconds.
Flashers Blink
Blink Interval
Defines the Period (in milliseconds) the Flashers will blink if the Flashers
Blink option is enabled. The Interval must be at least 25 milliseconds.
Things to be Careful of
The Light Sequencer works by subdividing the table into 15x15 millimeter cells. Only 1 light is allowed
per cell so if a single cell contains 2 lights then only one of them will be processed. In order to test the
positioning of the lights on your table you can turn on and set the editor grid to 15 millimeters.
All Light Objects will have a center marker (a cross with a circle) which you can use to ensure that there
are no 2 lights within the same cell. For the Shapeable Light object you should use the Halo cursor. For
more information refer to the shapeable light object (link).
In General though, this isn't an issue on pinball table as they generally don't place bulbs that close to
each other.
These effects are processed as 'Head' effects. The 'Head' effect is the main effect. For example if you
are turning all the lights on from the bottom of the playfield and moving upwards. The point at which the
light turns on is where the 'head' of the effect is. The head will change from frame to frame as it moves
up the playfield.
Each 'Head' effect can have a 'Tail' effect which follows the 'Head' effect and inverts the state to which
the 'Head' sets a light. For example. If as above you are turning on lights moving up, then the 'Tail' will
turn them off. If the 'Head' turns them off, the 'Tail' will turn them on.
The Distance at which the 'Tail' follows the 'Head' is completely up to you, or you may decide not to have
a tail. The 'Tail' will always run at the same speed as the 'Head' and the effect is not classified as
finished until both the 'Head'' & ''Tail' have both finished.
This Section describes the object and how it can be accessed and controlled via the script at run-
time. Note that you access the object via the name given in the Name property field.
Script Example:
MyLightSeq.UpdateInterval = 10
The .UpdateInterval property will not actively change the speed of any currently running
effects. It is there to specify the speed of the next effect queued by the .Play() command.
This each effect in the queue can run at different speeds, allowing you to mix fast effects
with slow effects.
Script Example:
' scroll up, turning all the lights on with a tail turning them
MyLightSeq.UpdateInterval = 10
MyLightSeq.Play SeqUpOn, 75, 2
' as about but with a shorter tail (and quicker)
MyLightSeq.UpdateInterval = 5
MyLightSeq.Play SeqUpOn, 25, 2
When you issue a play command. It basically puts it into a Queue, thus you can load up
the Sequencer with a heap of effects and it will process all of them. When the queue is
empty it will let you know (by the _Empty() Event) so you can either 'refill' the Sequencer
or perform any other action your table requires. The size of the queue is 100 effects.
When you issue a Play command to the Light Sequencer, it puts each light in its collection
into a special state where it will remember its current lit state (either on, off or blinking) but
won't actually change state if you actively change it in the script. At this point only the Light
Sequencer can physically change the state of the light but any changes made by you to
the light in the script are remembered, just not carried out. When the Light Sequencer has
finished all the effects that is has in its queue (or you tell it to stop with the .StopPlay()
method) then it will give control of the lights back to you and restore them to their current
real state as set by you in the script. Even while an effect is running you can (in the script)
get the real value of the light and not what the Light Sequencer has set it to. This
effectively means that you don't have to worry about what the Sequencer is doing to your
lights if you use (like many people including myself) light states to control the control logic
of your code.
The Play command has 5 parameters. Only the first one is required (mandatory). The
others don't have to be specified and/or can be skipped if required. If you don't specify
them then they will use their default value. The parameters are as follows:
Although the descriptions of these effects are based on lights on the playfield, if you are
animating Translite bulbs instead then the rear of the playfield will mean the top of the
backbox and the front of the playfield can be substituted for the bottom of the backbox
(closest to the glass).
On the Left you see a little graphical representation on how the lights change
on the playfield. The Darker lights are the 'head' whilst the lighter lights (gray)
represent the 'Tail'. The arrows show the direction the head moves (in this
case it is towards the centre reference point).
The light gray lines represent the centre reference point which doesn't
actually have to be in the centre of the table. Not all effects use the reference
point and some only use 1 axis of it.
Effect
The type of effect used to display the screen (or text) onto the display. This field mus
Effect
Descrip
SeqUpOn / This effect turns On (or Off) all the lights in the light list
SeqUpOff towards the rear.
SeqRightOn / This effect turns On (or Off) all the lights in the light list
SeqRightOff towards the right.
SeqLeftOn / This effect turns On (or Off) all the lights in the light list
SeqLeftOff towards the left.
SeqDiagUpRightOn / This effect turns On (or Off) all the lights in the light list
SeqDiagUpRightOff moving upwards diagonally towards the top right corne
SeqDiagUpLeftOn / This effect turns On (or Off) all the lights in the light list
SeqDiagUpLeftOff moving upwards diagonally towards the top left corner.
SeqDiagDownLeftOn / This effect turns On (or Off) all the lights in the light list
SeqDiagDownLeftOff moving downwards diagonally towards the bottom left c
SeqMiddleOutHorizOn / This effect turns On (or Off) all the lights in the light list
SeqMiddleOutHorizOff moving out towards the side edges of the playfield.
SeqMiddleInHorizOn / This effect turns On (or Off) all the lights in the light list
SeqMiddleInHorizOff the horizontal centre reference point of the playfield
SeqMiddleOutVertOn / This effect turns On (or Off) all the lights in the light list
SeqMiddleOutVertOff moving out towards the top and bottom edges of the pla
SeqMiddleInVertOn / This effect turns On (or Off) all the lights in the light list
SeqMiddleInVertOff inwards to the vertical centre reference point of the play
SeqStripe1HorizOn / This effect turns On (or Off) all the lights in the light list
SeqStripe1HorizOff right edge of the playfield for the top half of the playfield
the playfield. The vertical centre reference point is used
SeqStripe2HorizOn / This effect turns On (or Off) all the lights in the light list
SeqStripe2HorizOff the left edge of the playfield for the top half of the playfi
half of the playfield. The vertical centre reference point
SeqStripe1VertOn / This effect turns On (or Off) all the lights in the light list
SeqStripe1VertOff towards the top edge of the playfield for the left half of t
for the right half of the playfield. The horizontal centre r
SeqStripe2VertOn / This effect turns On (or Off) all the lights in the light list
SeqStripe2VertOn the bottom edge of the playfield for the left half of the p
half of the playfield. The horizontal centre reference po
TailLength: Normal Use
SeqHatch1HorizOn / This effect turns On (or Off) all the lights in the light list
SeqHatch1HorizOff moving from the left edge towards the right edge of the
from the right to the left edge of the playfield.
SeqHatch2HorizOn / This effect turns On (or Off) all the lights in the light list
SeqHatch2HorizOff and moving from the right edge towards the left edge o
moving from the left to the right edge of the playfield.
SeqHatch1VertOn / This effect turns On (or Off) all the lights in the light list
SeqHatch1VertOff and moving from the top edge towards the bottom edge
positions moving from the bottom to the top edge of the
SeqHatch2VertOn / This effect turns On (or Off) all the lights in the light list
SeqHatch2VertOff and moving from the top edge towards the bottom edge
moving from the bottom to the top edge of the playfield
SeqCircleOutOn / This effect turns On (or Off) all the lights in the light list
SeqCircleOutOff Sequencer and moving outwards towards the edges.
SeqCircleInOn / This effect turns On (or Off) all the lights in the light list
SeqCircleInOn inwards towards the centre reference point of the Sequ
SeqClockRightOn / This effect turns On (or Off) all the lights in the light list
SeqClockRightOff rotating clockwise (much like a clock hand) until it reach
SeqClockLeftOn / This effect turns On (or Off) all the lights in the light list
SeqClockLeftOff rotating anti-clockwise (much like a clock hand in rever
SeqRadarRightOn / This effect turns On (or Off) all the lights in the light list
SeqRadarRightOff reference point and sweeping clockwise (much like a ra
of the playfield. The entire playfield is covered by the sw
SeqRadarLeftOn / This effect turns On (or Off) all the lights in the light list
SeqRadarLeftOff reference point and sweeping anti-clockwise (much like
side of the playfield. The entire playfield is covered by t
SeqWiperRightOn / This effect turns On (or Off) all the lights in the light list
SeqWiperRightOff reference point and sweeping anti-clockwise until it rea
The entire playfield is covered by the sweep.
SeqWiperLeftOn / This effect turns On (or Off) all the lights in the light list
SeqWiperLeftOff reference point and sweeping clockwise until it reaches
The entire playfield is covered by the sweep.
SeqFanLeftUpOn / This effect turns On (or Off) all the lights in the light list
SeqFanLeftUpOff reference point and sweeping anti-clockwise until it rea
The entire playfield is covered by the sweep.
SeqFanLeftDownOn / This effect turns On (or Off) all the lights in the light list
SeqFanLeftDownOff reference point and sweeping clockwise until it reaches
The entire playfield is covered by the sweep.
SeqFanRightUpOn / This effect turns On (or Off) all the lights in the light list
SeqFanRightUpOff reference point and sweeping anti-clockwise until it rea
The entire playfield is covered by the sweep.
SeqFanRightDownOn / This effect turns On (or Off) all the lights in the light list
SeqFanRightDownOff reference point and sweeping clockwise until it reaches
The entire playfield is covered by the sweep.
SeqArcBottomLeftUpOn / This effect turns On (or Off) all the lights in the light list
SeqArcBottomLeftUpOff and sweeping anti-clockwise until it reaches the other e
The entire playfield is covered by the sweep.
SeqArcBottomLeftDownOn / This effect turns On (or Off) all the lights in the light list
SeqArcBottomLeftDownOff and sweeping clockwise until it reaches the other edge
The entire playfield is covered by the sweep.
SeqArcBottomRightUpOn / This effect turns On (or Off) all the lights in the light list
SeqArcBottomRightUpOff and sweeping clockwise until it reaches the other edge
The entire playfield is covered by the sweep.
SeqArcBottomRightDownOn This effect turns On (or Off) all the lights in the light list
/ and sweeping anti-clockwise until it reaches the other e
SeqArcBottomRightDownOff The entire playfield is covered by the sweep.
SeqArcTopLeftDownOn / This effect turns On (or Off) all the lights in the light list
SeqArcTopLeftDownOff and sweeping clockwise until it reaches the other edge
The entire playfield is covered by the sweep.
SeqArcTopRightUpOn / This effect turns On (or Off) all the lights in the light list
SeqArcTopRightUpOff and sweeping clockwise until it reaches the other edge
The entire playfield is covered by the sweep.
SeqArcTopRightDownOn / This effect turns On (or Off) all the lights in the light list
SeqArcTopRightDownOff and sweeping anti-clockwise until it reaches the other e
The entire playfield is covered by the sweep.
SeqScrewRightOn / This effect turns On (or Off) all the lights in the light list
SeqScrewRightOff playfield and screwing clockwise.
SeqScrewLeftOn / This effect turns On (or Off) all the lights in the light list
SeqScrewLeftOff playfield and screwing anti-clockwise.
Special Effects
SeqAllOff This effect will turn Off all the lights in the light list. This
states of the lights. It is treated as an open ended effec
call the .StopPlay() method to restore the lights to their
SeqAllOn This effect will turn On all the lights in the light list. This
of the lights. It is treated as an open ended effect which
call the .StopPlay() method to restore the lights to their
SeqBlinking This effect will blink (turn on, pause, turn off, pause) ea
TailLength: Not Used
SeqRandom This effect randomly turns On and Off lights in the light
SeqDoNothing This effect will not perform any action apart from delayi
to put delays between effects (if needed) if the effect in
Pause parameter.
Pause: The total time to run the effect for (time to wait)
SeqListOrder This effect turns On all the lights in the light list using th
This allows for custom effects to be created if you take
SeqRandomEffect This effect will pick a random effect from one of the effe
SeqScrewLeftOff). This allows a different effect to be p
TailLength
As mentioned above each effect has a tail which basically follows behind inverting th
will turn them off. The value is specified in number of frames (update intervals) after t
specified then it will default to 0. Play with it.
Repeat This specifies how many times to process this effect. This allows you to run the same
multiple play commands. If no value is specified then it will default to 1.
Pause Specifies the time to pause (in milliseconds) before moving onto the next effect in the
effect again if it has to be repeated. If no value is specified then it will default to 0.
SoundEffect The Sound file to play when this effect is first processed. This allows corresponding s
display. Sounds are imported into the Table via the Sound Manager (link). If this valu
Repeat is set to a value greater than 1 then the sound will also repeat.
For more Script examples, refer to the Light Sequencer example table included with Future
Pinball.
.StopPlay ()
This command will flush the Queue and restore the lights to their correct state as set by
you in the table script. It is processed immediately and the_Empty() event is not given to
the script.
Script Example:
MyLightSeq.Stoplay()
_Empty ()
This event is called when the Light Sequencer Device has finished processing its effect
queue.
During normal game play this event is not very useful but it is useful in any attract mode
you may program into your game. Attract modes generally cycle fixed patterns over groups
of lights but after a 30 seconds or so perform a few full table lighting effects. You can use
this event to return back to cycling lights after the Light Sequencer has finished.
Script Example:
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Gates
When you create a Gate on your table, the object will be drawn on to
the table workspace. If the Gate has been marked as being One
Way, a Purple Guide line will show the direction the ball is allowed to
go though the Gate.
Selecting this object will bring up the following property sheet:
Name
Model
Texture
Sphere Mapping
Colour
Surface
One Way
Playfield
Script Example:
Sub MyGate_Hit()
AddPoints(100)
End Sub
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Spinners
When you create a Spinner on your table, the object will be drawn on
to the table workspace.
Selecting this object will bring up the following property sheet:
Name
Model
Texture
Colour
Rotation
Damping
Playfield
_Hit()
This event is signaled to the script whenever the Ball
Hits a the spinner and it causes it to Spin past 135
degrees of swing (either direction).
Script Example:
Sub MySpinner_Hit()
PlaySound "SpinnerSound"
AddPoints(100)
End Sub
_UnHit()
This event is signaled to the script after the _Hit()
event has been signaled and the Spinner is not
between the triggering angles. Older EM games would
increment the score once the spinner had either done a
complete loop or reset itself after being triggered.
Script Example:
Sub MySpinner_UnHit()
AddPoints(100)
End Sub
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Triggers
When you create a Trigger on your table, the object will be drawn
onto the table workspace.
Selecting this object will bring up the following property sheet:
Name
Model
Texture
Sphere Mapping
Colour
Rotation
Surface
Sits on Playfield
Playfield
When Hit
_Hit()
This event is signaled to the script whenever the Ball
Hits (Rolls Over) a Trigger.
Script Example:
Sub MyTrigger_Hit()
AddPoints(100)
End Sub
_UnHit()
This event is signaled to the script after the _Hit()
event has been signaled and the Trigger switch (which
has been pushed down by the ball hitting the Trigger)
has stopped making contact.
Script Example:
Sub MyTrigger_UnHit()
' Do Something..
End Sub
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Triggers (Optocouplers)
Name
Model
Texture (Collector)
Texture (Emitter)
Colour
Rotation
Surface
Playfield
When Hit
_Hit()
This event is signaled to the script whenever the Ball
rolls though the beam between the Collector and
Emitter hence blocking the beam.
Script Example:
Sub MyTriggerOpto_Hit()
AddPoints(100)
End Sub
_UnHit()
This event is signaled to the script after the _Hit()
event has been signaled and the Trigger Collector is
detecting the beam from the Emitter.
Script Example:
Sub MyTriggerOpto_UnHit()
' Do Something..
End Sub
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Ramps (Plastic / Metal)
When you create a Ramp on your table, the object will be drawn on
to the table workspace.
Selecting this object will bring up the following property sheet:
Profile
State Description
Plastic Ramp with rolled
Ramp_T1 edges (Thickness of
ramp is 2mm)
Metal Ramp (Thickness
Ramp_T2
of ramp is 1mm)
Texture
Colour
Defines the colour of the Object. If the
object is to be rendered with a texture, the
texture will be tinted with this colour. If the
object has no texture, it will be rendered in
this colour. It is best never to use Full
Strength colours (i.e., where either the
Red, Green or Blue components are at
their Limits) as this will adversely affect
how the object is Shaded by the Lighting
system. For more information on the use
of Colour refer to the Special Graphic
Processing chapter (link).
Sphere Mapping
Transparency
Surface
Start Height
Start Width
End Width
Playfield
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Wire Ramps (Habitrails)
Colour
Texture
Surface
Start Height
End Height
Start Model
End Model
Playfield
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Ramps (Models)
When you create a Ramp Model on your table, the object will be
drawn onto the current workspace.
Selecting this object will bring up the following property sheet:
Name
Model
Sphere Mapping
Transparency
Y
Defines the Y location (again in millimeters
from the top left hand corner of the
playfield) of the object on the Table.
Rotation
Surface
Offset
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Spinning Disks
When you create a Spinning Disk on your table, the object will be
drawn on to the table workspace.
Selecting this object will bring up the following property sheet:
Name
Model
Texture
Allows you to wrap a texture over the
Spinning DIsk. Textures are imported into
the Table via the Texture Manager (link).
Selecting a Texture will also show a small
preview picture of the texture.
Colour
Playfield
Motor Power
Damping
<Boolean> .AntiClockwise
Script Example:
.SolenoidOn()
This Method will turn ON the Motor for the Spinning
Disk. This will cause the motor to start spinning the
Disk.
Script Example:
.SolenoidOff()
This Method will turns OFF the Motor for the Spinning
Disk.. If the Solenoid/Motor is currently on then the
Disk will slowly slow down and stop.
Script Example:
MySpiningDisk.SolenoidOff()
.SolenoidPulse ( <Integer> PulseTime )
The SolenoidPulse method, will pulse the Solenoid On
for an amount of time and when the time expires will
turn the Solenoid Off again.
Script Example:
MySpiningDisk.SolenoidPulse
or;
MySpiningDisk.SolenoidPulse(500)
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Hologram
The Hologram object recreates the overhead image projection that was pioneered for the
Pinball 2000 Platform by Williams Industries. This hologram system allows for full colour
images and animation to be projected though the glass and over the the table components
underneath. This allows for really nice video integration with the ball as video sequences can
be played when the ball hits targets, switches etc.
Future Pinball also allows for a Dot Matrix Display to also be projected over the hologram
allowing for the score and text to be displayed independently to image animation. For more
information on how the DMD displays work refer to the Dot Matrix Display section of this
manual (link) as this part of the manual will only be talking about the interface changes.
When you create a Hologram on your table, the object will be drawn onto the current workspace.
Hologram can only be placed on the Playfield workspace.
Selecting this object will bring up the following property sheet:
Name
Sets the name of the object which is used to reference the object via Script
events. The name must be unique for the table and may not contain any
spaces. As with all Object Names, you should give a descriptive name to your
object.
Image List
Defines the Image List for the Hologram to use. Image Lists are created by
the Image List manager (link).
Colour
Defines the colour of any drawn image (from the Image List). It is best to used
a similar colour to the Translite colour if you are going to use the overlay on
the translite.
Defines the X location (based in millimeters from the top left hand corner of
the translite) of the object on the Table.
Defines the Y location (again in millimeters from the top left hand corner of the
translite) of the object on the Table.
Width
Defines the width of the Hologram projection in mm. Width must have a
minimum of 5mm.
Height
Defines the Height of the Hologram projection in mm. Height must have a
minimum of 5mm.
Rotation
Allows you to change the rotation of the hologram projection on the XZ axis.
Valid values range from 0 to 359 degrees.
Tilt
Allows you to change the tilt of the hologram projection on the YZ axis. Valid
values range from 0 to 90 degrees.
Offset
Defines the offset (in millimeters) from the Playfield to draw the Hologram at.
This value allows to to raise (or lower) the projection.. Valid values range from
0 to 100 millimeters
Update Interval
Generally you will not need to change this value unless you wish to change
how fast any page flipping animations work.
Matrix Colour
As mentioned above, A dmd can also drawn over the hologram projection
allowing for the score to be displayed and other text animations.
Matrix colour defines the colour of the Dots when they are Lit. Unlike the DMD
Display object unlit dots will not be drawn.
If enabled (Ticked ), the DMD will be displayed as individuals Dots (just like
a normal dmd) otherwise the display will be drawn as blocky text (how blocky
depends on the dot count values defined). Please note that this affect requires
shader support on the players computer. If shaders are not supported then the
text will be drawn in block mode irrelevant to this setting (Every video can
produced in the last 4 years is capable of running shaders).
X Dot Count
Defines the dot count along the Horizontal axis for the DMD. This value must
be a multiple of 2 and between 8 and 256. (ie 8, 16, 32, 64, 128, 256).
Height
Defines the dot count along the Vertical axis for the DMD. This value must be
a multiple of 2 and between 8 and 256. (ie 8, 16, 32, 64, 128, 256). The more
dots the better the display will look but you might be after a more display
display which less dots will achieve.
Alignment
Allows you to define how text and numbers are aligned on the display. You
can select one of the following:
Alignment Description
AlignLeft Any Text / Numbers displayed will be Left aligned.
AlignCenter Any Text / Numbers displayed will be Center aligned.
AlignRight (Default) Any Text / Numbers displayed will be Right aligned.
Update Interval
Defines the update interval (in Milliseconds) of the DMD device. The Lower
the value, the more the display device will be updated. this has the effect to
making any scrolling effects look smoother as the scroll will be faster (with a
lower value). In general you will not have to play with this value. The value
must be at least 5 milliseconds. Setting this value may also effect (and adjust)
the Slow and Fast Blink Speeds if you set it to a value larger than either of
those values.
Generally you will not need to change this value unless you wish to slow down
the display effects.
Defines the speed on which text marked as Blinking (slowly) will blink at. This
value must be at least double that of the Update Interval and is specified in
Milliseconds
Defines the speed on which text marked as Blinking (fast) will blink at. This
value must be at least that of the Update Interval and is specified in
Milliseconds.
This Section describes the object and how it can be accessed and controlled via the script at run-
time. Note that you access the object via the name given in the Name property field.
It is recommended that you are fully familiar on how the Dot Matrix display works as this
section
of the will only include the interface changes. Please Note that the Hologram/DMD does not
support
background images within the DMD portion of the display. Hence the [IL], [AS], [NA], [SF],
[EF] and [RF]
embedded commands are not supported.
This value is independent to the .DmdUpdateInterval property below and only affects the
speed of the Hologram refresh.
Script Example:
MyHologram.UpdateInterval = 100
Script Example:
If (MyHologram.CurrentFrame = 1) Then
' Do something..
End If
Script Example:
Dim MyScore
MyScore = MyHologram.Value
The DMD will have an internal value of 0 when the table is first played though this is not
automatically displayed. If you wish to use the Hologram/DMD Display object in the
Simpler Number only way, you will need to issue a .SetValue command at startup to
initialise the display.
Script Example:
This value is independent to the .UpdateInterval property above and only affects the
speed of the DMD refresh.
Script Example:
MyHologram.DmdUpdateInterval = 10
Script Example:
MyHologram.SlowBlinkSpeed = 100
<Integer> .FastBlinkSpeed = { Period in Milliseconds }
This property allows you to change how fast (or slow) text will blink (flash) on the display
when using the [bf] comment token. The value specified (in milliseconds) must be at least
the .DmdUpdateInterval value and preferably a multiple of it. Setting this to a value less
than the update interval will set it to be the update interval.
Script Example:
MyHologram.FastBlinkSpeed = 50
Script Example..
These methods animate the image being display on the Hologram. As an Image List can
contain lots of individual frames, these methods allows you to toggle which frame to display
from the Image List.
StartFrame
The initial frame to display. This should be an integer number between 1
and the maximum number of images in the Image List. A value of 1 will
display the first frame. If this value is out of range then this command will
have no effect.
EndFrame
If you wish the Overlay to animate between several images within the
Image List (in a sequential order) then this field will allow you to set the end
frame. Each frame (between the StartFrame and the EndFrame will be
displayed in turn (at the rate defined by .UpdateInterval). You can animate
both Forwards and Backwards. If not value is specified then no animation
will take effect. If this value is out of range then the command will have no
effect.
RepeatFrame
This field allows you to specify a frame index to start (or repeat) an
animate once it has progressed from the StartFrame to the the
EndFrame. If no value is specified then the any animation will only play
once.
Script Examples:
MyHologram.Frame 1
MyHologram.Frame 1, 5
Animate between Frame 1 and 5 and restart the animation from frame 3 (playing again to
frame 5 and repeating again and again);
MyHologram.Frame 1, 5, 3
MyHologram.Frame MyHologram.CurrentFrame
.StepForward()
This method will advance the Image Frame being displayed (display the next image in the
list). If it exceeds the number of frames in the Image List then it will begin again from the
first frame. If the Image List only has a single frame then this method will have no effect.
Script Example:
MyHologram.StepForward()
.StepBackward()
This method will retard the Image Frame being displayed (display the previous image in
the list). If it goes back before the first frame then it will start again from the last frame in
the Image List. If the Image List only has a single frame then this method will have no
effect.
Script Example:
MyHologram.StepBackward()
.FadeOut()
This method will fade out the Hologram (and any DMD text) until it is not visible anymore.
If the Hologram has already been faded out then this command will have no effect.
Script Example:
MyHologram.FadeOut()
.FadeIn()
This method will fade in the Hologram until it is fully visible. If the Hologram is already
visible then this command will have no effect.
Script Example:
MyHologram.FadeIn()
Script Example:
MyHologram.ResetToZero()
Script Example:
MyHologram.AddValue(100)
Script Example:
Sub FuturePinball_BeginPlay()
' initalise the player displays to the last known player score
MyDmd.SetValue(nvScore1)
' ..Etc..
End Sub
Text
Specifies the Text to Display. Embedded DMD commands are processed if
they are included in the text.
Effect
The type of effect used to display the screen (or text) onto the display. This
field must be one of the following:
Generally the Scroll Effects will scroll any existing data off the screen, while
the Wipe effects replace the old screen with the new one.
Effect
Description
deNone (Default)
The text is instantly displayed.
deScrollLeft The text is scrolled onto the display starting from the
right most position and moving towards the left. Any
existing text is scrolled as well so effectively the old text
scrolls off while the new text scrolls on.
deScrollLeftOver The Text is scrolled onto the display starting from the
right most position and moving towards the left. It will
appear to scroll over any existing text.
deScrollRight The Text is scrolled onto the display starting from the
left most position and moving towards the right. Any
existing text is scrolled as well so effectively the old text
scrolls off while the new text scrolls on.
deScrollRightOver The Text is scrolled onto the display starting from the
left most position and moving towards the right. It will
appear to scroll over any existing text.
deScrollUp The text is scrolled upwards onto the display starting
from the bottom and moving upwards. Any existing text
is scrolled as well so effectively the old text scrolls off
while the new text scrolls on.
deScrollUpOver The Text is scrolled onto the display starting from the
bottom and moving upwards. It will appear to scroll over
any existing text.
deScrollDown The text is scrolled downwards onto the display starting
from the top and moving downwards. Any existing text
is scrolled as well so effectively the old text scrolls off
while the new text scrolls on.
deScrollDownOver The Text is scrolled onto the display starting from the
top and moving downwards. It will appear to scroll over
any existing text.
deScrollOut The Text will appear to scroll outwards (both left and
right) from the middle of the display.
deScrollIn The Text will scroll inwards from both the left and right
most edges of the display towards the middle.
deScrollOutVert The Text will appear to scroll outwards (both top and
bottom) from the middle of the display.
deScrollInVert The Text will scroll inwards from both the top and
bottom edges of the display towards the middle.
deWipeLeft Each DMD column will be replaced one at a time with
the new text (replacing any existing old text) starting
from the right and moving towards the left.
deWipeRight Each DMD column will be replaced one at a time with
the new text (replacing any existing old text) starting
from the left and moving towards the right.
deWipeUp Each DMD row will be replaced one at a time with the
new text (replacing any existing old text) starting from
the bottom and moving upwards.
deWipeDown Each DMD row will be replaced one at a time with the
new text (replacing any existing old text) starting from
the top and moving downwards.
deWipeOut
The new text will wipe out from the middle of the display
to the left and right edges.
deWipeIn
The new text will wipe in from the left the right edges
towards the middle.
deWipeOutVert
The new text will wipe out from the middle of the display
to the top and bottom edges.
deWipeInVert
The new text will wipe in from the top the bottom edges
towards the middle.
deFlip The Entire screen will flip over (vertical) and the next
screen will flip on.
deRandomEffect The Transition effect will be random selected from one
of the above effects.
TimeOn
Defines the time in milliseconds this screen is held for before moving to the
next display in the queue. This time also included the time to process the
Effect. For Best Results this should be a multiple of the .UpdateInterval
property. If no value is specified, the text will immediately be displayed and
the next (if any) display in the queue will be processed.
FlushQueue
Instructs the display driver to flush the queue if this is the LAST display in
the queue. Valid values are TRUE or FALSE. Generally during a game you
will always specify TRUE as you will want to display to revert back to the
default score screen when your effect screen has finished. During the
Attract mode though you will want it to be FALSE as you will want the attract
mode displays to automatically restart when they have finished. this allows
you to only put the displays in once and not have to worry about the driver
running out of things to do. If no value is specified, it is assumed to be
TRUE.
If this display is the last one in the queue (when it is processed, not when
you put it into the queue), it will call the _Empty() script event. You can use
this event to put back any default screens onto the display (such as
displaying the score)
Sound The Sound file to play when this screen is first processed. This allows
Effect corresponding sounds to be sync'd up with the appropriate display (i.e., a
bonus sound or something). Sounds are imported into the Table via the
Sound Manager (link). If this value is not specified, no sound effect will play.
Script Example:
For more Script examples, refer to the DMD Display example table which is included with
Future Pinball.
.FlushQueue ()
This method will flush (empty) the text queue (if any) so any screens that are still to be
processed are ignored. Note that this will not call the _Empty() script event as you are
manually emptying the queue so it's not finishing due to all the screens being processed.
Script Example:
MyHologram.FlushQueue()
Slot
A slot number to assign the font to. This as to be between 1 and 32
(inclusive). If an existing font already exists in this slot then it will be
overwritten.
FontName
The name of the font as imported into the table via the via the Font
Manager.
Script Example:
MyHologram.AddFont 1, "dmd05x05p"
MyHologram.AddFont 2, "dmd06x07p"
_Empty ()
This event is called when the Hologram/DMD Display Device has finished processing the
text queue and the last entry in the queue told the driver to finish up (by setting the
FlushQueue parameter to True in the .QueueText method)
You can use this to revert back to a default screen such has displaying the players score
when any screens you queue up finish being processed.
Script Example:
The Toy object allows for custom 3D models to be controlled via the script and made to animate, move
and rotate. This object is very advanced and requires a minor understanding of 3D movement/rotation
principles. Toy objects are generally 'one off' special objects on pinball tables which are specific to that
game and are used to add a bit of uniqueness to the table. Toy models can only be crafted by the Future
Pinball development team.
When you create a Toy on your table, the object will be drawn onto the current workspace.
Update Interval
Defines the update interval (in Milliseconds) of the Toy when it is animating
individual from from the 3D model via the Frame() script method for this object. The
Lower the value, the faster the Frame() method will work. The value must be at
least 25 milliseconds.
This Section describes the object and how it can be accessed and controlled via the script at run-
time. Note that you access the object via the name given in the Name property field.
This property allows you to change the animation speed of the object
when it is Animating (changing key frames in the 3d model. The smaller
the value the faster the animation will run. The value must be at least
25 milliseconds.
Script Example:
myToy.UpdateInterval = 100
Will return the current key frame from the 3D model. This will be a
value between 1 and the maximum number of key frames in the
model.
Script Example:
If (myToy.CurrentFrame = 1) Then
' Do something..
End If
This property allows you to get or set the X coordinate of the object
on the playfield. If you set this value then this will stop any current
MoveTo() action currently being performed. Future Pinball does not limit
the value of this property so you must be careful not to set it to a position
outside of the playfield.
This diagram will help explain the different axis's in 3D. +Z is towards
the front of the playfield (-Z is towards the backbox). +Y is above the
playfeild. 0, 0, 0 is the exact center of the playfield and on its surface so
the majority of object will have a +Y position.
Script Example:
myToy.Tx = 100
This property allows you to get or set the Z coordinate of the object on
the playfield. If you set this value then this will stop any current
MoveTo() action currently being performed. Future Pinball does not limit
the value of this property so you must be careful not to set it to a position
outside of the playfield.
This property allows you get or specify the rotation angle of the
object on the XZ axis. If you set this value then this will stop any
current RotateXZ() command which may be currently being processed.
Values will be between 0.00 and 359.99 degrees.
This diagram will help explain the different rotation axis's and how the
effect the Toy object.
Script Example:
' set the angle to 22.0 degrees
myToy.AngleXZ = 22.0
This property allows you get or specify the rotation angle of the
object on the XY axis. If you set this value then this will stop any
current RotateXY() command which may be currently being processed.
Values will be between 0.00 and 359.99 degrees. For more information
refer to the .AngleXY property.
This property allows you get or specify the rotation angle of the
object on the YZ axis. If you set this value then this will stop any
current RotateXZ() command which may be currently being processed.
Values will be between 0.00 and 359.99 degrees. For more information
refer to the .AngleXY property.
.StepForward()
This method will advance the Key Frame being displayed (display
the next key frame in the model). If it exceeds the number of key
frames in the model then it will begin again from the first key frame.
If the the model has only has a single key frame then this method
will have no effect.
Script Example:
myToy.StepForward()
.StepBackward()
This method will retard the Key Frame being displayed (display the
previous key frame in the model). If it goes back before the first
key frame then it will start again from the last key frame in the
model. If the model only has a single key frame then this method
will have no effect.
Script Example:
myToy.StepBackward()
This method also allows you to move the Toy object to any location
in the Future Pinball 3D world. Future Pinball does not limit the values
of this method so you must be careful not to move it to a position outside
of the playfield (unless ofcourse you want to).
X The X coordinate to move the object to.
Speed The Speed at which the object will move. Future Pinball uses
logarithms to control the speed of the object so the object will
ramp up to speed which reflects the time it takes for a pinball
motor to wind up to full speed. The speed must be positive.
Specifying a negative speed will have no affect.
For more information on 3d coordinates refer to the .Tx property.
Script Example:
' lower the object into the playfield (draw bridge in bk2k)
myToy.MoveTo myToy.Tx, myToy.Ty-42, myToy.Tz
This method also allows you to rotate the object on the XZ axis at
the specified speed. The rotation will stop when the XZ angle
reaches the StopAtAngle (if specified) else the object will continue
to rotate forever.
Script Example:
myToy.RotateXZ -50, 90
This method also allows you to rotate the object on the YZ axis at
the specified speed. The rotation will stop when the YZ angle
reaches the StopAtAngle (if specified) else the object will continue
to rotate forever.
_Hit()
This event is signaled to the script whenever the Ball Hits one of
the object hot spots as defined by the Future Pinball Model editor
(not available to the general public). The global script variable
fpEventID will be set to the ID (number) as specified in the Collision
information for the object. If you only wish to know that this object was
hit, then you can ignore this value.
For more information on this variable refer to the Global Script chapter
(link).
Script Example:
or:
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Electro-Mechanical Scoring Reels
Electro-Mechanical Scoring Reels (or EM Reel for short) were the primary scoring display
device for Electro-Mechanical Pinballs. They work very similar to a car odometer where each
individual reel rotates around incrementing its value and when it needs to reset from 9 to 0
again, it will increment the next reel (and so on).
Scoring Reels were also backlit to allow the machine to light the current players score. Because
of this the EM Reel device is lit in the same fashion as Bulbs, Bumpers, Flashers, etc.
When you create a EM Reel on your table, the object will be drawn onto the current workspace. Reels
can be only be placed on both the Playfield and Translite workspaces.
Name
Sets the name of the object which is used to reference the object via Script
events. The name must be unique for the table and may not contain any
spaces. As with all Object Names, you should give a descriptive name to your
object.
Number Style
Allows you to define the style of numbering used on the reels. You may select
one of the following types:
ReelStyle1 ReelStyle2 ReelStyle3
If enabled (Ticked ), then the face plate of the EM Reel device is rendered.
This will give a nice clean edge to the Reel but there may be cases (such as
trying to match Existing Scoring Graphics) where this is not required.
Face Colour
Defines the colour of the Face Plate (if it is rendered). It is best never to use
Full Strength colours (i.e., where either the Red, Green or Blue components
are at their Limits) as this will adversely affect how the object is Shaded by the
Lighting system. For more information on the use of Colour refer to the
Special Graphic Processing chapter (link).
Lit Colour
Defines the colour of the Reels when the Bulbs within the EM Reel
Mechanism have been turned ON (more of this below). It is best never to use
Full Strength colours (i.e., where either the Red, Green or Blue components
are at their Limits) as this will adversely affect how the object is Shaded by the
Lighting system. For more information on the use of Colour refer to the
Special Graphic Processing chapter (link).
If enabled (Ticked ), then Future Pinball will automatically set the Unlit colour
to 33% brightness of the Lit colour when ever the Lit colour is changed. On
older electro-mechanical games the light change is usually less dramatic so
you may wish to disable this option and set the Unlit colour so it shows less
colour change from the Lit colour.
Unlit Colour
Defines the colour of the Reels when the Bulbs within the EM Reel
Mechanism has been turned OFF (more of this below). The same colour
guidelines should be followed as described by the Lit Colour.
Defines the X location (based in millimeters from the top left hand corner of
the translite) of the object on the Table.
Defines the Y location (again in millimeters from the top left hand corner of the
translite) of the object on the Table.
Surface
Defines what Surface (or Wall) the object is attached to if the EM Reel is
placed onto the Playfield. If no Surface is specified, the object is assumed to
be attached to the Main Playfield. For more information on this refer to the
Surface Object (link). If the EM Reel has been placed onto the Translite, this
field is not displayed.
Reels
This field allows you to nominate how many individual reel digits will make up
the reel display. Valid values range from 1 to 7 reels.
Reel Width
Defines the Width of each individual Reel in millimeters. Valid values range
from 10 to 128 millimeters.
Reel Height
Defines the Height of each individual Reel in millimeters. Valid values range
from 10 to 128 millimeters.
Reel Spacing
Defines the width of the gap between Reels. If there is only 1 Reel, this field is
ignored. Valid values range from 1 to 40 millimeters.
Face Spacing
Defines the width of the Face Plate which sits around all of the reels. Valid
values range from 1 to 40 millimeters.
Spin Speed
Defines how fast each Reel will Spin (to the next number). You can select
from one of the following speeds:
Speed Description
Slowest
Slow
Medium (Default)
Fast
Fastest
Instant The Reel will instantly click over to the next number.
State
This field allows you to set the Backlit Bulb State. Each EM Reel has several
bulbs built into it which when used will illuminate the Numbers the Lit / Unlit
colours (depending on the state). The Bulbs (like a real pinball) takes around
30 milliseconds to go to full brightness and thus the Numbers will gradually
Brighten or Dim.
Blink Pattern
Defines a special Blink Pattern the Bulb will follow when the State has been
set to BulbBlink. This pattern is defined out of a string made up out of 0s
(turn bulb Off) and 1s (turn bulb On). At least 2 pattern states must be given
(i.e., 10, 01, 11 or 00) with a maximum of 32 individual states. Blink Patterns
allow for some very creative light changes to be made especially which using
in conjunction if other objects which contain a light bulb (Lights, Flashers,
Bumpers, etc.)
Blink Interval
Defines the Period (in milliseconds) Future Pinball takes to process each state
within a Blink Pattern. When the Blink Pattern has been fully processed it will
begin again from the start and keep on repeating while ever the State is
BulbBlink. The Interval must be at least 25 milliseconds.
Spin Sound
This field allows you to automate playing of a sound effect when a reel spins
around to the next number. Sounds are imported into the Table via the Sound
Manager (link). This functionality removes the need for a PlaySound (link)
script command.
This Section describes the object and how it can be accessed and controlled via the script at run-
time. Note that you access the object via the name given in the Name property field.
Script Example:
Dim MyScore
MyScore = MyEmReel.Value
The Reel will have a value of 0 when the table is first played.
If the Light Sequencer is currently running on this object, changing the State will
not take effect until the Light Sequencer has finished running. When the
Sequencer has finished the Bulb will have the last State set via the script. For
more information see the Light Sequencer Object (link)
Script Example:
MyEmReel.State = BulbOn
Script Example:
MyEmReel.BlinkPattern = "10"
or:
MyEmReel.BlinkPattern = "1101110"
Script Example:
MyEmReel.BlinkInterval = 100
Script Example:
.ResetToZero ()
This method will reset the EM Reel device so all the digit reels display '0'. This is done in
an animated fashion when all the numbers will increment (and roll over) back to 0. This
Method should be called when ever the player starts a new game and you need to reset
the Reel. This also sets the Value property to 0.
Script Example:
MyEmReel.ResetToZero()
Script Example:
MyEmReel.AddValue(100)
Script Example:
Sub FuturePinball_BeginPlay()
' initalise the player displays to the last known player score
MyEmReel.SetValue(nvScore1)
' ..Etc..
End Sub
State sets the lit state of the bulb. Valid values are BulbOff, BulbOn or BulbBlink.
BlinkPattern allows you to define a special Blink Pattern the Bulb will follow when the
State has been set to BulbBlink. This pattern is defined out of a string made up out of 0s
(turn bulb Off) and 1s (turn bulb On). At least 2 pattern states must be given (i.e., "10",
"01", "11" or "00") with a maximum of 32 individual states. If the Bulb is currently following
another Blink Pattern, setting this will immediately change the blink pattern over to the new
one. If no string is specified, the current pattern in the .BlinkPattern property is not
changed.
BlinkInterval is a positive number and is the time it takes to process each state within the
Blink Pattern. The Interval must be at least 25 milliseconds and if no value is specified, the
current value in the .BlinkInterval property is not changed.
Script Example:
This method allows you to flash (turn the Bulb On and then Off again) the Bulb for a
number of milliseconds and then set the Bulb state to a defined value when that time has
elapsed. This effect is commonly used in Pinball when enabling a Bulb due to the player
completing a sequence on the table via following the game rules (though in the case of the
bumper object this isn't likely) as it is more noticeable than just turning on a bulb.
TotalTime is a positive number and is the time in milliseconds to flash to the bulb for.
Ideally it should be divisible by the BlinkInterval parameter for a totally smooth transition
to the EndBulbState parameter.
BlinkInterval is a positive number and is the time to hold each Flash state for. The Interval
must be at least 25 milliseconds and if no value is specified, 75 ms is used.
EndBulbState defines the state of the bulb after the TotalPeriod has expired. If the Bulbs
.State is read which the bulb is flashing for the desired interval, the it will return the
EndBulbState.
Script Example:
The EM Reel object doesn't have any Events which it can call via the script.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: HUD Electro-Mechanical Scoring Reel
Electro-Mechanical Scoring Reels (or EM Reel for short) were the primary scoring display
device for Electro-Mechanical Pinballs. They work very similar to a car odometer where each
individual reel rotates around incrementing its value and when it needs to reset from 9 to 0
again, it will increment the next reel (and so on).
Scoring Reels were also backlit to allow the machine to light the current players score. Because
of this the EM Reel device is lit in the same fashion as Bulbs, Bumpers, Flashers, etc.
The HUD Em Reel works exactly the same as the normal Em Reel but is drawn on the HUD
instead of the Translite.
When you create a EM Reel on your table, the object will be drawn onto the current workspace. Reels
can be only be placed on the Translite workspace.
Name
Sets the name of the object which is used to reference the object via Script
events. The name must be unique for the table and may not contain any
spaces. As with all Object Names, you should give a descriptive name to your
object.
Number Style
Allows you to define the style of numbering used on the reels. You may select
one of the following types:
If enabled (Ticked ), then the face plate of the EM Reel device is rendered.
This will give a nice clean edge to the Reel but there may be cases (such as
trying to match Existing Scoring Graphics) where this is not required.
Face Colour
Defines the colour of the Face Plate (if it is rendered). It is best never to use
Full Strength colours (i.e., where either the Red, Green or Blue components
are at their Limits) as this will adversely affect how the object is Shaded by the
Lighting system. For more information on the use of Colour refer to the
Special Graphic Processing chapter (link).
Lit Colour
Defines the colour of the Reels when the Bulbs within the EM Reel
Mechanism have been turned ON (more of this below). It is best never to use
Full Strength colours (i.e., where either the Red, Green or Blue components
are at their Limits) as this will adversely affect how the object is Shaded by the
Lighting system. For more information on the use of Colour refer to the
Special Graphic Processing chapter (link).
If enabled (Ticked ), then Future Pinball will automatically set the Unlit colour
to 33% brightness of the Lit colour when ever the Lit colour is changed. On
older electro-mechanical games the light change is usually less dramatic so
you may wish to disable this option and set the Unlit colour so it shows less
colour change from the Lit colour.
Unlit Colour
Defines the colour of the Reels when the Bulbs within the EM Reel
Mechanism has been turned OFF (more of this below). The same colour
guidelines should be followed as described by the Lit Colour.
Defines the X location (based in pixels from the top left hand corner of the
HUD Screen) of the object on the Table.
Y
Defines the Y location (based in pixels from the top left hand corner of the
HUD Screen) of the object on the Table.
Reels
This field allows you to nominate how many individual reel digits will make up
the reel display. Valid values range from 1 to 7 reels.
Reel Width
Defines the Width of each individual Reel in pixels. Valid values range from 10
to 128 millimeters.
Reel Height
Defines the Height of each individual Reel in pixels. Valid values range from
10 to 128 millimeters.
Reel Spacing
Defines the width of the gap between Reels. If there is only 1 Reel, this field is
ignored. Valid values range from 1 to 40 pixels.
Face Spacing
Defines the width of the Face Plate which sits around all of the reels. Valid
values range from 1 to 40 pixels.
Spin Speed
Defines how fast each Reel will Spin (to the next number). You can select
from one of the following speeds:
Speed Description
Slowest
Slow
Medium (Default)
Fast
Fastest
Instant The Reel will instantly click over to the next number.
State
This field allows you to set the Backlit Bulb State. Each EM Reel has several
bulbs built into it which when used will illuminate the Numbers the Lit / Unlit
colours (depending on the state). The Bulbs (like a real pinball) takes around
30 milliseconds to go to full brightness and thus the Numbers will gradually
Brighten or Dim.
Blink Pattern
Defines a special Blink Pattern the Bulb will follow when the State has been
set to BulbBlink. This pattern is defined out of a string made up out of 0s
(turn bulb Off) and 1s (turn bulb On). At least 2 pattern states must be given
(i.e., 10, 01, 11 or 00) with a maximum of 32 individual states. Blink Patterns
allow for some very creative light changes to be made especially which using
in conjunction if other objects which contain a light bulb (Lights, Flashers,
Bumpers, etc.)
Blink Interval
Defines the Period (in milliseconds) Future Pinball takes to process each state
within a Blink Pattern. When the Blink Pattern has been fully processed it will
begin again from the start and keep on repeating while ever the State is
BulbBlink. The Interval must be at least 25 milliseconds.
Spin Sound
This field allows you to automate playing of a sound effect when a reel spins
around to the next number. Sounds are imported into the Table via the Sound
Manager (link). This functionality removes the need for a PlaySound (link)
script command.
This Section describes the object and how it can be accessed and controlled via the script at run-
time. Note that you access the object via the name given in the Name property field.
Script Example:
Dim MyScore
MyScore = MyHudReel.Value
The Reel will have a value of 0 when the table is first played.
Script Example:
MyHudReel.State = BulbOn
Script Example:
MyHudReel.BlinkPattern = "10"
or:
MyHudReel.BlinkPattern = "1101110"
Script Example:
MyHudReel.BlinkInterval = 100
MyHudReel.State = BulbBlink
MyHudReel.BlinkPattern = "10"
MyHudReel.BlinkInterval = 150
<Boolean> .Lit (READ ONLY)
This variable (or flag) is set when the bulb is actually lit either by it being permanently
turned ON or the Blink Pattern has turned ON the light for the current interval. This allows
you to test if the bulb is physically ON even if it's following a Blink Pattern.
Script Example:
.ResetToZero ()
This method will reset the EM Reel device so all the digit reels display '0'. This is done in
an animated fashion when all the numbers will increment (and roll over) back to 0. This
Method should be called when ever the player starts a new game and you need to reset
the Reel. This also sets the Value property to 0.
Script Example:
MyHudReel.ResetToZero()
Script Example:
MyHudReel.AddValue(100)
Script Example:
Sub FuturePinball_BeginPlay()
' initalise the player displays to the last known player score
MyHudReel.SetValue(nvScore1)
' ..Etc..
End Sub
State sets the lit state of the bulb. Valid values are BulbOff, BulbOn or BulbBlink.
BlinkPattern allows you to define a special Blink Pattern the Bulb will follow when the
State has been set to BulbBlink. This pattern is defined out of a string made up out of 0s
(turn bulb Off) and 1s (turn bulb On). At least 2 pattern states must be given (i.e., "10",
"01", "11" or "00") with a maximum of 32 individual states. If the Bulb is currently following
another Blink Pattern, setting this will immediately change the blink pattern over to the new
one. If no string is specified, the current pattern in the .BlinkPattern property is not
changed.
BlinkInterval is a positive number and is the time it takes to process each state within the
Blink Pattern. The Interval must be at least 25 milliseconds and if no value is specified, the
current value in the .BlinkInterval property is not changed.
Script Example:
This method allows you to flash (turn the Bulb On and then Off again) the Bulb for a
number of milliseconds and then set the Bulb state to a defined value when that time has
elapsed. This effect is commonly used in Pinball when enabling a Bulb due to the player
completing a sequence on the table via following the game rules (though in the case of the
bumper object this isn't likely) as it is more noticeable than just turning on a bulb.
TotalTime is a positive number and is the time in milliseconds to flash to the bulb for.
Ideally it should be divisible by the BlinkInterval parameter for a totally smooth transition
to the EndBulbState parameter.
BlinkInterval is a positive number and is the time to hold each Flash state for. The Interval
must be at least 25 milliseconds and if no value is specified, 75 ms is used.
EndBulbState defines the state of the bulb after the TotalPeriod has expired. If the Bulbs
.State is read which the bulb is flashing for the desired interval, the it will return the
EndBulbState.
Script Example:
.FadeOut()
This method will fade out the Em Reel until it is not visible anymore. If the Hud Em Reel
has already been faded out then this command will have no effect.
Script Example:
MyHudReel.FadeOut()
.FadeIn()
This method will fade in the Em Reel until it is fully visible. If the Em Reel is already visible
then this command will have no effect.
Script Example:
MyHudReel.FadeIn()
The EM Reel object doesn't have any Events which it can call via the script.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Gas Discharge Segment Displays
Gas Discharge Segment Displays where used on Many Pinballs and replaced the older Electro-
Mechanical Scoring Reels. These displays generally showed the players score, credits, balls
remaining, etc. Segments changed over the years the last used displays allowed to animation
of any Text/Numbers on the display.
Segment Displays in Future Pinball are very powerful and thus more complex to control though
they can work in a more simpler mode much like how the Electro-Mechanical Scoring Reels
work (well exactly). Lot of different types of effects (scrolling, fades, blinking text) can be
achieved. This Display also allows for custom character shapes to be created allowing you
even more control on what is displayed and how.
The Segment Display device also allows you to queue up screens to display with a transitional
effect to put the screen on the display.
When you create a Segment Display on your table, the object will be drawn onto the current workspace.
Segments can be only be placed on both the Playfield and Translite workspaces.
Name
Sets the name of the object which is used to reference the object via Script
events. The name must be unique for the table and may not contain any
spaces. As with all Object Names, you should give a descriptive name to your
object.
Segment Style
Allows you to define the style of segments (and how they are lit) used for the
display. You may select one of the following types;
Style Description
Lit Colour
Defines the colour of the Segments when they are Lit. Though the colour will
brighten as more elements are lit around it.
Defines the X location (based in millimeters from the top left hand corner of
the translite) of the object on the Table.
Defines the Y location (again in millimeters from the top left hand corner of the
translite) of the object on the Table.
Surface
Defines what Surface (or Wall) the object is attached to if the Segment
Display is placed onto the Playfield. If no Surface is specified, the object is
assumed to be attached to the Main Playfield. For more information on this
refer to the Surface Object (link). If the Segment Display has been placed
onto the Translite, this field is not displayed.
Digits
This field allows you to designate how many individual segments will make up
the segment display. Valid values range from 1 to 32.
Size (Width)
Spacing
Defines the width of the gap between Segments. If there is only 1 Segment,
this field is ignored. Valid values range from 1 to 40 millimeters.
Face Spacing
Defines the width of the Face Plate which sits around all of the Segments.
Valid values range from 1 to 40 millimeters. The Face Plate (as well as the
spacing between the segments) is always Black in colour.
Alignment
Allows you to define how text and numbers are aligned on the display. You
can select one of the following:
Alignment Description
AlignLeft Any Text / Numbers displayed will be Left aligned.
AlignCenter Any Text / Numbers displayed will be Center aligned.
AlignRight (Default) Any Text / Numbers displayed will be Right aligned.
Update Interval
Defines the update interval (in Milliseconds) of the segment device. The
Lower the value, the more the display device will be updated. this has the
effect to making any scrolling effects look smoother as the scroll will be faster
(with a lower value). In general you will not have to play with this value. The
value must be at least 5 milliseconds. Setting this value may also effect (and
adjust) the Slow and Fast Blink Speeds if you set it to a value larger than
either of those values.
Generally you will not need to change this value unless you wish to slow down
the display effects.
Defines the speed on which text marked as Blinking (fast) will blink at. This
value must be at least that of the Update Interval and is specified in
Milliseconds.
Boredom Delay
Defines the Number of Milliseconds which must pass on an idle display before
Future Pinball will cycle a boredom effect over the display. These boredom
effects will animate the display without actually changing the contents of
what's being displayed. The type of effects that can be performed are
described below. The Value must be positive. If the value is equal to 0, no
boredom effect will happen. The default effect is sbeCycleDown.
This Section describes the object and how it can be accessed and controlled via the script at run-
time. Note that you access the object via the name given in the Name property field.
The Segment Display device is a very complex object (if you wish to use it fully).
It is advised that you also look at the Gas Segment Display Example table
included with Future Pinball.
The Segment Display Device has 2 modes of operation (though they can be used at the same
time). A Simple Number only method which works exactly how the EM Reel device works which is
simple to use and will only display numbers (i.e., Scores, Credits, etc.) on the Display. The Second
method in controlling the Segment Display is more screen driven where you specify individual
screens (or lines of text, which are queued up) and they are displayed in turn onto the device using
one of the built in transition methods (such as scrolling, etc.)
Numbers or Text is displayed onto the segments the best way possible using the available
segments to make up the shapes of the Numbers and Letters. Obviously the more individual
segments the display has the better each character shape will look. Future Pinball also allows you
to redefine the characters to you can implement your own custom shapes.
If the Number or Text you wish to display is shorter than the number of digits the display has, it will
align what you wish to display using the .Alignment property. If what you wish to display is longer
than the number of digits on the display, it will only display what it can (n digits).
Dim MyScore
MyScore = MySegment.Value
The Segment will have an internal value of 0 when the table is first played though this is
not automatically displayed. If you wish to use the Segment Display object in the Simpler
Number only way, you will need to issue a .SetValue command at startup to initialise the
display.
Script Example:
Future Pinball will combine '.' (period), ',' (comma) and ';' (semicolon) characters into
current segment digit. for example;
MySegment.Text = "1,234,567"
Will display
Script Example:
MySegment.UpdateInterval = 10
<Integer> .SlowBlinkSpeed = { Period in Milliseconds }
This property allows you to change how fast (or slow) text will blink (flash) on the display
when using the seBlink and seBlinkMask effects (more of this below). The value
specified (in milliseconds) must be at least double the .UpdateInterval value and
preferably a multiple of it. Setting this to a value less than double the update interval will
set it to be double the update interval.
Script Example:
MySegment.SlowBlinkSpeed = 100
Script Example:
MySegment.FastBlinkSpeed = 50
Script Example:
' Set the Boredom effect to happen after 3 seconds of idle activ
MySegment.BoredomDeley = 3000
Script Example:
MySegment.ResetToZero()
Script Example:
MySegment.AddValue(100)
Script Example:
Sub FuturePinball_BeginPlay()
' initalise the player displays to the last known player score
MySegment.SetValue(nvScore1)
' ..Etc..
End Sub
.QueueText ( <String> Text, <Enumeration> Effect, <Integer> TimeOn,
<Integer> StartDelay, <Boolean> FlushQueue, <String> SoundEffect )
This method allows multiple text lines (called screens) to be queued up and displayed in
turn. This is where the flexibility of the Segment Display device really shows off as you can
add in several screens to let the player know he has done something without actually
having to keep track when each screen has finished.
Text
Specifies the Text to Display.
Effect
The type of effect used to display the screen (or text) onto the display. This field must
Generally the Scroll Effects will scroll any existing data off the screen, while the Wipe
screen with the new one.
Effect
Description
seNone (Default)
The Text is instantly displayed.
seScrollLeft The Text is scrolled onto the display starting from the right most
towards the left. Any existing text is scrolled as well so effectively
while the new text scrolls on.
seScrollLeftOver The Text is scrolled onto the display starting from the right most
towards the left. It will appear to scroll over any existing text.
seScrollRight The Text is scrolled onto the display starting from the left most d
the right. Any existing text is scrolled as well so effectively the ol
the new text scrolls on.
seScrollRightOver The Text is scrolled onto the display starting from the left most d
the right. It will appear to scroll over any existing text.
seScrollUp The Text is scrolled upward though each horizontal line of the se
text is scrolled as well so effectively the old text scrolls off while t
seScrollUpOver The Text is scrolled upward though each horizontal line of the se
old text.
seScrollDown The Text is scrolled downwards though each horizontal line of th
existing text is scrolled as well so effectively the old text scrolls o
scrolls on.
seScrollDownOver The Text is scrolled downwards though each horizontal line of th
the old text.
seScrollOut The Text will appear to scroll outwards (both left and right) from t
display.
seScrollIn The Text will scroll inwards from both the left and right most digit
the middle segment digit.
seBlink
The entire Segment Display Text will blink (turn On and Off) for t
in the TimeOn parameter. The Rate at which it blinks is defined
.SlowBlinkSpeed property.
seBlinkFast The entire Segment Display Text will blink (turn On and Off) for t
in the TimeOn parameter. The Rate at which it blinks is defined
.FastBlinkSpeed property.
seBlinkMask
The Text will Blink where there is a non space character without
text where there is a space. This effect should be used after sett
into the display and then specifying which part of the text you wis
space characters). The specified text will blink for the time period
TimeOn parameter. The Rate at which it blinks is defined via the
property.
Script Example:
seBlinkMaskFast Exactly the same as seBlinkMask but will blink the Text mask are
the .FastBlinkSpeed property.
seWipeLeft Each Segment Digit will be replaced one at a time with the new t
existing old text) starting from the rightmost digit and moving tow
seWipeRight Each Segment Digit will be replaced one at a time with the new t
existing old text) starting from the leftmost digit and moving towa
seWipeStarLeft A Star Shaped Character will scroll over the Display starting from
moving to the left drawing the Text line. On The Gottlieb and Clo
will be a Cross.
seWipeStarRight A Star Shaped Character will scroll over the Display starting from
moving to the right drawing the Text line. On The Gottlieb and C
this will be a Cross.
seWipeRadarLeft
The Text will be wiped onto the display starting from the rightmos
the left via a long cursor (which length is 1/3rd of the number of d
vertical segment lines lit.
seWipeRadarRight The Text will be wiped onto the display starting from the leftmost
right via a long cursor (which length is 1/3rd of the number of dig
vertical segment lines lit.
seWipeRndLeft The Text will be wiped onto the display starting from the rightmos
the left via a long cursor (which length is 1/3rd of the number of d
turns on and off segments, leaving the correct segments lit.
seWipeRndRight The Text will be wiped onto the display starting from the leftmost
right via a long cursor (which length is 1/3rd of the number of dig
turns on and off segments, leaving the correct segments lit.
seWipeCursorLeft
The Text will be wiped onto the display starting from the leftmost
right via a custom defined cursor. To Define a custom cursor for
.SetLeftCursor() method.
seWipeUp The Text is wiped upward though each horizontal line of the segm
seWipeDown The Text is wiped downwards though each horizontal line of the
seWipeBarUp The Text is wiped upward though each horizontal line of the segm
(where all horizontal segments are lit). As the Bar moves upward
drawn.
seWipeBarDown The Text is wiped downwards though each horizontal line of the
bar (where all horizontal segments are lit). As the Bar moves dow
be drawn.
seWipeRndUp The Text is wiped upward though each horizontal line of the segm
bar effect which randomly turns on and off segments, leaving the
As the Bar moves upwards, the text will be drawn.
seWipeRndDown The Text is wiped downwards though each horizontal line of the
random bar effect which randomly turns on and off segments, lea
segments lit. As the Bar moves downwards, the text will be draw
seWipeOut The Text will wipe out starting from the middle of the display and
towards the edges.
seWipeIn The Text will wipe in starting from both the left and right edges of
working its way in towards the middle.
seRandomEffect Will pick one of the above effects randomly as use that as the tra
not pick the seBonusTrailin effect.
seBonusTrailIn
This effect is a commonly used effect on Pinball as the machine
Bonus. It takes a string of 2 characters and draws each one at e
moving inwards. The characters will remain on the screen as it m
the effect reaches the middle of the display, the digits will be turn
outside back towards the middle) leaving only the middle 2 digits
Script Example:
TimeOn
Defines the time in milliseconds this screen is held for before moving to the next disp
time also included the time to process the Effect. If the Effect is a Blink Effect (seBli
seBlinkFast, seBlinkMaskFast), this is the time the text blinks for. For Best Results
multiple of the .UpdateInterval property. If no value is specified, the text will immedia
the next (if any) display in the queue will be processed.
StartDelay Allows you to delay the processing of this Effect for the value multiplied by the .Upda
(i.e., If you specify 5 and the .UpdateInterval is 10, it will wait 50ms before starting th
very useful for syncing up effects which run over "Multiple" Segment Display Values.
(which scroll one segment digit per .UpdateInterval), this essentially delays 'n' many
value is specified, it will default to 0.
FlushQueue
Instructs the display driver to flush the queue if this is the LAST display in the queue.
or FALSE. Generally during a game you will always specify TRUE as you will want to
to the default score screen when your effect screen has finished. During the Attract m
want it to be FALSE as you will want the attract
mode displays to automatically restart when they have finished. this allows you to on
once and not have to worry about the driver running out of things to do. If no value is
to be TRUE.
If this display is the last one in the queue (when it is processed, not when you put it in
the _Empty() script event. You can use this event to put back any default screens on
displaying the score)
Sound The Sound file to play when this screen is first processed. This allows corresponding
Effect with the appropriate display (i.e., a bonus sound or something). Sounds are imported
Sound Manager (link). If this value is not specified, no sound effect will play.
Script Example:
For more Script examples, refer to the Segment Display example table (downloadable
from the Future Pinball site).
.FlushQueue ()
This method will flush (empty) the text queue (if any) so any screens that are still to be
processed are ignored. Note that this will not call the _Empty() script event as you are
manually emptying the queue so it's not finishing due to all the screens being processed.
Script Example:
MySegment.FlushQueue()
Effect
The type of effect to animate the display. This field must be one of the
following:
Effect
Description
sbeCycleUp
Each Individual Horizontal Segment Line will momentarily
turn Off for the EffectRate starting at the bottom segment
and working upwards to the top.
CycleTime Defines the how often the boredom mode animation repeats after the initial
.BoredomDelay period has expired. This lets you say wait 3 seconds before
the boredom mode animation starts and get it to repeat every 2 seconds after
that. If no value is specified, the animation will repeat at the rate set by the
.BoredomDelay parameter.
Script Example:
Sub FuturePinball_BeginPlay()
' initalise the segment display boredom mode, to cycle upwards
' after 3 seconds and repeat every 2 seconds after that
MySegment.BoredomDeley = 3000
MySegment.BoredomEffect sbeCycleUp, 50, 2000
' ..Etc..
End Sub
If you look at the left illustration you will see the hexadecimal
numbers which are used to create a mask which the segment
display device will use to redefine the specified character.
These numbers can be combined in any fashion to define the
shape you wish.
Character
The Ascii Character code (a number between
0 and 255) of the character you wish to define.
You can find a copy of the Ascii character set
here (link)
Script Example:
There is one special character which is defined for the Tilde '~' which can be used as a
back arrow on the Alphanumeric Segment style.
This method allows you to define the Left cursor used for the seWipeCursorLeft effect.
This cursor can have a maximum length of 6 digits.
Data1 - Data6 contains the segment mask (as defined by the .SetCharShape method).
Not all values have to specified. If a value is omitted, the cursor will not use that segment
digit (thus making it shorter)
Script Example:
' set up the left cursor to look like a race car (well sort of :
MySegment.SetLeftCursor 0, &H4A38, &H0532, &H3B62, 0
This method allows you to define the Right cursor used for the seWipeCursorRight effect.
This cursor can have a maximum length of 6 digits and works much the same way as the
SetLeftCursor method described above.
_Empty ()
This event is called when the Segment Display Device has finished processing the text
queue and the last entry in the queue told the driver to finish up (by setting the
FlushQueue parameter to True in the .QueueText method)
You can use this to revert back to a default screen such has displaying the players score
when any screens you queue up finish being processed.
Script Example:
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: HUD Gas Discharge Segment Display
Gas Discharge Segment Displays where used on Many Pinballs and replaced the older Electro-
Mechanical Scoring Reels. These displays generally showed the players score, credits, balls
remaining, etc. Segments changed over the years the last used displays allowed to animation
of any Text/Numbers on the display.
Segment Displays in Future Pinball are very powerful and thus more complex to control though
they can work in a more simpler mode much like how the Electro-Mechanical Scoring Reels
work (well exactly). Lot of different types of effects (scrolling, fades, blinking text) can be
achieved. This Display also allows for custom character shapes to be created allowing you
even more control on what is displayed and how.
The Segment Display device also allows you to queue up screens to display with a transitional
effect to put the screen on the display.
The HUD Segment Display works exactly the same as the normal Segment Display but is
drawn on the HUD instead of the Translite.
When you create a Segment Display on your table, the object will be drawn onto the current workspace.
Segments can be only be placed on the Translite workspace.
Name
Sets the name of the object which is used to reference the object via Script
events. The name must be unique for the table and may not contain any
spaces. As with all Object Names, you should give a descriptive name to your
object.
Segment Style
Allows you to define the style of segments (and how they are lit) used for the
display. You may select one of the following types;
Style Description
Lit Colour
Defines the colour of the Segments when they are Lit. Though the colour will
brighten as more elements are lit around it.
Defines the X location (based in pixels from the top left hand corner of the
HUD Screen) of the object on the Table.
Y
Defines the Y location (based in pixels from the top left hand corner of the
HUD Screen) of the object on the Table.
Digits
This field allows you to designate how many individual segments will make up
the segment display. Valid values range from 1 to 32.
Size (Width)
Defines the Width of each individual segment in pixels. Valid values range
from 10 to 128 pixels. The Height of the Segment is calculated from the width
to ensure the correct aspect ratio.
Spacing
Defines the width of the gap between Segments. If there is only 1 Segment,
this field is ignored. Valid values range from 1 to 40 pixels.
Face Spacing
Defines the width of the Face Plate which sits around all of the Segments.
Valid values range from 1 to 40 pixels. The Face Plate (as well as the spacing
between the segments) is always Black in colour.
Alignment
Allows you to define how text and numbers are aligned on the display. You
can select one of the following:
Alignment Description
AlignLeft Any Text / Numbers displayed will be Left aligned.
AlignCenter Any Text / Numbers displayed will be Center aligned.
AlignRight (Default) Any Text / Numbers displayed will be Right aligned.
Update Interval
Defines the update interval (in Milliseconds) of the segment device. The
Lower the value, the more the display device will be updated. this has the
effect to making any scrolling effects look smoother as the scroll will be faster
(with a lower value). In general you will not have to play with this value. The
value must be at least 5 milliseconds. Setting this value may also effect (and
adjust) the Slow and Fast Blink Speeds if you set it to a value larger than
either of those values.
Generally you will not need to change this value unless you wish to slow down
the display effects.
Defines the speed on which text marked as Blinking (slowly) will blink at. This
value must be at least double that of the Update Interval and is specified in
Milliseconds
Boredom Delay
Defines the Number of Milliseconds which must pass on an idle display before
Future Pinball will cycle a boredom effect over the display. These boredom
effects will animate the display without actually changing the contents of
what's being displayed. The type of effects that can be performed are
described below. The Value must be positive. If the value is equal to 0, no
boredom effect will happen. The default effect is sbeCycleDown.
This Section describes the object and how it can be accessed and controlled via the script at run-
time. Note that you access the object via the name given in the Name property field.
The Segment Display device is a very complex object (if you wish to use it fully).
It is advised that you also look at the Gas Segment Display Example table
included with Future Pinball.
The Segment Display Device has 2 modes of operation (though they can be used at the same
time). A Simple Number only method which works exactly how the EM Reel device works which is
simple to use and will only display numbers (i.e., Scores, Credits, etc.) on the Display. The Second
method in controlling the Segment Display is more screen driven where you specify individual
screens (or lines of text, which are queued up) and they are displayed in turn onto the device using
one of the built in transition methods (such as scrolling, etc.)
Numbers or Text is displayed onto the segments the best way possible using the available
segments to make up the shapes of the Numbers and Letters. Obviously the more individual
segments the display has the better each character shape will look. Future Pinball also allows you
to redefine the characters to you can implement your own custom shapes.
If the Number or Text you wish to display is shorter than the number of digits the display has, it will
align what you wish to display using the .Alignment property. If what you wish to display is longer
than the number of digits on the display, it will only display what it can (n digits).
Script Example:
Dim MyScore
MyScore = MyHudSeg.Value
The Segment will have an internal value of 0 when the table is first played though this is
not automatically displayed. If you wish to use the Segment Display object in the Simpler
Number only way, you will need to issue a .SetValue command at startup to initialise the
display.
Script Example:
Future Pinball will combine '.' (period), ',' (comma) and ';' (semicolon) characters into
current segment digit. for example;
MyHudSeg.Text = "1,234,567"
Will display
Script Example:
MyHudSeg.UpdateInterval = 10
MyHudSeg.SlowBlinkSpeed = 100
Script Example:
MyHudSeg.FastBlinkSpeed = 50
Script Example:
' Set the Boredom effect to happen after 3 seconds of idle activ
MyHudSeg.BoredomDeley = 3000
Script Example..
Script Example:
MyHudSeg.ResetToZero()
Script Example:
MyHudSeg.AddValue(100)
Script Example:
Sub FuturePinball_BeginPlay()
' initalise the player displays to the last known player score
MyHudSeg.SetValue(nvScore1)
' ..Etc..
End Sub
Text
Specifies the Text to Display.
Effect
The type of effect used to display the screen (or text) onto the display. This field must
Generally the Scroll Effects will scroll any existing data off the screen, while the Wipe
screen with the new one.
Effect
Description
seNone (Default)
The Text is instantly displayed.
seScrollLeft The Text is scrolled onto the display starting from the right most
towards the left. Any existing text is scrolled as well so effectively
while the new text scrolls on.
seScrollLeftOver The Text is scrolled onto the display starting from the right most
towards the left. It will appear to scroll over any existing text.
seScrollRight The Text is scrolled onto the display starting from the left most d
the right. Any existing text is scrolled as well so effectively the ol
the new text scrolls on.
seScrollRightOver The Text is scrolled onto the display starting from the left most d
the right. It will appear to scroll over any existing text.
seScrollUp The Text is scrolled upward though each horizontal line of the se
text is scrolled as well so effectively the old text scrolls off while t
seScrollUpOver The Text is scrolled upward though each horizontal line of the se
old text.
seScrollDown The Text is scrolled downwards though each horizontal line of th
existing text is scrolled as well so effectively the old text scrolls o
scrolls on.
seScrollDownOver The Text is scrolled downwards though each horizontal line of th
the old text.
seScrollOut The Text will appear to scroll outwards (both left and right) from t
display.
seScrollIn The Text will scroll inwards from both the left and right most digit
the middle segment digit.
seBlink
The entire Segment Display Text will blink (turn On and Off) for t
in the TimeOn parameter. The Rate at which it blinks is defined
.SlowBlinkSpeed property.
seBlinkFast The entire Segment Display Text will blink (turn On and Off) for t
in the TimeOn parameter. The Rate at which it blinks is defined
.FastBlinkSpeed property.
seBlinkMask
The Text will Blink where there is a non space character without
text where there is a space. This effect should be used after sett
into the display and then specifying which part of the text you wis
space characters). The specified text will blink for the time period
TimeOn parameter. The Rate at which it blinks is defined via the
property.
Script Example:
seBlinkMaskFast Exactly the same as seBlinkMask but will blink the Text mask are
the .FastBlinkSpeed property.
seWipeLeft Each Segment Digit will be replaced one at a time with the new t
existing old text) starting from the rightmost digit and moving tow
seWipeRight Each Segment Digit will be replaced one at a time with the new t
existing old text) starting from the leftmost digit and moving towa
seWipeStarLeft A Star Shaped Character will scroll over the Display starting from
moving to the left drawing the Text line. On The Gottlieb and Clo
will be a Cross.
seWipeStarRight A Star Shaped Character will scroll over the Display starting from
moving to the right drawing the Text line. On The Gottlieb and C
this will be a Cross.
seWipeRadarLeft
The Text will be wiped onto the display starting from the rightmos
the left via a long cursor (which length is 1/3rd of the number of d
vertical segment lines lit.
seWipeRadarRight The Text will be wiped onto the display starting from the leftmost
right via a long cursor (which length is 1/3rd of the number of dig
vertical segment lines lit.
seWipeRndLeft The Text will be wiped onto the display starting from the rightmos
the left via a long cursor (which length is 1/3rd of the number of d
turns on and off segments, leaving the correct segments lit.
seWipeRndRight The Text will be wiped onto the display starting from the leftmost
right via a long cursor (which length is 1/3rd of the number of dig
turns on and off segments, leaving the correct segments lit.
seWipeCursorLeft
The Text will be wiped onto the display starting from the leftmost
right via a custom defined cursor. To Define a custom cursor for
.SetLeftCursor() method.
seWipeCursorRight
The Text will be wiped onto the display starting from the rightmos
the left via a custom defined cursor. To Define a custom cursor fo
.SetRightCursor() method.
Script Example:
TimeOn
Defines the time in milliseconds this screen is held for before moving to the next disp
time also included the time to process the Effect. If the Effect is a Blink Effect (seBli
seBlinkFast, seBlinkMaskFast), this is the time the text blinks for. For Best Results
multiple of the .UpdateInterval property. If no value is specified, the text will immedia
the next (if any) display in the queue will be processed.
StartDelay Allows you to delay the processing of this Effect for the value multiplied by the .Upda
(i.e., If you specify 5 and the .UpdateInterval is 10, it will wait 50ms before starting th
very useful for syncing up effects which run over "Multiple" Segment Display Values.
(which scroll one segment digit per .UpdateInterval), this essentially delays 'n' many
value is specified, it will default to 0.
FlushQueue
Instructs the display driver to flush the queue if this is the LAST display in the queue.
or FALSE. Generally during a game you will always specify TRUE as you will want to
to the default score screen when your effect screen has finished. During the Attract m
want it to be FALSE as you will want the attract
mode displays to automatically restart when they have finished. this allows you to on
once and not have to worry about the driver running out of things to do. If no value is
to be TRUE.
If this display is the last one in the queue (when it is processed, not when you put it in
the _Empty() script event. You can use this event to put back any default screens on
displaying the score)
Sound The Sound file to play when this screen is first processed. This allows corresponding
Effect with the appropriate display (i.e., a bonus sound or something). Sounds are imported
Sound Manager (link). If this value is not specified, no sound effect will play.
Script Example:
For more Script examples, refer to the Segment Display example table (downloadable
from the Future Pinball site).
.FlushQueue ()
This method will flush (empty) the text queue (if any) so any screens that are still to be
processed are ignored. Note that this will not call the _Empty() script event as you are
manually emptying the queue so it's not finishing due to all the screens being processed.
Script Example:
MyHudSeg.FlushQueue()
Effect
The type of effect to animate the display. This field must be one of the
following:
Effect
Description
sbeCycleUp
Each Individual Horizontal Segment Line will momentarily
turn Off for the EffectRate starting at the bottom segment
and working upwards to the top.
CycleTime Defines the how often the boredom mode animation repeats after the initial
.BoredomDelay period has expired. This lets you say wait 3 seconds before
the boredom mode animation starts and get it to repeat every 2 seconds after
that. If no value is specified, the animation will repeat at the rate set by the
.BoredomDelay parameter.
Script Example:
Sub FuturePinball_BeginPlay()
' initalise the segment display boredom mode, to cycle upwards
' after 3 seconds and repeat every 2 seconds after that
MyHudSeg.BoredomDeley = 3000
MyHudSeg.BoredomEffect sbeCycleUp, 50, 2000
' ..Etc..
End Sub
If you look at the left illustration you will see the hexadecimal
numbers which are used to create a mask which the segment
display device will use to redefine the specified character.
These numbers can be combined in any fashion to define the
shape you wish.
Character
The Ascii Character code (a number between
0 and 255) of the character you wish to define.
You can find a copy of the Ascii character set
here (link)
Script Example:
There is one special character which is defined for the Tilde '~' which can be used as a
back arrow on the Alphanumeric Segment style.
This method allows you to define the Left cursor used for the seWipeCursorLeft effect.
This cursor can have a maximum length of 6 digits.
Data1 - Data6 contains the segment mask (as defined by the .SetCharShape method).
Not all values have to specified. If a value is omitted, the cursor will not use that segment
digit (thus making it shorter)
Script Example:
' set up the left cursor to look like a race car (well sort of :
MyHudSeg.SetLeftCursor 0, &H4A38, &H0532, &H3B62, 0
This method allows you to define the Right cursor used for the seWipeCursorRight effect.
This cursor can have a maximum length of 6 digits and works much the same way as the
SetLeftCursor method described above.
.FadeOut()
This method will fade out the Segment Display until it is not visible anymore. If the Hud
Segment has already been faded out then this command will have no effect.
Script Example:
MyHudSeg.FadeOut()
.FadeIn()
This method will fade in the Segment Display until it is fully visible. If the Segment Display
is already visible then this command will have no effect.
Script Example:
MyHudSeg.FadeIn()
_Empty ()
This event is called when the Segment Display Device has finished processing the text
queue and the last entry in the queue told the driver to finish up (by setting the
FlushQueue parameter to True in the .QueueText method)
You can use this to revert back to a default screen such has displaying the players score
when any screens you queue up finish being processed.
Script Example:
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Dot Matrix Displays
Dot Matrix Displays (a early for of Plasma displays) replaced the earlier Alphanumeric displays
by having an individually addressable dot grid rectangular array, capable of displaying graphics
and text by energizing selected dots of the display. These displays usually use Neon gas, which
glows orange when ionized by a high voltage electric current passed through the segment. The
end result was much complex displays with animation where produced.
Dot Matrix Displays (of DMD) in Future Pinball are very powerful and thus more complex to
control though they can work in a more simpler mode much like how the Electro-Mechanical
Scoring Reels work (well exactly). Lot of different types of effects (scrolling, blinking text, image
animation etc..) can be achieved. This Display also allows for custom font to be created ( via
the Font Editor ) allowing you even more control on what is displayed and how. A Custom
token system is used which allows you to render different text / fonts, images, lines, boxes and
text on the display. Each Dot is custom programmable with 5 shades of luminance (OFF, 40%,
60%, 80% and 100%).
The Dot Display device also allows you to queue up screens to display with a transitional effect
to put the screen on the display. The Dot Matrix display also allows for image frames to be
displayed behind the text for animation and more complex displays. Both the background
animation and foreground text work independently though the foreground text can contain
commands to control the background animation via the embedded token command system
which is used when processing text.
When you create a Dot Matrix Display on your table, the object will be drawn onto the current
workspace. Dot Matrix Displays can be placed on both the Playfield and Translite workspaces.
Sets the name of the object which is used to reference the object via Script
events. The name must be unique for the table and may not contain any
spaces. As with all Object Names, you should give a descriptive name to your
object.
Type
Allows you to define the style (and size) of the dot matrix display. You may
select one of the following types;
Style Description
Matrix Colour
Defines the colour of the Dots when they are Lit. Though the colour will
brighten as more elements are lit around it. A Darker version of this colour is
also used for any Unlit Dots.
Defines the X location (based in millimeters from the top left hand corner of
the translite) of the object on the Table.
Defines the Y location (again in millimeters from the top left hand corner of the
translite) of the object on the Table.
Surface
Defines what Surface (or Wall) the object is attached to if the DMD is placed
onto the Playfield. If no Surface is specified, the object is assumed to be
attached to the Main Playfield. For more information on this refer to the
Surface Object (link). If the DMD has been placed onto the Translite, this field
is not displayed.
Alignment
Allows you to define how text and numbers are aligned on the display. You
can select one of the following:
Alignment Description
AlignLeft Any Text / Numbers displayed will be Left aligned.
AlignCenter Any Text / Numbers displayed will be Center aligned.
AlignRight (Default) Any Text / Numbers displayed will be Right aligned.
Update Interval
Defines the update interval (in Milliseconds) of the DMD device. The Lower
the value, the more the display device will be updated. this has the effect to
making any scrolling effects look smoother as the scroll will be faster (with a
lower value). In general you will not have to play with this value. The value
must be at least 5 milliseconds. Setting this value may also effect (and adjust)
the Slow and Fast Blink Speeds if you set it to a value larger than either of
those values.
Generally you will not need to change this value unless you wish to slow down
the display effects.
Defines the speed on which text marked as Blinking (slowly) will blink at. This
value must be at least double that of the Update Interval and is specified in
Milliseconds
Defines the speed on which text marked as Blinking (fast) will blink at. This
value must be at least that of the Update Interval and is specified in
Milliseconds.
This Section describes the object and how it can be accessed and controlled via the script at run-
time. Note that you access the object via the name given in the Name property field.
The Dot Matrix Display device is a very complex object (if you wish to use it fully).
It is advised that you also look at the Dot Matrix Display Example table
included with Future Pinball.
The Dot Matrix Display Device has 2 modes of operation (though they can be used at the same
time). A Simple Number only method which works exactly how the EM Reel / Gas Segment device
works which is simple to use and will only display numbers (i.e., Scores, Credits, etc.) on the
Display. The Second method in controlling the Dot Matrix Display is more screen driven where you
specify individual screens (or lines of text, which are queued up) and they are displayed in turn onto
the device using one of the built in transition methods (such as scrolling, etc.)
Numbers or Text are displayed onto the Dot Matrix display using a Future Pinball DMD Font ( these
are created with the DMD Font Editor and included into your table via the Font Manager ). At least
one Font has to be included in your table for any text to be displayed. The Dmd will default to using
the first font in the Font Manager unless the font is actively changed via an embedded text token
(this is covered below).
The following assumes you are familiar with the Gas Segment Display (link) although the specific
methods to this object are covered below;
The Dot Matrix Display uses a special embedded Token system to provide greater control over what
and how something is displayed. Tags (much like BB code on the Future Pinball Support Forums)
are enclosed in square braces [ and ]. These are split into 4 category's. Font Plotting, Drawing
Primitives, Animation Control and Miscellaneous. The text portion of the DMD can contain the
following embedded commands (# denotes a number). Spaces should NOT be used in a tag.
Font plotting
Alignment Description
[f#]
Select between font 1 and 32. Dmd Fonts must be added to the dmd during
the BeginPlay() method of the table script via the .AddFont method. Fonts
are added to your table via the Font Manger. If there is no font at the index
specified then this command will have no effect. ** Once this value is set it
remains set for the life of the DMD or until changed again **
Script Example:
MyDmd.Text = "[f1]Hello[f2]World"
This will display "Hello" with font 1 and "World" with font 2.
[x###]
Set the plot X position for the text within the DMD. Should be less that the
total width of the DMD. 0 is the extreme left of the display.
Script Example:
This will display "FUTURE PINBALL" with Font 4 on row 8 (y position) and "CREDITS 0" with
Font 1. Font 4 is then selected for any future draw commands. As there was no token to set the
X position (either [XC] or [X##]) the default alignment will be used.
The following example draws the same screen except that the entire screen will blink at the fast
blink rate.
Drawing Primitives
Drawing primitives allow you to draw lines, pixels, box's on the Dot Matrix Display. Unlike the
Font Plotting which uses the luminance setting as defined with the font, these commands
require you to specify the colour (luminance).
For the Dot Matrix Display the follow colours are defined. 0 = Off, 1 = 40%, 2 = 60%, 3 = 80%
and 4 = 100% luminance
Alignment Description
[edge#]
[edge colour]
Draw a box around the edge of the DMD with the specified colour.
Script Example:
MyDmd.Text = "[edge4]"
MyDmd.Text = "[edge1]"
[pix#,#,#]
[pix colour, x, y]
Plot a Point at a x / y with the specified colour. The X/Y position starts at 0,0
which is the top/left of the display.
Script Example:
MyDmd.Text = "[pix2,10,5]"
Will set the point (DOT) at position 10 (x) and 5 (y) to colour 2 (60%)
[line#,#,#,#,#] [line colour, x1, y1, x2, y2]
Draw a Line between x1,y1 and x2,y2 with the specified colour.
Script Example:
MyDmd.Text = "[line3,0,0,127,31]"
Will draw an line in colour 3 (80%) from 0,0 (the top left of the display) to
127,31 (the bottom right of a 128 x 32 dot matrix display)
[box#,#,#,#,#]
[box colour, x1, y1, x2, y2]
Draw a Filled Box between x1,y1 and x2,y2 with the specified colour.
Script Example:
MyDmd.Text = "[edge4][box1,1,1,126,30]"
Will draw an and edge around the display in colour 4 (100%) and then fill in
the screen with in colour 1 (40%) from 1,1 to 126,30 (the bottom right of a
128 x 32 dot matrix display)
The Dot Matrix Display in Future Pinball allows you to display an image animation behind the
text (as a second layer to the display). This works but drawing images which have been set up
in an image list via the image list manger (link). Future Pinball will automatically convert your
Images to the DMD display.
It is important to disable Texture Filtering for any textures which are to be used
on the DMD in the Texture Manger (link). Without disabling the filtering the image may be
blurred (depending on the person playing your table video preferences).
With Filter Disabled Without (uses Filtering specified in Video
Preferences)
By using the following commands, you can set up animations which will run behind any text
you draw on the screen.
Alignment Description
[il#]
Selects the image list back to use for the animation frames. Valid values are
between 1 and 64. Image lists must be added to the dmd during the
BeginPlay() method of the table script via the .AddImageList method. **
Once this value is set it remains set for the life of the DMD or until changed
again **
[as#]
Sets the animation speed in milliseconds. Must be greater than 5
milliseconds. The Default value is 100ms. ** Once this value is set it remains
set for the life of the DMD or until changed again **
[na]
Stops any background animation (turns it off).
[sf#]
Sets the start frame of the animation. Setting the Start frame voids any
previous animation (the end frame and repeat frame) and as thus the end
and repeat frame (if needed) should be set again. The frame number is a
sub-image within the currently selected image list bank. Frames start at 1
which is the first image in the image list. If no end frame is specified then the
DMD will display the image at this frame but no animation will occur.
[ef#]
Sets the end frame for the animation to stop at. This should be greater than
the image frame specified as the start frame. If not then the animation will
stop. When the End Frame is reached. The DMD will restart the animation at
the repeat frame (if specified). If it has not been specified then the animation
will stop.
[rf#]
Sets the repeat frame which can be anywhere in between the start and end
frames. This allows a portion of the animation to repeat allowing a animation
but has a intro and a repeat part. If you wish to display a single frame without
it turning off then set the start, end and repeat frames to the desired frame
number.
The Repeat frame along with the End frame can be set at any point without
interrupting the flow of the currently running (if any) animation. for example..
A DMD animation can be tied to a game mode where there is a intro
animation, which then repeats a small portion of it over and over again.
When the game mode terminates then setting a new end/repeat frame will let
the animation flow onto the end sequence. Thus an animation can be intro-
>repeat->exit. If you wish the animation to terminate once then new end
frame has been reached then set the repeat frame to -1. ie. "[rf-1]"
Script Example:
This will select Image List 1 (as added by the .AddImageList method) and play frames 1 to 4
repeating from 1 again. The "FUTURE PINBALL" and "CREDITS 0" text will be drawn over the
top of the animation.
Script Example:
Dim MyScore
MyScore = MyDmd.Value
The DMD will have an internal value of 0 when the table is first played though this is not
automatically displayed. If you wish to use the DMD Display object in the Simpler Number
only way, you will need to issue a .SetValue command at startup to initialise the display.
Script Example:
Script Example:
MyDmd.UpdateInterval = 10
Script Example:
MyDmd.SlowBlinkSpeed = 100
Script Example:
MyDmd.FastBlinkSpeed = 50
Script Example..
Script Example:
MyDmd.ResetToZero()
Script Example:
MyDmd.AddValue(100)
Script Example:
Sub FuturePinball_BeginPlay()
' initalise the player displays to the last known player score
MyDmd.SetValue(nvScore1)
' ..Etc..
End Sub
.QueueText ( <String> Text, <Enumeration> Effect, <Integer> TimeOn,
<Boolean> FlushQueue, <String> SoundEffect )
This method allows multiple text lines (called screens) to be queued up and displayed in
turn. This is where the flexibility of the DMD Display device really shows off as you can
add in several screens to let the player know he has done something without actually
having to keep track when each screen has finished.
Text
Specifies the Text to Display. Embedded DMD commands are processed if
they are included in the text.
Effect
The type of effect used to display the screen (or text) onto the display. This
field must be one of the following:
Generally the Scroll Effects will scroll any existing data off the screen, while
the Wipe effects replace the old screen with the new one.
Effect
Description
deNone (Default)
The text is instantly displayed.
deScrollLeft The text is scrolled onto the display starting from the
right most position and moving towards the left. Any
existing text is scrolled as well so effectively the old text
scrolls off while the new text scrolls on.
deScrollLeftOver The Text is scrolled onto the display starting from the
right most position and moving towards the left. It will
appear to scroll over any existing text.
deScrollRight The Text is scrolled onto the display starting from the
left most position and moving towards the right. Any
existing text is scrolled as well so effectively the old text
scrolls off while the new text scrolls on.
deScrollRightOver The Text is scrolled onto the display starting from the
left most position and moving towards the right. It will
appear to scroll over any existing text.
deScrollUp The text is scrolled upwards onto the display starting
from the bottom and moving upwards. Any existing text
is scrolled as well so effectively the old text scrolls off
while the new text scrolls on.
deScrollUpOver The Text is scrolled onto the display starting from the
bottom and moving upwards. It will appear to scroll over
any existing text.
deScrollDown The text is scrolled downwards onto the display starting
from the top and moving downwards. Any existing text
is scrolled as well so effectively the old text scrolls off
while the new text scrolls on.
deScrollDownOver The Text is scrolled onto the display starting from the
top and moving downwards. It will appear to scroll over
any existing text.
deScrollOut The Text will appear to scroll outwards (both left and
right) from the middle of the display.
deScrollIn The Text will scroll inwards from both the left and right
most edges of the display towards the middle.
deScrollOutVert The Text will appear to scroll outwards (both top and
bottom) from the middle of the display.
deScrollInVert The Text will scroll inwards from both the top and
bottom edges of the display towards the middle.
deWipeLeft Each DMD column will be replaced one at a time with
the new text (replacing any existing old text) starting
from the right and moving towards the left.
deWipeRight Each DMD column will be replaced one at a time with
the new text (replacing any existing old text) starting
from the left and moving towards the right.
deWipeUp Each DMD row will be replaced one at a time with the
new text (replacing any existing old text) starting from
the bottom and moving upwards.
deWipeDown Each DMD row will be replaced one at a time with the
new text (replacing any existing old text) starting from
the top and moving downwards.
deWipeOut
The new text will wipe out from the middle of the display
to the left and right edges.
deWipeIn
The new text will wipe in from the left the right edges
towards the middle.
deWipeOutVert
The new text will wipe out from the middle of the display
to the top and bottom edges.
deWipeInVert
The new text will wipe in from the top the bottom edges
towards the middle.
deFlip The Entire screen will flip over (vertical) and the next
screen will flip on.
deRandomEffect The Transition effect will be random selected from one
of the above effects.
TimeOn
Defines the time in milliseconds this screen is held for before moving to the
next display in the queue. This time also included the time to process the
Effect. For Best Results this should be a multiple of the .UpdateInterval
property. If no value is specified, the text will immediately be displayed and
the next (if any) display in the queue will be processed.
FlushQueue
Instructs the display driver to flush the queue if this is the LAST display in
the queue. Valid values are TRUE or FALSE. Generally during a game you
will always specify TRUE as you will want to display to revert back to the
default score screen when your effect screen has finished. During the
Attract mode though you will want it to be FALSE as you will want the attract
mode displays to automatically restart when they have finished. this allows
you to only put the displays in once and not have to worry about the driver
running out of things to do. If no value is specified, it is assumed to be
TRUE.
If this display is the last one in the queue (when it is processed, not when
you put it into the queue), it will call the _Empty() script event. You can use
this event to put back any default screens onto the display (such as
displaying the score)
Sound The Sound file to play when this screen is first processed. This allows
Effect corresponding sounds to be sync'd up with the appropriate display (i.e., a
bonus sound or something). Sounds are imported into the Table via the
Sound Manager (link). If this value is not specified, no sound effect will play.
Script Example:
For more Script examples, refer to the DMD Display example table which is included with
Future Pinball.
.FlushQueue ()
This method will flush (empty) the text queue (if any) so any screens that are still to be
processed are ignored. Note that this will not call the _Empty() script event as you are
manually emptying the queue so it's not finishing due to all the screens being processed.
You must also call .FlushAnimation() if you wish to stop any currently running
background animation.
Script Example:
MyDmd.FlushQueue()
.FlushAnimation ()
This method will flush (stop) any currently running background animations on the DMD.
Script Example:
MyDmd.FlushAnimation()
Slot
A slot number to assign the font to. This as to be between 1 and 32
(inclusive). If an existing font already exists in this slot then it will be
overwritten.
FontName
The name of the font as imported into the table via the via the Font
Manager.
Script Example:
MyDmd.AddFont 1, "dmd05x05p"
MyDmd.AddFont 2, "dmd06x07p"
Slot
A slot number to assign the Image List to. This as to be between 1 and
64 (inclusive). If an existing Image List already exists in this slot then it
will be overwritten.
ImageListName
The name of the image list created in the Image List Manager.
Script Example:
MyDmd.AddImageList 1, "blackcat"
_Empty ()
This event is called when the DMD Display Device has finished processing the text queue
and the last entry in the queue told the driver to finish up (by setting the FlushQueue
parameter to True in the .QueueText method)
You can use this to revert back to a default screen such has displaying the players score
when any screens you queue up finish being processed.
Script Example:
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: HUD Dot Matrix Displays
Dot Matrix Displays (a early for of Plasma displays) replaced the earlier Alphanumeric displays
by having an individually addressable dot grid rectangular array, capable of displaying graphics
and text by energizing selected dots of the display. These displays usually use Neon gas, which
glows orange when ionized by a high voltage electric current passed through the segment. The
end result was much complex displays with animation where produced.
Dot Matrix Displays (of DMD) in Future Pinball are very powerful and thus more complex to
control though they can work in a more simpler mode much like how the Electro-Mechanical
Scoring Reels work (well exactly). Lot of different types of effects (scrolling, blinking text, image
animation etc..) can be achieved. This Display also allows for custom font to be created ( via
the Font Editor ) allowing you even more control on what is displayed and how. A Custom
token system is used which allows you to render different text / fonts, images, lines, boxes and
text on the display. Each Dot is custom programmable with 5 shades of luminance (OFF, 40%,
60%, 80% and 100%).
The Dot Display device also allows you to queue up screens to display with a transitional effect
to put the screen on the display. The Dot Matrix display also allows for image frames to be
displayed behind the text for animation and more complex displays. Both the background
animation and foreground text work independently though the foreground text can contain
commands to control the background animation via the embedded token command system
which is used when processing text.
The HUD DMD Display works exactly the same as the normal DMD Display but is drawn on the
HUD instead of the Translite.
When you create a Dot Matrix Display on your table, the object will be drawn onto the current
workspace. Dot Matrix Displays can be only be placed on the Translite workspace.
Name
Sets the name of the object which is used to reference the object via Script
events. The name must be unique for the table and may not contain any
spaces. As with all Object Names, you should give a descriptive name to your
object.
Type
Allows you to define the style (and size) of the dot matrix display. You may
select one of the following types;
Style Description
Matrix Colour
Defines the colour of the Dots when they are Lit. Though the colour will
brighten as more elements are lit around it. A Darker version of this colour is
also
Defines the X location (based in pixels from the top left hand corner of the
HUD Screen) of the object on the Table.
Defines the Y location (based in pixels from the top left hand corner of the
HUD Screen) of the object on the Table.
Scale
Allows you to specify the scale between 50% and 100% of the DMD.
Alignment
Allows you to define how text and numbers are aligned on the display. You
can select one of the following:
Alignment Description
AlignLeft Any Text / Numbers displayed will be Left aligned.
AlignCenter Any Text / Numbers displayed will be Center aligned.
AlignRight (Default) Any Text / Numbers displayed will be Right aligned.
Update Interval
Defines the update interval (in Milliseconds) of the DMD device. The Lower
the value, the more the display device will be updated. this has the effect to
making any scrolling effects look smoother as the scroll will be faster (with a
lower value). In general you will not have to play with this value. The value
must be at least 5 milliseconds. Setting this value may also effect (and adjust)
the Slow and Fast Blink Speeds if you set it to a value larger than either of
those values.
Generally you will not need to change this value unless you wish to slow down
the display effects.
Defines the speed on which text marked as Blinking (slowly) will blink at. This
value must be at least double that of the Update Interval and is specified in
Milliseconds
Defines the speed on which text marked as Blinking (fast) will blink at. This
value must be at least that of the Update Interval and is specified in
Milliseconds.
This Section describes the object and how it can be accessed and controlled via the script at run-
time. Note that you access the object via the name given in the Name property field.
The Dot Matrix Display device is a very complex object (if you wish to use it fully).
It is advised that you also look at the Dot Matrix Display Example table
included with Future Pinball.
The Dot Matrix Display Device has 2 modes of operation (though they can be used at the same
time). A Simple Number only method which works exactly how the EM Reel / Gas Segment device
works which is simple to use and will only display numbers (i.e., Scores, Credits, etc.) on the
Display. The Second method in controlling the Dot Matrix Display is more screen driven where you
specify individual screens (or lines of text, which are queued up) and they are displayed in turn onto
the device using one of the built in transition methods (such as scrolling, etc.)
Numbers or Text are displayed onto the Dot Matrix display using a Future Pinball DMD Font ( these
are created with the DMD Font Editor and included into your table via the Font Manager ). At least
one Font has to be included in your table for any text to be displayed. The Dmd will default to using
the first font in the Font Manager unless the font is actively changed via an embedded text token
(this is covered below).
The following assumes you are familiar with the Gas Segment Display (link) although the specific
methods to this object are covered below;
The Dot Matrix Display uses a special embedded Token system to provide greater control over what
and how something is displayed. Tags (much like BB code on the Future Pinball Support Forums)
are enclosed in square braces [ and ]. These are split into 4 category's. Font Plotting, Drawing
Primitives, Animation Control and Miscellaneous. The text portion of the DMD can contain the
following embedded commands (# denotes a number). Spaces should NOT be used in a tag.
Font plotting
Alignment Description
[f#]
Select between font 1 and 32. Dmd Fonts must be added to the dmd during
the BeginPlay() method of the table script via the .AddFont method. Fonts
are added to your table via the Font Manger. If there is no font at the index
specified then this command will have no effect. ** Once this value is set it
remains set for the life of the DMD or until changed again **
Script Example:
MyDmd.Text = "[f1]Hello[f2]World"
This will display "Hello" with font 1 and "World" with font 2.
[x###]
Set the plot X position for the text within the DMD. Should be less that the
total width of the DMD. 0 is the extreme left of the display.
Script Example:
This will display "FUTURE PINBALL" with Font 4 on row 8 (y position) and "CREDITS 0" with
Font 1. Font 4 is then selected for any future draw commands. As there was no token to set the
X position (either [XC] or [X##]) the default alignment will be used.
The following example draws the same screen except that the entire screen will blink at the fast
blink rate.
Drawing primitives allow you to draw lines, pixels, box's on the Dot Matrix Display. Unlike the
Font Plotting which uses the luminance setting as defined with the font, these commands
require you to specify the colour (luminance).
For the Dot Matrix Display the follow colours are defined. 0 = Off, 1 = 40%, 2 = 60%, 3 = 80%
and 4 = 100% luminance
Alignment Description
[edge#]
[edge colour]
Draw a box around the edge of the DMD with the specified colour.
Script Example:
MyDmd.Text = "[edge4]"
MyDmd.Text = "[edge1]"
[pix#,#,#]
[pix colour, x, y]
Plot a Point at a x / y with the specified colour. The X/Y position starts at 0,0
which is the top/left of the display.
Script Example:
MyDmd.Text = "[pix2,10,5]"
Will set the point (DOT) at position 10 (x) and 5 (y) to colour 2 (60%)
[line#,#,#,#,#]
[line colour, x1, y1, x2, y2]
Draw a Line between x1,y1 and x2,y2 with the specified colour.
Script Example:
MyDmd.Text = "[line3,0,0,127,31]"
Will draw an line in colour 3 (80%) from 0,0 (the top left of the display) to
127,31 (the bottom right of a 128 x 32 dot matrix display)
[box#,#,#,#,#]
[box colour, x1, y1, x2, y2]
Draw a Filled Box between x1,y1 and x2,y2 with the specified colour.
Script Example:
MyDmd.Text = "[edge4][box1,1,1,126,30]"
Will draw an and edge around the display in colour 4 (100%) and then fill in
the screen with in colour 1 (40%) from 1,1 to 126,30 (the bottom right of a
128 x 32 dot matrix display)
The Dot Matrix Display in Future Pinball allows you to display an image animation behind the
text (as a second layer to the display). This works but drawing images which have been set up
in an image list via the image list manger (link). Future Pinball will automatically convert your
Images to the DMD display.
It is important to disable Texture Filtering for any textures which are to be used
on the DMD in the Texture Manger (link). Without disabling the filtering the image may be
blurred (depending on the person playing your table video preferences).
By using the following commands, you can set up animations which will run behind any text
you draw on the screen.
Alignment Description
[il#]
Selects the image list back to use for the animation frames. Valid values are
between 1 and 64. Image lists must be added to the dmd during the
BeginPlay() method of the table script via the .AddImageList method. **
Once this value is set it remains set for the life of the DMD or until changed
again **
[as#]
Sets the animation speed in milliseconds. Must be greater than 5
milliseconds. The Default value is 100ms. ** Once this value is set it remains
set for the life of the DMD or until changed again **
[na]
Stops any background animation (turns it off).
[sf#]
Sets the start frame of the animation. Setting the Start frame voids any
previous animation (the end frame and repeat frame) and as thus the end
and repeat frame (if needed) should be set again. The frame number is a
sub-image within the currently selected image list bank. Frames start at 1
which is the first image in the image list. If no end frame is specified then the
DMD will display the image at this frame but no animation will occur.
[ef#]
Sets the end frame for the animation to stop at. This should be greater than
the image frame specified as the start frame. If not then the animation will
stop. When the End Frame is reached. The DMD will restart the animation at
the repeat frame (if specified). If it has not been specified then the animation
will stop.
[rf#]
Sets the repeat frame which can be anywhere in between the start and end
frames. This allows a portion of the animation to repeat allowing a animation
but has a intro and a repeat part. If you wish to display a single frame without
it turning off then set the start, end and repeat frames to the desired frame
number.
The Repeat frame along with the End frame can be set at any point without
interrupting the flow of the currently running (if any) animation. for example..
A DMD animation can be tied to a game mode where there is a intro
animation, which then repeats a small portion of it over and over again.
When the game mode terminates then setting a new end/repeat frame will let
the animation flow onto the end sequence. Thus an animation can be intro-
>repeat->exit. If you wish the animation to terminate once then new end
frame has been reached then set the repeat frame to -1. ie. "[rf-1]"
Script Example:
MyDmd.Text = "[il1][sf1][ef4][rf1][y8]FUTURE PINBALL[f1][y25]CREDI
This will select Image List 1 (as added by the .AddImageList method) and play frames 1 to 4
repeating from 1 again. The "FUTURE PINBALL" and "CREDITS 0" text will be drawn over the
top of the animation.
Script Example:
Dim MyScore
MyScore = MyDmd.Value
The DMD will have an internal value of 0 when the table is first played though this is not
automatically displayed. If you wish to use the DMD Display object in the Simpler Number
only way, you will need to issue a .SetValue command at startup to initialise the display.
Script Example:
Script Example:
MyDmd.UpdateInterval = 10
Script Example:
MyDmd.SlowBlinkSpeed = 100
Script Example:
MyDmd.FastBlinkSpeed = 50
Script Example..
Script Example:
MyDmd.ResetToZero()
Script Example:
MyDmd.AddValue(100)
Script Example:
Sub FuturePinball_BeginPlay()
' initalise the player displays to the last known player score
MyDmd.SetValue(nvScore1)
' ..Etc..
End Sub
This method allows multiple text lines (called screens) to be queued up and displayed in
turn. This is where the flexibility of the DMD Display device really shows off as you can
add in several screens to let the player know he has done something without actually
having to keep track when each screen has finished.
Text Specifies the Text to Display. Embedded DMD commands are processed if
they are included in the text.
Effect
The type of effect used to display the screen (or text) onto the display. This
field must be one of the following:
Generally the Scroll Effects will scroll any existing data off the screen, while
the Wipe effects replace the old screen with the new one.
Effect
Description
deNone (Default)
The text is instantly displayed.
deScrollLeft The text is scrolled onto the display starting from the
right most position and moving towards the left. Any
existing text is scrolled as well so effectively the old text
scrolls off while the new text scrolls on.
deScrollLeftOver The Text is scrolled onto the display starting from the
right most position and moving towards the left. It will
appear to scroll over any existing text.
deScrollRight The Text is scrolled onto the display starting from the
left most position and moving towards the right. Any
existing text is scrolled as well so effectively the old text
scrolls off while the new text scrolls on.
deScrollRightOver The Text is scrolled onto the display starting from the
left most position and moving towards the right. It will
appear to scroll over any existing text.
deScrollUp The text is scrolled upwards onto the display starting
from the bottom and moving upwards. Any existing text
is scrolled as well so effectively the old text scrolls off
while the new text scrolls on.
deScrollUpOver The Text is scrolled onto the display starting from the
bottom and moving upwards. It will appear to scroll over
any existing text.
deScrollDown The text is scrolled downwards onto the display starting
from the top and moving downwards. Any existing text
is scrolled as well so effectively the old text scrolls off
while the new text scrolls on.
deScrollDownOver The Text is scrolled onto the display starting from the
top and moving downwards. It will appear to scroll over
any existing text.
deScrollOut The Text will appear to scroll outwards (both left and
right) from the middle of the display.
deScrollIn The Text will scroll inwards from both the left and right
most edges of the display towards the middle.
deScrollOutVert The Text will appear to scroll outwards (both top and
bottom) from the middle of the display.
deScrollInVert The Text will scroll inwards from both the top and
bottom edges of the display towards the middle.
deWipeLeft Each DMD column will be replaced one at a time with
the new text (replacing any existing old text) starting
from the right and moving towards the left.
deWipeRight Each DMD column will be replaced one at a time with
the new text (replacing any existing old text) starting
from the left and moving towards the right.
deWipeUp Each DMD row will be replaced one at a time with the
new text (replacing any existing old text) starting from
the bottom and moving upwards.
deWipeDown Each DMD row will be replaced one at a time with the
new text (replacing any existing old text) starting from
the top and moving downwards.
deWipeOut
The new text will wipe out from the middle of the display
to the left and right edges.
deWipeIn
The new text will wipe in from the left the right edges
towards the middle.
deWipeOutVert
The new text will wipe out from the middle of the display
to the top and bottom edges.
deWipeInVert
The new text will wipe in from the top the bottom edges
towards the middle.
deFlip The Entire screen will flip over (vertical) and the next
screen will flip on.
deRandomEffect The Transition effect will be random selected from one
of the above effects.
TimeOn
Defines the time in milliseconds this screen is held for before moving to the
next display in the queue. This time also included the time to process the
Effect. For Best Results this should be a multiple of the .UpdateInterval
property. If no value is specified, the text will immediately be displayed and
the next (if any) display in the queue will be processed.
FlushQueue
Instructs the display driver to flush the queue if this is the LAST display in
the queue. Valid values are TRUE or FALSE. Generally during a game you
will always specify TRUE as you will want to display to revert back to the
default score screen when your effect screen has finished. During the
Attract mode though you will want it to be FALSE as you will want the attract
mode displays to automatically restart when they have finished. this allows
you to only put the displays in once and not have to worry about the driver
running out of things to do. If no value is specified, it is assumed to be
TRUE.
If this display is the last one in the queue (when it is processed, not when
you put it into the queue), it will call the _Empty() script event. You can use
this event to put back any default screens onto the display (such as
displaying the score)
Sound The Sound file to play when this screen is first processed. This allows
Effect corresponding sounds to be sync'd up with the appropriate display (i.e., a
bonus sound or something). Sounds are imported into the Table via the
Sound Manager (link). If this value is not specified, no sound effect will play.
Script Example:
For more Script examples, refer to the DMD Display example table which is included with
Future Pinball.
.FlushQueue ()
This method will flush (empty) the text queue (if any) so any screens that are still to be
processed are ignored. Note that this will not call the _Empty() script event as you are
manually emptying the queue so it's not finishing due to all the screens being processed.
You must also call .FlushAnimation() if you wish to stop any currently running
background animation.
Script Example:
MyDmd.FlushQueue()
.FlushAnimation ()
This method will flush (stop) any currently running background animations on the DMD.
Script Example:
MyDmd.FlushAnimation()
Slot
A slot number to assign the font to. This as to be between 1 and 32
(inclusive). If an existing font already exists in this slot then it will be
overwritten.
FontName
The name of the font as imported into the table via the via the Font
Manager.
Script Example:
MyDmd.AddFont 1, "dmd05x05p"
MyDmd.AddFont 2, "dmd06x07p"
Slot
A slot number to assign the Image List to. This as to be between 1 and
64 (inclusive). If an existing Image List already exists in this slot then it
will be overwritten.
ImageListName
The name of the image list created in the Image List Manager.
Script Example:
MyDmd.AddImageList 1, "blackcat"
.FadeOut()
This method will fade out the DMD Display until it is not visible anymore. If the Hud DMD
has already been faded out then this command will have no effect.
Script Example:
MyDmd.FadeOut()
.FadeIn()
This method will fade in the DMD Display until it is fully visible. If the DMD Display is
already visible then this command will have no effect.
Script Example:
MyDmd.FadeIn()
_Empty ()
This event is called when the DMD Display Device has finished processing the text queue
and the last entry in the queue told the driver to finish up (by setting the FlushQueue
parameter to True in the .QueueText method)
You can use this to revert back to a default screen such has displaying the players score
when any screens you queue up finish being processed.
Script Example:
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Decals
You should ensure that Decals are drawn after the light on which it
sits on. You can do this by sending the Light object to the back via
the right mouse button context menu.
When you create a Decal on your table, the object will be drawn on
to the current workspace. Decals can be placed on both the Table
and Translite workspaces.
Selecting this object will bring up the following property sheet:
Colour
Transparency
The Transparency slider allows you to
make the Decal transparent (so a light
underneath will shine though). With the
slider all the way over to the right (max),
the decal is fully opaque. Moving the slider
to the left will make the decal more
transparent. If the Colour has been set to
Black (which is treated as special), the
transparency setting will have no effect.
Width
Height
Rotation
This field allows you to draw the object at
a different rotation on the Table. Valid
values range from 0 to 359 degrees.
Surface
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Overlays
As the Overlay object requires the use of a Image List, you will need
to be familiar with the Image List List Manager (link) before
continuing.
When you create an Overlay on your table, the object will be drawn
on to the current workspace. Overlays can be placed on the Playfield
and the Translite workspace.
Selecting this object will bring up the following property sheet:
Name
Image List
Colour
Surface
Width
Height
Rotation
Update Interval
.UpdateInterval = { Period in
<Integer>
Milliseconds }
This property allows you to change the speed at which
the Overlay will change image frame (from the specified
Image List) when using the Frame() script method. The
smaller the value the faster the animation will run. The
value must be at least 25 milliseconds.
Script Example:
MyOverlay.UpdateInterval = 100
Script Example:
If (MyOverlay.CurrentFrame = 1) Then
' Do something..
End If
StartFrame
The initial frame to display. This should
be an integer number between 1 and the
maximum number of images in the
Image List. A value of 1 will display the
first frame. If this value is out of range
then this command will have no effect.
EndFrame
If you wish the Overlay to animate
between several images within the
Image List (in a sequential order) then
this field will allow you to set the end
frame. Each frame (between the
StartFrame and the EndFrame will be
displayed in turn (at the rate defined by
.UpdateInterval). You can animate both
Forwards and Backwards. If not value is
specified then no animation will take
effect. If this value is out of range then
the command will have no effect.
RepeatFrame
This field allows you to specify a frame
index to start (or repeat) an animate
once it has progressed from the
StartFrame to the the EndFrame. If no
value is specified then the any animation
will only play once.
Script Examples:
MyOverlay.Frame 1, 5
MyOverlay.Frame 1, 5, 3
MyOverlay.Frame MyOverlay.CurrentFrame
.StepForward()
This method will advance the Image Frame being
displayed (display the next image in the list). If it
exceeds the number of frames in the Image List then it
will begin again from the first frame. If the Image List
only has a single frame then this method will have no
effect.
Script Example:
MyOverlay.StepForward()
.StepBackward()
This method will retard the Image Frame being
displayed (display the previous image in the list). If it
goes back before the first frame then it will start again
from the last frame in the Image List. If the Image List
only has a single frame then this method will have no
effect.
Script Example:
MyOverlay.StepBackward()
.FadeOut()
This method will fade out the overlay until it is not visible
anymore. This is useful for HUD overlays which you
want to vanish when you are playing a game (such as a
rule set graphic). If the Overlay has already been faded
out then this command will have no effect.
Script Example:
MyOverlay.FadeOut()
.FadeIn()
This method will fade in the overlay until it is fully visible.
This is useful for HUD overlays which you want to
display when a user is not playing a game (such as a
rule set or a game over/insert coin graphic). If the
Overlay is already visible then this command will have
no effect.
Script Example:
MyOverlay.FadeIn()
The Overlay object doesn't have any Events which it can call
via the script.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Timers
When you create a timer on your table, the following icon will be
drawn.
Name
Timer Enabled
Timer Interval
Setting this value to TRUE will cause the Timer to wait for
the period defined by the Interval. When this period expires,
the Timer will generate the_Expired() event
Setting this value to FALSE will stop any existing (if any)
timer from executing.
Script Example:
MyTimer.Enabled = True
.Interval = { period in
<Integer>
milliseconds }
Sets the Interval of the Timer. The Interval must be positive
and greater than 10.
Script Example:
...
Sub MyTimer_Expired()
' .. do something ..
End Sub
<Variant> .UserData
This is a script only variable (of a variant type) which can
set to either a number, a b, a string or a reference to
another other object. When the table is first run, the
contents of the variable will be a Integer with the value of 0.
Script Example:
MyTimer.UserData = 10
or;
and;
MyTimer.UserData = True
Script Example:
_Expired()
This event is generated when the Timer is Enabled and the
Timer's Interval has expired.
Script Example:
...
Sub MyTimer_Expired()
' disable timer
MyTimer.Set False
' .. do something ..
End Sub
It is good programming practice to disable a timer while in
the _Timer() event by setting .Enabled to False. If you want
a timer to repeat, then set it back to True before exiting the
Subroutine.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley
Table Object: Sub-Translit Animation
As the STA object requires the use of a Image List, you will need to
be familiar with the Image List List Manager (link) before continuing.
When you create a STA on your table, the object will be drawn on to
the current workspace. They can only be placed on the Translite
workspace.
Name
Image List
Defines the Image List for the STA to use.
Image Lists are created by the Image List
manager (link). A Preview of the first
frame of the Image List is also displayed.
Colour
Width
Height
Defines the Height of the STA in
millimeters. The value must be at least 5
millimeters.
Update Interval
.UpdateInterval = { Period in
<Integer>
Milliseconds }
This property allows you to change the speed at which
the STA will change image frame (from the specified
Image List) when using the Frame() script method. The
smaller the value the faster the animation will run. The
value must be at least 25 milliseconds.
Script Example:
MySta.UpdateInterval = 100
Script Example:
If (MySta.CurrentFrame = 1) Then
' Do something..
End If
Script Example:
StartFrame
The initial frame to display. This should
be an integer number between 1 and
the maximum number of images in the
Image List. A value of 1 will display the
first frame. If this value is out of range,
then this command will have no effect.
EndFrame
If you wish the STA to animate between
several images within the Image List (in
a sequential order), then this field will
allow you to set the end frame. Each
frame (between the StartFrame and
the EndFrame will be displayed in turn
(at the rate defined by
.UpdateInterval). You can animate
both Forwards and Backwards. If not
value is specified, then no animation
will take effect. If this value is out of
range, then the command will have no
effect.
RepeatFrame
This field allows you to specify a frame
index to start (or repeat) an animate
once it has progressed from the
StartFrame to the the EndFrame. If no
value is specified, then the any
animation will only play once.
Script Examples:
MySta.Frame 1
MySta.Frame 1, 5
MySta.Frame 1, 5, 3
MySta.Frame MySta.CurrentFrame
.StepForward()
This method will advance the Image Frame being
displayed (display the next image in the list). If it
exceeds the number of frames in the Image List, then it
will begin again from the first frame. If the Image List
only has a single frame, then this method will have no
effect.
Script Example:
MySta.StepForward()
.StepBackward()
This method will retard the Image Frame being
displayed (display the previous image in the list). If it
goes back before the first frame, then it will start again
from the last frame in the Image List. If the Image List
only has a single frame, then this method will have no
effect.
Script Example:
MySta.StepBackward()
Angle
The Angle to Rotate the STA to. This
should be an angle between 0 and
359 degrees. If the STA is currently
not at the specified angle it will start
rotating until it reaches that angle.
TimeToTake
Specifies the time to take (in
milliseconds) to rotate the STA from its
current angle to the newly specified
angle. Must be at least 1 millisecond
(which would be an instant rotation). if
no value is specified, then the motor
will instantly (step) to the new angle
AntiClockwise
If TRUE, then the motor will rotate
anti-clockwise otherwise the motor
rotates clockwise. If no value is
specified, then the motor will rotate
clockwise.
Script Example:
The STA object doesn't have any Events which it can call
via the script.
Future Pinball © 2007 BSP Software Design Solutions - Designed and Developed by Chris Leathley