Save Picoville
To learn Pico 8 I recreated (in broad strokes) one of my favorite Commodore 64 games, Save New York. My first playable version took about 10 days of work, then a few weeks of tightening things up.
![](/media/83579/savepicoville-110-01.gif)
I'm loving Pico 8 so far. I've been trying to get some momentum on making a game for years, and Pico 8 is making it fun. It reminds me of programming as a kid on C=64 and Amiga. Constraints ftw.
I find it hilarious that the original game has much better crumbling building animations. I tried several attempts at matching it, but ended up returning to my initial method, using a simple sprite cycle + a few random particles. I eventually caved in and added screen shake which helps a bit.
Extra life every 1000 points.
Controls: move around, shoot! (either button works)
![](/media/83579/savepicoville-110-05.gif)
Changelog
v1.13
- fix collision check when bullets hit mutants on a building, giving preference to the mutant
v1.12
- increase difficulty ramp (matches original game, need to kill 10+16*(level-1) enemies per level, so 10, 26, 42, 58, etc)
v1.10
- added one-off gfx for custom title and about page bg
- added smoke behind plane (the code for this is hilariously bad)
- about page with points table
- new (temporary?) theme music
v1.04
- randomized supply plane position to avoid cheat spots
- persistent hi-score
v1.03
- improve player hitbox to be more lenient
- many bug fixes
v1.02
- extra life every 1000 pts
- stagger enemy animations, tweak frequency
- new sfx
v1.01
- fix train hitbox
- 2D-man now understands left + right
- much improved bullet collisions
v1.00
- initial playable version
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/2185/Invader.png)
Welcome to Pico-8 and what a charming game you've created. I've never heard of the original C64 game so can't compare what you've done here with that, but this is great. The game is playable and fun. I love the little touches: You can cause lots of destruction to your own buildings :) The flickering lights in the windows. The train going past. The pointlessness of having to get in and out of the plane at the beginning.
Oh no, I was wrong! As I was typing this I saw the animated gif you provided and see that it is necessary to sometimes get out of the plane to shoot the ground based aliens. This is very nice. One minor point, I can walk off the bottom of the screen to avoid the train entirely. Was this intentional?
Regardless, its a fun game and I throughly enjoyed seeing the city crumble as I did my best trying to shoot aliens, but ending up mostly blasting the buildings myself.
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/14590/2_2bitchuck.png)
Haha, my school computer lab had Save New York for some reason. Of course, being 11 year old goofballs, we spent most of our time shooting each other and the buildings in the two player version, trying to more efficiently destroy the city ourselves :).
This is a great little demake! The only thing I recall being different is the subway tunnel system was pretty complex in the C64 version and made chasing the basement eating alien that came from the egg more frantic. I think there were maybe also multiple trains? Obviously you have a lot less vertical space in PICO-8 so there are choices to make, and the gameplay doesn't suffer at all from not having those things. Very nice job, this is quite fun!
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/83579/2_nate-grn2.png)
Thanks for the thoughtful feedback! Much appreciated.
@phil: D'oh! That's a funny bug being able to dip down to hide from the train. Will fix.
@2bitchuck: We totally did the same thing, wiping out the buildings. A big part of that was the very satisfying animation and sound:
![](/media/83579/saveny-building-crumble.gif)
And yeah, there was definitely a more complex subway in the original, but I don't remember ever using it much in play. At most you would pop down and try to shoot it at the top while avoiding the train which I hopefully managed to recreate.
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/14590/2_2bitchuck.png)
@natebeaty Yeah, I loved those games with the falling sand destruction animations. Don't know if you remember Scorched Earth, the DOS tank game from the early 90s, but watching the mountains collapse when the terrain gets blasted is still fun to watch (I still play this in DOSBox all the time!)
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/83579/2_nate-grn2.png)
I uploaded a 1.01 update with better bullets and collision detection, fixed a few bugs, and most importantly: made the man-sprite point the direction he's walking. I messed around with the building crumbling animation for several hours with no improvement, and realized I like my first stab better.
I've had several friends play it on my Miyoo Mini which is cool to see. It's more fun to play Pico 8 games on real hardware, even if it's super tiny.
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/83579/2_nate-grn2.png)
Updated with a bit more difficulty (now matches original game requiring 10 enemies to pass level 1, and 16 on each successive level), but added the ability to get an extra life every 1000 points.
I'm curious if other folks find it too easy. I can easily keep playing, especially now that you can get extra lives.
I also keep resisting the urge to add more complexity, like different alien types on higher levels, playable bonus stages, aliens shooting back in some way, etc. I'd rather keep it true to the original game in basic play design.
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/83579/2_nate-grn2.png)
Another small update, tightening up several aspects of gameplay and squashing a few bugs. The eggs now bounce off the buildings when falling, the player hitbox is more forgiving, and the random building generator is 3% smarter.
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/54967/2_wave_0.gif)
I was entirely unaware of this game on the C64. It seems I missed out! This was fun. Really nicely done.
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/81348/Screenshot 2023-11-01 at 2.33.45 PM.png)
I never came across the C64 version either but this is great -- the inertia and momentum of the plane is well-tuned in a way that makes control feel good. Nice job @natebeaty!
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/bimg/pi/pi11.png)
this is awesome!
i think you are missing some brackets in check_level()
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/83579/2_nate-grn2.png)
@sarampo Oh I see. Yeah, it's a sloppy conditional, though it actually works ok because enemieskilled
gets reset in level_finished()
. So on level 2 onwards, only the latter part of the conditional is used.
if (enemieskilled>=10 and level==1 or enemieskilled>=16) then level_finished() end |
Overall I see lots of refactoring possibilities now that I'm getting more knowledge of Lua and looking at other (smarter) devs' work.
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/83579/2_nate-grn2.png)
I didn't realize how easy persistent hi-score was to add, so I just pushed that up. My current best locally is 12230, but I'm sure that's easy to beat (oops, already beat it on the bbs cart at 14070). Though as you get up into higher levels, they start dropping a lot of hungry gremlins, which makes it pretty hard to keep them from destroying all the buildings.
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/66501/3_682398-B50.png)
Excellent results for a first pico8 cart ⭐
Another C64 remake, nice! 👌
About the implementation of check_level(), what about:
if enemieskilled>=(level==1 and 10 or 16) then --instead of: --if (enemieskilled>=10 and level==1 or enemieskilled>=16) then |
(it's how you use ternary in Lua)
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/83579/2_nate-grn2.png)
@Heracleum Aha, that's how you do ternary. I had seen mention of that somewhere, but it didn't stick. Thanks! Much more elegant, I'm sure I'll start using that often.
I'm still very much learning Lua but enjoying it so far. It's great you can look at other folks' source code to pick up on better ways to do things. Definitely finding lots of clever tricks and shorthand while parsing through your code. You've got some amazing carts!
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/66501/3_682398-B50.png)
Yeah hanging out in the main Discord is really helpful, especially for tricks and how to work around the limitations, tokens and various optimisations..
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/83579/2_nate-grn2.png)
I put enough finishing touches on this li'l game to switch to "releases" including custom title gfx, an about page, a more concerted effort at a theme song, and a satisfying smoke trail behind the plane.
Still seeing a few tiny bugs I'd like to fix. For one, I don't like that you can't shoot an enemy as he's chomping on a building. The bullet hits the building first, instead of giving preference to the enemy sprite.
I guess the way I'm handling buildings (as dynamic map tiles) is maybe weird, but it seemed like the most efficient way with my limited knowledge. It does make the collision detection a bit more challenging.
Any feedback on how to make it more fun and/or challenging is welcome. I hesitate to stray too far from the original, but I've already made several changes, so maybe more custom additions could be implemented as an easy/hard tier or similar.
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/83579/2_nate-grn2.png)
After watching some longplays of the original C=64 game, I realized I misread the old manual. "You have to kill 10 mutants to save New York in the first round. Add 16 more mutants for each higher level." Looking back, that seems pretty clear, but I had it at 10 enemies for first level, and just 16 to pass each level past that, which was way too easy.
New version makes you kill 26 on level 2, 42 on level 3, 58 on level 4, etc, which makes a lot more sense. Now the fuel supply balloons are actually useful, and it's a wee bit tougher to avoid the inevitable destruction of Picoville by twitching spacecrabs.
[Please log in to post a comment]