abetusk 3 days ago

I've also made a space invader generator.

live version: https://abetusk.github.io/iao/vadfad_1gen/

source: https://github.com/abetusk/iao/tree/main/vadfad_1gen

Inspired by Jared Tarbell (linked from another comment here from levitated.net).

I found it surprisingly easy to get good results. The major components are the eyes, bilateral symmetry and otherwise random pixels within a small rectangle, if I remember correctly.

  • grues-dinner 2 days ago

    > Inspired by Jared Tarbell

    Such a huge part of my early dabbling with computers. A jewel of the early internet, along with the later http://complexification.net, though sadly most of the examples don't run any more due to both Flash (Levitated) and Java (Complexification) dying off.

    At least for Complexification, you can copy-paste the Processing .pde source to https://hello.processing.org/editor/#editor and see it run.

  • pavel_lishin 2 days ago

    They look very close to block-printed Chinese or Japanese characters to me, like something you'd find hanging off the side of a building, lit by fluorescent tubes. It looks very cool. I bet it would look even more like script if it weren't symmetric!

  • mickeyp 3 days ago

    Love the UI and random colour palette. Excellent work.

pachevjoseph 3 days ago

This is one of the best mobile experiences I’ve had reading an article.

  • ChrisKnott 3 days ago

    Yeah, what a tiny joy when it "picked up" the canvas as it went

    • stanko 3 days ago

      Thank you both, it means a lot. I try to make it clean, but fun and personal too.

      • BoostandEthanol 2 days ago

        Can say the effort you put in setting that up was worth it. Fantastic work in both making the generator and sharing it!

stevage 3 days ago

Wow, the results are really good: https://muffinman.io/invaders/

Much better than you'd expect from the article.

Also, TIL about [oklch](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value...).

  • stanko 3 days ago

    Thanks, when I started experimenting I was pleasantly surprised with results I was getting. After some polishing and adding UI I think it really came together nicely.

    As for OKLCH, it is a big upgrade. Working with color from code is hard, and it really makes things easier. I also like HSLuv [1], but unfortunately it is not supported natively in browsers.

    [1] https://www.hsluv.org/

    • stevage 2 days ago

      The uniform lightness looks nice, but it's a shame that the easily memorable hue values of HSL (0 = red, 120 = green, 240=blue) are lost.

balamatom 3 days ago

Nice, just the other day I coded up some quick 2d shooter demo and realized I have no idea how to draw interesting sprites for it. What you're doing here with drawing the generated vector onto different sizes of grid is brilliant. A sort of structured pulsation. Same simple technique can be used for both "breathing" animation of a critter and for animating it into bigger, badder forms. Bravo.

At this point (actually before even writing the comment) If your blog had a RSS feed I'd have subscribed to it... but (at least according to my RSS plugin) it doesn't, so I fear I will miss out on your next inspiring writeups. Consider adding one, if you feel like it :-)

https://muffinman.io/invaders/#/size:15/main-seed:began-ever... is a favorite so far

  • stanko 2 days ago

    Thank you! You can also think of the vector shapes as a kind of skeleton. I think that is one of the reasons it works well. Moving the limbs or increasing the size creates the illusion of movement and breathing. But it works well only while the grid is smaller and can hide the underlying shapes. Once the vectors start to emerge, it breaks the illusion. You could definitely improve it to work better at larger sizes, but I think you would need to introduce more constraints, which limits the random factor of the generator.

    If you end up using something similar in your game, I would love to see it!

    edit: It seems that I need to make the RSS link more prominent :)

scotty79 3 days ago

If you refresh the page the invader that gets generated as you read changes.

  • plasticeagle 2 days ago

    Stop it.

    Checks

    Oh my god. 11/10.

    • stanko 2 days ago

      Haha I love your comment. I'll let you in on a little secret - you can add a seed parameter to the URL to get a specific invader. It has to be an integer, otherwise it will be ignored.

      For example:

      https://muffinman.io/blog/invaders/?seed=1234

Martin_Silenus 3 days ago

Nice.

Ironically, this is much like saving the planet by creating invaders… the hacker way, without using brute force AI.

You deserve your upvote.

  • stanko 2 days ago

    Thanks! I think AI sucks all the fun from projects like this one. The whole magic of creation process is lost.

    • mft_ 2 days ago

      While you’re here, might/will you put rayven on GitHub? I’d be very interested to explore some of the algorithms you’ve used for (essentially) attractive vector hatching.

      • stanko 2 days ago

        I have a plan to do it, but it is one of those never ending projects. Hopefully I will finally release it this year.

    • Martin_Silenus 2 days ago

      Some say that we will disappear because of AI.

      They just hate coding.

plasticeagle 2 days ago

May I say that this website is one of the loveliest and most pleasant to read that I've ever seen.

  • stanko 2 days ago

    Thanks, it means a lot!

  • janfoeh 2 days ago

    I would like to second this — this is extremely well done, and a joy to play with.

    Top-notch work, all around!

