Jump to content



Photo
* * * * * 5 votes

Pinball Labs Looking for Testers


  • Please log in to reply
333 replies to this topic

#121 tmek

tmek

    Enthusiast

  • Members
  • PipPipPip
  • 112 posts

  • Flag: United States of America

  • Favorite Pinball: Fish Tales

Posted 13 October 2015 - 01:38 AM

As I mentioned earlier I would like to get a Pinball Labs Kickstarter going before too long that would allow me to continue working on this full time.

 

I would love to hear what you think the Pinball Labs Kickstarter campaign needs to be successful.  If any of you are good at creative writing and marketing and want to help that would be tremendous.  My thinking is to go ahead and flesh out the text and images for the campaign sooner rather than later.  That way I'll have a roadmap for the demo and video content that need to be developed before the campaign can be launched.

 

To me Pinball Labs should be three things: Simulator, Editor and API.  I like to think of it being analogous to what PhotoShop is to image editing, an extensible tool that allows users to easily build, share and play pinball tables.  Apart from the simulator and editor, everything else is implemented seamlessly as plugins through the API.   It will ship with at least one scripting plugin.  VPinMAME support would also be implemented through a plugin.

 

Some broad aspects would be ...

  • Overview and description of Pinball Labs.
  • At least one or two original table designs to be used in demo and videos.
  • Playable demo with support for three display modes:  Virtual Reality, Virtual Pinball Cabinet and Desktop.
  • video footage of how creating/editing/scripting tables will look in Pinball Labs.
  • Description of how API and plugins allow Pinball Labs to be easily extended.
  • Concepts, titles and pricing for pledge/reward levels.

I have started a skeleton kickstarter page here:   https://www.kickstar...?token=606ce3f9


Edited by tmek, 13 October 2015 - 02:23 AM.


#122 chinzman93

chinzman93

    "All humans are vermin in the eyes of Morbo!"

  • Platinum Supporter
  • 403 posts
  • Location:Here

  • Flag: United States of America

  • Favorite Pinball: Fish Tales, BSD, AFM

Posted 13 October 2015 - 07:34 AM

I was curious if you have thought about a method to counter the need for the use of the "key-stone" affect used in VP for cabinets? Since VP's camera is locked, it is necessary. But with a true-3D evironment with a moving camera this would not be necessary. I would suspect TPA had already solved this for cab's in the last version they had. 



#123 blashyrk

blashyrk

    Pinball Fan

  • Members
  • PipPipPipPip
  • 549 posts
  • Location:Norway

  • Flag: Norway

  • Favorite Pinball: Attack from Mars, Medieval Madness, White Water

  • PS3 Gamer Tag: Blashyrk

Posted 13 October 2015 - 07:49 AM

Is it possible to include support for DOF (Direct output Framework) ?

#124 nodz509

nodz509

    Enthusiast

  • Members
  • PipPipPip
  • 81 posts
  • Location:eastern washington (inland northwest)

  • Flag: United States of America

  • Favorite Pinball: whirlwind,taf,TZ,wizoz,acdc monster bash, flintstomes, and likie 60 others

Posted 13 October 2015 - 04:36 PM

About the flippers, you talked about the "burst and drop",  high voltage flips up and low voltage holds it up,  I think most of us have seen machines that seem to "double flip" and flippers fall back into there start position and its impossible to cradle the ball,  this is happening when the solenoid isn't receiving any power from the low voltage power supply, I've seen this happen from a loose wire or bad connection on several machines...  dunno if this helps or not I just figured the high and low are both consistent in their voltage or whatever and there isn't actually a drop in power level taking place, its on and off the way it was explained to me.

 

welcome to digital pinball tmek! thanks for your work so far this is looking to be outstanding!!  



#125 dyopp21

dyopp21

    Pinball Badass

  • Platinum Supporter
  • 503 posts
  • Location:Arlington,TN

  • Flag: United States of America

  • Favorite Pinball: Firepower

  • PS3 Gamer Tag: dyopp21

Posted 13 October 2015 - 05:09 PM

As I mentioned earlier I would like to get a Pinball Labs Kickstarter going before too long that would allow me to continue working on this full time.

 

