A few months ago we were discussing among devs how a next-generation pinball simulator would look. We all love Visual Pinball, so it was clear from the beginning that it should plug into the existing ecosystem, rather than re-invent everything from scratch.
I wrote a protocol here. There's a summary at the bottom. You should probably go read it before continuing here, since it contains a lot of info.
So I couple of weeks ago I started with the data layer and with the help of @shaderbytes managed to convert the geometry, materials and textures into Unity's asset format. It's called Visual Pinball Engine, or VPE. All is entirely static and completely unplayable, but we thought that now would be a good moment to involve the community.
Because we can not only read VPX files, we can also write them. And I think table authors will like this, because it will allow you to edit your builds in real-time in a quite sophisticated editor:
As you can see, the editor knows what a flipper is. Unity's editor allows a wide range of customizations. For example, in the 3D view port, we could render the drag point handles of the splines when a rubber or ramp is selected, and make them editable directly in 3D.
The values you see in the inspector are all accessible and editable while running the game, which should be useful when tweaking physics parameters.
Then, importing models should be much more streamlined with Unity. You basically model your stuff in Blender (or whatever modelling tool you're comfortable with), save, switch to Unity, and it will automatically re-import your changes. This is a common workflow in game development.
So we think that this would be a big improvement for authors. But there's also a few things for players.
Firstly, Unity's High Definition Render Pipeline just became stable in the latest release. Here's a demo with me playing around with a flasher.
Remember this is a very naive conversion of Visual Pinball's materials. Authors will have a full PBR renderer at their disposal, allowing to tweak many parameters to make the materials look more realistic.
HDRP also comes with experimental ray tracing support. Here's a demo of me playing with ray traced real-time shadows:
Probably not something for day one, but still fun to play with.
Oh, and I didn't make a demo, but obviously Unity comes with VR support out of the box.
By now you're probably wondering how this is supposed to stay backwards-compatible with Visual Pinball. Well, it won't entirely. If you create or tweak materials with parameters that don't exist in VP, well, we can't port them back. But the goal is to piggyback the Unity-specific stuff in the .vpx file as separate data while keeping the properties that exist in both engines in sync.
So, to conclude: Table authors, if you have specific pain points you'd like us to address with the editor, let us know! If you have an opinion about a new scripting engine, let us know as well. While in order to keep backwards compatibility, VBScript will be supported, a big part of table scripts deal with limitations of VP, so we'd like to know which parts an engine could adopt, and if rewriting your scripts with a clean and smart API is an option for you at all.
Developers, if you want to contribute and are comfortable with C#, ping me, we have a Discord channel. These are our next tasks.
One important thing to mention: VPE is a library, and its core is game-engine agnostic. This means everything Unity-related is in a separate project, allowing other game engines like Godot to plug into the core the same way.
And last but not least, here's the repo:
Flippers are moving.
Quick test with VPM:
First port of VPX physics:
Gates, spinners and bumpers ported.
I've created a Wiki to collect screenshots in Unity. LINK
First MPF integration.
Edited by freezy, 05 April 2021 - 10:52 PM.