Monday, June 09, 2025

A Tour of Blender (and Bits of Blender turns 17)


Seventeen years ago, Bits of Blender launched on YouTube, back when videos were 320x240 and could not exceed 10 minutes. That was long enough for me and my 9-year-old son, Richard, to share quick Blender tips.

Blender 2.4x had a reputation for being challenging, but we thought a 9-year-old using it might inspire others to get over that initial hump in learning it.

For our anniversary, we’re dropping a special Bit... a 45-minute guided tour of Blender 4.4 as we build an animation from scratch, visiting each of the workspaces.

Watch now and share your comments on the video or memories of our old Bits! #blender #blender3d

Side note, this 45-minute episode about Blender was also edited in Blender with its Video Sequence Editor (VSE)!

Saturday, May 31, 2025

Distribute Grease Pencil Strokes

I’m happy to share my first Blender Add-On! I couldn’t find a tool to evenly distribute grease pencil strokes in Blender or existing Add-Ons, so I built one myself. It’s simple but gets the job done! Check it out and let me know your thoughts.

#blender #blender3d

https://github.com/johnrnyquist/distribute_grease_pencil_strokes

Tuesday, March 04, 2025

Handling Gesture Recognizers and TouchesBegan in SpriteKit

Are you working on a SpriteKit game and trying to use both gesture recognizers and touchesBegan? I spent more time than I expected figuring this out. After asking AIs and not getting clear answers, I ended up checking the friendly manual myself.

Thought I’d write a quick blog post about it—maybe it’ll help someone else searching for this later.

The issue is that touchesBegan happens before the gesture recognizer. There’s an easy fix: set delaysTouchesBegan to true. Here’s an example:

override func didMove(to view: SKView) {
        let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handlePanFrom))
        panGestureRecognizer.delegate = self
        panGestureRecognizer.delaysTouchesBegan = true
        self.view!.addGestureRecognizer(panGestureRecognizer)
} 

Why was it tricky to find? I think it’s because SpriteKit doesn’t get much attention these days, so there’s not a lot of discussion about it online. Hopefully this saves you some time!

Tuesday, February 18, 2025

Swashteroids 2.6

Version 2.6 has a lot of new features:
  • New Phasing power-up! Temporarily nothing can touch you!
  • New Xray power-up! See what treasures are in which asteroids!
  • New button to trigger shields, enable them in your own time (or not).
  • Improved the TRAINING section.
  • Now using Apple SpriteKit’s physics engine to detect collisions.

Since my last Swashteroids blog post in Dec 2023, I've released many updates!

Version 2.6
Version 2.5
Version 2.4.2
Version 2.4.1
Version 2.4
Version 2.3
Version 2.2
Version 2.1.2
Version 2.1.1
Version 2.1
Version 2.0.1

Here's a video showing all the new power-ups (note: this is level 5)



Saturday, December 16, 2023

Swasteroids 2.0



I’ve released Swashteroids 2.0 to the App Store! A fun retro open-source game built on my open-source ECS framework Swash. 

All new user-interface and art. Play with or without buttons! Plasma torpedoes and hyperspace are now both power-ups, and they're moving! Game play mechanics have been tweaked, ie asteroids' base speeds increase per level. The game starts easier as well so you can warm up.

https://apps.apple.com/us/app/swashteroids/id6472061502

Monday, November 20, 2023



 I’ve released Swashteroids to the App Store! A fun retro open-source game built on my open-source ECS framework Swash.

https://apps.apple.com/us/app/swashteroids/id6472061502

Friday, November 17, 2023




Version 2.0 of my Near Mint iOS app is now live! This release has many new features and other improvements. This is an app that helps you organize your comic book collection. It is fast and native since 2017! 🤠

#comicbooks #ios