<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged methodox</title>
<link>https://coderlegion.com/tag/methodox</link>
<description>Powered by Question2Answer</description>
<item>
<title>DevLog: 2026-10-15 A Detective Story - Making It to The Release.</title>
<link>https://coderlegion.com/31253/devlog-2026-10-15-a-detective-story-making-it-to-the-release</link>
<description>&lt;h3 id=&quot;overview&quot;&gt;Overview&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;A Detective Story&lt;/strong&gt; is a compact detective simulator that brings natural conversation to the heart of interactive fiction, where you can interrogate NPCs using natural languages - as they are powered by LLMs (well, SLMs to be precise).&lt;/p&gt;
&lt;p&gt;A murder has taken place in the sunlit seaside town of Baytown, where everyone has a story. Question suspects, explore the town for clues, and test their alibis against the evidence. You may have only three days to solve the crime - and there may be more than one murderer!&lt;/p&gt;
&lt;h3 id=&quot;development-experience&quot;&gt;Development Experience&lt;/h3&gt;
&lt;p&gt;Making a game is very different from building an app - or any other kind of software, for that matter. I don't think I've ever worked on a software project where even the smallest incremental improvement could feel so difficult.&lt;/p&gt;
&lt;p&gt;Ironically, even though engine and gameplay development consumed nearly 80% of the development time, I'd still call it the &quot;easy part&quot; of the whole endeavor. Designing the story, integrating the graphics, and, most importantly, making sure the mystery is actually solvable - those turned out to be challenges that go well beyond the usual technical maneuver.&lt;/p&gt;
&lt;h3 id=&quot;reception&quot;&gt;Reception&lt;/h3&gt;
&lt;p&gt;The &lt;a rel=&quot;nofollow&quot; href=&quot;https://coderlegion.com/12443/a-detective-story-the-case-of-the-dead-office-guy-game-trailer&quot;&gt;initial trailer&lt;/a&gt;, despite its relatively simple graphics by today's standards, felt quite intriguing to me. The idea of fully integrating LLM-powered NPCs into a game is certainly nothing new, but it's still rarely seen in actual games.&lt;/p&gt;
&lt;p&gt;I even told my friends that &lt;em&gt;A Detective Story&lt;/em&gt; might end up being more popular than &lt;a rel=&quot;nofollow&quot; href=&quot;https://store.steampowered.com/app/3336490/Fantasy_Planet_Painter/&quot;&gt;Fantasy Planet Painter&lt;/a&gt;. Both are niche titles, but ADS seemed more approachable and appealing to a broader audience.&lt;/p&gt;
&lt;p&gt;Reality, however, told a different story. The game attracted relatively little interest during its first few months, which eventually led me to scale back the time and effort I was putting into getting it released.&lt;/p&gt;
&lt;h3 id=&quot;revival-of-effort&quot;&gt;Revival of Effort&lt;/h3&gt;
&lt;p&gt;With &lt;a rel=&quot;nofollow&quot; href=&quot;https://store.steampowered.com/app/4422920/Divooka_Explore/&quot;&gt;Divooka&lt;/a&gt; approaching maturity and preparing for its public release later this year, it's time to revisit and refine the integrated LLM capabilities within the Divooka ecosystem, particularly features such as RAG and knowledge base management.&lt;/p&gt;
&lt;p&gt;ADS runs on Crime Engine, which itself is built upon components from Divooka, making it a natural testing ground for these capabilities.&lt;/p&gt;
&lt;p&gt;On a more personal note, I also have other game projects in mind for Methodox. However, Project Aegis has made little progress, and &lt;a rel=&quot;nofollow&quot; href=&quot;https://methodox.itch.io/wayhome&quot;&gt;Codename Wayhome&lt;/a&gt; remains a prototype. At some point, I really need to get a game across the finish line. Otherwise, I'm not sure I'll have the courage to embark on yet another game project!&lt;/p&gt;
&lt;h3 id=&quot;the-things-i-am-still-not-satisfied-with&quot;&gt;The Things I Am Still Not Satisfied With&lt;/h3&gt;
&lt;p&gt;I suppose this is something every creative endeavor struggles with. I wish we could polish the scenes a little more, make the story more vibrant, bring the characters to life, and make our little fictional town feel more realistic and expansive. The list goes on and on. But we can't stay hidden forever. At some point, when things are good enough, we have to let our creations out into the world and see how they fare. Perfection is a difficult goal to chase, and perhaps an impossible one to reach.&lt;/p&gt;
&lt;p&gt;On the model side, I can't honestly say the conversation experience is optimal yet. NPCs can sometimes be overly restrictive or reluctant to reveal information, making it unnecessarily difficult for players to piece together clues and solve the mystery. I suspect the best &lt;strong&gt;long-term solution might be to train a custom model specifically for this kind of interaction&lt;/strong&gt;, perhaps taking inspiration from how Character.AI approaches conversational characters. That's certainly something worth exploring further.&lt;/p&gt;
&lt;h3 id=&quot;remarks&quot;&gt;Remarks&lt;/h3&gt;
&lt;p&gt;I'll share more about the technical side of using AI in game development in a future post.&lt;/p&gt;
&lt;h3 id=&quot;references&quot;&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://store.steampowered.com/app/4484570/A_Detective_Story/&quot;&gt;https://store.steampowered.com/app/4484570/A_Detective_Story/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://store.steampowered.com/news/app/4484570/view/684141995253302069&quot;&gt;https://store.steampowered.com/news/app/4484570/view/684141995253302069&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/31253/devlog-2026-10-15-a-detective-story-making-it-to-the-release</guid>
<pubDate>Fri, 16 Oct 2026 02:41:59 +0000</pubDate>
</item>
<item>
<title>Fantasy Planet Painter 2.0</title>
<link>https://coderlegion.com/30974/fantasy-planet-painter-2-0</link>
<description>&lt;p&gt;&lt;strong&gt;Fantasy Planet Painter 2.0&lt;/strong&gt; is here! This is our biggest update so far: a completely rebuilt application, a new physical terrain system, richer rendering, layered painting, fantasy world layers generation, and a much more capable &lt;strong&gt;World to Beyond&lt;/strong&gt; integration.&lt;/p&gt;
&lt;h3 id=&quot;the-basics-from-a-sketch-to-a-world&quot;&gt;The Basics: From a Sketch to a World&lt;/h3&gt;
&lt;p&gt;In our &lt;a rel=&quot;nofollow&quot; href=&quot;https://store.steampowered.com/news/app/3336490/view/704405656884478635&quot;&gt;earlier introduction to 2.0&lt;/a&gt;, we shared a first look at where Fantasy Planet Painter was heading. Now we would like to take a closer look at what you can create with this release.&lt;/p&gt;
&lt;p&gt;Fantasy Planet Painter started with a simple approach to world-map creation: paint the broad shape of a world on a cell grid, and a procedural algorithm generates the details. A creator focuses on where continents, oceans, and mountains belong without having to draw every terrain detail.&lt;/p&gt;
&lt;p&gt;That idea remains at the heart of 2.0. What has changed is how much more you can do around it. Heights can now have a physical meaning. Terrain can be built in layers. A painted planet can become an atlas of countries, cultures, settlements, and roads. And jump into very specific region of a world with additional details. After you are done experimenting with the shape, you can export the map and interactively play in Beyond All Reason.&lt;/p&gt;
&lt;h3 id=&quot;a-new-physical-planet&quot;&gt;A New Physical Planet&lt;/h3&gt;
&lt;p&gt;The new &lt;strong&gt;Physical World&lt;/strong&gt; generator works with elevations measured in meters, and provides broader control of flexible height ranges, with 12 levels by default. This gives you finer control over the relationship between your painted terrain, the generated detail, and the sea.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Continuous elevations:&lt;/strong&gt; paint specific heights, from deep ocean floors to mountain peaks, with twelve customizable paint bands to keep everyday painting approachable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Independent sea level:&lt;/strong&gt; explore how changing the water level reshapes your coastlines without repainting the whole planet.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Planet size and relief:&lt;/strong&gt; adjust the planet radius and the strength of its terrain, with procedural detail that takes physical scale into account.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seed control:&lt;/strong&gt; keep a result you like or try a different realization of the same broad geography.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Painted terrain alone:&lt;/strong&gt; turn off the added procedural detail when you want to see the heightfield you have authored more directly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terrain operations:&lt;/strong&gt; set, add, multiply, reshape with a power curve, smooth, normalize, terrace, or invert elevations. Operations can target land, water, or the whole canvas, and work with selections; coast preservation is available where appropriate.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are also &lt;strong&gt;(experimental)&lt;/strong&gt; &lt;strong&gt;fourteen editable preset terrain recipes&lt;/strong&gt;, including Volcano and Fractious, for exploring different starting shapes. Recipes combine a seed and density with editable generation instructions, can be previewed before applying them, and can be retained with a terrain layer. They are useful both as starting points and as material to paint over.&lt;/p&gt;
&lt;h3 id=&quot;more-ways-to-create-your-world&quot;&gt;More Ways to Create Your World&lt;/h3&gt;
&lt;p&gt;A world can feel very different as an atlas, a globe, or a view looking across its surface. 2.0 expands the rendering tools so you can explore those differences without rebuilding your geography.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Physical terrain colouring:&lt;/strong&gt; elevation, slope, and climate views, alongside the familiar classic palettes. Latitude can influence the appearance of the land and polar regions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terrain lighting:&lt;/strong&gt; cast shadows, sky occlusion, adjustable sun direction and height, and shading exaggeration to bring out the shape of the landscape.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A rendered 3D view:&lt;/strong&gt; look toward the terrain from different distances and angles, with atmosphere, ocean, and volumetric clouds. Adjust cloud coverage and height to change the mood of a scene.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Geographic guides:&lt;/strong&gt; latitude and longitude grids, plus a kilometre scale tied to the size of your planet.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Live previews:&lt;/strong&gt; see updates while painting, with background rendering, progress feedback, and cancellation for longer renders.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A clearer connection between canvas and preview:&lt;/strong&gt; the viewport outline helps you keep track of the area you are looking at when working across projections.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The eleven map projections are the same &lt;strong&gt;Equirectangular, Mercator, Orthographic, Gall–Peters, Mollweide, Interrupted sinusoidal, Stereographic, Gnomonic, Icosahedral, Equal-area azimuthal, and Conical&lt;/strong&gt;. Use them to compare the same world from different perspectives, or choose the one that suits your finished map.&lt;/p&gt;
&lt;h3 id=&quot;painting-layers-and-more-space-to-experiment&quot;&gt;Painting, Layers, and More Space to Experiment&lt;/h3&gt;
&lt;p&gt;The painting workspace has been rebuilt around a more flexible canvas and &lt;strong&gt;terrain layers&lt;/strong&gt;, allowing a non-destructive workflow. This allows you to manage different features and separate terrain changes from exiting shapes, such as trying a different mountain range, or hiding a layer to compare different versions of your geography.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Layer controls:&lt;/strong&gt; add, name, reorder, hide, lock, and remove terrain layers. Transparent areas and the eraser reveal what is underneath.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Direct and shaped painting:&lt;/strong&gt; Point, Box, Circle, and Polygon tools for everything from a single cell to a whole landmass.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Soft and blending brushes:&lt;/strong&gt; shape transitions with Linear, Smoothstep, Quadratic, Cubic, Exponential, or Gaussian falloff.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Two kinds of fill:&lt;/strong&gt; fill a connected neighbourhood or replace matching heights across the canvas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selections:&lt;/strong&gt; isolate part of the map for painting and terrain operations, or move selected geography.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Canvas transformations:&lt;/strong&gt; raise or lower terrain, shift with wrapping or clipping, flip a map, and fill areas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grid controls:&lt;/strong&gt; resize, expand or shrink the canvas, and double or halve its resolution.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Painting conveniences:&lt;/strong&gt; zoom and pan, preview the brush footprint, and pick an existing height from the canvas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Undo and redo:&lt;/strong&gt; revisit strokes and other changes through the history, with clearer handling of unsaved work.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Several of these tools grew through the 1.x updates. They now sit together in a workspace designed for the larger range of things a 2.0 world can contain.&lt;/p&gt;
&lt;h3 id=&quot;build-a-fantasy-world-to-suit-your-terrain&quot;&gt;Build a Fantasy World to Suit Your Terrain&lt;/h3&gt;
&lt;p&gt;Once you have a Physical World you like, &lt;strong&gt;world layers&lt;/strong&gt; can develop it into a fantasy atlas. Choose the number of countries and settlements, the map detail, and a presentation style, then generate a world that follows your geography.&lt;/p&gt;
&lt;p&gt;This can add &lt;strong&gt;biomes, rivers, lakes, countries, borders, cultures, religions, provinces, settlements, place names, and roads&lt;/strong&gt;. Building the atlas leaves your painted terrain intact, and rebuilding can be undone if you prefer the previous result.&lt;/p&gt;
&lt;p&gt;Different map presets let you explore different sides of the same world:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Political:&lt;/strong&gt; countries, borders, towns, rivers, and roads.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cultural, Religions, and Provinces:&lt;/strong&gt; the people of the world, their beliefs, and its internal divisions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Biomes, Physical, and Heightmap:&lt;/strong&gt; the landscape, climate zones, ice, and elevation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Temperature, Precipitation, and Population:&lt;/strong&gt; climate and patterns of habitation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Goods, Trade, and Military:&lt;/strong&gt; resources, markets, trade routes, and armies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Emblems and Points of interest:&lt;/strong&gt; heraldry and places worth a journey.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also switch individual overlays on and off to create your own combination. Changing what is shown does not regenerate the world, so you can move between a political map and a climate map while keeping the same underlying geography.&lt;/p&gt;
&lt;p&gt;For your own landmarks, &lt;strong&gt;named world locations&lt;/strong&gt; let you mark locations and retain their names and coordinates as you change projection. A useful way to start making the world yours is to name the first island, mountain, or city that catches your imagination.&lt;/p&gt;
&lt;h3 id=&quot;a-world-with-many-styles&quot;&gt;A World with Many Styles&lt;/h3&gt;
&lt;p&gt;World layers come with &lt;strong&gt;fifteen presentation styles&lt;/strong&gt;: Atlas, Parchment, Ink, Climate, Ancient, Political Atlas, Clean, Cyberpunk, Dark Seas, Gloom, Light, Monochrome, Night, Pale, and Watercolor.&lt;/p&gt;
&lt;p&gt;Each changes the colours, lettering, and linework while keeping the geography in place. The same world can become a restrained reference atlas, an old parchment chart, a dark ocean map, or a softer illustrated view. You can explore the styles without committing to a new generation of the world.&lt;/p&gt;
&lt;p&gt;When it is time to share your work, export the terrain and visible world layers together as an image, or take the world layers out separately as &lt;strong&gt;vector SVG&lt;/strong&gt; or &lt;strong&gt;transparent PNG&lt;/strong&gt;. Vector exports include shapes and outlined lettering, with optional legend and scale, for further composition in a drawing application.&lt;/p&gt;
&lt;h3 id=&quot;save-and-share-your-worlds&quot;&gt;Save and Share Your Worlds&lt;/h3&gt;
&lt;p&gt;The &lt;strong&gt;&lt;code&gt;.fpp2&lt;/code&gt; document format&lt;/strong&gt; keeps terrain layers, physical elevations, sea level, seeds and generation settings, named places, and the generated atlas with its presentation. It is the format to use when you want to continue developing a 2.0 world.&lt;/p&gt;
&lt;p&gt;Your existing &lt;strong&gt;&lt;code&gt;.planet&lt;/code&gt; files still open&lt;/strong&gt;. Legacy export is also available for older workflows, including the bridge to World to Beyond. That export flattens the visible terrain into the original nine height categories, so keep a &lt;code&gt;.fpp2&lt;/code&gt; master to preserve the new layers, places, and atlas.&lt;/p&gt;
&lt;p&gt;Other import and export options include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Heightmap import:&lt;/strong&gt; greyscale images, colour-to-height mapping, and Terrain-RGB elevation data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;16-bit heightmaps:&lt;/strong&gt; take continuous terrain elevations into other terrain tools and game workflows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Painted map images and text:&lt;/strong&gt; exchange the underlying grid as an image or in the classic text format.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendered PNGs:&lt;/strong&gt; export Physical and Legacy views up to &lt;strong&gt;8K on the long edge&lt;/strong&gt;, and Flat Land views up to &lt;strong&gt;4K&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drag-and-drop opening:&lt;/strong&gt; bring an existing world into the painting workspace.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The rebuilt interface also brings a more adjustable workspace, scrollable palettes, canvas navigation, and built-in help for the main workflows.&lt;/p&gt;
&lt;h3 id=&quot;flat-worlds-and-familiar-favourites&quot;&gt;Flat Worlds and Familiar Favourites&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Physical Planet&lt;/strong&gt; is the new focus moving forward, but the other ways of making maps remain part of the app.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Legacy&lt;/strong&gt; preserves the original generator and its nine height categories, eleven projections, and eighteen themes. It is there for returning projects and for anyone who enjoys the original approach.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flat Land&lt;/strong&gt; is a useful choice for bounded maps rather than whole planets. It offers 2D and relief views, eight themes, and controls for erosion, hydrology, inland lakes, and the water plane. It can take your work in a different direction when you are thinking about a single landscape or a game map.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;experimental-steam-achievements&quot;&gt;Experimental Steam Achievements&lt;/h3&gt;
&lt;p&gt;We are also adding &lt;strong&gt;experimental Steam achievements&lt;/strong&gt; to bring a little extra fun to using the app. They celebrate creative milestones and encourage you to try different tools, views, painting techniques, and worldbuilding possibilities.&lt;/p&gt;
&lt;p&gt;Alongside them is a curated set of achievement illustrations with a stylized look. We hope these small rewards adds a bit more reward to your journey as you explore and create. They are also useful to guide you what to try next.&lt;/p&gt;
&lt;p&gt;Achievement support is experimental in this release, and we welcome feedback if an unlock does not behave as expected. Some milestones are tied to capabilities beyond the current public build, so the achievement list will continue to develop with the app.&lt;/p&gt;
&lt;h3 id=&quot;world-to-beyond-a-rebuilt-map-studio&quot;&gt;World to Beyond: A Rebuilt Map Studio&lt;/h3&gt;
&lt;p&gt;The free &lt;a rel=&quot;nofollow&quot; href=&quot;https://store.steampowered.com/app/4444360/Fantasy_Planet_Painter__World_to_Beyond/&quot;&gt;World to Beyond DLC&lt;/a&gt; now arrives alongside 2.0 with a rebuilt GUI for creating maps for &lt;strong&gt;Beyond All Reason and other Spring/Recoil games&lt;/strong&gt;. The major road block from previous teaser is the now fully integrated map format generator, getting rid of third-party dependencies.&lt;/p&gt;
&lt;p&gt;The earlier exporter centred on turning a planet into a map. The new studio workflow gives the other parts of that map their own space: resources, vegetation, water, scenery, and the final output.&lt;/p&gt;
&lt;p&gt;Its seven stages cover the complete project:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source:&lt;/strong&gt; begin with a painted planet or a procedural map, choose a generation scheme, and set the map size.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terrain:&lt;/strong&gt; tune height range; procedural sources offer terrain styles, themes, generation controls, erosion, previews, and playability readouts. Imported heightmaps and ground textures provide further ways to bring in your own material.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metal:&lt;/strong&gt; place resources in a dedicated painting workspace, with automatic placement and brush controls including softness and symmetry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grass:&lt;/strong&gt; grow vegetation from terrain rules, then paint over the result to refine its coverage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Water:&lt;/strong&gt; adjust the water appearance and judge it against a live coastline sample.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Features:&lt;/strong&gt; use generated scenery or import &lt;code&gt;.obj&lt;/code&gt;, &lt;code&gt;.gltf&lt;/code&gt;, and &lt;code&gt;.glb&lt;/code&gt; models. Set scatter rules and paint a separate placement mask for each model—for example, trees along a ridge and boulders near the shore—and preview where they will land.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output:&lt;/strong&gt; build a complete &lt;code&gt;.sd7&lt;/code&gt; map archive, including terrain, textures, resources, grass, water settings, and scenery, with progress feedback and cancellation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is also a &lt;strong&gt;real-time 3D viewer&lt;/strong&gt; for inspecting the terrain, water, vegetation, scenery, resource spots, and start positions before compiling the archive. &lt;strong&gt;It currently requires OpenGL 4.3 support and will not work on macOS&lt;/strong&gt;. And if you are patient enough to read till this line - &lt;em&gt;there are more interactive ways to inspect and play with your map coming in future updates!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Studio projects can be saved as &lt;strong&gt;&lt;code&gt;.w2b&lt;/code&gt; files&lt;/strong&gt;, retaining settings and painted channels so you can return to a map over several sessions. Custom model files remain external references, so keep those assets with your project.&lt;/p&gt;
&lt;p&gt;Whether you want to turn an unusual planet into a battlefield or just use W2B as a really easy utility to assembly a fully functional BAR map, there is a lot of freedom here.&lt;/p&gt;
&lt;h3 id=&quot;availability&quot;&gt;Availability&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Free for existing owners:&lt;/strong&gt; 2.0 is an update to Fantasy Planet Painter, with the free World to Beyond DLC releasing alongside it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windows first:&lt;/strong&gt; macOS is coming later; we will share more when it is ready.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Updated pricing:&lt;/strong&gt; the price for new purchases has already changed to reflect the app's progress. Regional prices are shown on the Steam store.&lt;/li&gt;
&lt;li&gt;The current build is released with the hope that you could try the new features early on - it may contain many features that we have not tested thoroughly - expect follow-up updates to address rough corners.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;references-1&quot;&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://store.steampowered.com/news/app/3336490/view/708909893000627309&quot;&gt;Steam Annoucement&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>Launches</category>
<guid isPermaLink="true">https://coderlegion.com/30974/fantasy-planet-painter-2-0</guid>
<pubDate>Tue, 13 Oct 2026 17:57:24 +0000</pubDate>
</item>
<item>
<title>DevLog 20260919: Upcoming Fantasy Planet Painter 2.0 and the Making of It</title>
<link>https://coderlegion.com/27752/devlog-20260919-upcoming-fantasy-planet-painter-2-0-and-the-making-of-it</link>
<description>&lt;h2 id=&quot;fantasy-planet-painter&quot;&gt;Fantasy Planet Painter&lt;/h2&gt;
&lt;p&gt;Whole-planet-scale fictional world-building: continents, mountain ranges, rivers, valleys, and features as small as individual hills. Maybe eventually trees, buildings, houses, roads, and cities too?&lt;/p&gt;
&lt;p&gt;That has always been roughly the idea behind Fantasy Planet Painter (FPP).&lt;/p&gt;
&lt;p&gt;Making a good-looking fantasy map is one part of the goal, but the longer-term idea is more ambitious: making an entire fictional planet something you can actually author, organize, inspect, render, and use.&lt;/p&gt;
&lt;p&gt;With the upcoming Fantasy Planet Painter 2.0, we are finally starting to build more seriously toward that idea.&lt;/p&gt;
&lt;h3 id=&quot;the-beginning&quot;&gt;The Beginning&lt;/h3&gt;
&lt;p&gt;FPP had a rather humble origin: I needed to create a world map.&lt;/p&gt;
&lt;p&gt;Naturally, I started with GIS software. First ArcGIS, then QGIS, and along the way I learned my way through map projections, layers, coordinate systems, GeoServers, and all the other fun stuff that comes with GIS.&lt;/p&gt;
&lt;p&gt;GIS is incredibly powerful, but for making a fictional planet from scratch, the workflow was not particularly efficient. I wasn't really trying to analyze an existing world; I wanted to sit down and &lt;em&gt;make one&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Eventually I came across Torben Mogensen's &lt;code&gt;planet&lt;/code&gt; program (&lt;code&gt;planet.exe&lt;/code&gt; on Windows). It was rather eye-opening because the program works on an entire spherical planet at once instead of treating the world as just another flat image.&lt;/p&gt;
&lt;p&gt;The underlying terrain generator uses recursive tetrahedral subdivision to produce planetary terrain, and it can render the generated planet using many different cartographic projections. That became the technical foundation from which FPP originally grew. We later ported the original code to C# and gradually modernized and extended it.&lt;/p&gt;
&lt;h3 id=&quot;the-start&quot;&gt;The Start&lt;/h3&gt;
&lt;p&gt;The first practical problem was obvious: &lt;code&gt;planet.exe&lt;/code&gt; is essentially a command-line program, and custom maps are represented through text-based input.&lt;/p&gt;
&lt;p&gt;That is powerful if you already know exactly what you want to type, but not particularly convenient if you are trying to &lt;em&gt;draw&lt;/em&gt; a world.&lt;/p&gt;
&lt;p&gt;Before FPP, I even made several small command-line utilities for operations such as moving and scaling cells around. It technically worked, but authoring by repeatedly modifying parameters, rendering an image, looking at the result, and trying again was painfully inefficient.&lt;/p&gt;
&lt;p&gt;So the first major goal became exposing all of this through a much more usable graphical interface.&lt;/p&gt;
&lt;p&gt;That took much longer than expected.&lt;/p&gt;
&lt;p&gt;The original code is quite old and was never designed with this kind of interactive editing workflow in mind. Adding a GUI was therefore not simply a matter of putting some buttons around it. Rendering, state management, editing, visualization, save files, projections, cross-platform support, and eventually performance all had to be integrated around the original generator.&lt;/p&gt;
&lt;p&gt;Version 1.0 was really the beginning of that process rather than its end.&lt;/p&gt;
&lt;p&gt;Over time we added higher-resolution authoring, more output options, brushes, polygon editing, region selection, map themes, improved rendering controls, and substantial performance work. By v1.4, techniques we had been developing for Divooka - erosion, terrain processing, procedural coloring, texturing, and rendering - also started finding their way back into FPP.&lt;/p&gt;
&lt;h3 id=&quot;the-road-map&quot;&gt;The Road Map&lt;/h3&gt;
&lt;p&gt;Once you start thinking seriously about authoring an &lt;em&gt;entire planet&lt;/em&gt;, a lot of other problems immediately appear.&lt;/p&gt;
&lt;p&gt;Some of the major ones are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Location and region management&lt;/li&gt;
&lt;li&gt;Local and regional maps&lt;/li&gt;
&lt;li&gt;Countries, cultures, biomes, settlements, etc.&lt;/li&gt;
&lt;li&gt;Different levels of detail&lt;/li&gt;
&lt;li&gt;Map rendering and map serving&lt;/li&gt;
&lt;li&gt;Exporting the same world into other tools and applications&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is why I don't really think of FPP as only a procedural map generator.&lt;/p&gt;
&lt;p&gt;A nice-looking map is important, of course. But a fictional world can easily contain thousands of named places and many completely different scales of information. A mountain range visible on a world map may contain hundreds of valleys, rivers, lakes, roads, towns, and individual terrain features that should not even exist at the resolution of the original world map.&lt;/p&gt;
&lt;p&gt;That creates an interesting authoring problem.&lt;/p&gt;
&lt;p&gt;A single giant bitmap is clearly not the answer. At the same time, splitting everything into unrelated maps loses the fact that they all belong to the same world.&lt;/p&gt;
&lt;p&gt;Our original public roadmap already described Version 2 as &lt;strong&gt;Advanced World Editing&lt;/strong&gt;, beginning with location management, followed eventually by better brushes, color control, biome editing, 3D worlds, roads, and cities. The exact implementation has changed quite a lot since that roadmap was written, but the overall direction has not.&lt;/p&gt;
&lt;p&gt;The important part is that FPP needs to gradually move from &quot;a program that generates a picture of a planet&quot; toward &quot;a program that understands the things making up that planet.&quot;&lt;/p&gt;
&lt;h3 id=&quot;feedback-and-improvements&quot;&gt;Feedback and Improvements&lt;/h3&gt;
&lt;p&gt;There haven't been many direct comments on the Steam community page so far. FPP is still a small and fairly niche product.&lt;/p&gt;
&lt;p&gt;Refund information, however, gives us another source of feedback, and the pattern is fairly understandable: people want more power, more detailed editing, and more features.&lt;/p&gt;
&lt;p&gt;None of those are particularly surprising.&lt;/p&gt;
&lt;p&gt;They correspond closely to limitations we were already aware of in Version 1.x. FPP became quite good at quickly establishing the large-scale shape of a planet, but there is a substantial gap between sketching continents and actually authoring the world &lt;em&gt;inside&lt;/em&gt; those continents.&lt;/p&gt;
&lt;p&gt;That feedback has helped us decide which parts of the longer-term roadmap should move closer to the front.&lt;/p&gt;
&lt;h3 id=&quot;version-2-0&quot;&gt;Version 2.0&lt;/h3&gt;
&lt;p&gt;There are three big areas we want to address at the beginning of Version 2.0:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;World regions&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A new custom spherical tetrahedral-subdivision system with real-world physical units&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Major mapping, editing, theming, and rendering improvements&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The first one is perhaps the most important structurally.&lt;/p&gt;
&lt;p&gt;Regions give us a way to start treating parts of the world as actual objects rather than just pixels or height values. Once regions exist properly, a lot of other ideas become much easier to build around them: locations, countries, biome areas, local maps, selections, metadata, exports, and eventually much more detailed world-building information.&lt;/p&gt;
&lt;p&gt;The second area goes much deeper into FPP's original foundation.&lt;/p&gt;
&lt;p&gt;The new subdivision system is also closely tied to another important change in 2.0: &lt;strong&gt;the metric system&lt;/strong&gt;. FPP now operates using real physical units, with distances and elevations represented in meters rather than abstract map values. A planet can have an Earth-scale radius, mountains can genuinely be several kilometres high, and distances between locations can be measured and discussed precisely.&lt;/p&gt;
&lt;p&gt;This sounds like a relatively small change, but it makes world-building much more practical. Terrain, regions, local maps, roads, settlements, and eventually buildings can all exist within the same physical frame of reference instead of relying on arbitrary scales that change depending on context.&lt;/p&gt;
&lt;p&gt;The tetrahedral subdivision approach has served FPP very well, but we are now experimenting with our own spherical subdivision implementation and data structures. Having control over this level of the system lets us build that real-world scale directly into the geometry while also making it easier to integrate editing, generation, resolution changes, region handling, and future algorithms without constantly working around assumptions inherited from the original renderer.&lt;/p&gt;
&lt;p&gt;And finally there is everything users actually interact with every day: mapping, editing, theming, and rendering.&lt;/p&gt;
&lt;p&gt;Version 1.x accumulated many useful features, sometimes rather experimentally. Version 2 gives us a chance to reorganize some of those ideas around a more coherent model instead of continuously extending what was originally a relatively simple world-map painter.&lt;/p&gt;
&lt;p&gt;These three areas should provide a much better foundation for extending FPP going forward.&lt;/p&gt;
&lt;h3 id=&quot;the-w2b-project&quot;&gt;The W2B Project&lt;/h3&gt;
&lt;p&gt;A surprisingly useful side project in all of this has been &lt;strong&gt;World to Beyond&lt;/strong&gt;, or W2B.&lt;/p&gt;
&lt;p&gt;It was originally proposed mostly out of curiosity.&lt;/p&gt;
&lt;p&gt;I sometimes play &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.beyondallreason.info/&quot;&gt;Beyond All Reason&lt;/a&gt; with my friend. Well, nowadays he is so good - even though I was the one who first got him into the game - that he no longer plays with me 😟.&lt;/p&gt;
&lt;p&gt;At some point he looked at FPP and said that its maps kind of looked like BAR maps, so: couldn't FPP make one?&lt;/p&gt;
&lt;p&gt;Visually, the answer seemed like it should be &quot;yes.&quot;&lt;/p&gt;
&lt;p&gt;Technically, of course, it was considerably more complicated.&lt;/p&gt;
&lt;p&gt;BAR uses the Spring RTS engine, and producing an actual playable map means much more than exporting a nice-looking heightmap. Terrain needs to work from a gameplay perspective. You have textures, metal distribution, grass, water, features, map metadata, engine-specific formats, reachability, and all kinds of details that don't really matter when the final output is only an image.&lt;/p&gt;
&lt;p&gt;So we made a &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/JDSvBHWeLQg?si=LWabE7djm2_9qVHb&quot;&gt;first attempt&lt;/a&gt;, but never really published much around it.&lt;/p&gt;
&lt;p&gt;People on Discord also quickly pointed out some obvious weaknesses, particularly the lack of convincing erosion and proper texturing.&lt;/p&gt;
&lt;p&gt;Conveniently, those were exactly the kinds of problems we had independently started working on in &lt;a rel=&quot;nofollow&quot; href=&quot;https://store.steampowered.com/app/4770820/Divooka_Explore_Demo/&quot;&gt;Divooka&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Over the past year, our terrain work in Divooka has expanded from basic noise generation into erosion, hydrology analysis, masks, terrain coloration, texturing, and eventually PBR terrain rendering. FPP has already started benefiting from some of that work.&lt;/p&gt;
&lt;p&gt;So when we returned to W2B, we were in a rather different position.&lt;/p&gt;
&lt;p&gt;The new W2B has now been rewritten from scratch. Earlier prototypes required users to provide a template extracted from an existing map, which was awkward both technically and from a redistribution/licensing perspective. The current implementation writes the core Spring map files - &lt;code&gt;.smf&lt;/code&gt;, &lt;code&gt;.smt&lt;/code&gt;, and &lt;code&gt;mapinfo.lua&lt;/code&gt; - itself.&lt;/p&gt;
&lt;p&gt;The authoring process has also grown into several distinct stages: source terrain, terrain setup, metal, grass, water, features, and final output. In other words, it is slowly becoming an actual map-making pipeline rather than an FPP export button.&lt;/p&gt;
&lt;p&gt;And this experiment is useful for FPP itself.&lt;/p&gt;
&lt;p&gt;It forces us to deal with questions that don't appear when creating a world map purely for viewing: Is this terrain navigable? What happens when we look much closer? Where does vegetation belong? How do large-scale shapes survive when converted into local terrain? How should a procedural world turn into something another application can actually &lt;em&gt;use&lt;/em&gt;?&lt;/p&gt;
&lt;p&gt;Those questions are very relevant to where we want Fantasy Planet Painter to go.&lt;/p&gt;
&lt;p&gt;With all the work that has gone into FPP, Divooka, procedural terrain generation, and the first W2B experiment, we are much better equipped this time around.&lt;/p&gt;
&lt;p&gt;And the new W2B is already much more powerful - and, importantly, much prettier - than the original attempt.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/6gaw513wu8z7xx7gb4gm.png&quot; alt=&quot;Methodox Fantasy Planet Painter World to Beyond Plugin for BAR Map Making - Procedural&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/5sj5wabqxdwty6s73ulu.png&quot; alt=&quot;Methodox Fantasy Planet Painter World to Beyond Plugin for BAR Map Making - Reachability&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/macgoin0zp6gps646qk6.png&quot; alt=&quot;Methodox Fantasy Planet Painter World to Beyond Plugin for BAR Map Making - Grass Map&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;going-forward&quot;&gt;Going Forward&lt;/h3&gt;
&lt;p&gt;Fantasy Planet Painter started from a relatively simple problem: I wanted a convenient way to draw a fictional world map.&lt;/p&gt;
&lt;p&gt;That problem turned out to contain a surprisingly large number of smaller problems.&lt;/p&gt;
&lt;p&gt;Some are mathematical. Some are GIS problems. Some are rendering problems. Some are UI problems. And increasingly, some are really data-modeling problems: how do you represent an entire fictional world in a way that remains editable from the scale of a planet down to individual regions - and where those scales correspond to actual physical measurements?&lt;/p&gt;
&lt;p&gt;With 2.0, an Earth-sized world is actually Earth-sized, mountains can be described in kilometres, and distances between places have a concrete meaning. That gives the rest of the world-building system a much more practical foundation.&lt;/p&gt;
&lt;p&gt;Version 1.x gave us a functional planet painter.&lt;/p&gt;
&lt;p&gt;Version 2.0 is where we start taking the &quot;world-building&quot; part much more seriously.&lt;/p&gt;
&lt;p&gt;There is still a lot to figure out, and some of the ideas described here will certainly change as we implement them. But the pieces developed over the past year - especially the work on terrain generation in Divooka and experiments such as World to Beyond - are starting to connect together rather nicely.&lt;/p&gt;
&lt;p&gt;We will share more as 2.0 takes shape.&lt;/p&gt;
&lt;h3 id=&quot;references-2&quot;&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://fantasyplanetpainter.com/&quot;&gt;Fantasy Planet Painter Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://fantasyplanetpainter.com/road-map/index.html&quot;&gt;Original FPP Roadmap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://store.steampowered.com/app/3336490/Fantasy_Planet_Painter/&quot;&gt;Fantasy Planet Painter on Steam&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/watch?v=_-83stjP5D0&quot;&gt;Fantasy Planet Painter YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Utilities/FantasyPlanetPainter/index.html&quot;&gt;Methodox Wiki – Fantasy Planet Painter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Utilities/FantasyPlanetPainter/WorldToBeyond/&quot;&gt;Methodox Wiki – World to Beyond&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20260731-fpp-v140-and-divooka-explore-demo-updates-45fc&quot;&gt;DevLog 20260731: FPP v1.4.0 and Divooka Explore Demo Updates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://store.steampowered.com/news/app/3336490/view/704405656884478635&quot;&gt;Steam Announcement&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/27752/devlog-20260919-upcoming-fantasy-planet-painter-2-0-and-the-making-of-it</guid>
<pubDate>Sat, 19 Sep 2026 15:03:37 +0000</pubDate>
</item>
<item>
<title>Fantasy Planet Painter 2 - 2026 Launch Trailer</title>
<link>https://coderlegion.com/27678/fantasy-planet-painter-2-2026-launch-trailer</link>
<description>&lt;p&gt;Fantasy Planet Painter is a world building tool/world map editor by Methodox Technologies, Inc. It allows users to paint world maps using coarse pixels at high level while the algorithm generates all the intricate details procedurally. You can simply sketch out your planet’s main features - mountains, valleys, and oceans. Once you’ve laid down the basics, Fantasy Planet Painter steps in to handle the finer details, filling in realistic terrains that bring your vision to life.&lt;/p&gt;
&lt;p&gt;The 2.0 update brings refreshed GUI and new world generation capabilities and enhanced editor experience and workflows. Notably, the &lt;strong&gt;world regions&lt;/strong&gt; feature will enable creators to &lt;em&gt;modify detailed terrain regions while still working on a planet-scale canvas&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;For anyone who loves creating worlds, whether for stories, games, or just for fun, Fantasy Planet Painter makes it simple. Fantasy Planet Painter gives you the power to craft beautiful, immersive worlds from scratch. It’s your imagination, brought to life, one brushstroke at a time.&lt;/p&gt;
&lt;p&gt;Learn more from &lt;a rel=&quot;nofollow&quot; href=&quot;https://store.steampowered.com/news/app/3336490/view/704405656884478635&quot;&gt;Steam annoucement&lt;/a&gt;!&lt;/p&gt;
</description>
<category>Videos</category>
<guid isPermaLink="true">https://coderlegion.com/27678/fantasy-planet-painter-2-2026-launch-trailer</guid>
<pubDate>Sat, 19 Sep 2026 01:04:36 +0000</pubDate>
</item>
<item>
<title>Methodox Voxel Sandbox | Launch Trailer | Methodox Voxel Scene Viewer</title>
<link>https://coderlegion.com/25458/methodox-voxel-sandbox-launch-trailer-methodox-voxel-scene-viewer</link>
<description>&lt;p&gt;&lt;strong&gt;Methodox Voxel Sandbox&lt;/strong&gt; is a Windows-only voxel world generator, editor and renderer. You can randomly generate a voxel environment, build inside it, then photograph it with a digital camera.&lt;/p&gt;
&lt;h3 id=&quot;core-features&quot;&gt;Core Features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Seed-Based World Generation&lt;/strong&gt;: Automatically rolls and generates expansive voxel environments from a given seed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;First-Person Editor&lt;/strong&gt;: Walk through the world from a first-person perspective to interact, break blocks, and build new structures.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Progressive Path Tracer (Photo Mode)&lt;/strong&gt;: Renders scenes progressively with light bouncing, glass refraction, metal reflections, glowing objects, clouds, and soft shadows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advanced Camera and Image Controls&lt;/strong&gt;: Fine-tune renders with settings for lenses, lights, quality, exposure, and tone mapping.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;255-Slot Material Palette&lt;/strong&gt;: Build with terrain, vegetation, ores, glass, metal, lights, and full color ramps.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Methodox Voxel Scene Viewer&lt;/strong&gt;: Included download tool that opens external voxel scenes (such as .vox, Goxel, OpenVDB, and MCEdit schematics) at any scale to render them with the path-tracing engine.&lt;/p&gt;
</description>
<category>Videos</category>
<guid isPermaLink="true">https://coderlegion.com/25458/methodox-voxel-sandbox-launch-trailer-methodox-voxel-scene-viewer</guid>
<pubDate>Wed, 26 Aug 2026 18:55:20 +0000</pubDate>
</item>
<item>
<title>A Detective Story: The Case of The Dead Office Guy (Game Trailer)</title>
<link>https://coderlegion.com/12443/a-detective-story-the-case-of-the-dead-office-guy-game-trailer</link>
<description>&lt;h3 id=&quot;overview-1&quot;&gt;Overview&lt;/h3&gt;
&lt;p&gt;In the quiet town of Baytown, an unremarkable man lies dead under suspicious circumstances. Rumors ripple through the streets. Secrets long buried begin to surface. The whole community is buzzing - some in dread, others gripped by dark fascination.&lt;/p&gt;
&lt;p&gt;A Detective Story is a compact detective simulator that brings generative AI to the heart of interactive fiction.&lt;/p&gt;
&lt;p&gt;Step into the role of detective in this small-scale murder investigation. Interrogate a cast of AI-powered townsfolk, each with their own motives, fragmented memories, and the potential to lie or mislead. Explore the map to uncover physical evidence and hidden clues. Piece it all together before time runs out.&lt;/p&gt;
&lt;h3 id=&quot;game-guide&quot;&gt;Game Guide&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Your mission: Solve the murder as efficiently as possible - minimize days elapsed and questions spent.&lt;/li&gt;
&lt;li&gt;Bringing suspects to the station costs valuable time (days). Choose your interviews with care.&lt;/li&gt;
&lt;li&gt;These are informal interrogations - no formal oaths, no truth serum. Witnesses and suspects may deceive, omit, or hide the truth.&lt;/li&gt;
&lt;li&gt;You have only 3 questions per interview. Make every one count.&lt;/li&gt;
&lt;li&gt;Stay in character for maximum immersion: Ask about alibis, relationships, timelines, strange sightings, and contradictions.&lt;/li&gt;
&lt;li&gt;Cross-check stories, hunt inconsistencies, and link conversations to evidence found on the map.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;hardware-requirements&quot;&gt;Hardware Requirements&lt;/h3&gt;
&lt;p&gt;A Detective Story is lightweight and runs smoothly on modest hardware. It requires at least 10 GB of system RAM (DRAM) - with no heavy VRAM demands.&lt;/p&gt;
</description>
<category>Videos</category>
<guid isPermaLink="true">https://coderlegion.com/12443/a-detective-story-the-case-of-the-dead-office-guy-game-trailer</guid>
<pubDate>Fri, 06 Mar 2026 19:27:09 +0000</pubDate>
</item>
<item>
<title>Weekly Update 2026-01-11</title>
<link>https://coderlegion.com/9555/weekly-update-2026-01-11</link>
<description>&lt;p&gt;This week was mostly about tightening up the foundations of our tools rather than pushing new features. A lot of our older experiments were starting to show their age, so we spent time cleaning things up and getting the core systems into better shape.&lt;/p&gt;
&lt;h4 id=&quot;what-happened-this-week&quot;&gt;What Happened This Week&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Refactoring Neo + Parcel NExT review&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We continued working through refactors on Neo and reviewing the Parcel NExT implementation. Some of the earlier experimental frontend work had spread across multiple assemblies, so small API changes ripple everywhere. Slow, but necessary.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WPF + Nodify wrestling&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A surprising amount of time went into understanding how WPF resource dictionaries, theming, and Nodify's API actually want to behave together. After digging through the quirks, we finally have a clearer picture of how to keep styling and view models consistent. Didn't get as far into custom styling as we hoped, but at least the fundamentals are sorted out.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Serialization groundwork&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Started wiring up the basics for text-based JSON serialization of Divooka graphs/documents. Also began work on package reference records and figuring out how packages get identified and loaded at runtime. All early steps, but important ones.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Graph editor + GUI cleanup&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Made some initial passes at reorganizing the graph editor. Small changes now, but they'll help us build better tools on top later.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fantasy Planet Painter update&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Spent a little time polishing and updating the Steam submission for Fantasy Planet Painter.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Methodox Threads&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We also pushed out an early public release of &lt;strong&gt;Methodox Threads&lt;/strong&gt;, our lightweight branching text environment for managing non-linear AI conversations. The new v0.7 build adds integrated Gen-AI generation directly inside each document pane, configurable providers, and a simple JSON-backed structure for exporting or versioning thought trees. It's essentially a cleaner way to explore tangents, run parallel prompts, and keep complex LLM work organized. Download is available on &lt;a rel=&quot;nofollow&quot; href=&quot;https://methodox.itch.io/threads&quot;&gt;itch.io&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&quot;closing-thoughts&quot;&gt;Closing Thoughts&lt;/h4&gt;
&lt;p&gt;Not a &quot;big features&quot; week, but a surprisingly productive one in terms of future stability. Refactors aren't glamorous, but they make everything that comes next a lot smoother.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/9555/weekly-update-2026-01-11</guid>
<pubDate>Mon, 12 Jan 2026 01:29:36 +0000</pubDate>
</item>
<item>
<title>[Article] Divooka, Where We Are</title>
<link>https://coderlegion.com/4760/article-divooka-where-we-are</link>
<description>&lt;blockquote&gt;&lt;p&gt;Many years from now, when power users, researchers, and historians look at this article, they will see how it all started and glimpse the vision behind our work.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;overview-2&quot;&gt;Overview&lt;/h3&gt;
&lt;p&gt;Ah, vision - a fascinating subject, and a quality not appreciated by all. Like the ability to dream, to imagine, and to dwell in the realm of mathematics and technicality. For imaginative minds, it's dangerous to wander too far; without standing on solid ground, one can hardly make real progress. Often, it pays to be hands-on.&lt;/p&gt;
&lt;p&gt;Divooka is (or is becoming) a complete, general-purpose, high-level, multi-paradigm, flexibly typed, modern visual programming language/system, complete with package management, standard libraries, application frameworks, graph editors, IDE, CLI executor, code generator &amp;amp; compiler, derived frontend apps, examples, documentation, and accompanying tutorials and training materials. We've achieved the majority of this already, so it's not an exaggeration to list them now. What's more, there are still ideas I haven't put into words.&lt;/p&gt;
&lt;p&gt;It's hard to do one thing well, and to achieve all of this with limited resources, we need a good strategy. Of course, the strategy itself is a secret I won't share - it's fairly simple, really, but requires determination and execution power. After a year since incorporation last July, it's useful to review and recap what we've done and where we are.&lt;/p&gt;
&lt;p&gt;In this article, I'll focus on the period from January to August 2025, but to give a complete picture, I find it instructive to look back and highlight outcomes from last year and key lessons learned.&lt;/p&gt;
&lt;h3 id=&quot;early-2024&quot;&gt;Early 2024&lt;/h3&gt;
&lt;p&gt;2024 was about the modernized inception of what Divooka is today.&lt;/p&gt;
&lt;p&gt;Neo was reviewed a third time, and we managed to trim down most legacy code. It was time to think more broadly about the concept of &quot;general-purpose visual programming,&quot; rather than just a demonstration for data analytics. A new repository was created for modern development. &lt;strong&gt;&lt;em&gt;Gospel&lt;/em&gt;&lt;/strong&gt; was conceived.&lt;/p&gt;
&lt;p&gt;Talks with investors and prospective entrepreneurs mostly confirmed that this subject is hard, and we learned there are countless low-code platforms in China. That is good.&lt;/p&gt;
&lt;p&gt;A disagreement with a co-creator helped me settle the fact that we would definitely go desktop-first and worry about the web later.&lt;/p&gt;
&lt;p&gt;The conception of &lt;strong&gt;&lt;em&gt;Quadrinity&lt;/em&gt;&lt;/strong&gt; and the flexible office software framework inspired me to quit my job and move forward.&lt;/p&gt;
&lt;h3 id=&quot;july-sep-2024&quot;&gt;July–Sep 2024&lt;/h3&gt;
&lt;p&gt;During initial incorporation, development was highly focused, and Divooka, though very simplistic, was a well-defined, easy-to-perceive single tool with only a handful of nodes. With Haopu's help on plotting, it quickly looked like a handy little utility for data analytics - &lt;strong&gt;a subject matter we should continue to explore and focus on in the future&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;At the same time, to prepare for public preview and an angel investor meeting, I spent a month making prototypes for many potential application areas, including experimental libraries and web use. Due to lack of sophisticated integration and completeness, I doubt these prototypes made as strong an impression as I hoped.&lt;/p&gt;
&lt;p&gt;On the marketing side, the concept of a case competition was pitched during this time, but it never materialized later in 2024 due to slow progress on software completion and the dashboard library.&lt;/p&gt;
&lt;h3 id=&quot;sep-dec-2024&quot;&gt;Sep–Dec 2024&lt;/h3&gt;
&lt;p&gt;With the promise of investor funding, I decided to expand operations and start hiring contractors to work on various aspects of the overall Divooka platform, including GUI design, website improvements, and preparation for first practical use. In a &lt;a rel=&quot;nofollow&quot; href=&quot;https://medium.methodox.io/divooka-my-vision-for-the-future-of-visual-programming-99b4b11ff9b6&quot;&gt;previous article&lt;/a&gt;, I mentioned that end users were unlikely to use Divooka directly during initial adoption. To elaborate:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Lack of comprehensive DSL libraries at this stage.&lt;/li&gt;
&lt;li&gt;Overall complexity and learning curve as a general-purpose programming language.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;While we could have focused on DSL, the second point made it unlikely to gain traction (given how unknown we were) and not commercially feasible any time soon. Thus, we needed more specific, tool-like, highly focused, direct end-user GUI applications.&lt;/p&gt;
&lt;p&gt;For that reason, we published &lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://methodox.itch.io/fantasy-planet-painter&quot;&gt;Fantasy Planet Painter&lt;/a&gt;&lt;/strong&gt;. We also planned to publish Arcadia, but timeline issues prevented it.&lt;/p&gt;
&lt;p&gt;It was during this period that we conceived what was previously known as &lt;strong&gt;&quot;ZFA,&quot;&lt;/strong&gt; while &quot;fighting&quot; for the trademark of &quot;Zora&quot; in Canada. Due to delays with investment funding, personnel management, and other corporate matters, we didn't make significant progress on the modern &lt;strong&gt;Morpheus&lt;/strong&gt; framework or ZFA at that time.&lt;/p&gt;
&lt;p&gt;In conclusion, during these busy four months, there was not much I would call technical progress. Most efforts were miscellaneous but time-consuming. I also learned it was better to take more matters into my own hands.&lt;/p&gt;
&lt;h3 id=&quot;jan-aug-2025&quot;&gt;Jan–Aug 2025&lt;/h3&gt;
&lt;p&gt;January to August has been much more fruitful and productive, despite major distractions in January, May, and July. With help from Aaron, Allan, and ChatGPT - and without the communication burden of contractors and external collaborators - progress has been slow but steady. More importantly, I've had time to investigate highly technical matters and build foundational work.&lt;/p&gt;
&lt;p&gt;The Web Summit in May and internal training from April to July helped us greatly polish the Neo graph editor, stabilize Neo's internal serialization format, and establish Divooka for general-purpose use.&lt;/p&gt;
&lt;p&gt;Ecosystem-wise, I've done plenty of investigation and prototype work on Python integration, build automation, code refactoring, and preliminary work on online services.&lt;/p&gt;
&lt;p&gt;There has been extensive work on Neo and Neo-first features, including general GUI improvements, bug fixes, plugin framework enhancements, &lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250728-multi-graph-navigation-gui-2h08&quot;&gt;subgraph work&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250710-generics-in-divooka-49e6&quot;&gt;generics&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250510-dealing-with-lambda-3ff9&quot;&gt;lambda support&lt;/a&gt;, multilingual framework setup, &lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250708-procedural-context-visual-debugger-in-divooka-4fb7&quot;&gt;procedural context&lt;/a&gt;, and other experimental work. Related to this is the improved Neo serialization format, which is becoming more robust and stable. &lt;strong&gt;&lt;em&gt;We haven't yet worked on package management.&lt;/em&gt;&lt;/strong&gt; Although we are trying to make it DiDS-conformant, it's still far from achieving a single final format.&lt;/p&gt;
&lt;p&gt;DSL-wise, there has been initial work on &lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Frameworks/Oista&quot;&gt;Ol'ista&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Frameworks/Glaze&quot;&gt;Glaze!&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Frameworks/SlidePresent&quot;&gt;Slide Present&lt;/a&gt;, and &lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Frameworks/Novella&quot;&gt;Novella&lt;/a&gt;. Many utilities were also created for ChatGPT and GenAI services, including interfaces for &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/oyzLJae3foY?si=NBGaeh1hDTrYsiCZ&quot;&gt;Nvidia NIM&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/V9HC-RErzkY?si=xTcgxoMYH7mjz6_S&quot;&gt;ComfyUI&lt;/a&gt;, and Hugging Face inference services. Different users have different demands, and &lt;strong&gt;it's hard to focus on any specific library without a pilot project&lt;/strong&gt;. While we do have internal pilot projects, they are large in scope and still require groundwork, so Divooka hasn't yet played a significant role. &lt;em&gt;I do want to seek external collaboration on this - but at the moment resources are constrained.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;On the plotting front, as of early August, Aaron has made significant progress on the &lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Divooka/Topics/Plotting&quot;&gt;mid-level plotting API&lt;/a&gt;, making Divooka's plotting library almost &quot;self-sustainable,&quot; able to meet a wide range of demands.&lt;/p&gt;
&lt;p&gt;Although data analytics is arguably not our only focus, use case investigations have improved in-memory DB handling, refactoring, and preliminary libraries for PostgreSQL ingestion. One architectural challenge is expression interpretation: &lt;strong&gt;we decided long ago that, at least for data analytics, it's not efficient to rely entirely on node interfaces - some coding is desirable&lt;/strong&gt;. The main focus is SQL snippets through our in-memory DB library, though at times LINQ expressions and in-place C# scripting have been useful. However, concerns with the latter are robustness, error tolerance, predictability, increased distribution size, and future program export compatibility.&lt;/p&gt;
&lt;p&gt;The data analytics API also faces the challenge of whether to focus on OOP or tabular data as intermediate formats. Sometimes one is more convenient than the other, which increases development costs to maintain both. Eventually, we will likely keep both but prefer exposing the tabular format in Divooka.&lt;/p&gt;
&lt;p&gt;A more complete picture of &quot;data analytics&quot; in Divooka would extend into data science and machine learning. There's plenty of research to do here, &lt;strong&gt;including choosing a foundational library, gradually building our own infrastructure, and developing graph-friendly, visual-programming-first APIs&lt;/strong&gt;. This will have to wait until next year.&lt;/p&gt;
&lt;h3 id=&quot;summary&quot;&gt;Summary&lt;/h3&gt;
&lt;p&gt;The most visible outcome is that Neo is receiving significant updates. On the programming language front, Divooka's function libraries are growing as the language becomes more capable, flexible, and production-ready. Once we start working on package management, it will be more prepared for practical day-to-day use. However, package management requires a fully functional online service first.&lt;/p&gt;
&lt;p&gt;Meanwhile, we are actively exploring more &lt;em&gt;&quot;direct-user-facing&quot;&lt;/em&gt; applications, which I'll discuss in future posts.&lt;/p&gt;
&lt;p&gt;We could use a lot of help on DSL work, and that's the plan as the foundations solidify and architectural decisions become clearer.&lt;/p&gt;
&lt;h3 id=&quot;references-3&quot;&gt;References&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Wiki Entries on related subjects:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Frameworks/Glaze&quot;&gt;Glaze!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Frameworks/Novella&quot;&gt;Novella&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Frameworks/Oista&quot;&gt;Ol'ista&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Frameworks/SlidePresent&quot;&gt;Slide Present&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;DevLogs on Divooka/Neo progress:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-2025801-procedural-context-type-338k&quot;&gt;DevLog 2025801: Procedural Context Type&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250711-flappy-bird-in-divooka-sneak-peak-40j8&quot;&gt;DevLog 20250711: Flappy Bird in Divooka! (Sneak Peak)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250710-generics-in-divooka-49e6&quot;&gt;DevLog 20250710: Generics in Divooka&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250708-procedural-context-visual-debugger-in-divooka-4fb7&quot;&gt;DevLog 20250708: Procedural Context Visual Debugger in Divooka&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250619-modularization-improvements-48bi&quot;&gt;DevLog 20250619: Modularization Improvements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250612-olista-web-framework-16mf&quot;&gt;DevLog 20250613: Ol'ista Web Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250610-plotting-in-divooka-7f8&quot;&gt;DevLog 20250610: Plotting in Divooka&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250510-dealing-with-lambda-3ff9&quot;&gt;DevLog 20250510 Dealing with Lambda&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/progress-share-graph-local-lambda-calculus-4dj2&quot;&gt;Progress Share 20250509: Graph Local Lambda Calculus in Divooka&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Introductory to Visual Programming with Divooka Textbook:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Access it &lt;a rel=&quot;nofollow&quot; href=&quot;https://methodox-technologies.github.io/TextbookIntroductoryVisualProgramming/&quot;&gt;online here&lt;/a&gt;!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional references:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250805-divooka-node-graph-file-formats-19p8&quot;&gt;DevLog 20250805: Divooka Node Graph File Formats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/en/Releases/Roadmap&quot;&gt;Public Roadmap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/1TuS7ChBb98?si=wmVuuUglw0yljMYQ&quot;&gt;State of Divooka&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;glossary&quot;&gt;Glossary&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;DSL: Domain-specific Library&lt;/li&gt;
&lt;li&gt;DiDS: Divooka Document Specification&lt;/li&gt;
&lt;li&gt;DiOS: Divooka Open Standards&lt;/li&gt;
&lt;li&gt;Gospel: The new, revived, modern incarnation of Parcel, gateway into Divooka; Now a new graph editor frontend for Divooka&lt;/li&gt;
&lt;li&gt;Neo: The Windows graph editor for Divooka&lt;/li&gt;
&lt;li&gt;Morpheus: The cross-platform GUI framework and graph editor architecture for Divooka&lt;/li&gt;
&lt;li&gt;Quadrinity: A way to perceive office suite software as a single framework consisting of multiple views, like Blender's workspaces&lt;/li&gt;
&lt;li&gt;ZFA: Zora Frontier Architecture&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>Divooka</category>
<guid isPermaLink="true">https://coderlegion.com/4760/article-divooka-where-we-are</guid>
<pubDate>Sat, 16 Aug 2025 19:42:13 +0000</pubDate>
</item>
<item>
<title>(Demo Game) Progress Record &amp; Soft Intro to PID Controller</title>
<link>https://coderlegion.com/4247/demo-game-progress-record-soft-intro-to-pid-controller</link>
<description>&lt;h3 id=&quot;video-intro&quot;&gt;Video Intro&lt;/h3&gt;
&lt;p&gt;As fate has it, this is the third time I am doing control system simulation stuff in real-time, after &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/Pt2TOeEhJ_w&quot;&gt;proportional control&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/A7JopQNLuAY&quot;&gt;vehicle control system&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This demo shows controlling spaceship maneuver using PID controller in 2D. The video walkthrough covers the basic rocket control. It also shows GUI features for setting up such a control system by defining operations on fuel and signals.&lt;/p&gt;
&lt;p&gt;Online demo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/Yqh1EL9nN4g&quot;&gt;https://youtu.be/Yqh1EL9nN4g&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;understanding-the-problem-and-pid-control&quot;&gt;Understanding the Problem and PID Control&lt;/h3&gt;
&lt;p&gt;One example of cruise control in everyday life is cars maintaining a steady speed on a highway. Similar concept apply to rockets or spaceships. Unlike cars, which move along a single dimension (forward), rockets operate in a 2D (or even 3D) space where they must manage not just speed but also direction, orientation, and position. Designing a cruise control system for such a scenario introduces unique challenges that require more sophisticated control mechanisms.&lt;/p&gt;
&lt;p&gt;At its core, cruise control for a rocket or spaceship means maintaining a desired velocity or position in space despite disturbances—such as gravitational pulls, drag (in simulations), or unexpected shifts in thrust. In space, this is far from straightforward. A rocket’s motion is governed by Newton’s laws, meaning it doesn’t naturally come to rest when the engines stop. Once a rocket starts moving, it will continue drifting in that direction unless an opposing force is applied. This creates the first major challenge: how to not only reach the desired speed and direction but also prevent overshooting or oscillating around the target.&lt;/p&gt;
&lt;p&gt;The second complication is that rockets often need to control both linear motion (x and y position) and rotational motion (angle or orientation) simultaneously. In a simulation, this might mean trying to keep the rocket pointing straight up while also maintaining a stable position or velocity. Even a small error in orientation can cause the thrust to push the rocket off-course, requiring constant adjustments. This is where a PID controller comes in, as it continuously calculates how much correction is needed based on the current error, the rate of change, and past performance.&lt;/p&gt;
&lt;p&gt;It's helpful to visualize the problem in 2D context - and reduces complexities in implementation and simulation. Imagine trying to land a rocket on a platform: you need to precisely control its horizontal and vertical speeds while keeping it upright. A simple “on-off” control (like firing thrusters only when the error is large) results in jerky, unstable behavior. PID smooths this process by blending proportional control (correcting based on error size), integral control (accounting for accumulated errors), and derivative control (damping rapid changes).&lt;/p&gt;
&lt;h3 id=&quot;references-4&quot;&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cruise Control - Vehicle Proportional Control: &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/Pt2TOeEhJ_w&quot;&gt;https://youtu.be/Pt2TOeEhJ_w&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vehicle Cruise Control - Control System: &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/A7JopQNLuAY&quot;&gt;https://youtu.be/A7JopQNLuAY&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>Mobile Development</category>
<guid isPermaLink="true">https://coderlegion.com/4247/demo-game-progress-record-soft-intro-to-pid-controller</guid>
<pubDate>Wed, 23 Jul 2025 12:39:17 +0000</pubDate>
</item>
<item>
<title>DevLog 20250722: (Special Project) Correct Physics Handling</title>
<link>https://coderlegion.com/4229/devlog-20250722-special-project-correct-physics-handling</link>
<description>&lt;h3 id=&quot;overview-3&quot;&gt;Overview&lt;/h3&gt;
&lt;p&gt;This little project deals with very simple (2D) right body physics. I will not spoil all the fun - essentially we control a 2D rocket. It would be fun to visualize data processing in such a fashion on a node canvas - kind of matches our Divooka visual programming scheme.&lt;/p&gt;
&lt;p&gt;The hypothesis is that at least for 2-dimensional cruise control, a simple PID should be able to do something useful, and it's with that gut I am set to experiment a bit to verify my idea.&lt;/p&gt;
&lt;p&gt;I've done some experiments in July last year but ended up not going far due to technical challenges.&lt;/p&gt;
&lt;h3 id=&quot;challenge&quot;&gt;Challenge&lt;/h3&gt;
&lt;p&gt;The challenge was to get it working properly with physics setup. Per &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.godotengine.org/en/stable/classes/class_rigidbody2d.html&quot;&gt;RigidBody2D&lt;/a&gt; doc:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gd73l4nma16zjhl1tx68.png&quot; alt=&quot;Force Doc&quot;&gt;&lt;/p&gt;
&lt;p&gt;So is it relative or global? Without being able to visualize the force, it's a bit hard to tell also whether to use a force, or to use impulse.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wpdr0h48srlsxa3thc64.png&quot; alt=&quot;Impulse Doc&quot;&gt;&lt;/p&gt;
&lt;p&gt;It's been a while and I almost gave up - never really have time to create our own physics engine. But Godot got a &lt;a rel=&quot;nofollow&quot; href=&quot;https://godotengine.org/releases/4.4/#jolt-physics-module&quot;&gt;new physics kernel&lt;/a&gt; and I thought maybe give it a try.&lt;/p&gt;
&lt;h3 id=&quot;some-inspiration&quot;&gt;Some Inspiration&lt;/h3&gt;
&lt;p&gt;I've been doing some analytics and talking with ChatGPT on a new airship design that puts the air vessel at the bottom of the ship instead of hanging overhead - that inspired me maybe there are two things with current setup that's not working:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sommrobn0pahdxotm9yd.png&quot; alt=&quot;Schema&quot;&gt;&lt;/p&gt;
&lt;p&gt;After fixing a few API calls related to GraphEdit &lt;code&gt;get_children()&lt;/code&gt; change. I was looking at the force application code once again:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;func _physics_process(delta):
# Remark: We are not using to_global directly because of issues with viewport transform
var left_anchor = %LeftThrusterCenterOfAction.position
var right_anchor = %RightThrusterCenterOfAction.position

# Remark: applied force is RELATIVE to the body (aka. current object)
apply_force(Vector2(0, -1).rotated(rotation + _left_engine_angle_degrees / 180.0 * PI) * _left_engine_thrust, left_anchor)
apply_force(Vector2(0, -1).rotated(rotation + _right_engine_angle_degrees / 180.0 * PI) * _right_engine_thrust, right_anchor)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Again, it's really simple once we figure out &lt;strong&gt;&lt;em&gt;what's the right way to do things&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;references-5&quot;&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Video and intro: &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/Yqh1EL9nN4g&quot;&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>Game Dev</category>
<guid isPermaLink="true">https://coderlegion.com/4229/devlog-20250722-special-project-correct-physics-handling</guid>
<pubDate>Tue, 22 Jul 2025 23:45:02 +0000</pubDate>
</item>
</channel>
</rss>