Sign in

Amini Allight

@amini-allight.org
2K followers 761 following 663 posts

Solo game developer, VR enthusiast. Developing LambdaMod, a free and open source multiplayer game with VR support

PostsRepliesMedia
Amini Allight @amini-allight.org · 18/09/2026
Upgraded my game's line autobuilder so it can now build mixtures of arcs and straight lines, such as this half cylinder! #gamedev
A half cylinder in a 3D editor, black with white outlines.
0111
Amini Allight @amini-allight.org · 12/09/2026
Is there a name for this web page style? Absolutely everything looks like this now: dark bluish background, faintly tinted text, rounded features, thin borders, lots of accent colors used on the borders I'm guessing AI is involved somehow
A page from a website that picks a random person who ever lived and tells you about their estimated life.
420
Amini Allight @amini-allight.org · 04/09/2026
New chamfered and rounded cylinder primitives for game masters to decorate environments with! I think I'm going to do a few more batches of primitives and then force myself to fix up the netcode no matter how much I'm dreading it #gamedev
A selection of cylinders with chamfered or rounded edges in a 3D editor.
1102
Amini Allight @amini-allight.org · 28/08/2026
I realized it wasn't really possible for game masters to depict a candle in my game so I added the new droplet shape to create the flame! #gamedev
A candle made of black shapes with outlines in a 3D editor.
041
Amini Allight @amini-allight.org · 17/08/2026
Finally got around to finishing some new customizable shape primitives These can be used to make architectural pillars or repeating industrial shapes like whatever those cylindrical insulators(?) on substations are called #gamedev
Two shapes in a 3D editor, a stack of rectangular cuboids and a stack of cylinders.A long cuboid ridged on two opposing sides in a 3D editor.
072
Amini Allight @amini-allight.org · 29/07/2026
Harder than you'd think to write an algorithm to find and close these holes where two procedurally-constructed edge lines meet, my brain is exhausted 😩 #gamedev
A junction between four lines at the corner of an object in a 3D editor. A small black hole is visible in the joint.Two red wireframe rhombi floating in a 3D editor.
061
Amini Allight @amini-allight.org · 24/07/2026
2000 commits! 🥳 #gamedev
A screenshot from the GitLab UI reading "2000 Commits".
080
Amini Allight @amini-allight.org · 22/07/2026
Added a few new chamfered cuboid primitives to help spice up game masters' sci-fi environments! #gamedev
A black chamfered cuboid outlined in white in a 3D editor.
0112
Amini Allight @amini-allight.org · 19/07/2026
From my vibration-based audio synthesis experiments It shouldn't be doing that at all, but it's cool that it is 😅
120
Amini Allight @amini-allight.org · 18/07/2026
Catching the last few bugs with editing the new prism grid primitive #gamedev #screenshotsaturday
093
Amini Allight @amini-allight.org · 16/07/2026
Here's my new prism grid primitive which lets you easily create industrial structures like radio masts, bridges and cranes with three different triangulation options and an optional taper #gamedev
A triangulated tapering structure of lines resembling a small radio mast in a 3D editor.
0111
Amini Allight @amini-allight.org · 11/07/2026
Goodbye ugly character wrapping, hello word wrapping! #screenshotsaturday
A flat text object in a 3D editor reading "This is a very long line of text that will wrap onto several lines. Extremelylongwordthatwillbreakthewrappingsystem.".
071
Amini Allight @amini-allight.org · 10/07/2026
Upgraded my game's text objects to support automatic wrapping This allows game masters to write notes for their players to find in the environment: research notes, a ship's logbook, hastily scrawled instructions, you name it! #indiedev
Several lines of text in a 3D editor reading "This is a very long line of text that will wrap on to several lines."
091
Amini Allight @amini-allight.org · 08/06/2026
Oops That's not the video looping, my netcode just still has some issues #gamedev
0113
Amini Allight @amini-allight.org · 23/05/2026
I believe this means my game's new rollback networking is working! No stutter in the entity position at all! #indiedev #gamedev #screenshotsaturday
2185
Amini Allight @amini-allight.org · 17/05/2026
Finished the text playback feature Game masters can use this to add environmental dialogue for the players to "overhear" #gamedev
081
Amini Allight @amini-allight.org · 08/05/2026
At long last, unicode support in my game! This was tough, I had to find dozens of places where my code manipulated strings with the assumption 1 byte = 1 character and correct them With this you'll be able to use a huge range of textual expression for character names, dialogue, signage and more*
Hovering 2D text reading "Infinity: ∞" in a 3D editor
130
Amini Allight @amini-allight.org · 25/04/2026
Realized that rather than searching through my in-world UIs for the widgets I want to test I can just embed them anywhere in the editor UI, like the audio settings page The result is an ugly style clash, but it works!
An audio settings window above a 3D editor with a strange ill-fitting widget in it.An audio settings window above a 3D editor with a strange ill-fitting widget in it.An audio settings window above a 3D editor with a strange ill-fitting widget at the bottom of it.
020
Amini Allight @amini-allight.org · 24/04/2026
Every time I try to use my game's tools I get frustrated by how unpolished they are so I've been touching up the UI, here's the old vs. new node editor style It's amazing what a difference a few borders, different bezier control points and thinner lines makes!
A window containing a node editor with four nodes hooked up to each other.A window containing a node editor with four nodes hooked up to each other.
250
Amini Allight @amini-allight.org · 02/04/2026
Avoiding the nightmare of my broken netcode by adding a new shape primitive, here's some in-development screenshots of "packet", useful for depicting packaged food, sacks of grain, packaged medical supplies, shrink-wrapped items, etc.
A distorted mesh with a sharp point coming out of the top in a 3D editor.A lumpy mesh lying flat on a grid in a 3D editor.A square with inwardly curving sides in a 3D editor.A curved packet-shaped mesh viewed from the edge in a 3D editor.
021
Amini Allight @amini-allight.org · 08/03/2026
All fixed now!
White text reading "This is a very long text." in a 3D editor.
170
Amini Allight @amini-allight.org · 07/03/2026
Doesn't occur when I read from the same image for both regions either
A text rendering test with "This is a very long" repeated twice.
180
Amini Allight @amini-allight.org · 07/03/2026
Does anyone recognize this artifact? I'm storing the texture in multiple images to avoid exceeding max image dimensions and I'm getting this weird glitch at the tile boundaries Even stranger, it isn't reflected in the UVs (second picture) and the sampler is set to nearest + clamp-to-edge
A large letter g with a glitched crack through it.A pair of rectangles side-by-side in UV debug colors.
1116916
Amini Allight @amini-allight.org · 27/02/2026
Long time no see but I've finally written a new article! This time I'm laying out my thoughts about the new Marathon playtest and its struggles with motivating and incentivizing players amini-allight.org/post/maratho...
A dead runner lies next to a red cybernetic cat in a brightly colored sci-fi industrial environment. Promotional screenshot for Marathon, credit Bungie.
010
Amini Allight @amini-allight.org · 27/02/2026
Adding more primitives to the editor game masters will use, this time it's the "rounded rectangle prism"
A cube rounded on four edges in a 3D editor.
050
Amini Allight @amini-allight.org · 21/02/2026
If you like adding non-Steam games to your Steam Deck I have something for you! An update to my tool for batch configuration of non-Steam games from a config directory you can back up It now supports both customizing images on official Steam games and setting "wide" images
A screenshot of a Steam library showing two applications with customized images: Cyberpunk 2077 and Ubisoft Connect.

