Zi
banner
majormcdoom.bsky.social
Zi
@majormcdoom.bsky.social
Indie VR dev / founder of @cozycubegames.bsky.social.
Making <<Penguin Festival>> in Godot. 🐧 Past: Owlchemy Labs. Proud husband and dog dad. The Andy Serkis of penguins.
- 🚫 generative AI
- 🚫 genocide
- ✊ trans rights
My Cozy Cube Godot addons are now officially updated to Godot 4.6! If you aren't updating, you can still get 4.5 on a separate, frozen branch.
codeberg.org/MajorMcDoom/...
#GodotEngine #gamedev #indiedev
January 27, 2026 at 8:25 PM
The VR player is constrained by their own physical body, while the NPCs are scripted to act normal. But the mouse-and-keyboard debug penguin doesn't abide by the rules of either reality. Anyway, here's infinite-crouch-jump-dual-fishing-super-dash.
#GodotEngine #gamedev #indiedev
January 26, 2026 at 6:20 PM
Aite. Cool, cool.
January 25, 2026 at 7:38 AM
A little Godot addon to let you create / edit built-in scenes. i.e. scenes/prefabs that are embedded in other scenes, without needing their own files. Great for things you instantiate only in a single, specific context. Grab it here: codeberg.org/MajorMcDoom/...

#GodotEngine #gamedev #indiedev
January 24, 2026 at 1:11 PM
That's the gist of it. How you specifically *map* this effect onto motion or impacts is totally up to you! e.g. line up the effect's Y-axis with the direction of motion, use material stiffness to control frequency + amplitude, use speed / impact time to attenuate, etc.
January 23, 2026 at 10:07 PM
Next, move the animation to a "parent". The goal is for the effect to orient independently from the object itself. If your engine allows matrix manipulation (or you're doing this in shader), you can achieve this all in one matrix without needing a separate parent.
January 23, 2026 at 10:07 PM
Pretty straightforward effect. Start off with some sinusoidal scaling animations on different axes. There should be a PI/2 phase offset between the animation on the "primary" axis vs. the animation on the other axis (or axes if you're doing a 3D effect).
#gamedev #indiedev
January 23, 2026 at 10:07 PM
An old effect I made from ten years ago (I called it "Wibbly Wobbly"). It uses simple matrix distortion, so the whole thing can run in vertex shader. Works for 2D or 3D.

Great for making jiggly things that don't make sense to be rigged with bones.

#gamedev #indiedev
January 23, 2026 at 6:18 PM
One Godot quirk that drives me nuts to this day is the asymmetrical caret word skip when you edit text/code. I made a little addon to make it more familiar (symmetrical). You can grab it here under the aptly named "Better Caret Skips": codeberg.org/MajorMcDoom/...

#GodotEngine #gamedev
January 20, 2026 at 3:42 AM
Authoring collision geometry for VR is extremely tedious. All the usual "good enough" metrics / techniques for traditional games go out the window. Thankfully I made some utilities to help with mirroring and radial repetition.
#GodotEngine #gamedev #indiedev #VR
January 19, 2026 at 1:00 AM
Bucket physics are still a work-in-progress... 🐧🪣
#GodotEngine #gamedev #indiedev
January 18, 2026 at 4:55 PM
The trowel wiggle action was implemented using the same socket constraint tech used for the lantern hooks (except with lower swing limit, higher damp, zero-gravity). Was not expecting it to become so versatile so quickly.
#GodotEngine #gamedev #indiedev
January 17, 2026 at 5:08 PM
Made some new VR interactions.
Do you... dig it? 😎🐧🥕
#GodotEngine #gamedev #indiedev #screenshotsaturday
January 17, 2026 at 4:12 AM
After giving it a spin in VR, I can confirm: baguette math for two-handed grabs works on everything. p🐧🥖🔫
(There will be no guns in the game, but it makes for a great weird edge case test)
#GodotEngine #gamedev #indiedev
January 13, 2026 at 12:22 AM
The best way to visualize two-handed VR grabbing math is with baguettes, and it's not even close.

Easy to draw. Has clear axis. Long enough for two hands. Short enough to fit in a drawing. Thin enough to grab. Thick enough to draw inside. 👌

#gamedev
January 12, 2026 at 5:55 PM
This lets you do things like override/revert values in the inherited resources, and changes you make to the base resource will propagate to all inherited resources.

Here, you can see I'm reverting the red material's color override, and it turns back to the yellow of its base material.
January 12, 2026 at 4:44 AM
Wish Godot resources could be INHERITED like scenes can? I hacked together an addon that lets you do exactly that. Just add inherited_resource.gd to any resource, point it at a base resource of same type, and you're set! Grab it here: codeberg.org/MajorMcDoom/...

#GodotEngine #gamedev #indiedev
January 11, 2026 at 11:56 PM
Made a SocketConstraint, built on top of Godot's cone-twist joint. Comes with cool gizmos and editor preview. Also added zero-G and damping options, and added different ways to propagate hand orientation to object rotation during grabs.
#GodotEngine #gamedev #indiedev
January 11, 2026 at 8:21 AM
Started on some custom constraint tech. Has gizmos and in-editor constraint preview. Uses a custom force integration function instead of physics joints, so the motion is a lot cleaner (no soft wiggling at the limits).
#GodotEngine #gamedev #indiedev
January 10, 2026 at 1:38 AM
Bouncy boy.
January 9, 2026 at 6:20 PM
If you're wondering why most of the videos I post have the same boring and empty background environment, it's probably because it was taken on isle zero.
January 7, 2026 at 11:20 PM
I have a scene in my project called "isle_zero" which serves as a controlled environment where I fix bugs and work the kinks out of features. And whenever I do, I say "Cleanup on isle zero!" I find it hilarious and it makes boring work a bit more tolerable.
#gamedev #indiedev
January 7, 2026 at 11:20 PM
Added particles, sounds, and dynamic player facial/voice reactions to the manual veggie harvesting mechanic. Here's some VR footage! 🐧🥕
#GodotEngine #gamedev #indiedev
January 7, 2026 at 4:16 AM
WIP on manual veggie harvesting mechanic.
Yoinky yoinky. 🐧🥬
#GodotEngine #gamedev #indiedev
January 5, 2026 at 11:07 PM
Advanced seagull tech! 🕊️ Each flock is a single MultiMeshInstance3D node that does all the pathing. Individual seagulls are positioned with simple formulas. Wind / organic drifting are all shader-driven.
#GodotEngine #gamedev #indiedev
January 1, 2026 at 8:22 PM