Ian Sundstrom
@ian-sundstrom.bsky.social
90 followers 110 following 81 posts
Made Stacks on Stacks (On Stacks) Lead Designer on games for BUCK like letsrevolution.com and Electric State: Kid Cosmo Indie stuff: herringbonegames.com he/him
Posts Media Videos Starter Packs
Reposted by Ian Sundstrom
sinksadventure.bsky.social
My new open world precision "batformer" Vampire's Best Friend is out now on Steam and itch with a 10% launch discount!

Vampire hunters are after a mischievous vampire girl, and it's up to her pet bat to save the day!
Reposted by Ian Sundstrom
mr0w3m.bsky.social
Sometimes you gotta just chase that random game idea...

What if you were a fly on a lake, how would you survive?
What if you had gnat friends?

#gamedev #indiegames
Reposted by Ian Sundstrom
gwillow.me
I'm going to keep saying "this is fascism" until this platform inevitably bans the word fascism, and then I'm going to leave
Reposted by Ian Sundstrom
ian-sundstrom.bsky.social
🔴, a #pico8 bounce shooter, is out now!
Play it in browser on itch: iansundstrom.itch.io/redcircle
Development fun facts itt 🧵
Reposted by Ian Sundstrom
ian-sundstrom.bsky.social
Going to release 🔴, a #pico-8 bounce shooter with mostly procedural animation and gfx, sometime this week!
ian-sundstrom.bsky.social
Thanks for playing and/or reading. Have a great day!
ian-sundstrom.bsky.social
Finally, the game has a 2-song soundtrack that whips thanks to @jadeneubanks.bsky.social. It was his first time using pico-8 and he absolutely crushed both the music and sound design of the game. Please consider hiring him for any of your audio needs: www.jadeneubanks.com
Jaden Eubanks | Video Game Audio
Jaden Eubanks is an audio producer who specializes in creating video game music, particularly 16bit music that sounds like it's from the SNES, GBA, or N64.
www.jadeneubanks.com
ian-sundstrom.bsky.social
The title screen was a chance to dust off my pixel art skills. This 32x32 shiny red circle is one of the few actual graphics in the game's sprite sheet. 😆
Game title screen with pixel art of a shiny red circle at top.
ian-sundstrom.bsky.social
The score system is also a bit goofy. It's constantly reducing each second, which rewards quick players. You also lose points each time you die! But defeating enemies, passing checkpoints, and clearing stages refills your points. Draining the score helps keep the number below pico-8's max memory.
ian-sundstrom.bsky.social
Instead of having UI, I added 🔴's tail to represent your hit points. This also gave the ball much more character and made the physics even more satisfying. It uses vector logic to simulate the tail's physics and is drawn using a series of enlarging circles.
ian-sundstrom.bsky.social
Every level ends with this completely over-the-top animation where the level you're in gets sucked up into a ball, bounces down, and then releases into the new level. I tried caching every pixel on the screen but ran up against pico-8's memory limits, opting for storing 4x4 macro pixels instead 🤣.
ian-sundstrom.bsky.social
This packing was so efficient that I actually had space for another 11 levels in the map memory (I only used 5). However, I just couldn't fit enough gameplay mechanics on the cart to justify that many different levels 😭
Image of the pico-8 map editor, showing 5 rows of level design and lots of empty space below.
ian-sundstrom.bsky.social
I built the levels in the map editor, designing them with simplified 8x8 white sprites that then get blown up in 32x32 pieces of level geometry at run time. Likewise, this is how I placed the enemies and obstacles using their icons. If you load up the cart in pico-8 you can build your own levels!
ian-sundstrom.bsky.social
Each level samples a row of colors in the game's sprite texture to determine the level's palette. This helped cut down on my symbol/token count since the data was stored in my sprite sheets rather than written out as tables in the code.
ian-sundstrom.bsky.social
The checkpoint flag is also neat. The triangle shape is cut out by converging towards a point. Then pixels that are chosen to be drawn are offset by a sin wave. The checkboard colors are chosen by some modulo logic, something like when ((x/5-y/5)%2==1) draw green and otherwise draw white
ian-sundstrom.bsky.social
Of the many procedural graphics of 🔴, the skylines are some of my favorites. The skylines of each level are drawn using different wave functions, like a combined triangle wave, etc. Having written it months ago, I don't really understand how this code works anymore, but it is cool!
Jagged lines that look like mountains Jagged lines that look like ice Boxy line that looks like a city skyline A code sample showing functions for drawing different waves
ian-sundstrom.bsky.social
An oddity of 🔴 is that it is best played on a keyboard, not a controller. The controls require you to constantly be pumping yourself up and down while also holding down left or right. You can't easily do this using an analog stick or d-pad, but it's pretty natural with a keyboard's arrow keys.
ian-sundstrom.bsky.social
The game had humble beginnings as a simple physics toy of a bouncing ball with lots of squash and stretch. Unfortunately, later the ball had to be made smaller to support all the gameplay; at this size it was extra satisfying to bounce.
ian-sundstrom.bsky.social
🔴, a #pico8 bounce shooter, is out now!
Play it in browser on itch: iansundstrom.itch.io/redcircle
Development fun facts itt 🧵
ian-sundstrom.bsky.social
Going to release 🔴, a #pico-8 bounce shooter with mostly procedural animation and gfx, sometime this week!
ian-sundstrom.bsky.social
I love tofu, but, by god, I hate the packaging it comes in.
Reposted by Ian Sundstrom
mixolumia.com
my highly scientific diagram. I think it's easier to get into the "snappy" quadrant with tools that encourage pixel art and make you do more work for tweens n things (gamemaker, pico-8). fluidity is difficult anywhere, but snappiness requires restraint when you have a bunch of tempting built-ins
Four quadrant graph, smoothness on the X and appeal on the Y

High appeal, high smoothness: fluid
High appeal, low smoothness: snappy
Low appeal, low smoothness: janky
Low appeal, high smoothness: floaty