Cover

I just published Nordustry v0.2.0 over on itch.io! Following up on the core DOD architecture from the [last post](2026-06-25 Nordustry 0.1.0), it was time to move on to my next milestone. The primary focus of this update is procedural generation and some visual upgrades, making the game world feel like more than a plain prototyping plane.

Procedural Ore Generation

An endless factory game needs endless resources. To populate the infinite chunks with Iron and Copper, I implemented procedural generation using Godot’s FastNoiseLite algorithm.

By using Simplex noise with a Ridged fractal type, we get natural looking, distinct resource clusters that weave across the chunk boundaries perfectly. Respecting our DOD architecture, the chunk generator writes the resource IDs directly into our 1D flat spatial arrays. It’s incredibly fast and completely skips any node instancing again.

public static class ChunkGenerator
{
    private static readonly FastNoiseLite _noise;
 
    static ChunkGenerator()
    {
        _noise = new FastNoiseLite
        {
            NoiseType = FastNoiseLite.NoiseTypeEnum.Simplex,
            Seed = 42, 
            Frequency = 0.015f,
            FractalType = FastNoiseLite.FractalTypeEnum.Ridged,
        };
    }
 
    public static void Generate(ChunkCoord coord, Chunk chunk)
    {
        int startX = coord.X * SpatialMap.ChunkSize;
        int startZ = coord.Y * SpatialMap.ChunkSize;
 
        for (int i = 0; i < Chunk.Area; i++)
        {
            int globalX = startX + (i % SpatialMap.ChunkSize);
            int globalZ = startZ + (i / SpatialMap.ChunkSize);
 
            float val = _noise.GetNoise2D(globalX, globalZ);
 
            uint resourceId = 0;
            if (val > 0.5f) resourceId = 1;      // Iron Ore
            else if (val < -0.5f) resourceId = 6; // Copper Ore
 
            if (resourceId != 0)
            {
                chunk.TileData[i] |= (resourceId << SpatialMap.ResourceShift) & SpatialMap.ResourceMask;
            }
        }
    }
}

Smart Miners & The New Ore Shader

Generating the ores in the background arrays is one thing, but they need to look good. I wrote a custom shader for the ore patches that gives them a really nice, metallic and shimering pop against the terrain.

With the ores physically (and visually) existing in the world, the logistics mechanics had to be updated. Previously, Miners would just print items out of thin air for testing. Now, Miners are context-aware. They check the 1D spatial arrays to verify if there is an active ore patch underneath their footprint before they extract anything.

Improved Inserters

On the rendering side, I did a major overhaul of the Inserters. Initially, the arm and the base were a single combined mesh, which menas that the base would always rotate wtih the whole arm. I completely separated the base mesh from the arm mesh.

So what’s next for v0.3.0? To close the loop for playtesters, we require an explicit logical endpoint that validates the game loop. We’ll be focusing heavily on The Realm Altar & Miracle Mechanics, bringing a real sense of progression and goal-oriented gameplay to the factory.