This page collects a few proposals for interfaces and protocols designed
to help virtual pin cab components work together more smoothly. They're
written in the style of technical specifications, since the aim is
to make them well-defined enough they'll behave consistently, so that
separate programs implementing them will work together smoothly.
But they're not the products of anything like a standards committee or
consortium; they're just informal proposals that document what I came
up with to deal with various interoperability issues that I encountered in
the course of my own projects. I'm sharing them in the hope that other
developers working at similar points of contact between projects will
find them useful enough to adopt, rather than inventing separate ad hoc
mechanisms that serve the same purpose. The goal is to make the various
components of the pin cab environment work more smoothly together, to
create a better playing experience for users.
- Open Pinball Device HID:
A custom HID interface designed specifically for the sensor inputs
from a virtual pin cab I/O controller (accelerometer, plunger, pushbuttons).
This is meant to serve as a better alternative to the joystick/gamepad input
interface that all I/O controllers up to now have used, and to eventually
replace it.
- Pin Cab Input Model Improvements:
A design for some new input data types that a pin cab I/O controller can send
to a simulator, to help improve the realism of the simulation, mostly related to
nudging and plunger tracking.
- PinSim::FrontEndControls:
A simple Windows inter-process communications protocol, based on a registered
(named) window message, designed to help front-end launcher programs better
coordinate UI actions with pinball simulators. The motivation was to address
some common rough edges that arise from the way Windows manages UI transitions
between separate processes, by giving the front ends and simulators a way to
directly communicate and thus coordinate their UI transitions.