Sign in

Zi

@majormcdoom.bsky.social
8.2K followers 1.2K following 3.7K posts

Canadian indie VR dev / founder @cozycubegames.bsky.social. Wishlist 🐧Penguin Festival🐧: store.steampowered.com/app/3552090/… Past: Owlchemy Labs. Proud husband and shiba dad. - 🚫 gen AI - 🚫 genocide - ✊ trans rights

PostsRepliesMedia
Zi @majormcdoom.bsky.social · 1h
Appreciated some Godot features for this piece: 1. You can tweak the hell out of shadows. Treat them as part of the art style. 2. NoiseTexture is super versatile for prototypes / simple stuff. 3. Subtle SSS can give even simple graphics some extra "oomf". #GodotEngine #gamedev #indiedev
07515
Zi @majormcdoom.bsky.social · 14h
Don't have time to do Linktober this year, but I recreated one of my 2020 Linktober drawings in 3D. Was nice to do some personal art for a change. #b3d #GodotEngine #Linktober #Zelda #LinksAwakening
3553
Zi @majormcdoom.bsky.social · 06/10/2026
I wrote it pretty compact up there, but you can also be more liberal with whitespace+indentation, of course:
await until(player_char.is_sitting)
await all(
	func():
		for i in 8:
			npc1.rotate_y(PI/4)
			await seconds(0.5),
	func():
		for i in 5:
			npc2.jump()
			await seconds(1.0))