aa-jv 2 days ago

Very interesting article, and quite fun for those of us with a penchant for 8-bit aesthetics and retro-computing roots.

One thing that came to mind while reading this, was: isn't this just a human digital manifestation of Mother Nature's desire to just evolve everything into a crab shape?

Think about the symmetry and function of various appendages of the space invader, and how - eventually, all space invaders just look like crabs.

Are we seeing some sort of confluence in the Matrix here?

agnishom 13 hours ago

I don't understand why you'd want pixelated art if you have non-pixelated art.

joemasilotti 3 days ago

This would be awesome as a random avatar generator!

  • Perz1val 2 days ago

    I'm reading hackernews on this app called glider that has almost that, just not exactly invaders

pjbk 2 days ago

Ahh... Brings me memories. Back in the 80s I did something similar after reading Dawkin's The Blind Watchmaker and his Biomorph evolution app. I wanted to recreate it but doing something more fun. So I hacked an Atari Logo space invaders game that used genetic programming on the invaders that survived most of the hits based on their shape (some pixels worked as shields) and motion. After 5 levels the game was almost impossible to beat.

Modified3019 3 days ago

The image/animation that sticks to the top, showing visually what is being talked about as we scroll is really nice work, and I typically hate fancy pages changes during scrolling.

albert_e 2 days ago

Well done.

Suggestion for extension --

During batch or sequential generation of multiple characters:

Mathematically constrain different characters to be dissimilar from each other.

This avoids different invaders from looking the same / indistinguishable / confusing to a human, by pure chance.

Biganon 2 days ago

Thank you for doing it the fun way, aka without AI

Waterluvian 3 days ago

I’m surprised and impressed that it built a vector that it rasterized.

I wonder how well you can do by having a pseudo-random kernel walk and then mirroring it.

  • lyr-7d1h 3 days ago

    This is basically what I did! A modified version of a random walk to generate "invaders" with a gradient color. You definitely get some interesting shapes.

    https://tinyurl.com/creagen-invader (best on desktop)

    Sorry for using an url minifier the original url is too long. I'm using a custom web editor I built for generating this. Still working on shorter urls for it.

    This and including muffinmans solution was part of a coding challenge for Creative Coding Amsterdam, for anyone interested and in the area definitely check it out https://cca.codes

    • stanko 2 days ago

      Very nice!

      I was thinking about using walkers, but after some doodling decided to go with vector shapes. I think the combination of the two could also produce some cool results.

      As lyr said, these are part of CCA's code challenge and we'll create a page to present all of the generators on one place.

      edit: typo

h4ny 3 days ago

What a delightful read. Thanks for all the thoughts put into the problem solving, the writing, and the presentation!

taeric 2 days ago

Really fun read. Love how it tracks where you are to do specific things in the drawing and I'm surprised I don't see this done more.

Clicking through to the rope page, it is a really good strategy for web pages.

mock-possum 2 days ago

This is a REALLY good writeup, I’m incredibly impressed not only with the work itself, but the care put into explaining and demonstrating it. Much respect to the muffin man.

appstorelottery 2 days ago

This is brilliant, your algorithm produces really great results - and your write-up is super! Would be great to have it as a simple function that we could use in our games ;-)

CodeWriter23 2 days ago

Heh, back in my day we used character sequences like >*< and <*> to animate and ran the whole game on an 80x24 ASCII terminal.

ygritte 3 days ago

A good space invader has to look badass and threatening. Extra points if it waves around its pincers in a grabbing motion.

forrestthewoods 3 days ago

This was awesome. And the floating preview thingy worked great. Major kudos!

FridayoLeary 3 days ago

It's interesting that space invaders was developed entirely by one person.

  • appstorelottery 2 days ago

    I've gone down that rabbit hole and written countless versions of space invaders. What's really cool to me is that - to get it right - the secret is moving only one invader in the pack every 1/60th of a second, this gives the pack movement the same feeling as the original. The genius of the original coder in creating this illusion never escapes me.

    • egypturnash 2 days ago

      This distinctive movement is a compromise with the limitations of a 2mhz 8080 with no video support hardware to speak of.

      Looking at a commented disassembly (https://www.computerarcheology.com/Arcade/SpaceInvaders/), there's so little time available that each frame redraws nothing more than the player, their shot, one of the 55 aliens, and one of the three alien shots. Four things. When every moving object has to be manually erased and redrawn within the space of one frame, you kinda have to stagger the movement.

      • appstorelottery 2 days ago

        Yes - this is where I learned of the technique!

        After 25 years of writing random space invaders clones - I finally achieved perfection after reading the Computer Archeology site, then I made my last clone and IMHO I'm finally happy to put this obsession down.

        https://datsuco.itch.io/video-invaders

lzyuan1006 3 days ago

Interesting, it takes a lot of imagination to do it