I would love to hear what you think the Pinball Labs Kickstarter campaign needs to be successful.  If any of you are good at creative writing and marketing and want to help that would be tremendous.  My thinking is to go ahead and flesh out the text and images for the campaign sooner rather than later.  That way I'll have a roadmap for the demo and video content that need to be developed before the campaign can be launched.

 

To me Pinball Labs should be three things: Simulator, Editor and API.  I like to think of it being analogous to what PhotoShop is to image editing, an extensible tool that allows users to easily build, share and play pinball tables.  Apart from the simulator and editor, everything else is implemented seamlessly as plugins through the API.   It will ship with at least one scripting plugin.  VPinMAME support would also be implemented through a plugin.

 

Some broad aspects would be ...

  • Overview and description of Pinball Labs.
  • At least one or two original table designs to be used in demo and videos.
  • Playable demo with support for three display modes:  Virtual Reality, Virtual Pinball Cabinet and Desktop.
  • video footage of how creating/editing/scripting tables will look in Pinball Labs.
  • Description of how API and plugins allow Pinball Labs to be easily extended.
  • Concepts, titles and pricing for pledge/reward levels.

I have started a skeleton kickstarter page here:   https://www.kickstar...?token=606ce3f9

Just checked out your kickstarter page.  If you decide to go forward with it, you can count on my support (us fellow Tennesseans gotta stick together!)


Virtual Pinball: see one, do one, TEACH ONE.

 

2qszd43.png


#126 tmek

tmek

    Enthusiast

  • Members
  • PipPipPip
  • 112 posts

  • Flag: United States of America

  • Favorite Pinball: Fish Tales

Posted 13 October 2015 - 05:19 PM

I was curious if you have thought about a method to counter the need for the use of the "key-stone" affect used in VP for cabinets? Since VP's camera is locked, it is necessary. But with a true-3D evironment with a moving camera this would not be necessary. I would suspect TPA had already solved this for cab's in the last version they had. 

 

Hi, chinzman93.  If I'm understanding your question correctly this won't be an issue.  Since Pinball Labs is real-time 3D, the camera can be adjusted to provide a perspective of the playfield that is customized for you.  The latest build already allows you to adjust camera height, depth, FOV and angle in cabinet mode.  Below you can see where user JMG has setup the Pinball Labs camera for a perspective he felt was right for him on his cabinet ...

 

With the addition of tracking hardware (Kinect, TrackIR, etc.) and software the camera parameters can be updated in real time to match your perspective.  

 

Pinball Labs will support things like this indirectly through it's plugin API.  In this case it will expose the camera parameters to plugins.  Anyone with experience with a given tracking hardware system can write a plugin to communicate with the tracking hardware and update the Pinball Labs camera each frame.

 

I'm going to write more about plugin support below in response to blashryk's question about DirectOutputFramework. :)

 

kTXZOvA.jpg


Edited by tmek, 13 October 2015 - 07:22 PM.


#127 tmek

tmek

    Enthusiast

  • Members
  • PipPipPip
  • 112 posts

  • Flag: United States of America

  • Favorite Pinball: Fish Tales

Posted 13 October 2015 - 06:10 PM

Is it possible to include support for DOF (Direct output Framework) ?

 

 
Hi blashyrk,   :)
 
This is a good time for me to expand on my ideas for the Pinball Labs plugin features.  
 
Something that's grown popular with large internet companies in the past few years is the concept of "Microservices".  The idea is that rather than writing large bulky services that are hard to maintain, you break them up into tiny, highly focused services that do one thing really well and really fast.  These small services communicate with each other by publishing and subscribing to events.
 
The Pinball Labs API will provide a similar type of communication between itself and its plugins, much like the "wiring" of a real pinball machine.  This means plugins can not only communicate with Pinball Labs but can communicate with other plugins as well (provided they choose to subscribe to those events).
 
A Pinball Labs installation might come to look like this:
 
|--PinballLabs.Exe
|
|--Plugins.Scripting.VisualBasic.dll 
|
|--Plugins.Scripting.CSharp.dll
|
|--Plugins.PinMAME.dll
|
|--Plugins.HeadTracking.KinectV2.dll
|
|--Plugins.DirectOutputFramework.dll
 
