Log In  


Cart #kefen_picoattack_1_0_1-0 | 2025-03-10 | Code ▽ | Embed ▽ | No License
2

After way, way too many months I'm finally mostly finished with that little throwback to Astro Attack on Amstrad CPC.

It's pretty short and there is no music, but it was an incredible exercise in game design and I learned a ton of things. Games be hard!

(Edit: uploaded the proper, non-test version. You'd think that's the first thing I would have tested. Could have sworn I had. x_x)

2


PRETTY short? Yeah, I'd say 15 seconds definitely counts :D

I love a Targ/Spectar, though, so will go check out the CPC game, never heard of it.


I know, right? XD

For the time it took to develop, it could definitely be a little longer. I might add a few more levels in version 1.1, I read that the original game had, like, forty levels, this one only got 12.


Did you accidentally make us start at level 12? :) Cool game


1

... I want to say I had trouble with the upload process, but surely, surely I would have tested that cartridge. My line of defense is that I did test it... probably in a wrong tab.

Erm. Terribly sorry. Thank you for giving the game a try!


Amsoft is back !

You could have use line statements and delays in the title screen to show it was written in basic :p

It's overall pretty close to the original.
In this one, you are limited to 4 bullets instead of one. That's actually a very nice change; not too OP, but way less frustrating.
Enemies still go through each-other and move at random, as in the original. (anyone remember Alien Force, included with windows 3.0 ? Very similar in presentation, but so much better in game play. Mostly forgotten because that game came out 10 years too late)
Enemies can do a U-turn when hitting a corner of the map. That's more randomness added compared to the original, not great.
Pixels of the score area are too square, use "\^w" for proper mode 0 distortion :_p
You can still get instant zapped by a wall appearing on top of you. While it definitely is the main reason I still remember that game, and arguably a signature move of the 80s to increase time to game completion, that feature really didn't need to stay.
Anyway, thanks for the little trip down memory lane.

Lastly, there's a few bugs related to death and level end :
when shooting the last enemy and crashing into it, you start the death animation, your life meter starts the death animation, but go to next level and don't lose a life in the end.
When you crash into the last ennemy of a level on your last life, you get to 0 lives left but can still play the next level. You can even crash into the last ship of that level and keep play.
These little quirks actually make the game better, I feel, but it's your game.
Maybe turn them into features instead of just removing the bugs ?

I may misremember, but I think you get extra lives ever 10000 or 100000 point in the original. Did you implement that in this one ?


Thanks for the feedback!

Some of the points you raise are indeed things I meant as features -- though I might slightly reduce the number of bullets to, like, two, in a future update. I also made it so early enemies die too when you collide with them. Possibly because the fact they didn't in the original game felt terribly unfair to kid-me.

In the end, pico-attack was meant more as a homage than an actual port. For one thing, the pico8 palette isn't close enough to the Amstrad CPC's to my taste, and I don't miss mode 0 all that much. :P

I know there are still some bugs left, unfortunately. Most notably:

  • Barriers can spawn on top of the player. I don't know if that was the case in the original but I doubt it and they really shouldn't anyway. I'll definitely fix it someday.
  • Weird stuff happens if you clear a level while dying. It used to be worse (like, the bullets wouldn't despawn).
  • While I have some safeguards in place, there is currently zero guarantee the randomly generated walls won't softlock the game by trapping an enemy or the player. I have a way to fix it. I'm not looking forward to writing it in Lua. :P

I did implement extra lives when you reach certain scores, but I couldn't remember what the values in the original game were, and went with some arbitrary values (20000, 40000, a few more) that will totally need some balancing. Which will be needed when and if I add more levels anyway -- it's amazing how fast you can max out a score when you only have 16-bits to work with and are too lazy to code around that limitation just yet.


  • barriers do spawn on the player/just in front of the player in the original.
    According to the cassette sleeve, there are 30 or 40 levels in total, I don't remember the exact number, and I rage-quit the game after reaching two levels before the last with just one life lost due to skill, and all the others due to cheap laser wall snipe.
  • flood fill is not that bad, you have plenty of CPU, so a simple iterative full scan of the grid until no new marking is possible, followed by a last scan to check if every tile has been reached shouldn't be to hard if you don't want to deal with stack or recursion. I can help if you want.
  • for the scores, there are plenty of token efficient ways to deal with it, but if you have 700 unused tokens left, I'd recommend just using a long integer library for the scores and call it a day:
    https://www.lexaloffle.com/bbs/?tid=145409

Ah cool! Thanks for confirming the barrier behavior on the original. I never finished it as a kid.

And yes, my solution for the walls thing is using a flood fill, checking unreached tiles and removing a wall from them before checking again. I'll probably get around to implementing it someday.

And thanks for the link, I'll definitely check it out! For now, I just divided all the scores by 10 and slapped a static "0" in the UI. I can probably add one more.



[Please log in to post a comment]