{"items":[{"id":"engine-block-compressed-textures-cached-on-disk","product":"engine","kind":"milestone","date":"2026-10-16","title":"Block-compressed textures, cached on disk","summary":"Colour, normal and roughness-metalness maps are compressed to BC7 (4×4 texels in 16 bytes) on every CPU core, their mips filtered in linear light, and kept on disk by a hash of their pixels so each is compressed once; data textures stay uncompressed.","version":null,"label":null,"figures":[{"label":"Textures in GPU memory","value":"883 MB → 221 MB"},{"label":"Renderer's GPU memory","value":"1,777 MB → 1,115 MB"},{"label":"Load, compressed once / from disk","value":"4.0 s / 0.18 s"}],"counts":null,"count":null,"areas":[]},{"id":"engine-gpu-driven-culling-and-level-selection","product":"engine","kind":"milestone","date":"2026-10-16","title":"GPU-driven culling and level selection","summary":"Every instance is tested against the view on the GPU (and, for the shadow map, whether its shadow can reach the view), given its level of detail, and listed for one indirect draw per mesh and level, in the same order every frame so equal depths never flicker.","version":null,"label":null,"figures":[{"label":"Culling 200,000 instances, GPU","value":"0.137 ms"},{"label":"The same tests, one CPU thread","value":"4.12 ms"},{"label":"Drawing the 11,820 kept","value":"0.522 ms"}],"counts":null,"count":null,"areas":[]},{"id":"kingdom-of-france-0-3-2","product":"kingdom-of-france","kind":"release","date":"2026-10-16","title":"Version 0.3.2","summary":"12 changes: 3 new, 3 changed, 6 fixed","version":"0.3.2","label":"Update","figures":[],"counts":{"new":3,"fixed":6,"changed":3},"count":12,"areas":["Interface","Battles","Campaign","Faith","Mods","Graphics"]},{"id":"kingdom-of-france-next","product":"kingdom-of-france","kind":"next","date":"2026-10-16","title":"The next update","summary":"12 changes: 8 changed, 4 fixed, since version 0.3.2","version":null,"label":"Next update","figures":[],"counts":{"new":0,"fixed":4,"changed":8},"count":12,"areas":["Roads","Graphics","Goods","Battles","Buildings"]},{"id":"engine-its-own-profiler-frame-by-frame","product":"engine","kind":"milestone","date":"2026-10-15","title":"Its own profiler, frame by frame","summary":"Every frame of a run is recorded: each pass's vertex and pixel GPU time, the CPU's parts, draws, instances and triangles mesh by mesh, memory item by item, with findings written out in words and two runs set side by side.","version":null,"label":null,"figures":[{"label":"GPU, median frame","value":"23.05 ms"},{"label":"Memory items counted","value":"450"},{"label":"Memory on the device","value":"1,538 MB"}],"counts":null,"count":null,"areas":[]},{"id":"engine-full-renderer-timed-pass-by-pass","product":"engine","kind":"milestone","date":"2026-10-15","title":"Full renderer, timed pass by pass","summary":"Eight GPU passes: the sun's shadow map (4096²), the scene with 4× MSAA and alpha to coverage, atmosphere, ambient occlusion with a denoise, bloom, tone mapping and grade.","version":null,"label":null,"figures":[{"label":"GPU, wide view, 27,124 instances","value":"15.96 ms"},{"label":"GPU, close view, 1,371 instances","value":"8.53 ms"},{"label":"Draw calls, wide view","value":"1,226"}],"counts":null,"count":null,"areas":[]},{"id":"engine-levels-of-detail-chosen-per-object","product":"engine","kind":"milestone","date":"2026-10-15","title":"Levels of detail chosen per object","summary":"Every instance gets the coarsest level whose geometric error projects to at most one pixel on screen, or one texel in the shadow map, chosen on every CPU core.","version":null,"label":null,"figures":[{"label":"Triangles","value":"57.6 M → 22.0 M"},{"label":"Median frame","value":"23.43 → 11.76 ms"},{"label":"Cull + LOD, 52,829 instances","value":"0.54 ms"}],"counts":null,"count":null,"areas":[]},{"id":"engine-c-core-metal-and-direct3d-renderers","product":"engine","kind":"milestone","date":"2026-10-15","title":"C++ core, Metal and Direct3D renderers","summary":"One C++ core (scene loading, culling, levels of detail, timing, reports) and a native renderer for each system: Metal on macOS, Direct3D on Windows, the Windows build cross-compiled from macOS.","version":null,"label":null,"figures":[{"label":"Meshes","value":"687"},{"label":"Instances","value":"52,829"},{"label":"Textures","value":"112"}],"counts":null,"count":null,"areas":[]},{"id":"kingdom-of-france-0-3-1","product":"kingdom-of-france","kind":"release","date":"2026-10-15","title":"Version 0.3.1","summary":"17 changes: 3 new, 7 changed, 7 fixed","version":"0.3.1","label":"Update","figures":[],"counts":{"new":3,"fixed":7,"changed":7},"count":17,"areas":["Townsfolk","Settings","Graphics","Sound","Goods","Free play","Music"]},{"id":"kingdom-of-france-0-3-0","product":"kingdom-of-france","kind":"release","date":"2026-10-13","title":"Version 0.3.0","summary":"35 changes: 6 new, 13 changed, 16 fixed","version":"0.3.0","label":"Big update","figures":[],"counts":{"new":6,"fixed":16,"changed":13},"count":35,"areas":["Free play","Graphics","Campaign","Buildings","Water","Trade","Goods","Homes","Faith","Interface","Order","Leisure"]},{"id":"kingdom-of-france-0-2-5","product":"kingdom-of-france","kind":"release","date":"2026-10-12","title":"Version 0.2.5","summary":"46 changes: 5 new, 25 changed, 16 fixed","version":"0.2.5","label":"Update","figures":[],"counts":{"new":5,"fixed":16,"changed":25},"count":46,"areas":["Interface","Decorations","Free play","Campaign","Saves","Graphics","Buildings","Water","Homes","Townsfolk"]},{"id":"kingdom-of-france-0-2-4","product":"kingdom-of-france","kind":"release","date":"2026-10-11","title":"Version 0.2.4","summary":"54 changes: 12 new, 26 changed, 16 fixed","version":"0.2.4","label":"Update","figures":[],"counts":{"new":12,"fixed":16,"changed":26},"count":54,"areas":["Graphics","Homes","Campaign","Faith","Free play","Interface","Water","Buildings","Mods","Honours","Online","Goods","Trade"]},{"id":"kingdom-of-france-0-2-3","product":"kingdom-of-france","kind":"release","date":"2026-10-10","title":"Version 0.2.3","summary":"69 changes: 22 new, 25 changed, 22 fixed","version":"0.2.3","label":"Update","figures":[],"counts":{"new":22,"fixed":22,"changed":25},"count":69,"areas":["Graphics","Goods","Interface","Buildings","Trade","Battles","Homes","Campaign","Roads","Order","Townsfolk","Free play"]},{"id":"kingdom-of-france-0-2-2","product":"kingdom-of-france","kind":"release","date":"2026-10-09","title":"Version 0.2.2","summary":"90 changes: 25 new, 39 changed, 26 fixed","version":"0.2.2","label":"Update","figures":[],"counts":{"new":25,"fixed":26,"changed":39},"count":90,"areas":["Graphics","Trade","Battles","Buildings","Faith","Campaign","Goods","Homes","Water","Order","Interface","Saves","Mods","Townsfolk","Maps"]},{"id":"kingdom-of-france-0-2-1","product":"kingdom-of-france","kind":"release","date":"2026-10-08","title":"Version 0.2.1","summary":"22 changes: 5 new, 12 changed, 5 fixed","version":"0.2.1","label":"Update","figures":[],"counts":{"new":5,"fixed":5,"changed":12},"count":22,"areas":["Campaign","Mods","Saves","Graphics","Buildings","Battles","Interface","Townsfolk","Roads"]},{"id":"kingdom-of-france-0-2-0","product":"kingdom-of-france","kind":"release","date":"2026-10-06","title":"Version 0.2.0","summary":"144 changes: 74 new, 46 changed, 24 fixed","version":"0.2.0","label":"Big update","figures":[],"counts":{"new":74,"fixed":24,"changed":46},"count":144,"areas":["Buildings","Graphics","Interface","Campaign","Trade","Mods","Sound","Faith","Battles","Goods","Townsfolk","Homes","Free play","Settings"]}],"updated":"2026-10-16"}