Where the vertical line conceptually represents an "event bus" that Pinball Labs and its plugins can all talk to each other on.
 
I will be focused on developing the simulator, editor and API of Pinball Labs with the goal of making it as easy to extend as possible.  I will also write the first scripting plugin and open source its code along with documentation on how to develop other plugins for Pinball Labs.  
 
At that point anyone with some programming experience can extend Pinball Labs to support just about any form of logic processing or input/output devices by writing a plugin for it.

Edited by tmek, 13 October 2015 - 06:13 PM.


#128 tmek

tmek

    Enthusiast

  • Members
  • PipPipPip
  • 112 posts

  • Flag: United States of America

  • Favorite Pinball: Fish Tales

Posted 13 October 2015 - 06:35 PM

About the flippers, you talked about the "burst and drop",  high voltage flips up and low voltage holds it up,  I think most of us have seen machines that seem to "double flip" and flippers fall back into there start position and its impossible to cradle the ball,  this is happening when the solenoid isn't receiving any power from the low voltage power supply, I've seen this happen from a loose wire or bad connection on several machines...  dunno if this helps or not I just figured the high and low are both consistent in their voltage or whatever and there isn't actually a drop in power level taking place, its on and off the way it was explained to me.

 

welcome to digital pinball tmek! thanks for your work so far this is looking to be outstanding!!  

 

Thank you!   :)  Hmm, I haven't played enough real machines to come across what you describe yet.  However, the Mission Pinball guys have a great document about the mechanics and intricacies of real world pinball flippers here:

 

https://missionpinba...evices/flipper/


Edited by tmek, 13 October 2015 - 07:06 PM.


#129 blashyrk

blashyrk

    Pinball Fan

  • Members
  • PipPipPipPip
  • 549 posts
  • Location:Norway

  • Flag: Norway

  • Favorite Pinball: Attack from Mars, Medieval Madness, White Water

  • PS3 Gamer Tag: Blashyrk

Posted 13 October 2015 - 07:27 PM

Thanks for your answer tmek :) I'll definitely back this project on kickstarter

#130 Ben Logan

Ben Logan

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 2,275 posts
  • Location:California

  • Flag: ---------

  • Favorite Pinball: System 11

Posted 14 October 2015 - 01:11 AM

Count me in for Kickstarter backing, tmek.

#131 tmek

tmek

    Enthusiast

  • Members
  • PipPipPip
  • 112 posts

  • Flag: United States of America

  • Favorite Pinball: Fish Tales

Posted 14 October 2015 - 02:22 AM

Are any of you familiar with, or have ever used the Mission Pinball Framework

 

They're pinball enthusiasts developing "Python-based pinball software framework you can use to write your own pinball software for real pinball machines".

 

I have been reading through their documentation and they have an event/plugin architecture that is pretty much exactly what I was envisioning for pinball labs API.  Though they're "on the other side of the fence" so to speak.

 

Still, seems like there might be some potential there.  It's extremely unrealistically ambitious, but how cool would it be to share a common events and plugin architecture across both real and simulated pinball machines? :o

 

I'll reach out to them on their forums and tell them about Pinball Labs and see what kind of interest they might have.

 

Check out their devices and events pages if you are interested.

 

https://missionpinba...ecture/devices/

 

https://missionpinba...tecture/events/


Edited by tmek, 14 October 2015 - 02:57 AM.


#132 Brian Madden

Brian Madden

    Neophyte

  • Members
  • Pip
  • 7 posts
  • Location:San Francisco

  • Flag: United States of America

  • Favorite Pinball: Road Show

Posted 14 October 2015 - 05:31 AM

Hi Everyone!

 

This is my first post to vpforums. :) I'm Brian Madden, one of the creators of the Mission Pinball Framework (https://missionpinball.com/mpf/) that tmek mentioned above. Tmek just emailed me to ask about what he mentioned in his post, and since then I've downloaded the alpha, read through this thread, and, like most, I'm also blown away. Amazing and beautiful work!

 

The Mission Pinball Framework (MPF) is a free and open source software framework that's used to power real pinball machines. Some people use it to replace the code & rules on existing machines, and others use it to power new custom-built home brew machines.

 