msg.show()
0340
Zi @majormcdoom.bsky.social · 06/10/2026
Back when I used Unity, I always envied Unreal's SkookumScript, with its seamless support for sequentiality + concurrency. Today I realized I've already achieved a similar workflow in Godot?? Such a giddy feeling. Look at this parallel code! 👇📜⏱️ #GodotEngine #gamedev #indiedev
520021
Zi @majormcdoom.bsky.social · 05/10/2026
Imperative cutscene animations. 📜🎬🐧 #GodotEngine #gamedev #indiedev
513713
Zi @majormcdoom.bsky.social · 04/10/2026
How to be happy as a gamedev. #GodotEngine #gamedev #indiedev
415114
Zi @majormcdoom.bsky.social · 30/09/2026
You're right, it is order dependent! When the direction is clear, there's not much divergence. But when it's vague, you can get pretty different results. What I'm not showing here is the "confidence" number. I originally made this for high-confidence scenarios, so I can live with this flaw.
1110
Zi @majormcdoom.bsky.social · 30/09/2026
It's essentially a weighted sum of all the edges, where the weight of each edge is how much all the other edges line up with it. When I do the weighted sum, I flip any edge vector that runs opposite to the current sum, so opposing directions are mutually reinforcing, not canceling.
A diagram showing the same test scene from before, except with all the points connected with blue lines.
3190
Zi @majormcdoom.bsky.social · 30/09/2026
Had an idea in the shower for an algorithm to find the "rough direction of a set of points". Worked beautifully, but now I'm wondering if all I did was derive linear regression from first principles? I'm just creating a matrix of absolute values of dot products. 🤔
4746
Zi @majormcdoom.bsky.social · 28/09/2026
Big (and breaking) update to the SyncedCollisionShape3D addon! You can now generate primitive colliders for non-primitive visuals (or a specific part). The "squeeze" button does a smart fit. Also added an extrusion feature. Get it here: codeberg.org/MajorMcDoom/... #GodotEngine #gamedev #indiedev
112525
Zi @majormcdoom.bsky.social · 25/09/2026
Dude, no freaking way... What you're seeing here is me doing live-blending / animations on baked lightmaps in Godot... 3700 FPS #GodotEngine #gamedev #indiedev
1127330
Zi @majormcdoom.bsky.social · 25/09/2026
You can use this to "spot-heal" a nasty spot on a specific mesh too. So cool.
1222
Zi @majormcdoom.bsky.social · 25/09/2026
A close-up of the same scene with very low resolution lightmap so you can see this is an effect done on a baked LightmapGI, and not SDFGI, VoxelGI, etc.
A close-up screenshot of the same scene running with lower resolution lightmap, showing the darkness ripple effect on the ground, with very big pixelated rings.
0140
Zi @majormcdoom.bsky.social · 25/09/2026
A little experiment with postprocessing on *baked* lightmaps in Godot (they're just textures after all!). If you snatch the internal lightmap data and do some arcane SubViewport shenanigans, you can also use it to do *spatialized* effects on the lightmap too. #GodotEngine #gamedev #indiedev
922127
Zi @majormcdoom.bsky.social · 22/09/2026
Supports follow-through and poking motions too! #GodotEngine #gamedev #indiedev
3999
Zi @majormcdoom.bsky.social · 22/09/2026
I love my motor system cuz it's like, oh, you wanna do a Wing Chun stance? Spread feet further apart, tilt them inward, and bend the knees inward. What's that? The penguin doesn't have knees? Okay, dislocate the femurs. Four lines of code. #gamedev #indiedev
A screenshot of the penguin imitating Wing Chun, plus a diagram showing the Wing Chun horse stance, plus the code used to achieve it:

penguin.body_params.neutral_foot_spacing = 0.5
penguin.body_params.neutral_foot_yaw = -20
penguin.hip.right_leg_anchor.position.x *= 0.7
penguin.hip.left_leg_anchor.position.x *= 0.7
3836
Zi @majormcdoom.bsky.social · 22/09/2026
YESSSS!! Took a couple days, but I now have one motor function that can lets penguins hit any point on anything with any point on any other thing. Probably one of the most versatile motor tasks I've made. SO happy with this! 🐧🐟🔨🙏🧊🚿🪵 #GodotEngine #gamedev #indiedev
2449780
Zi @majormcdoom.bsky.social · 21/09/2026
Mathy math. 🐧📐📈 #GodotEngine #gamedev #indiedev
1325735
Zi @majormcdoom.bsky.social · 20/09/2026
Totally procedural penguin drinking motor task. Accounts for posture, arm length, cup size, etc. 🐧🍺 #GodotEngine #gamedev #indiedev
217115
Zi @majormcdoom.bsky.social · 20/09/2026
Yep.
Gen AI used combined with Traditional Painting Methods in creation of all Skybox. For reference only.
110
Zi @majormcdoom.bsky.social · 20/09/2026
Hey there, I use Godot's built-in feature for basic sky coloring. For the clouds, here's a basic explanation of how I did mine:
120
Zi @majormcdoom.bsky.social · 19/09/2026
This side quest stuck with me as well when I played it as a kid. The lingering timings in the cutscene as you watch the ghost inspect various corners of their house... the final acceptance... Such a great moment in a great game.
An old illustration I did of the ghost looking at the stuff in their house. There is a desk with a compass and a map on it. There are empty clothes hangers hanging near the windows, which are overgrown with vines. There is a potted plant that has grown very large. A closet is in the back corner, with little knick knacks on top, and a cobweb near by. Little slivers of light shine through the cracks between the boarded up windows.
1400
Zi @majormcdoom.bsky.social · 19/09/2026
Here's a simple repro you can do:
A screenshot showing a script declaring a property xyz, whose getter prints out "GET xyz" then returns 123. The _ready() function checks to see if xyz property exists, and if it does, prints out its value.

The final output of running the code is:
GET xyz
GET xyz
123
0252
Zi @majormcdoom.bsky.social · 17/09/2026
Throwback to a super early short game jam where I gave my VR penguin a touch screen on which to play another penguin game. #gamedev #indiedev
211810
Zi @majormcdoom.bsky.social · 16/09/2026
Made an NPC debug panel that shows live-rendered thumbnails of every NPC, their current states, and lets me double-click to teleport straight to them. Makes debugging the game progression a lot easier!
0533
Zi @majormcdoom.bsky.social · 16/09/2026
Once you have the depth info of both solid and wireframe versions of the scene, you can easily use this to do wireframe overlays!
Scene depth capture, solid mode.Scene depth capture, wireframe mode.
080
Zi @majormcdoom.bsky.social · 16/09/2026
In Godot, you can only read scene depth from 3D shaders, but using a full-screen 3D quad to capture the depth of a wireframe viewport means the quad ITSELF becomes wireframe (a single diagonal line)! My solution: subdivide the quad by screen pixel height. #GodotEngine #gamedev #indiedev
9695
Zi @majormcdoom.bsky.social · 16/09/2026
What the hell is going on with Bsky's video compression? -_-
A screenshot of a moment in the video that was very blurred.
2170
Zi @majormcdoom.bsky.social · 16/09/2026
This is how the built-in one looks. It's fine for some use cases, but it can get reeeeeally annoying, especially being not very customizable. You can't turn off the textures or lighting, and there's zero occlusion.
A view of the same fish in a wok from the video, except using Godot's built-in wireframe viewport mode. All the wires from everything behind the wok are visible through the wok, leading to a cluttered mess. The wires are also textured, so depending on the viewing conditions, sometimes they just blend right into the background.
090
Zi @majormcdoom.bsky.social · 16/09/2026
Haha, hell yeah. An actually good wireframe mode in Godot. Not quite ready yet to share as an addon, but it's quite exciting. Works with any viewport mode, too. The amount of insane hacks I needed to pull this off, though... 😱 #GodotEngine #gamedev #indiedev
511811
Zi @majormcdoom.bsky.social · 14/09/2026
It's not a hack if you don't admit it. 🙅‍♀️ "I always meant to do this." Make it look intentional, damn it. 🫵 #gamedev #indiedev
await AwaitUtil.physics_frames(2)
7809
Zi @majormcdoom.bsky.social · 13/09/2026
Throwback to an old shader I made specifically to voxelize characters to avoid spoilers in social media posts. 🐧🫥 #GodotEngine #gamedev #indiedev
517013
Zi @majormcdoom.bsky.social · 13/09/2026
Sorry, I had to. 😆
1110
Zi @majormcdoom.bsky.social · 12/09/2026
Oh thank goodness, right as we were about to veer away from the main objective.
A leashed shiba inu looking backwards at a yellow arrow painted on a sidewalk.
0530
Zi @majormcdoom.bsky.social · 11/09/2026
"Try asking Grunter a question about your scene..." 😜
A screenshot of one of the icons in the post being responded to, depicting purple four-pointed stars.
140
Zi @majormcdoom.bsky.social · 11/09/2026
Tired of your addons polluting your project view when you just wanna see your own stuff? I made an addon (haha) that gives you a little button in the FileSystem tab to toggle the addon folder. One addon to hide them all. Grab it here: codeberg.org/MajorMcDoom/...
510114
Zi @majormcdoom.bsky.social · 11/09/2026
Every item in the game can be converted any time, gracefully, to and from a serialized data representation (e.g. JSON). Here you can see me live-editing items via only a text box. #GodotEngine #gamedev #indiedev
1026122
Zi @majormcdoom.bsky.social · 10/09/2026
Made a fun util that lets you set "memory mines" that explode when they're freed, to help you track object life times (e.g. in coroutines). You can also embed them in other objects. Works in editor and runtime. Get it here: codeberg.org/MajorMcDoom/... #GodotEngine #gamedev #indiedev
1664
Zi @majormcdoom.bsky.social · 09/09/2026
Added advanced options for NPC conversation behaviour. e.g. whether to clear/replace/augment previous activities, additional entry/exit behaviours, etc. All seamless, thanks to the motor system. #GodotEngine #gamedev #indiedev
610711
Zi @majormcdoom.bsky.social · 09/09/2026
Being an Ocarina of Time fan as a gamedev means testing every new feature of your game in an OoT re-enactment (duh). Here's an old test of penguin "battle stance" and falling animations. #gamedev #indiedev #Zelda
2867
Zi @majormcdoom.bsky.social · 09/09/2026
1273
Zi @majormcdoom.bsky.social · 09/09/2026
Found a bug that I might keep? I forgot to add chair occupancy restrictions, and penguin hips are simulated with physics, so you can get in tiny chairs with other penguins and shove them aside. 😆 #gamedev #indiedev #GodotEngine
1216410
Zi @majormcdoom.bsky.social · 07/09/2026
Made a "content cluster" system to help me organize content. If I double-tap [C][C] from a viewport, it auto-adjusts the scene tree view to focus on the contents of the cluster I'm looking at, while preserving selections. Here is a demo in a small test scene: #GodotEngine #gamedev #indiedev
2683
Zi @majormcdoom.bsky.social · 05/09/2026
Fun fact: A lot of my later work on the penguin body system in Penguin Festival can trace its lineage to this one weird ass sentient coffee experiment.
1491
Zi @majormcdoom.bsky.social · 05/09/2026
Throwback to an experiment I did during the pandemic which started as a geometry slicing algorithm for a cake meme, but then evolved into procedural locomotion paradigms, body-awareness and speech generation. #gamedev #indiedev
1033138
Zi @majormcdoom.bsky.social · 03/09/2026
Made some basic UX flow for NPCs giving/taking items in VR. Still need to handle some edge cases, but feels pretty natural so far! 🐧🫴🔄️🫳🐧 #GodotEngine #gamedev #indiedev
4837
Zi @majormcdoom.bsky.social · 01/09/2026
And because I think it's equally important to show the failures behind the successes: At first I tried to be fancy with prediction and course-correction. The complexity quickly outgrew the potential gains. In the end, a simple radial push sufficed and produced better results. #gamedev #indiedev
3847
Zi @majormcdoom.bsky.social · 01/09/2026
Check out these sick smear frames.
A penguin with one foot stretched forward, and both flippers stretched back, as it dashes just in time out of the way of a falling pylon.A massive pylon plowing through a bunch of penguins, with some of their flippers being stretched like 4 meters long behind them.A bunch of penguins in various contorted positions from being smacked around by a massive pylon. The shot is very dynamic, with many limbs, ponytails and scarves communicating movement.
2323
Zi @majormcdoom.bsky.social · 31/08/2026
Playing with this is so incredibly satisfying, haha. #GodotEngine #gamedev #indiedev
1528942
Zi @majormcdoom.bsky.social · 31/08/2026
Made some big improvements to penguin locomotion system, mostly involving awareness of obstacles and other penguins. #gamedev #indiedev #GodotEngine
516016