<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged unity</title>
<link>https://coderlegion.com/tag/unity</link>
<description>Powered by Question2Answer</description>
<item>
<title>YAMU MURA - Devlog 0#</title>
<link>https://coderlegion.com/14160/yamu-mura-devlog-0</link>
<description>&lt;p&gt; Development Overview&lt;/p&gt;
&lt;p&gt;Project: YAMI MURA&lt;br&gt;
Engine: Unity&lt;br&gt;
Language: C#&lt;br&gt;
DCC Tools: Blender&lt;br&gt;
Release Target: Early Access (August)&lt;/p&gt;
&lt;p&gt; Project Status&lt;/p&gt;
&lt;p&gt;YAMI MURA is currently in an active development phase, with core systems implemented and undergoing continuous iteration. Current priorities include system stability, performance optimization, and refinement of gameplay loops.&lt;/p&gt;
&lt;p&gt;The project follows a modular architecture to allow rapid iteration and controlled scalability during the Early Access phase.&lt;/p&gt;
&lt;p&gt; Technical Stack&lt;br&gt;
Engine: Unity (real-time rendering, scene management, physics)&lt;br&gt;
Programming: C# (gameplay systems, tools, logic layers)&lt;br&gt;
3D Pipeline: Blender (environment assets, props, basic rigging)&lt;br&gt;
Version Control: (not specified, assumed in use)&lt;br&gt;
⚙️ Development Pipeline&lt;/p&gt;
&lt;p&gt;The development workflow is structured around rapid prototyping and iterative validation:&lt;/p&gt;
&lt;p&gt;Feature Definition → Scope and constraints&lt;br&gt;
Prototype Implementation → Fast iteration in-engine&lt;br&gt;
Validation → Functional and edge-case testing&lt;br&gt;
Refinement → Optimization and integration&lt;/p&gt;
&lt;p&gt;This pipeline prioritizes short feedback loops and minimizes production overhead.&lt;/p&gt;
&lt;p&gt; AI-Assisted Development&lt;/p&gt;
&lt;p&gt;The project incorporates AI agent-based tooling as part of the core development workflow. These systems are used to support:&lt;/p&gt;
&lt;p&gt;Rapid prototyping of gameplay mechanics&lt;br&gt;
Code scaffolding and structural iteration&lt;br&gt;
Debugging assistance and issue detection&lt;br&gt;
Validation of logic paths and edge cases&lt;/p&gt;
&lt;p&gt;AI integration is not used as a replacement for core development, but as an augmentation layer to increase development efficiency and consistency.&lt;/p&gt;
&lt;p&gt; Observed Impact&lt;/p&gt;
&lt;p&gt;The integration of AI-assisted workflows has resulted in:&lt;/p&gt;
&lt;p&gt;Reduced iteration time across gameplay systems&lt;br&gt;
Increased code stability during feature expansion&lt;br&gt;
Improved maintainability and readability of code&lt;br&gt;
Lower incidence of regressions during updates&lt;/p&gt;
&lt;p&gt;Additionally, development velocity has increased without compromising system integrity, which is critical given the constraints of a solo/indie production environment.&lt;/p&gt;
&lt;p&gt; Current Focus&lt;br&gt;
Stability and bug fixing&lt;br&gt;
Gameplay system refinement&lt;br&gt;
Narrative implementation and pacing&lt;br&gt;
Performance optimization (CPU/GPU balance)&lt;br&gt;
 Release Strategy&lt;/p&gt;