The idea behind MPF is that it's easy enough to use for non-programmers as most configuration and game logic can be done with text-based config files. (Though you can also add custom code here and there as needed.) MPF is not complete. We released the first public version in July 2014, and we have a long way to go, though there have been complete games built with it.

 

MPF is software that runs on a host computer attached to a real pinball machine via a modern pinball controller such as the P-ROC, P3-ROC, or FAST Pinball controller. That controller sits inside the machine and replaces the main CPU board, and then MPF talks to it via USB. (Most people use a laptop to run MPF for testing and then switch over to something like a BeagleBone Black or Raspberry Pi 2 when they finish their game.)

 

The modern pinball controllers provide a very low-level interface to the pinball hardware. This is very simple. Things like "read a switch", "pulse this driver", "turn on this light," etc. All the other logic is done in MPF.

 

MPF is written in Python. When most people hear that, they think, "How in the world is Python fast enough to run a pinball machine?" These modern pinball controllers also have the ability to have very simple hardware "triggers" set, like "pulse this coil when this switch is hit" or "enable this coil when this switch is active, and disable it when this switch is inactive." These triggers are handled by the pinball controller in a near-instantaneous way without the need for the switch event to go to the host computer, be processed by MPF, and the coil command to go back out to the controller. These triggers are written and cleared frequently. (Clear the trigger rule for the flippers when the ball ends, write it again when the next ball starts, etc.)

 

So that's the background on MPF.

 

