Sci-Blam!
Play Sci-Blam!
With Eruption 2 having proved that GPT 5.5 doesn't struggle overmuch with canvas-based rendering and game pads Sci-Blam! pushes that further; this time we've got a twin-stick shooter with a variety of enemies, level progression, power-ups, sound effects, and music.
And that very normal and healthy looking man in the logo.
This project is another case where GPT 5.5 latched on to the right vibes pretty quickly and delivered some real gems. The tagline on the title screen is spectacular:
Twelve waves. Three armor plates. One stubborn trooper.
It definitely has a "written-by-AI" feel ("Three armor plates" is a strange way to morph "you can take three hits" into marketing speak) but it also carries a sci-fi b-movie self-aware silliness that I really enjoy.
I didn't specifically request that it do so, but it generated names for all the levels and they are pretty great too:
Drone drift Charged scouts Hot pursuit Shield weather Fast burn Heavy metal Swarm logic Needle dance Pressure spike Redline Last orbit Final blam
One of my favorite things that sometimes emerges from AI is these sorts of short, quippy bits of text that manage to be just right but also basically meaningless. What is "shield weather"; what does "fast burn" mean here? Who knows? โ but they sure do sound like the names of levels in a not-very-serious sci-fi game.
Initially I thought it had made a sort of off-by-one error with "Last orbit", since it sounds at first reading like the name of the final level, but the "one last go-around" idea before the "Final blam" is unexpectedly clever and satisfying (of course, it's hard to say if it was intentional).
A technical highlight for this session was the correct interpretation of the sprite sheet I used originally (I've since changed it to make sure no one can pilfer the full commercial sprite sheet I started with):
Sprite Sheet Prompt
Let's add some more detailed images. I've put a file called "Monsters_Scifi" in the "assets" directory. It is a sprite sheet with sprites sized 16px by 24px; each sprite has two frames of animation -- the second frame is one row below the first. Select some sprites from that sheet to use for the enemies in our game.
I really expected some issues with the frame-1-above-frame-2 arrangement of the sprites, but it didn't cause any problem at all. GPT also made the sensible (and unbidden) choice to select a few sprite indices for each enemy type rather than randomly choosing any sprite for any instance of any enemy.
The enemy variety also turned out well, I think, especially given how little iteration goes into these projects. We wound up with two versions of "grunts" that just bee-line towards the player and some ranged enemies that do a nice little dance to try and stay at a medium distance. Some of the grunts get shields that regenerate over time, and any of the enemy types can spawn occasionally as an elite with extra health and a bit more speed.
If you play the game you'll probably notice the sprites are different from the those in the video; originally I used the sci-fi sprites included in the delightfully retro Ultimate Roguelike pack from Oryx Design Labs but delivering content to a browser makes it a little too easy to right-click-save images and I didn't want to leak licensed content.
To replace the original sprites I turned to GPT Image 2. I was hoping to replicate the idea of the simple two-frame animations from the roguelike sprites but the results weren't quite what I needed; they looked nice enough and Image 2 did understand the general idea of the two-frame animations, but in many cases the frames differed by quite a bit โ to the point where it would have been awfully distracting to see the little creatures bouncing between the frames.
The very first attempt at a replacement sprite sheet.
The jellyfish, insectoid, and a few others are fine here, but the "cyborg agent" changes quite radically and the little screens popping up for the alien and priest would add quite a bit of visual noise.
I spent a good chunk of time experimenting with the animated sprites, but never landed on anything satisfactory, so I decided to settle for entirely static creatures. That came together fairly quickly:
Getting from the initial image above to the final sprite sheet was more of an adventure than I planned though; enough of an adventure that I think it merits a post all on its own. (Turns out that when you create images by de-noising noise you wind up with ... a noisy image.)
A hodge-podge of Photoshop filters, scaling, and hand-editing did ultimately get it to something usable:
By a significant margin those 16 little aliens were the most time consuming part of the entire project.
The code for Sci-Blam is available on GitHub.
The assets are not included, but the sprite sheet is available above and the sound effects were just cooked up by mashing the "Random" button in Bfxr.
At this point it will be no surprise that the logo image was generated with GPT Image 2 over on Leonardo.ai.
Discussion in the ATmosphere