&lt;p&gt;The project is targeting an Early Access release in August, allowing:&lt;/p&gt;
&lt;p&gt;Real user feedback&lt;br&gt;
Incremental content updates&lt;br&gt;
Continuous system improvement post-launch&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/14160/yamu-mura-devlog-0</guid>
<pubDate>Tue, 07 Apr 2026 22:21:39 +0000</pubDate>
</item>
<item>
<title>Engineering &quot;The&quot; Loop</title>
<link>https://coderlegion.com/7033/engineering-the-loop</link>
<description>&lt;h3 id=&quot;the-problem-with-the-classic-game-loop&quot;&gt;The Problem with the Classic Game Loop&lt;/h3&gt;
&lt;p&gt;Almost every interactive application, from video games to user interfaces, relies on a continuous &lt;strong&gt;execution loop&lt;/strong&gt;. This loop is the heart of the application, responsible for everything from updating the game state to rendering graphics. While it's a fundamental concept, the traditional approach can often feel like a point of contention among developers. Why? Because the classic game loop, often a simple &lt;code&gt;while(true)&lt;/code&gt; or &lt;code&gt;while(IsRunning)&lt;/code&gt; block, can quickly become an unmanageable monolith.&lt;/p&gt;
&lt;p&gt;Consider a typical game loop:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;void MainGameLoop()
{
    Initialize();
    
    while (IsRunning)
    {
        ProcessInput();
        UpdateGameState();
        RenderGraphics();
        PlayAudio();
        // ...and a dozen other things
    }
    
    Shutdown();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This works for simple projects, but as an application grows, this single loop becomes a catch-all for complex logic. It tightly couples disparate systems (like input, rendering, and AI), making the code difficult to maintain, test, and debug. You end up with a single, massive function that handles everything, and any small change can have unintended consequences.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;a-better-way-a-state-machine-driven-loop-&quot;&gt;A Better Way: A State Machine-Driven Loop ✨&lt;/h3&gt;
&lt;p&gt;What if we could break free from this monolithic approach? What if our application's &quot;loop&quot; wasn't a static &lt;code&gt;while&lt;/code&gt; statement, but a dynamic, self-managing system? That's the power of a &lt;strong&gt;Finite State Machine (FSM)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In our project, we've integrated this idea into the &lt;strong&gt;MainWindowViewModel&lt;/strong&gt; for a WPF application. Instead of a single, endlessly running loop, our application's flow is managed by an FSM. Each &quot;tick&quot; of the application isn't a fixed set of actions, but a transition to a new state based on events.&lt;/p&gt;
&lt;p&gt;Our &lt;code&gt;MainWindowViewModel&lt;/code&gt; (from the provided code) implements the &lt;code&gt;IStateContext&lt;/code&gt; interface:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class MainWindowViewModel : INotifyPropertyChanged, IStateContext
{
    // ... properties and methods
    public bool IsValid { get; set; }
    public string Name { get; set; }

    public void InitializeState()
    {
        // This method will be called by the FSM
        // It will be the entry point for our initial actions
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This approach allows the FSM to dictate what happens at any given moment. For example, when the application starts, the FSM can trigger the &lt;code&gt;InitializeState()&lt;/code&gt; method. If a user clicks a button, the FSM can transition the application into a new state that handles that specific action, like fetching GitHub repository data. The loop isn't a single, continuous block—it's a series of transitions and actions managed by a state machine.&lt;/p&gt;
&lt;p&gt;This makes the &lt;code&gt;MainWindowViewModel&lt;/code&gt; highly modular and responsive. We can have states like &lt;code&gt;LoadingRepositories&lt;/code&gt;, &lt;code&gt;ShowingGitHubStatus&lt;/code&gt;, or &lt;code&gt;Idle&lt;/code&gt;, and the FSM ensures that the correct actions are executed for each state.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;the-api-evolution-from-simple-to-dynamic&quot;&gt;The API Evolution: From Simple to Dynamic&lt;/h3&gt;
&lt;p&gt;The two provided Unity C# scripts, &lt;code&gt;FSM_UnityIntegration.cs&lt;/code&gt; and &lt;code&gt;FSM_UnityIntegrationAdvanced.cs&lt;/code&gt;, showcase different approaches to creating a game loop driven by a Finite State Machine (FSM) API. The basic &lt;code&gt;FSM_UnityIntegration&lt;/code&gt; script uses a rigid one-to-one mapping between Unity's lifecycle methods and a single FSM processing group. In contrast, &lt;code&gt;FSM_UnityIntegrationAdvanced&lt;/code&gt; allows for a dynamic, runtime-modifiable list of processing groups for each Unity message, providing greater flexibility. Both scripts implement the singleton pattern to ensure only one instance of the integration exists in a scene.&lt;/p&gt;
&lt;h4 id=&quot;the-basic-approach-direct-mapping&quot;&gt;The Basic Approach: Direct Mapping&lt;/h4&gt;
&lt;p&gt;In our initial API, we used a direct one-to-one mapping. Each Unity message (like &lt;code&gt;Start&lt;/code&gt;, &lt;code&gt;Update&lt;/code&gt;, &lt;code&gt;OnDestroy&lt;/code&gt;) directly called a single, corresponding process group. This was a step up from the monolithic loop, but it was still quite rigid. You had a predefined set of actions for each phase of the application lifecycle.&lt;/p&gt;
&lt;p&gt;For instance, the &lt;code&gt;Update()&lt;/code&gt; method in the basic integration always calls the single &lt;code&gt;_updateProcessingGroup&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;void Update()
{
    FSM_API.Interaction.Update(_updateProcessingGroup);
    FSM_API.Interaction.Update(_unityHandles);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Simplicity:&lt;/strong&gt; It's a simple, predictable model that's easy for new developers to grasp.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Performance:&lt;/strong&gt; The direct call to a single processing group is efficient and has minimal overhead.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reliability:&lt;/strong&gt; The flow is fixed and well-defined, reducing the chance of unexpected behavior.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rigidity:&lt;/strong&gt; The biggest drawback is its lack of flexibility. You can't dynamically add or remove processing groups at runtime. To change what happens during an &lt;code&gt;Update&lt;/code&gt;, you'd need to modify the code itself.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limited Customization:&lt;/strong&gt; It's not suitable for scenarios where the game loop needs to change its behavior based on the application's state, such as enabling or disabling different systems (e.g., a combat system) only when a specific state is active.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;the-advanced-approach-runtime-modifiable-loops&quot;&gt;The Advanced Approach: Runtime Modifiable Loops&lt;/h4&gt;
&lt;p&gt;Our more advanced API takes this a step further. We don't just have a single method for &lt;code&gt;Update&lt;/code&gt;; instead, we provide a &lt;strong&gt;list of strings&lt;/strong&gt; that represent the process groups to be executed. This is a simple but incredibly powerful change.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;Update()&lt;/code&gt; method in the advanced integration iterates through a list of groups, calling &lt;code&gt;FSM_API.Interaction.Update()&lt;/code&gt; for each one:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;void Update()
{
    foreach (var group in _updateProcessingGroup)
    {
        FSM_API.Interaction.Update(group);
    }
    FSM_API.Interaction.Update(_unityHandles);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This allows us to add, remove, or reorder process groups on the fly. For example, when the FSM enters a &lt;code&gt;FetchRepositories&lt;/code&gt; state, it can dynamically add the &lt;code&gt;GitHubRepositoryService&lt;/code&gt; process group to the update list using the &lt;code&gt;AddProcessingGroup()&lt;/code&gt; method. When the fetch is complete, the FSM transitions to another state and can remove that process group. The application's loop isn't just a fixed sequence of events—it's a fluid, context-aware process.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Flexibility and Modularity:&lt;/strong&gt; You can compose the game loop on the fly, adding and removing systems as needed without changing the core integration code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;State-Driven Behavior:&lt;/strong&gt; This approach fully leverages the power of the FSM. Different states can dictate which systems are active, making the application's behavior highly contextual and adaptive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scalability:&lt;/strong&gt; It's easier to add new systems without a cascading effect. You simply create a new processing group and add it to the relevant list when it's needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Complexity:&lt;/strong&gt; This model is more complex to set up and manage. Developers must be mindful of which groups are active at any given time to avoid unexpected behavior.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Potential Performance Overhead:&lt;/strong&gt; Iterating through a list of groups every frame adds a small amount of overhead compared to a direct function call, though this is negligible in most cases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Debugging:&lt;/strong&gt; It can be more challenging to debug, as the flow of execution isn't fixed; it depends on the current state and the contents of the processing group lists.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;comparison-and-conclusion-&quot;&gt;Comparison and Conclusion ⚖️&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Feature &lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Basic Integration &lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Advanced Integration&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Execution Model&lt;/strong&gt; &lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Fixed&lt;/strong&gt;: One-to-one mapping between Unity messages and FSM groups. &lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Dynamic&lt;/strong&gt;: Iterates through a runtime-modifiable list of groups.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Flexibility&lt;/strong&gt; &lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Low: Changes require code modification. &lt;/td&gt;&lt;td align=&quot;left&quot;&gt;High: Groups can be added/removed at runtime.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Use Case&lt;/strong&gt; &lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Ideal for simple applications with a consistent, unchanging game loop. &lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Best for complex, state-driven applications where systems need to be enabled/disabled dynamically.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Maintainability&lt;/strong&gt; &lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Easy to maintain and understand for small projects. &lt;/td&gt;&lt;td align=&quot;left&quot;&gt;More maintainable in the long run for large projects, as logic is isolated by state.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Scalability&lt;/strong&gt; &lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Limited: Adding new features can lead to a monolithic &lt;code&gt;Update()&lt;/code&gt; method. &lt;/td&gt;&lt;td align=&quot;left&quot;&gt;High: New systems can be added without modifying core code.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The choice between the two integrations depends on the needs of the project. The &lt;strong&gt;basic &lt;code&gt;FSM_UnityIntegration&lt;/code&gt;&lt;/strong&gt; is a great starting point for developers who want a simple, reliable FSM-driven loop without the need for complex, dynamic behavior. The &lt;strong&gt;advanced &lt;code&gt;FSM_UnityIntegrationAdvanced&lt;/code&gt;&lt;/strong&gt; is a more powerful and scalable solution for larger, more complex applications that require a fluid and responsive game loop that can adapt to different application states. By leveraging the FSM to control which groups are active, the advanced model creates a truly &lt;strong&gt;context-aware&lt;/strong&gt; application loop.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;conclusion-the-future-is-state-driven&quot;&gt;Conclusion: The Future is State-Driven&lt;/h3&gt;
&lt;p&gt;By moving from a monolithic &lt;code&gt;while&lt;/code&gt; loop to a &lt;strong&gt;dynamic, FSM-driven execution model&lt;/strong&gt;, we've created an application that is more:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Modular&lt;/strong&gt;: Each process group and state handles a single responsibility.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Maintainable&lt;/strong&gt;: Logic is isolated, making it easier to debug and modify.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scalable&lt;/strong&gt;: We can easily add new features without a cascading effect.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Runtime Modifiable&lt;/strong&gt;: The application can adapt its behavior on the fly based on its current state.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This isn't just about elegant code; it's about building robust, flexible, and powerful applications that can grow and evolve without becoming a tangled mess. So next time you're about to write a classic &lt;code&gt;while(true)&lt;/code&gt; loop, ask yourself: could a state machine do this better?&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&quot;support-us&quot;&gt;Support Us&lt;/h4&gt;
&lt;p&gt;If you find this project useful, you can support its development through PayPal.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.paypal.com/donate/?hosted_button_id=3Z7263LCQMV9J&quot;&gt;&lt;strong&gt;Donate via PayPal&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&quot;useful-links&quot;&gt;Useful Links&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NuGet Package:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.nuget.org/packages/TheSingularityWorkshop.FSM_API&quot;&gt;TheSingularityWorkshop.FSM_API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/TrentBest/FSM_API&quot;&gt;TrentBest/FSM_API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;License:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://opensource.org/licenses/MIT&quot;&gt;MIT License&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://assetstore.unity.com/packages/tools/behavior-ai/the-singularity-workshop-fsm-api-advanced-332450&quot;&gt;Advanced Integration On Unity Asset Store!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Basic Integration is pending updates on Marketing content.&lt;hr&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;brought-to-you-by&quot;&gt;Brought to you by&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;The Singularity Workshop&lt;/strong&gt; – Tools for the curious, the bold, and the systemically inclined.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gl6tdvgg73ixyj0m0kuf.png&quot; alt=&quot;The image depicts a futuristic, sci-fi landscape dominated by glowing circuitry. A large, stylized Patreon logo hovers in the dark, starry sky above a radiant, eye-like sphere. This sphere pulses with vibrant, multicolored light, casting a brilliant glow onto the digital terrain below. The ground is a vast circuit board, with rivers of glowing orange and blue energy flowing along intricate pathways. Small, button-like structures on the surface emit soft light. The overall scene feels alive and dynamic, suggesting a powerful, almost magical, connection between technology and consciousness, with the Patreon logo at the center of it all.&quot;&gt;&lt;br&gt;
Because state shouldn’t be a mess.&lt;/p&gt;
&lt;hr&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/7033/engineering-the-loop</guid>
<pubDate>Tue, 04 Nov 2025 21:24:46 +0000</pubDate>
</item>
<item>
<title>A… Development Gallery? On this internet?</title>
<link>https://coderlegion.com/4096/a-development-gallery-on-this-internet</link>
<description>&lt;p&gt;You may have noticed a flurry of activity around the site the last couple of months. Or maybe not, it’s not like this was the most active place on earth, but there &lt;em&gt;has&lt;/em&gt; been a flurry of activity with a full site redesign that’s bringing with it a handful of features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://calvinball.squarespace.com/blog&quot;&gt;&lt;strong&gt;This Blog&lt;/strong&gt;&lt;/a&gt; — While it is for all intents and purposes the Medium Blog I run with astounding infrequency, the main home for the blog is now going to be this site. Posts will still get reposted elsewhere though because that’s the Internet we live in. I don’t have a clear idea how frequently I’ll write in it but it’s safe to assume the contents will be video games.&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://calvinball.squarespace.com/development-gallery&quot;&gt;&lt;strong&gt;Development Gallery&lt;/strong&gt;&lt;/a&gt; — I’m bringing back something I always loved to maintain back in the &lt;em&gt;ol’ days&lt;/em&gt; and just throwing absolute work-in-progress and very frequently-broken screen shots into a gallery for folks to check out. I’ve always found it fun to scan through the things and try to make sense of them later.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The larger note at the moment is that I’ve taken to some hobby development on the side with Unity and trying to recapture some of the mech glory that was lost with the untimely demise of \[my\] &lt;em&gt;Steel Hunters&lt;/em&gt;. Unity has really made some incredible strides as an engine and their community and asset store are incredibly impressive. It’s been fun, as has been testing new workflows with things like EmberGen, Houdini, Gaea 2, World Creator 2, and more. I’m hoping I can provide some useful utilitities and tools to throw up on my &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/trentpolack/&quot;&gt;&lt;strong&gt;Github page&lt;/strong&gt;&lt;/a&gt; as well. So… Yeah!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://images.squarespace-cdn.com/content/v1/6837dd32e0d4765d46376796/029a308d-0172-4e4b-8562-1f07a76477c7/wc2_06.png&quot; alt=&quot;Work-in-progress on a new map in World Creator 2 that takes advantage of more of its features than I’ve tried previously.&quot;&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/4096/a-development-gallery-on-this-internet</guid>
<pubDate>Thu, 17 Jul 2025 19:23:50 +0000</pubDate>
</item>
</channel>
</rss>