Cyberpunk 2077: Phantom Liberty cover by CD Projekt RED. Ubisoft Connect artwork via BigHungryChicken and scottboy7565 on SteamGridDB.A screenshot of the most recently played game in a Steam library showing Ubisoft Connect.

Cyberpunk 2077: Phantom Liberty cover by CD Projekt RED. Ubisoft Connect artwork via BigHungryChicken and scottboy7565 on SteamGridDB.
513511
Amini Allight @amini-allight.org · 18/02/2026
Built a toy example to make sure my understanding of rollback logic is sound You can see how the client initially goes past the blue barrier, which only exists on the server, before rollback kicks in and corrects the position
020
Amini Allight @amini-allight.org · 16/02/2026
It's pretty cool to be able to script objects in my game with my own text editor and my own language, from inside the game itself
2111
Amini Allight @amini-allight.org · 15/02/2026
Something for anyone working on multiplayer networking for their game: while trying to fix my own game's netcode I updated my tool Rollback Diagnostic The tool lets you create dumps from your game of multi-timeline world state and use a graphical viewer to explore them gitlab.com/amini-alligh...
A chain of blocks filled with numbers representing world states, colored green or red depending on whether or not they represent a correction of the client state due to rollback.
191
Amini Allight @amini-allight.org · 15/02/2026
Debug aesthetics remain undefeated
1121
Amini Allight @amini-allight.org · 14/02/2026
Well, how did that get past me when I made this feature
Corrupted text in a 3D editor reading "this is a |ext".
010
Amini Allight @amini-allight.org · 11/02/2026
The correct answer was "mirror fragment positions and normals about the object origin in psuedo-view-space so when I use inverted hulls to create edge highlights those edge highlights take light from the environment in less unexpected ways" 😵‍💫
A black sphere nested inside of a partially backface-culled white sphere.
010
Amini Allight @amini-allight.org · 10/02/2026
Found this horrible mess buried in my codebase, ruining my ambient occlusion, and I have no one to blame but myself (from 2023) Points for anyone who can guess what it was supposed to do (it does not do what it's supposed to do)
FragTransform correctNormals(vec3 position, vec3 normal)
{
    mat4 model = object.model[gl_ViewIndex];

    FragTransform result;

    if (!roughly(dot(normalize(normal), normalize(position)), 0))
    {
        vec3 origin = (model * vec4(vec3(0), 1)).xyz;

        vec4 fromLocalSpace = quaternionFromDirectionRoll(
            normalize(position),
            pickSideDirection(normalize(position))
        );
        vec4 toLocalSpace = quaternionInverse(fromLocalSpace);

        vec3 localOrigin = quaternionRotate(toLocalSpace, origin);
        vec3 localPosition = quaternionRotate(toLocalSpace, position);
        vec3 localNormal = quaternionRotate(toLocalSpace, normal);

        localPosition.y = localOrigin.y - (localPosition.y - localOrigin.y);
        localNormal.y *= -1;

        result.position = quaternionRotate(fromLocalSpace, localPosition);
        result.normal = quaternionRotate(fromLocalSpace, localNormal);
    }
    else
    {
        result.position = position;
        result.normal = normal;
    }

    return result;
}
220
Amini Allight @amini-allight.org · 27/01/2026
Nobody warns you that once you learn what blue noise dithering looks like you're doomed to see it everywhere forever after
Abrams from Deadlock made partially transparent with blue noise dithering due to proximity to the camera. Part of the noise pattern is enlarged.
2152
Amini Allight @amini-allight.org · 10/01/2026
Do any GPGPU people happen to know why this sort of compute shader freezes my desktop until it completes (Vulkan + Mesa + AMD)? The call to memoryBarrierBuffer is load bearing, without it the freeze doesn't occur Am I doing something wrong? Is there a better way to structure operations like this?
layout(push_constant) uniform PushConstants {
    uint stepCount;
    uint aIndex;
    uint bIndex;
} pushConstants;

layout(binding = 0) coherent buffer MyData {
    float values[];
} myData[];

void main()
{
    uint index = gl_GlobalInvocationID.x;
    uint nextIndex = index + 1;
  
    uint inputIndex = pushConstants.aIndex;
    uint outputIndex = pushConstants.bIndex;
  
	for (uint i = 0; i < pushConstants.stepCount; i++)
    {
        // do some work based on neighbors
        myData[outputIndex].values[index] = myData[inputIndex].values[nextIndex];
      
        // wait for neighbors to update
        memoryBarrierBuffer();
      
        // swap buffers
        uint temp = inputIndex;
        inputIndex = outputIndex;
        outputIndex = temp;
    }
}
130
Amini Allight @amini-allight.org · 06/01/2026
My game has a custom flag tool that lets game masters design flags for their real or fictional factions I realized it had some gaps so it's now newly extended with three extra primitives: diagonal slash, half circle and half ring
Editing a design for a fictional flag comprised of multiple layers in a 3D editor.
020
Amini Allight @amini-allight.org · 05/01/2026
First time seeing helical stairs There is Something Wrong (but better than expected!)
020
Amini Allight @amini-allight.org · 04/01/2026
Fixed the line builder, here's the "bed" shape primitive with its proper edge lines (actually cylindrical meshes)! Turns out this was broken because I calculated line facing directions in a way that assumed there would never be a "concave" corner (like those found on the inside of this shape)
A black shape with a flat base and two raised sides, outlined in white in a 3D editor.
010
Amini Allight @amini-allight.org · 13/12/2025
Thanks Wikipedia, now I don't know what I should call my new stairs primitive 😵‍💫
The term "spiral" has a more narrow definition in a mathematical context, as a curve which lies in a single plane and moves towards or away from a central point, with a continuously changing radius. The mathematical term for the 3-dimensional curve traced where the locus progresses at a fixed radius from a fixed line while moving in a circular motion around it is a "helix". Since the very purpose of a stairway is to change elevation, it is inherently a 3-dimensional path.

Loose everyday usage conflates the terms helical and spiral, but the vast majority of circular stairs are actually helical.[15][16] True spiral staircases would be nonfunctional flat structures, although functional hybrid helical spiral staircases can be constructed. This article attempts to preferentially use the terms "helix" and "helical" to describe circular stairways more clearly and precisely, while reserving the term "spiral" for a curve restricted to a flat plane.
130
Amini Allight @amini-allight.org · 06/12/2025
Did everything I can think of to accelerate terrain generation (except offloading to the GPU), fixed up some editing bugs and now I can do this! Next step will be moving it to a background thread to eliminate the remaining negative effect on frame rate
081
Amini Allight @amini-allight.org · 05/12/2025
Released a new version of my terminal PDF reader, just a small update that adds special messages indicating you're reading an empty document outline or an empty page to improve clarity github.com/amini-alligh...
A terminal screen displaying the text "No outline available."A terminal screen displaying the text "No textual page content."
020
Amini Allight @amini-allight.org · 04/12/2025
Turns out heightmap SDF queries were returning distance to a flat plane, with that fixed I can now create slopes and depressions in the landscape Unfortunately this reveals just how rough my QEF minimization approach still is, look at those jagged edges 😅
A very jagged sloping landscape mesh with two tunnels descending into it, viewed in Blender.
1033122
Amini Allight @amini-allight.org · 03/12/2025
It works! This is user-supplied control points converted to an SDF then the SDF converted to a mesh, allowing you to define terrain that mixes a heightmap with floating additive features and subterranean subtractive features Still blocky for now but it's a relief to know the approach is sound
A view from inside a blocky mesh tunnel in Blender.A wireframe of a flat plane with a U-shaped tunnel underneath in Blender.A repeating grid of white lines on black that drops away into a deep tunnel.
923517
Amini Allight @amini-allight.org · 30/11/2025
I'm not sure exactly what's happening when I try to do QEF minimization, but I'm pretty sure it's bad 😵‍💫
Three meshes stacked in Blender labeled "Voxel-SDF intersections", "QEF minimized" and "Triangulated". Severe distortions are introduced in the second step.
3141
Amini Allight @amini-allight.org · 29/11/2025
Taking a little break from terrain tools to fix up the Radial Grid primitive This one enables game masters to make cart wheels, ship's wheels, bars on circular windows or drains and so on
A circular pattern of 8 spokes and 2 rings in a 3D editor.Customizing a pattern of spokes and rings in a 3D editor.
030
Amini Allight @amini-allight.org · 28/11/2025
Dirty gamedev secret: sometimes instead of building proper debug visualizations I just dump the information to OBJ and use Blender to visualize it 😅 But now at least I know my SDF dual contouring is working
C++ code that emits an OBJ file filled with points from voxel edge/SDF intersections.A collection of vertices in OBJ plaintext format.A sphere of vertices in Blender.
2049435
Amini Allight @amini-allight.org · 25/11/2025
Added a preview widget for custom flags the game master is designing (seen here previewing the flag of Night City from Cyberpunk 2077) With this the custom flags feature is now done! Time to return to figuring out how to make easy-to-use terrain tools #gamedev #vr
Previewing a custom flag design in a 3D editor. The flag design is roughly the flag of Night City from Cyberpunk 2077.
061
Amini Allight @amini-allight.org · 22/11/2025
I've been quiet but busy! Progress on a new primitive called "Flag" which lets game masters quickly assemble a flag out of colored stripe, checker, circle, etc. layers, useful for marking areas belonging to real or fictional factions and organizations #gamedev #vr
A red rectangle in a 3D editor filled with thin diagonal lines.A red rectangle in a 3D editor filled with thicker diagonal lines.A red rectangle in a 3D editor filled with more tightly packed diagonal lines.A blue, white and red hatched rectangle in a 3D editor resembling the French flag.
172
Amini Allight @amini-allight.org · 23/09/2025
It pains me to say this as someone who adores the last two games, but Endless Legend 2 feels like it's had a lot of the flavor sucked out? Almost everything in EL1 & ES2 had full artworks and long flavor text attached, that's mostly gone in this entry (Possible it's coming later in early access?)
A side-by-side comparison of information popups in Endless Legend 2 and the original Endless Legend. The popups from Endless Legend 2 have little-to-no art and shorter flavor text.
010
Amini Allight @amini-allight.org · 12/09/2025
Another shape primitive, paraboloid! This one's a little niche but without it you can't put satellite dishes on your sci-fi installations (might make a good serving dish, too) #gamedev #vr
A parabolic reflector viewed edge on in a 3D editor.
0142