One of my dreams with MPF has been for it to be able to interface with a virtual pinball platform like like Future Pinball or Visual Pinball or whatever. (I'm not too familiar with these.) I looked into it maybe a year ago, but it seems like it would take some work since many of these don't fully emulate "all" the devices. For example since MPF is software for running real pinball machines, it needs to have a trough with trough switches and it needs the ball to flow through those switches from drain hole to trough, and it needs the eject coil to fire to move the ball from the trough to the plunger lane, etc.

 

I want MPF to be able to work with a virtual pinball platform because I want the people (1) creating machines with MPF to be able to start writing their "real" MPF configs and codes before their machines are done, (2) to be able to use the virtual machines for testing and development when they're not by their physical hardware, and (3) to be able to share the amazing original machines they create with everyone.

 

So you can see why I was excited to receive tmek's email and to learn about this Pinball Labs project.

 

MPF has a platform-independent design with hardware-specific platform modules. So all the code and configs you build with MPF can run on a game powered by a P-ROC, a P3-ROC, or a FAST controller. MPF has platform modules that translate the MPF calls into the platform-native calls. How exactly this works depends on the hardware platform. For example, the P-ROC has a standard library written in C that we use. FAST has a virtual COM port which we send and receive commands to and from.

 

So in the case of Pinball Labs, if tmek can give us a simple low-level API, then we can write a Pinball Labs platform interface for MPF and then control a Pinball Labs machine via MPF. I've already written many platform interfaces for MPF and I can do it very quickly. I think it would only take a few hours.

 

The API we would need would just expose low-level pinball hardware. Give us a way to turn on a light or to set an LED to a certain color. Give us a way to pulse, enable, or disable a driver. Give us a way to read the value of a switch. (I imagine that this might even already exist?)

 

We can also write to the DMD (both single-color and color DMDs) via MPF. For single color DMDs, we send a byte array (1 byte per pixel, high 4 bits are ignored, low 4 bits are the intensity level from 0-15). For color DMDs, we send 3 bytes per pixel representing the red, grean, and blue values.

 

Where is gets really cool is that MPF has the ability to support multiple hardware platforms at once. So we could use the Pinball Labs platform for the playfield stuff like switches, lights, and coils, but we could also use a physical platform for a real DMD, backbox flashers, and any other physical pinball "things" that people attach to their virtual cabs.

 

So getting MPF talking to Pinball Labs would be huge for us and the MPF user and pinball maker community. It would also be great for people designing new machines with Pinball Labs because (1) you'd have an existing framework with an existing support community that's used by lots of people which you can use to create your game logic and configuration. (Remember again that you don't have to be a "real" programmer to use MPF) And (2), if you ever decided you wanted to turn your virtual Pinball Labs machine into a real machine, the software would be done. You can literally run the exact same MPF code & config for your Pinball Labs machine and your real machine. It's just one single line in the config file where you'd change "platform: pinball_labs" to "platform: fast" (or whatever hardware you would use), and boom! You're done.

 

Anyway, enough rambling. Awesome project and I love the positive vibe in this forum. (Unlike some other *cough* popular pinball forums. :)

 

Finally, unrelated to MPF and Pinball Labs... a few pages ago in this thread, tmek asked about that red light that was under the apron and what it was for. It’s a “scratch test" insert. In those days the process Williams had for clear coating the playfields was finicky, and if it didn’t cure just right, then it could be scratched too easily. The problem was they didn’t have a way to know whether it cured right without actually doing a “test” scratch on a playfield. But that test scratch would ruin a playfield (even if it passed), so they installed that extra insert in the hidden location and they would scratch up one of the playfields from each clear coat batch to make sure it held up. Every once and awhile, you’ll actually find one in the wild which is scratched which is kind of cool. :)

 

BTW I'll be at the Pinball Expo in Chicago this weekend if any of you will be there. I'll probably be hanging around the FAST Pinball booth since they will have 7 different works in progress hobbyist-built machines there running MPF. Gabe Knuth, the other guy doing MPF with me, will also be there. We also are giving a talk about building custom pinball machines (I think on Saturday.)

 

Thanks everyone!

Brian

 

P.S. Count us in for the Kickstarter project too! :)

 

P.P.S. Sorry this was a crazy long post.


Mission Pinball Framework

missionpinball.com


#133 chepas

chepas

    t.me/horsepin

  • Members
  • PipPipPipPip
  • 1,966 posts

  • Flag: ---------

  • Favorite Pinball: BSD, Tr0n, SW:Stern

Posted 14 October 2015 - 07:13 AM

Brian. Surely the proc VP bridge with some minor tweaks would work similar to MPF. That would be a great start to hook up to PinLabs over COM, it's pretty solid and works well.

 

I would personally prefer if there were some way a "universal" pyrocgame plugin could be used. Meaning the original pyproc, skeletonProc & MPF could be used with the same communication from pinproc.

 

It's the displays are used with Python that may prove to be the most tricky if trying to embed.


Bump maps are the new auto-tune :BDH:
VPX - RSS Updates ---- blog.flippingflips.xyz/en/ -- Visual Pinball No.1 (2021) . Est.2000


#134 Brian Madden

Brian Madden

    Neophyte

  • Members
  • Pip
  • 7 posts
  • Location:San Francisco

  • Flag: United States of America

  • Favorite Pinball: Road Show

Posted 14 October 2015 - 10:33 AM

Oh yeah, whatever Tmek does for the API for Pinball Labs can be universal. He wouldn't need to do anything specific to MPF at all. And then the creators of Pyprocgame and PyprocgameHD (and anyone else) should be able to use the same API to hook their software frameworks in too.

 

And yeah, I didn't think about the P-ROC VP bridge as a starting point. That's a great idea, thanks! I'll take a look at that after Expo too.


Edited by Brian Madden, 14 October 2015 - 12:03 PM.

Mission Pinball Framework

missionpinball.com


#135 tmek

tmek

    Enthusiast

  • Members
  • PipPipPip
  • 112 posts

  • Flag: United States of America

  • Favorite Pinball: Fish Tales

Posted 14 October 2015 - 12:57 PM

Thanks for an awesome post Brian!   :)  As someone that has just recently discovered all of these pinball related projects and communities, I'm still amazed by it all.

 

I've attached a simplified overview of everything that's been discussed in this thread relating to plugin and API support.  (Assume plugins for something like DOF would be notified when system inputs/outputs change and any hardware button could be mapped to any switch input.)

 

Excluding the more advanced displays that chepas mentioned (which I need to look further into), is there any thing that isn't potentially covered here?

 

I wasn't sure about things like score reels or Whirlwind's spinning disc or the rotating multiball "reel" locks in Fish Tales .  I'm assuming from the perspective of the logic controller those are just devices made of combinations of switches and coils not unlike bumpers or slingshots.

 

For cabinets, audio output isn't a big deal because you just play it through the speakers mounted in the cab.  But for virtual reality you want to be able to have positional audio.  Does anyone know if PinMAME supports streaming the raw PCM audio data?

 

