Rendered at 23:19:57 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
sysrpl 18 hours ago [-]
As the title says, I am working on a FOSS Linux Pinball Simulation Engine. It is based on my Pascal Tiny.Sim library which has been in github for many years. Tables are designed in parametric CAD (OnShape for now) and imported by my engine as 3D meshes. It simplifies many of the physics bodies into primitives and has options to configure how meshes are convert into a table. The logic for a table is written in Typescript. Users can also edit the table inside the game. The idea will be that users can use the engine to play and share pinball tables of their own designs. I am supporting Linux because I use Linux every day and it needs more support when it comes to playing good fun games.
If you want to help Linux and are an artist, I plan make the initial source code release with 3 different tables and a guide for how to create your own pinball tables. I am looking for artwork to help with table artwork. My contact information is on the page linked to this submission.
zokier 14 hours ago [-]
How are you doing physics here, what is the physics engine based on? I checked Tiny.Sim on github and it said that it's has just 2d physics?
Thinking of it, pinball makes for a pretty good demo for physics engines
sysrpl 12 hours ago [-]
I was writing my own 3D egnine at the start of the year. I eventually gave up and switch to Jolt in August.
V__ 12 hours ago [-]
If you are already using Jolt, have you thought about switching to Godot to make it cross-platform?
sysrpl 10 hours ago [-]
I started with Godot, and swtich back to Pascal. It will be and is cross platform, but I am focusing on Linux, because that is what I use.
With regards to Godot, while I like it, when using my own engine I can take a lot of shortcusts that Godot cannot. For example, I am able to save a lot of computational logic on reflections by making the requirements that reflections only world on right angled surfaces, which is fine for a pinball table. Also, I am able to cheap out with lighting using a my ouwn techniques for generating lighting maps in a shader, something that is hard to pull off with Godot.
This other game project of mine is written using Godot and C#:
That looks awesome! I was just thinking about Marble Madness earlier this week and wondering if there were spiritual successors.
nuancebydefault 4 hours ago [-]
I remember the background music from MM, its the one in the video.
berkes 13 hours ago [-]
I'd imagine that pinball is essentially 2D. Maybe some lanes and ramps would affect gravity, but I can imagine the few Z-direction adjustments aren't worth simulating everything in 3D.
mrob 10 hours ago [-]
The ball often jumps off the playfield in real pinball. It's not uncommon for it to jump high enough to hit the glass. You'll never get an accurate simulation if you simulate it in 2D.
tstenner 12 hours ago [-]
When you already have accelerator fields (pretty likely for a pinball simulator) you can reuse them for ramps
gilrain 10 hours ago [-]
> I'd imagine that pinball is essentially 2D.
Why? It's a 3D object careening around a 3D environment. I'm struggling to imagine how you could imagine this.
EvanAnderson 3 hours ago [-]
I can see how somebody could have this conception.
I grew up playing only video game pinball. It wasn't until I was living in a more urban area in my late teens / early twenties that I actually played on real pinball tables. Until I played real tables I don't think I understood the physicality of the game.
NetOpWibby 7 hours ago [-]
This is incredible, thank you for this.
malbs 15 hours ago [-]
I love pinball, personally terrible at it, I always thought a some luck came into play depending on where the ball was dropping/heading, until I watched someone actually good at pinball play.
He showed me there is a fine art in bumping the machine subtly enough to move the balls line so you can stop it from going straight down the middle or into one of the dead lanes... but not so much to trigger the sensors to shut the machine down.
Watching him play pinball blew my mind. I've never been able to do what he could do, but it's definitely an art form...
So, can you implement machine bumping? :-)
MegaDeKay 9 hours ago [-]
If you have an interest in virtual pinball, grab the latest release build of Visual Pinball [0]. Nudging is fully implemented (keyboard, gamepad, actual accelerometer boards you can mount in a cabinet, etc) and the overall physics have been substantially updated recently. The current development version runs on Windows / Mac / Linux / iOS / Android / VR Headsets, etc. And there are thousands of tables available from recreations of real machines to original creations [2]. It is all free and open source.
I would even argue that without bumping and the threat of tilting the table it is not really a pinball simulation, but merely some kind of pinball looking video game.
foo12bar 12 hours ago [-]
A pinball sim running on a phone or a tablet would be perfect for this, because of the inbuilt accelerometer.
MegaDeKay 9 hours ago [-]
Visual Pinball runs on phones and tablets (and extremely well in fact) but I think the inbuilt accelerometer is not implemented. That's because during play you can't really separate movements while playing from intentional nudging very well. There are other mechanisms built into the mobile version for nudging, like tap zones.
I can only applaud more options for pinball games in the FLOSS world. Thanks!
panki27 13 hours ago [-]
Make sure to also check out Visual Pinball, the community has built tons of tables for that.
sysrpl 12 hours ago [-]
Yes, I am aware of Visual Pinball. This is meant as a pinball simulation system for Linux, using a Javascript engine and not VB Script. Also, it will support running on Linux using dmks, so on PCs without a display server.
Tade0 13 hours ago [-]
I'm interested in knowing how the physics are realized here.
I've been working on a golf game to play with my friends and the first hurdle I had to go through was the fact that you can't just slap an off-the-shelf physics engine on it and call it a day, because over certain velocities the ball will tunnel through the walls.
sysrpl 12 hours ago [-]
I started writing my own physics system a while back, and in January of this year started working on some tests befre realziing I was never going to get acceptable phyics on my own. In August I started using Jolt and it seems to work. So to answer your question, I am using Jolt for the physics now.
MegaDeKay 9 hours ago [-]
You might be interested in checking out how Visual Pinball does it. The changelong [0] for the current development version discusses all the latest physics updates since the last release and it is very comprehensive. The code is open source so you can dive into the code for it to see how it's done.
Tons of physics engines (including jolt mentioned by op) have some variation of continuous collision detection that should prevent such tunneling effects. At this point it seems more rare to not have CCD at all.
koonsolo 8 hours ago [-]
I remember back in the day, that pinball physics were extremely hard to write.
The main issue was "bouncy ball" physics. At certain angles, balls should roll along the edge and continue to touch that edge. In other cases, the ball bounces of the edge. It's very hard to get both use-cases right. Anyway, you cannot seem to get it right without taking the ball spin into account.
Some things seems very simple but are actually very hard. Pinball physics is one of them. The other I know of is time, super complex!
joezydeco 7 hours ago [-]
IAAPA is a theme park trade show. I'm not sure that venue is going to be worth the travel and effort for you. I'd say Pinball Expo, Midwest Gaming Classic, or PAX would help you more.
flossly 15 hours ago [-]
good. we need some quality games that are not on Steam to show to new linux users.
MsPinBall was very good at that for windows.
MegaDeKay 9 hours ago [-]
Check out Visual Pinball [0]. Not on Steam. Thousands of tables. Cross platform and runs on everything from phones to purpose built cabinets. Very advanced physics. Free and open source. It's fantastic.
The video demo looks great, the physics seem really close to a real pinball machine. I have a digital pinball machine at home, I hope this will support dual-screen machines!
sysrpl 10 hours ago [-]
Yes, it will eventually support dual screen, that is the playfield and the backglass. Today I will be working writing DMD screens using typescript, and I happen to prefer DMD over the newer LCD screens on modern tables.
larodi 14 hours ago [-]
Make it work with dualshock controllers, so that everyone can benefit from force feedback.
sysrpl 12 hours ago [-]
I will look into adding haptics. Thanks for the feedback.
boredhedgehog 13 hours ago [-]
Is it compatible with Visual Pinball? Because that's where all the tables are.
sysrpl 12 hours ago [-]
When I get close to my initial source release I will look into what it takes to port tables from VPX to my engine. Right now I am purposefully not exploring that because I want an unclouded fresh start for pinball simulation.
Toynbeeidea 16 hours ago [-]
Does it pull or use anything from vPinMAME?
sysrpl 12 hours ago [-]
No, but it will support PinMAME fully. For copyright reasons, I wll not however be developing both the engine, and recreating actual tables. That would be a bit too far from my legal perspective. I will leave it to other who want to do that.
If you want to help Linux and are an artist, I plan make the initial source code release with 3 different tables and a guide for how to create your own pinball tables. I am looking for artwork to help with table artwork. My contact information is on the page linked to this submission.
Thinking of it, pinball makes for a pretty good demo for physics engines
With regards to Godot, while I like it, when using my own engine I can take a lot of shortcusts that Godot cannot. For example, I am able to save a lot of computational logic on reflections by making the requirements that reflections only world on right angled surfaces, which is fine for a pinball table. Also, I am able to cheap out with lighting using a my ouwn techniques for generating lighting maps in a shader, something that is hard to pull off with Godot.
This other game project of mine is written using Godot and C#:
https://www.orbliterate.com
That looks awesome! I was just thinking about Marble Madness earlier this week and wondering if there were spiritual successors.
Why? It's a 3D object careening around a 3D environment. I'm struggling to imagine how you could imagine this.
I grew up playing only video game pinball. It wasn't until I was living in a more urban area in my late teens / early twenties that I actually played on real pinball tables. Until I played real tables I don't think I understood the physicality of the game.
He showed me there is a fine art in bumping the machine subtly enough to move the balls line so you can stop it from going straight down the middle or into one of the dead lanes... but not so much to trigger the sensors to shut the machine down.
Watching him play pinball blew my mind. I've never been able to do what he could do, but it's definitely an art form...
So, can you implement machine bumping? :-)
[0] https://github.com/vpinball/vpinball
[1] https://github.com/vpinball/vpinball/commit/faedd951e77ad163...
[2] https://virtualpinballspreadsheet.github.io/
I can only applaud more options for pinball games in the FLOSS world. Thanks!
I've been working on a golf game to play with my friends and the first hurdle I had to go through was the fact that you can't just slap an off-the-shelf physics engine on it and call it a day, because over certain velocities the ball will tunnel through the walls.
[0] https://github.com/vpinball/vpinball/blob/master/docs/Change...
The main issue was "bouncy ball" physics. At certain angles, balls should roll along the edge and continue to touch that edge. In other cases, the ball bounces of the edge. It's very hard to get both use-cases right. Anyway, you cannot seem to get it right without taking the ball spin into account.
Some things seems very simple but are actually very hard. Pinball physics is one of them. The other I know of is time, super complex!
MsPinBall was very good at that for windows.
[0] https://github.com/vpinball/vpinball