Terra Nova Pinball
Ricochet around an alien world in this Pico-8 pinball table.
Basic Gameplay
Launch the ball onto the table using ⬆️/⬇️ to control the launch power and 🅾️/❎ to release the ball.
Use the flippers (⬅️/➡️ by default, can be configured in the menu) to keep the ball from draining out the bottom of the table, hitting targets and bumpers and completing minigames (see below) to score points.
You have 3 balls to score as many points as you can, and record a new highscore!
If the ball drains within 15s of launching, you get a free relaunch.
Highscores are saved on the cart and can be viewed from the main menu.
Table Layout
Skillshot
Launch the ball so it hits the skillshot to score 250,000 points! Can only be got straight after launching the ball.
Outer Lanes
If your ball goes down the outer lane, it'll be kicked back up onto the field - the first time. After this, the lane closes and any balls that go down them will drain out of the bottom.
These lanes reset after the ball drains, or if you light all of the targets in the associated group (the leftmost 3 for the left lane, and the rightmost 2 for the right lane).
Minigames
Completing the following minigames can help score big points - and achieve ORBIT...
Slingshot
Shoot the ball around the top, lighting up the spinner and landing in the left kick-out hole to score a Slingshot!
This scores 50,000 points and lights up the letter 'O' in ORBIT.
Shifting Constellation
Passing the ball through one of the gaps at the top of the table will trigger the associated rollover and light one of the stars in this constellation.
If you light all 5, you'll increase the multiplier, applying a 2x, 3x or even 4x bonus to all points you score. You'll also light the 'B' in ORBIT.
To help you light them all, you can shift which stars are lit left and right using the flipper controls.
Mapping the Solar System
Bounce the ball off of the planet bumpers at the top of the table to collect data about the solar system - the bar to the right of them tracks your progress. If you can fill it up, you'll score 500,000 points and light up the letter 'I' in ORBIT.
However, beware of orbital drift - the progress bar will drain over time, so you'll need to keep hitting the planet bumpers to fill it up.
Refueling the Rocket
Each time the ball passes down over one of the rollovers in each of the lanes at the bottom of the board, the rocket will be partially refueled.
Trigger these 4 times to fill the rocket fuel gauge, and then land your ball in the kick-out hole at the base of the rocket to ignite Blast-off!!
This scores 243,000 points, unleashes 3 balls onto the board (which will be automatically replaced for 20 seconds!) and lights up the letter 'R' in ORBIT.
However, if you drain the ball, the gauge will empty. And if you ignite the engine before it's fully fueled, you'll just get partial points, with no multi-ball and no 'R'.
Calibrating the Lasers
Land the ball in the rightmost kick-out hole to start some target practice to calibrate the weapons systems.
The light in front of one of the targets will start to blink - you'll then have 30s to hit that target. Then another will light up, and you'll have another 30s. Hit five of these without the timer running out, and you'll score 500,000 points and light up the letter 'T' in ORBIT.
Landing the ball in the kick-out hole while the target practice is ongoing will reset the timer back to a full 30s, giving you a bit more time.
Achieving ORBIT
Light all 5 letters in ORBIT and you'll score 3,000,000 points and gain a bonus ball.
The letters will even reset - if you're skilled enough to light them all again.
Version History
V1.0.0 - 27/08/22
Initial release
V1.1.0 - 27/08/22
- FIX: Fixed an issue where the launcher would sometimes get stuck if released with 0 power.
- FEATURE: Additional paddle options optimised for mobile player.
V1.2.0 - 02/12/22
- FIX: Fixed a rare out-of-bounds error that could occur during multiball.
- FEATURE: Relaunching of the ball is now automatic.
GitHub Repository
The code is available in this GitHub repository.
While not as well organised as it maybe it should be (and littered with magic numbers as I tried to save tokens!), this is hopefully an easier way of looking through the code than reading the cart directly.
I also promise no particular wisdom, and am sure there are better ways to approach most/all of the problems here - I just learned a lot from others in the community generously sharing their work openly, so wanted to share in return.
Dang, this is SO GOOD! 🤩👌
Been fun watching the progress of this, but playing it is even better!
I proper cheered when the multi-ball happened! 🥳🙌
Great UX too, with nice touches like letting you change the controls 👍
Congrats on a great first game release 👏
Fantastic!!! So glad you put in on the BBS so I can check out the code. This certainly deserves to be considered a marquee game for Pico-8!
OK nicely done, @xietanu. I believe you have written the very first pinball game for Pico-8, and that in itself deserves a gold star !
Reminds me a lot of Apple ]['s "Midnight Magic" especially when the ball is high-action, it leaves a trail.
https://youtu.be/mSCVSuxJ0qE?t=21
As for music, here is a playlist of top Pinball background music. Select from the list to the right and below the playing video or select beneath the video to the LEFT the NEXT track button.
https://youtu.be/RMIp5nG-C3o?list=PLnxxN1XQReNSdZsQ9p2iwCbWehxd_Rqbs
The VICTORY pinball music has a nice beginning !
Also modern pinball machines will also do what is called a FREEZE ! REPLAY if in fact you earn very few points on a ball and it reaches the bottom.
So if you release the ball and it plays and suddenly shoots straight down the middle with no way to save it, then the message, "FREEZE!" appears followed by REPLAY and then you do not lose a ball but a new one is automatically shot into play.
You can have it where a ball is just not taken away but it's more fun to have the computer launch the ball automatically for a FREEZE REPLAY.
Only after the ball has been in play say for 3-seconds, then the REPLAY is removed and losing the ball - no matter how it is done is - losing the ball.
Thanks folks for the very kind comments. And thanks for the feedback @dw817 - I didn't do it the way you describe in an attempt to save tokens (as I was right against the limit), but I'll look again and see if I can squeeze it in in an update.
I got an error on line 1032 about trying to index a field that turned out to be a nil value.
Sigh. I was also unlucky enough to have that happen on my best run out of around 30 games.
@kimiyoribaka - ah, sorry, there must have been a bug that meant the ball went out of bounds in a way that isn't handled. Some others have found rare bugs with the collision system, so I'll be working on making this more reliable.
@xietanu
In case it helps, I'll mention that it happened while I was spamming the paddles wildly during multi-ball. Also, it's probably more realistic if the collision system isn't perfect, since rl pinball tables can screw up collisions too. I've several times seen real balls jump over the paddles cause of too much momentum.
Excellent - the level of detail is really impressive.
Gameplay is very good (lot of room to improve skills!)
Minor complaint: music is way too "chill", I would have expecting some a lot more rythmic!
Feature request: allow for ball trail deactivation (at 60fps, not sure this is necessary)
@freds72 - Thanks! Re: the music, fair enough, I originally went more that direction but music is definitely not something I have a lot of skill at, and wanted something that would fade into the background and not be annoyingly repetitive or interfere with the sounds of the table.
Regarding turning off the trail, yeap, that sounds doable, as long as I can find a few tokens. I'll add to the list of stuff I am looking at.
Finally a pinball game! This is a really fun addition! Can’t wait to load the cart onto my Miyoo later!
Feels quite "pinball" really, like one old classic table... wish you coud "bump" the table a bit (risking faults). The physics are quite good, but flippers could use some rubber friction to them. Great job
This is wonderful and long overdue in PICO8-Land. It has all the right feels of classic console pinball. I haven't looked at any of the code yet but I'm really looking forward to seeing what you (and others) can do with it to release more tables and themes and whatever. Nice thing about pinball is infinite variations :)
Plays great on my handheld too, so it'll be a regular during play time.
I am playing this game again, @xietanu. And I also noticed you cannot hold the ball.
That is you catch the ball in either the left or right flipper with the flipper up and the ball stays until you release and shoot it to a target.
This is a common practice with people who play pinball.
In your game however if you hold the ball, it gets quiet for a moment but then suddenly jumps free as if it's got a life of its own ! :)
This really is a nicely detailed pinball game. (I've played plenty in real life, and this game feels quite good.)
One potential, minor bug: usually in pinball, holding down a flipper button doesn't cause the lane lights to cycle. They'd only change with a flip rather than a catch and hold.
And I've got a rather noob-ish question about the github repo. Do you have some kind of makefile that combines all the separate files? I'm curious how you build the final cart. Is it just a question of concatenating all the files? (And does order matter?) I started poking through the code and I'm tempted to try to modify the playfield and make a different layout. While that's possible in the built-in editor, it seems like it would be better to do it with your repo and then build the final cart somehow.
Anyhow, thanks for bringing pinball to Pico-8!
@adcockm Thanks!
Regarding the cycling lights - this was unfortunately a limit of what I could achieve with the code given token limits. I'll add it to the list of things I'll see if I can improve if I can save some other space.
On the GitHub repo, if you save the main file with all the includes as a .p8.png, Pico-8 will automatically combine the included files together for you. It'll concatenate them in the order they are included for you. So generally, the order doesn't matter as they are all functions that are being called, but could matter in certain cases.
Let me know if you do anything with it, I'd be keen to see! I'm certain the code could also be improved a lot.
This is excellently done! Epic Pinball, but for Pico-8 ;)
I came back to this after not playing for a while and I somehow got this ridiculous run:
I lost track, but I think it was 4 or 5 times of getting all the letters. The "I" was usually last.
Very neat! I have now played this far too much.
A few bugs I've noticed:
- After an appropriate initial throw, the ball can become "stuck" at the flat spot on the top right of the gameboard. This is, I believe, a softlock, as I have waited at least 30 seconds on one such such ball without movement.
- During multiball mode, two balls can sometimes collide and "stick" to one another in midair. This resolved itself in the one place I encountered it, as a third ball collided with the first two and dislodged them all, but it may or may not have led to a softlock.
- I'm not sure how, but during multiball mode, I once got a ball locked in the O position, creating yet another softlock. Uniquely for this glitch, score continued to consistently accumulate at a rate of 1111 points every 2 seconds or so, which would mean an infinite score glitch if there were any way to die after maxing things out.
The last two are flukes that only happened once, but the first one is relatively common with the right launch.
Overall, really great game, and a joy to play!
I got the ball stuck there as well and it did time out eventually
Hard to play on mobile because the only right flipper mapping is the dpad.
It would be much better if you mapped the other action button to right flipper, so the game can be played two handed.
Cool vibes, though, cool project.
Love the game, but too easy, got the score to go offscreen. 2,317,045,232
In all essence, Im actually pretty bad at pinball i just found that if you clip your ball into the partial refuel station, which is right over here:
it gets stuck and can't move, and it gives you a point every frame. so I left it overnight to see if it will overflow, and it did not! I sadly interacted with the game and it stopped working and I am not able to recreate it.
Very polished game, well made. Its just that its hard to make a good collision system in Pico 8 that does not break. Damn you, Corners!
(btw how did you achieve storing large numbers without overflow?)
As a few have mentioned, needs separate left right flipper buttons for both hands. The d-pad only allows for one flipper at a time. Nice game!
Bro, can I just say. This is one of the most incredible feats ever displayed through Pico8.what you've done here is INCREDIBLE!!! I REALLY would love to see you make more of these tables so it's not just the one. Whether that's theiugh updating this cart to have multiple to choose from or just starting a whole new cart with a new theme and name. What you've done here is so amazing. Please continue and make more! You're a BEAST!
https://spectacularsingleton.itch.io/titan-nova-pinball
How are these games related?
@Airwalk16 - thanks, that's really kind. I don't know if it's one of the most incredible, I'm always blown away by what people have achieved with Pico-8, but I'm really happy you liked it. Life has been a bit busy but definitely hope to do more with Pico-8 again in future, it's super fun to develop for.
@Vospi - it looks like they've basically just filed off the serial numbers and uploaded their own copy. It's under a pretty open license, so it's legal, but kind of sucks. I'm all for people using my code and stuff as a jumping off point, that's why I made the code available, but this is not that. Like, if anyone wants to reuse 90% of the code to make their own table, they absolutely have my full blessing, that would be very cool to see. But this the lowest effort copy possible - changed I think one sprite and two strings in the code.
That's what I thought. That's unfortunate. There were big prizes announced for that pinball jam, and it sucks way more than just posing like that.
I guess open code can have its big downsides for sure.
Lemme redirect my admiration; I admire your work and would love to play this on my Anbernic (I only checked it out briefly). I second the request to have double-handed controls. I guess I could poke in the code and switch things around...
@Vospi - thanks for letting me know. I didn't realise it was submitted for a jam. I've let the organisers know about it and up to them what they want to do. I mostly feel bad for the developers who entered it honestly and lost out to someone doing basically a scam.
Regarding the controls, you should be able to switch these on the main menu? If you select controls on the main screen and hit left or right you can switch between a bunch of options for controlling the paddles, which should give you what you need?
Right! Thank you!
I hope you and the jam would sort it out, I'm happy to be helpful by almost a coincidence :) I was just googling for a cart. ;)
Do you have an itch profile yourself, so I could follow you?
Have a good one!
@Vospi - Yeap, the only thing in it is this game, but you can find it here: https://spaghettieisgames.itch.io/
Thanks again, you've been a big help, and hope you have a good one too.
[Please log in to post a comment]