Also, I've seen that controllers in real pinball machines are referred to as MPUs.  I assume PU is "processing unit", but I was curious what the M stands for?

 

jy8ARhm.png?1


Edited by tmek, 14 October 2015 - 01:29 PM.


#136 tmek

tmek

    Enthusiast

  • Members
  • PipPipPip
  • 112 posts

  • Flag: United States of America

  • Favorite Pinball: Fish Tales

Posted 14 October 2015 - 01:50 PM

The most important is a simple and intuitive algorithmic programming of counting points  (excel style) and logical sequence (lights, gates....)  and not cli

 

If I'm understanding you correctly, I do hope to provide an option to define game rules simply by setting properties on playfield objects in the editor.  I'll need to think through several game examples to make sure I come up with a decent system.  I imagine I would get some good ideas looking at MPF's configuration based rule sets.


#137 fripounet

fripounet

    Pinball Fan

  • Platinum Supporter
  • 1,032 posts

  • Flag: China

  • Favorite Pinball: .les miens

Posted 14 October 2015 - 04:04 PM

 

If I'm understanding you correctly, I do hope to provide an option to define game rules simply by setting properties on playfield objects in the editor.  I'll need to think through several game examples to make sure I come up with a decent system.  I imagine I would get some good ideas looking at MPF's configuration based rule sets.

 

yes ; and Good luck for your project :otvclap:


Edited by fripounet, 14 October 2015 - 04:06 PM.


#138 Brian Madden

Brian Madden

    Neophyte

  • Members
  • Pip
  • 7 posts
  • Location:San Francisco

  • Flag: United States of America

  • Favorite Pinball: Road Show

Posted 14 October 2015 - 04:17 PM

I'm on the plane heading to Chicago now, so here's a brain dump of everything I can think of that maybe you wouldn't think of being newer to the pinball community? Apologies if this shouldn't be in this thread or if I offend with basic things you already know...

 

For non-standard devices like motors, spinning disks, score reels, moving arms, etc., they are all a bit different but your general assumption is correct.. they're all just combinations of drivers and switches. (At least that's how the are in commerical machines. Home-brew tend to use more steppers and servos... more on that in a bit.)

 

So the spinning disks are a driver output. Enable that driver, motor is running (with gears in Whirlwind so there are three counter-rotating disks from one driver output). Disable the driver, motor stops. (The disks in whirlwind also have a sand paper like surface, so it would be cool to be able to apply a custom grip property to them.) Many things with motors also have limits switches or positional switches that are just like regular switches, so the logic of knowing the motor position is handled in the game code. Your software just has to know the mechanics of how things move when drivers are turned on and which switches activate in which positions.

 

For motors that move in two directions, they typically use two drivers. Usually one turns the motor on/off, and one sets the rotation direction (e.g. enabled for cw, disabled for ccw) To fully emulate the hardware for these "toys" in the machines, Pinball Labs would need to have some kind of way to specify what movement happens when a driver is enabled or disabled, and what switches would change states depending on where the motor is.

 

The same is true for magnets which are just drivers. Your software would have to know when the magnet is on and then affect the ball attraction to it. Also many machines rapidly "pulse" the magnets (via pwm) for less than full strength, so you'd want to watch for that and affect the magnetic pull accordingly.

 

Newer pinball hardware (like the FAST and P-ROC stuff) also supports stepper motors and servos. Those aren't too complex. A stepper is just a single pulse which represents some fraction of a degree of angle change of the shaft. So your software would need to have an option for how many steps (pulses) per single rotation (400, 800, 1600, etc.) and then it just looks for the pulses and rotates the shaft. These pulses happen fast.. less than 1ms each in some cases. Steppers don't know where they are at any given time, so they usually have home switches which work just like any other pinball switch.

 

Servos are similar except they (usually) have a fixed angle range (like 180 degrees) and they use pwm to control what absolute position the the shaft is in. For example, 0 = full left, 100% = full right, etc.

 

Some older pinball hardware (early 90s and before) uses drivers to enable the "quick response" devices. So there might be a single driver output that, when enabled, makes the flippers, slings, and pop bumpers work (and then they respond on their own), and when it's off, the devices don't work. That should be pretty straigtforward to implement though.

 

Some machines use drivers to activate lights or LEDs which flash in a pattern. For example, in Road Show there are "bridge out" signs above the ramps which have alternating LEDs that flash. So the hardware interface is just a driver enable, and then there's a wig-way board (a physical piece of hardware!) that alternately flashes the LEDs as long as that driver is enabled.

 

For switches, be sure you can support normally open and normally closed, as optos in pinball machines (which are often used for trough switches and ramps and other hard-to-reach places) are "reversed," in that they are closed when a ball is not there and they open when the ball is there.

 

Also some switches are proximity switches or hall effect sensors.. the inlanes/outlanes in Williiams Star Trek, the dozer blade in Road show, so you'd want to have some kind of "switch" that is basically where in your game designer you draw a shape in 3D space and say "when the ball is here, this switch is active," (or when the ball is not here).

 

Some switches are activated when coils or drivers operate. Like in System 11 machines, there's an A-side/C-side select driver which also activates a switch when the driver is active, so it would be cool to be able to tie a switch to a driver. Also some older machines fire the pop bumpers via a switch which is hard-wiring to the coil.. so that is not software controlled, but then the shaft of the solenoid hits a second switch and that's how the machine knows that the pop bumper was hit. (System 11 machines have some other complexities with the A-side/C-side select drivers that you'll have to handle, but we can discuss those details later.

 

For GI, there are also many different ways those work. Some are regular drivers and some are special GI drivers. Some are dimmable and some are not. But again, that should all be pretty straightforward from your standpoint. It's essentially lots of lights connected to a single driver.

 

There are many cases where multiple physical lights (both lamp matrix lights and LEDs) are connected to a single output line, so you'd want to be able to support that.

 

Flashers in pinball machines are controlled like drivers (coils), rather than lights, so make sure you can attach "lights" in Pinball Labs to either driver inputs or lamp inputs.

 

The only thing to add from the standpoint of an API integration with MPF (or Pyprocgame, PyProcgameHD, etc.) is support for those hardware trigger "rules" I mentioned in my other super long post. I will put together a more detailed spec (after Expo), but essentially you just need to be able to have your code handle simple rules that the API writes, like "when switch X is hit, pulse driver Y for Z ms." Then you handle the pulsing of the driver when that happens instead of the controlling software (though you also still report the switch event back to the API so it can do scoring or effects or whatever.)

 

For score reels, yep, they're just regular drivers attached to solenoids (well, the old EM ones are). One pulse = one position advancement, and there are switches that let the machine know which position it's in. (Not all positions have switches.) New score reels (like in Whoa Nellie) are stepper motors with home switches.

 

For a classic single color DMDs, there were 1-bit (2 color, on/off), 2-bit (4-shade, most Williams/Bally/WPC games), and 4-bit (16 shades, modern Stern). Most of the displays were/are 128x32, but there were some odd sizes here and there (128x16, 128x64, etc.). So you should let the designer specify the size of the DMD, the number of dots, the number of shades, the bright color, the "off" color, etc. Then the API should accept a byte array (or something similar) with 1 byte per dot. So a 128x32 DMD = 4096 dots = 4096 bytes. So the API could receive a 4096-byte array, and the low bits of each byte control the brightness of the pixel, and each time it receives a new array then it updates the screen.

 

In the original WPC ROMs, the brightness of the dots was controlled via two separate "bit planes".. One was shown 1/3 of the time and one was shown 2/3 of the time, so if a pixel was "on" in both planes it was 100% brightness. If it was on in just one plane it was either 66% or 33% brightness, and if it was off in both then it was off. I don't know anything about how PinMAME works, but if it's using the oringal ROMs then that bit plane splitting logic has to exist somewhere. (But maybe PinMAME handles that and can just send you a single byte per pixel like MPF or Pyprocgame.) Modern Stern machines with 16 shades us the bit plane as well, except they have 4 planes instead of 3.

 

Color DMDs are pretty much the same, except like I said they're 3 bytes per pixel. No existing machines support them built-in, so being able to receive 3 bytes per pixel should handle all situations.

 

Very modern machines like Wizard of Oz, The Big Lewbowski, The Hobbit, and MPF using our Unity 3D-based backbox option have full color LCDs in the backbox (operating at either 720p or 1080p). For virtual pinball cabs, the pinball controller software could just "own" the LCD window in the backbox. For VR, I dunno.. maybe there's some way to accept a video stream or something from the pinball software to show those displays? That is probably also something you don't have to worry about for now.

 

For the ultimate realism, it would be cool to track the x/y position of the ball at all times and then show playfield wear over time. And rubbers things wear out and break too. ...I'm kidding about this, though it would be a kind of crazy and/or fun thing to try. But not in v1. :)

 

Finally, for the next trivia answer, the "Why is the CPU board called an MPU in pinball machines?" is a good question. It stands for "Microprocessor Unit", and it comes from the late 70s when Bally started experimenting with electronic control instead of EM. In those days, a microprocessor was a new concept and I don't think the term "CPU" was invented yet, so the board that contained it was called an MPU. (This is also what Williams and Gottlieb called theirs in the early days too.) What's kind of funny about this is that the "official" term died off a long time ago. By the System 11 days (late 80s), Williams started referring to that board as the "CPU board" (which is what you'd think it'd be called today), but the pinball community was used to calling them "MPU" and that name just sort of stuck even though it hasn't officially been used in 30 years. :)


Mission Pinball Framework

missionpinball.com


#139 lodger

lodger

    Board Certified Funk Master

  • Members
  • PipPipPipPip
  • 993 posts
  • Location:Altoona Pennsylvania

  • Flag: United States of America

  • Favorite Pinball: Whirlwind, TAF

Contributor

Posted 14 October 2015 - 09:16 PM

Amazing to see the people who are gathering on this. It would be awesome to be able to generalize code over to a p-roc system... so far I havent had the time or energy to invest in learning python to use the system chapas was mentioning

 

A few big considerations that would readily turn people on to something developed

 

Ease of installation- Vp takes a lot of skill to go from fresh install to having cab software working well with backglass, etc. Features via external plugins also can cause a bit of hassle as well...if you are an original table designer, backglass, dmd, dof, etc are all managed by separate external drivers...that you can't always count on everyone to have

Good tutorials to support- A lot of people with vp learn through trial and error, asking questions, and old fashioned stubbornness. I'd suspect there are a ton of would be designers who quit after their early efforts dont work. With VP, there are tutorials out there, but they are pretty sporadic. A good system of tutorials (not just technical documentation of calls but guides on how to accomplish event-level tasks) would go a long way.

Compatibility with existing skill sets where possible- Right now, the primary platform for virtual pinball is Visual Pinball. To code tables, people have spent a TON of hours learning vbscript. Granted people can always pick up a new language, but having some level of compatibility with vbscript would allow for people to adopt new software more readily. Studying people's workflow in VP could help clarify what is going right/well in that software and clarify user expectations about pinball design platforms.


berzerk2_0logo.png

http://www.vpforums....&showfile=11819

Version 2.0- Released 2/27/16


#140 Ben Logan

Ben Logan

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 2,275 posts
  • Location:California

  • Flag: ---------

  • Favorite Pinball: System 11

Posted 14 October 2015 - 10:36 PM

Brian and Mission Pinball,

Thanks for your epic posts. I read them in full. Exciting stuff. It's inspiring to see such energy, creativity, and ingenuity being invested in the nexus between real and virtual pinball worlds. Your love for the game (and for programming) really shines through.

I wonder if you've heard about a related project (in the sense of bridging virtual pinball to some of real pinball's hardware components like LEDs, toys, shakers, motors, etc). It's called DOF or Direct Output Framework. Lots of us here at VP use it and love it. I'm not at all suggesting your project is redundant. On the contrary - it's really exciting and intriguing, and promises many new possibilities to be sure. I only mention it because I think you'll find it highly interesting.

Here's a link to the DOF site. Brilliant, creative, generous folks like you are behind this project, as you'll no doubt sense just clicking through a few pages:

http://directoutput....tput/index.html

Last thing: Thanks for clearing up the Fish Tales "extra light" under the apron mystery. Awesome piece of pinball lore!

:D

Edited by Ben Logan, 14 October 2015 - 10:51 PM.