<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Kehom's Forge - News and Blog Posts</title>
        <link>http://kehomsforge.com/</link>
        <description>Tutorials about programming and some other software development, with a focus on game development.</description>
        <lastBuildDate>Thu, 15 Aug 2024 19:56:45 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Kehom's Forge - News and Blog Posts</title>
            <url>http://kehomsforge.com/images/title_anvil.png</url>
            <link>http://kehomsforge.com/</link>
        </image>
        <copyright>Yuri Sarudiansky</copyright>
        <atom:link href="http://kehomsforge.com/allfeed.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[GDExtension Pack]]></title>
            <link>http://kehomsforge.com/news/posts/20240815/gdextension-pack</link>
            <guid>http://kehomsforge.com/news/posts/20240815/gdextension-pack</guid>
            <pubDate>Thu, 15 Aug 2024 16:44:28 GMT</pubDate>
            <description><![CDATA[<p>And so, Godot 4.3 has been finally released. And with that, I'm also releasing the first version of the GDExtension Pack!</p><p>Or, in other words, the first addons I have ported from the pure GDScript addons, which are for Godot 3.2+, into a GDExtension, which is for Godot 4.3+!</p><p>At this point not all addons have been ported, at least yet. Some of them are in the &quot;TODO&quot; list, while some others are under evaluation regarding <em>if</em> it's actually still relevant to have a plugin for the provided functionality. Yet, there are a few additional functionality in the GDExtension over the old addons.</p><p>As usual, there is a &quot;tutorial&quot; set that can be found <a href="/tutorials/multi/gdextension-pack">here</a>. Full source code can be found on <a href="https://github.com/Kehom/GDExtensionPack">Github</a>.</p><p>Happy forging!</p>]]></description>
            <content:encoded><![CDATA[<p>And so, Godot 4.3 has been finally released. And with that, I'm also releasing the first version of the GDExtension Pack!</p><p>Or, in other words, the first addons I have ported from the pure GDScript addons, which are for Godot 3.2+, into a GDExtension, which is for Godot 4.3+!</p><p>At this point not all addons have been ported, at least yet. Some of them are in the &quot;TODO&quot; list, while some others are under evaluation regarding <em>if</em> it's actually still relevant to have a plugin for the provided functionality. Yet, there are a few additional functionality in the GDExtension over the old addons.</p><p>As usual, there is a &quot;tutorial&quot; set that can be found <a href="/tutorials/multi/gdextension-pack">here</a>. Full source code can be found on <a href="https://github.com/Kehom/GDExtensionPack">Github</a>.</p><p>Happy forging!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Radial Impulse (Godot) Addon]]></title>
            <link>http://kehomsforge.com/news/posts/20240103/radial-impulse-godot-addon</link>
            <guid>http://kehomsforge.com/news/posts/20240103/radial-impulse-godot-addon</guid>
            <pubDate>Wed, 03 Jan 2024 16:44:28 GMT</pubDate>
            <description><![CDATA[<p>Happy new Year!</p><p>To kick things off, I'm releasing a new Godot addon, the Radial Impulse, which adds two new nodes (one for 2D and the other for 3D). The nodes are used to apply impulses into all rigid bodies that are within their circular/spherical area. The animation bellow is from the 2D demo.</p><img src="http://kehomsforge.com/tutorials/multi/godot-addon-pack/10-demo2d.gif" alt="RadialImpulse2D Demo"><p>How to use and how it works, as usual, can be found <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/part10">here</a> and the addon itself in this <a href="https://github.com/Kehom/GodotAddonPack">GitHub repository</a>.</p><p>OK yes, I know, those new nodes are still for the Godot 3 branch. I'm working on the Godot 4 port of the relevant addons as GDExtension. Several of them are fully ported. However there is an <a href="https://github.com/godotengine/godot-cpp/issues/1332">issue</a> with the UI theme system that is somewhat preventing me from kicking off the extension thing.</p><p>That said, I wish for all the best for everyone in 2024. And, happy forging!</p>]]></description>
            <content:encoded><![CDATA[<p>Happy new Year!</p><p>To kick things off, I'm releasing a new Godot addon, the Radial Impulse, which adds two new nodes (one for 2D and the other for 3D). The nodes are used to apply impulses into all rigid bodies that are within their circular/spherical area. The animation bellow is from the 2D demo.</p><img src="http://kehomsforge.com/tutorials/multi/godot-addon-pack/10-demo2d.gif" alt="RadialImpulse2D Demo"><p>How to use and how it works, as usual, can be found <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/part10">here</a> and the addon itself in this <a href="https://github.com/Kehom/GodotAddonPack">GitHub repository</a>.</p><p>OK yes, I know, those new nodes are still for the Godot 3 branch. I'm working on the Godot 4 port of the relevant addons as GDExtension. Several of them are fully ported. However there is an <a href="https://github.com/godotengine/godot-cpp/issues/1332">issue</a> with the UI theme system that is somewhat preventing me from kicking off the extension thing.</p><p>That said, I wish for all the best for everyone in 2024. And, happy forging!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Lifting off with Astro]]></title>
            <link>http://kehomsforge.com/news/posts/20231026/lifting-off-astro</link>
            <guid>http://kehomsforge.com/news/posts/20231026/lifting-off-astro</guid>
            <pubDate>Thu, 26 Oct 2023 15:00:00 GMT</pubDate>
            <description><![CDATA[<p>And after several weeks without being able to update my forge... well, now we are lifting of, with <a href="https://astro.build">Astro</a>!</p><p>I do delve into it a little bit more about the entire thing in this newer <a href="http://kehomsforge.com/blog/posts/20231019/lifting-off">blog post</a>. But in short, out of the blue, Nuxt simply started to spit error messages instead of my page.</p><p>I have updated some of the Godot tutorials. The reason? Godot 4 did change a lot and the information was no longer entirely valid. Some of those tutorials now have instructions for both Godot 3 and Godot 4.</p><p>PS: If lots of new entries in your RSS reader were triggered, I'm deeply sorry for this.</p>]]></description>
            <content:encoded><![CDATA[<p>And after several weeks without being able to update my forge... well, now we are lifting of, with <a href="https://astro.build">Astro</a>!</p><p>I do delve into it a little bit more about the entire thing in this newer <a href="http://kehomsforge.com/blog/posts/20231019/lifting-off">blog post</a>. But in short, out of the blue, Nuxt simply started to spit error messages instead of my page.</p><p>I have updated some of the Godot tutorials. The reason? Godot 4 did change a lot and the information was no longer entirely valid. Some of those tutorials now have instructions for both Godot 3 and Godot 4.</p><p>PS: If lots of new entries in your RSS reader were triggered, I'm deeply sorry for this.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Lifting Off]]></title>
            <link>http://kehomsforge.com/blog/posts/20231019/lifting-off</link>
            <guid>http://kehomsforge.com/blog/posts/20231019/lifting-off</guid>
            <pubDate>Thu, 19 Oct 2023 15:00:00 GMT</pubDate>
            <description><![CDATA[And yet another site generator, Astro]]></description>
            <content:encoded><![CDATA[<p>And I &quot;had&quot; to change web site generator yet again. This time was rather weird. I didn't update NodeJS nor any package. Out of the blue the generation simply stopped working. Since I wasn't entirely happy with a few things of the previous generator, I decided to move on without attempting that much to fix the build process. Well, OK, I didn't try at all to fix it.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[New Site Section - Projects]]></title>
            <link>http://kehomsforge.com/news/posts/20220921/site-section-projects</link>
            <guid>http://kehomsforge.com/news/posts/20220921/site-section-projects</guid>
            <pubDate>Wed, 21 Sep 2022 19:31:45 GMT</pubDate>
            <description><![CDATA[<p>New to this site is the <a href="http://kehomsforge.com/projects">Projects</a> section. It's meant to be a central place to link into all my published projects, excluding any that is &quot;tutorial reference material&quot;.</p><p>The navigation bar has been updated to link into that section.</p><p>Happy forging!</p>]]></description>
            <content:encoded><![CDATA[<p>New to this site is the <a href="http://kehomsforge.com/projects">Projects</a> section. It's meant to be a central place to link into all my published projects, excluding any that is &quot;tutorial reference material&quot;.</p><p>The navigation bar has been updated to link into that section.</p><p>Happy forging!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[New Godot Addon - AudioMaster]]></title>
            <link>http://kehomsforge.com/news/posts/20220915/godot-addon-audiomaster</link>
            <guid>http://kehomsforge.com/news/posts/20220915/godot-addon-audiomaster</guid>
            <pubDate>Thu, 15 Sep 2022 19:31:45 GMT</pubDate>
            <description><![CDATA[<p>Audio playback in Godot is actually very straightforward. We add one <code>AudioStreamPlayer</code>, <code>AudioStreamPlayer2D</code> or <code>AudioStreamPlayer3D</code> node, assign an audio stream resource then call its <code>play()</code> function. However if the node is destroyed in the middle of a playback, the audio will become interrupted. This is a common case when dealing with impacting bullets, player pickups and so on.</p><p>In order to help with audio playback without having to worry about node lifetime, I created the <em>Audio Master</em> addon. How to use it can be found <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/part09">here</a>. As usual, the addon itself can be found in this <a href="https://github.com/Kehom/GodotAddonPack">GitHub Repository</a>.</p>]]></description>
            <content:encoded><![CDATA[<p>Audio playback in Godot is actually very straightforward. We add one <code>AudioStreamPlayer</code>, <code>AudioStreamPlayer2D</code> or <code>AudioStreamPlayer3D</code> node, assign an audio stream resource then call its <code>play()</code> function. However if the node is destroyed in the middle of a playback, the audio will become interrupted. This is a common case when dealing with impacting bullets, player pickups and so on.</p><p>In order to help with audio playback without having to worry about node lifetime, I created the <em>Audio Master</em> addon. How to use it can be found <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/part09">here</a>. As usual, the addon itself can be found in this <a href="https://github.com/Kehom/GodotAddonPack">GitHub Repository</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DataAsset and SpinSlider - New Godot Addons]]></title>
            <link>http://kehomsforge.com/news/posts/20220815/dataasset-spinslider-godot-addons</link>
            <guid>http://kehomsforge.com/news/posts/20220815/dataasset-spinslider-godot-addons</guid>
            <pubDate>Mon, 15 Aug 2022 14:37:42 GMT</pubDate>
            <description><![CDATA[<p>While working in a (Godot Engine) project I ended up creating a <code>Resource</code> meant to hold data. Editing its array was very clunky. But most importantly, adding a custom scripted resource into this data class was not possible. Well, it was, but the &quot;new instance&quot; is not filtered in Godot. That is, it display a <strong>huge</strong> list of classes derived from <code>Resource</code>.</p><p>So, I decided to create an Editor Plugin meant to deal with resources of this kind, the Data Asset plugin. A preview of the plugin in the animation bellow, which showcases rearranging elements of an array of custom scripted resources:</p><img src="http://kehomsforge.com/tutorials/multi/godot-addon-pack/08-arraysample.gif" alt="DataAsset Preview"><p>Yet, editing numerical properties were not exactly close to the editor provided within the <em>Inspector</em> panel. Granted, the editor uses a <em>Control</em> named <code>EditorSpinSlider</code>, which is not fully exposed to scripting. So, I decided to also create a Control that implements something similar to that, which is provided as the <code>SpinSlider</code>. A preview of the widget:</p><img src="http://kehomsforge.com/tutorials/multi/godot-addon-pack/05-spinexample.png" alt="Result"><p>As usual, I have a tutorial for each of the two new addons. The <code>SpinSlider</code> information can be found <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/part05">here</a>. As for the Data Asset, it's <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/part08">here</a>.</p>]]></description>
            <content:encoded><![CDATA[<p>While working in a (Godot Engine) project I ended up creating a <code>Resource</code> meant to hold data. Editing its array was very clunky. But most importantly, adding a custom scripted resource into this data class was not possible. Well, it was, but the &quot;new instance&quot; is not filtered in Godot. That is, it display a <strong>huge</strong> list of classes derived from <code>Resource</code>.</p><p>So, I decided to create an Editor Plugin meant to deal with resources of this kind, the Data Asset plugin. A preview of the plugin in the animation bellow, which showcases rearranging elements of an array of custom scripted resources:</p><img src="http://kehomsforge.com/tutorials/multi/godot-addon-pack/08-arraysample.gif" alt="DataAsset Preview"><p>Yet, editing numerical properties were not exactly close to the editor provided within the <em>Inspector</em> panel. Granted, the editor uses a <em>Control</em> named <code>EditorSpinSlider</code>, which is not fully exposed to scripting. So, I decided to also create a Control that implements something similar to that, which is provided as the <code>SpinSlider</code>. A preview of the widget:</p><img src="http://kehomsforge.com/tutorials/multi/godot-addon-pack/05-spinexample.png" alt="Result"><p>As usual, I have a tutorial for each of the two new addons. The <code>SpinSlider</code> information can be found <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/part05">here</a>. As for the Data Asset, it's <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/part08">here</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Save/Load in Godot HTML Export]]></title>
            <link>http://kehomsforge.com/news/posts/20220211/save-load-godot-html-export</link>
            <guid>http://kehomsforge.com/news/posts/20220211/save-load-godot-html-export</guid>
            <pubDate>Fri, 11 Feb 2022 14:37:42 GMT</pubDate>
            <description><![CDATA[<p>Some time ago I decided I wanted to have a web version of the <a href="https://github.com/Kehom/GDotCSV2Json">CSV to JSON converter</a> I implemented in Godot. Shortly after, I stumbled into the fact that HTML exports are sand boxed, meaning that the <code>FileDialog</code> control does not have access to the file system. Yet, we can work around this and provide means to save/load data to/from the file system. I show how in this <a href="http://kehomsforge.com/tutorials/single/save-load-file-system-godot-html-export">new short tutorial</a>.</p>]]></description>
            <content:encoded><![CDATA[<p>Some time ago I decided I wanted to have a web version of the <a href="https://github.com/Kehom/GDotCSV2Json">CSV to JSON converter</a> I implemented in Godot. Shortly after, I stumbled into the fact that HTML exports are sand boxed, meaning that the <code>FileDialog</code> control does not have access to the file system. Yet, we can work around this and provide means to save/load data to/from the file system. I show how in this <a href="http://kehomsforge.com/tutorials/single/save-load-file-system-godot-html-export">new short tutorial</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Process and Physics Process In Godot]]></title>
            <link>http://kehomsforge.com/news/posts/20211222/godot-process-physics</link>
            <guid>http://kehomsforge.com/news/posts/20211222/godot-process-physics</guid>
            <pubDate>Wed, 22 Dec 2021 14:30:12 GMT</pubDate>
            <description><![CDATA[<p>Recently I watched a video from one of <a href="https://twitter.com/LucyLavend">Lucy</a> streams. In it a viewer asked the difference between <code>_process()</code> and <code>_physics_process()</code> in Godot.</p><p>Based on the answer I wanted to tackle the subject, so I wrote a new <a href="http://kehomsforge.com/tutorials/single/process-physics-process-godot">&quot;Tutorial&quot; here</a>. It's a very short text and hopefully it should be enough to help understand when to use which.</p><p>By the way, <a href="https://www.youtube.com/c/LucyLavend">here</a> is Lucy's Youtube channel.</p>]]></description>
            <content:encoded><![CDATA[<p>Recently I watched a video from one of <a href="https://twitter.com/LucyLavend">Lucy</a> streams. In it a viewer asked the difference between <code>_process()</code> and <code>_physics_process()</code> in Godot.</p><p>Based on the answer I wanted to tackle the subject, so I wrote a new <a href="http://kehomsforge.com/tutorials/single/process-physics-process-godot">&quot;Tutorial&quot; here</a>. It's a very short text and hopefully it should be enough to help understand when to use which.</p><p>By the way, <a href="https://www.youtube.com/c/LucyLavend">here</a> is Lucy's Youtube channel.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Godot Expandable Panel Addon]]></title>
            <link>http://kehomsforge.com/news/posts/20211112/godot-expandable-panel</link>
            <guid>http://kehomsforge.com/news/posts/20211112/godot-expandable-panel</guid>
            <pubDate>Fri, 12 Nov 2021 20:08:58 GMT</pubDate>
            <description><![CDATA[<p>While I was working on the next tutorial I found myself implementing a side panel over and over. That side panel had a button to shrink or expand it and is meant to hold a few settings to change the overall behavior of what I wanted to show within the tutorial.</p><p>In order to avoid having to continue re-implementing the side panel I decided to create a generic one and turn it into an addon. And here it is!</p><p>As usual, you can find the addon itself on my <a href="https://github.com/Kehom/GodotAddonPack">Github repository</a></p><p>A dedicated tutorial for it can be found <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/part05">here</a> &lt;nuxt-link to=&quot;/tutorials/multi/GodotAddonPack/part05&quot;&gt;here&lt;/nuxt-link&gt;.</p><p>A quick preview of this Control in action is shown bellow:</p><img src="http://kehomsforge.com/tutorials/multi/godot-addon-pack/05-expanel_action01.gif" alt="Result">]]></description>
            <content:encoded><![CDATA[<p>While I was working on the next tutorial I found myself implementing a side panel over and over. That side panel had a button to shrink or expand it and is meant to hold a few settings to change the overall behavior of what I wanted to show within the tutorial.</p><p>In order to avoid having to continue re-implementing the side panel I decided to create a generic one and turn it into an addon. And here it is!</p><p>As usual, you can find the addon itself on my <a href="https://github.com/Kehom/GodotAddonPack">Github repository</a></p><p>A dedicated tutorial for it can be found <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/part05">here</a> &lt;nuxt-link to=&quot;/tutorials/multi/GodotAddonPack/part05&quot;&gt;here&lt;/nuxt-link&gt;.</p><p>A quick preview of this Control in action is shown bellow:</p><img src="http://kehomsforge.com/tutorials/multi/godot-addon-pack/05-expanel_action01.gif" alt="Result">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Nuxt Generation]]></title>
            <link>http://kehomsforge.com/blog/posts/20210831/nuxt-generation</link>
            <guid>http://kehomsforge.com/blog/posts/20210831/nuxt-generation</guid>
            <pubDate>Tue, 31 Aug 2021 19:31:45 GMT</pubDate>
            <description><![CDATA[A short explanation on how I was somewhat forced to change site generator and my experience with the new tool.]]></description>
            <content:encoded><![CDATA[<p>Recently I replaced my old SSD which, resulted in me re-installing everything. All seemed fine. When I started to write new content to the site and run the command to generate it in order to verify if the layout was correct, errors. Lots of them. Apparently the packages in my Metalsmith tool chain became broken with the newer Node version. So I run the command to update the packages, in the hopes it would fix. Unfortunately it didn't. And apparently it became worse because instead of spitting lots of error messages the process just froze.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Nuxt Generation]]></title>
            <link>http://kehomsforge.com/news/posts/20210831/nuxt-generation</link>
            <guid>http://kehomsforge.com/news/posts/20210831/nuxt-generation</guid>
            <pubDate>Tue, 31 Aug 2021 15:00:00 GMT</pubDate>
            <description><![CDATA[<p>And I can finally update my site again! For a little bit of information on what happened, I have a new <a href="http://kehomsforge.com/blog/posts/20210831/nuxt-generation">blog post here</a>. In short, I had to switch static site generators.</p><p>With this, the RSS feed generation is different and it probably have triggered a lot of &quot;new&quot; posts within some (if not all) aggregators. If that's the case, please know I'm deeply sorry for that! On the bright side, I <em>believe</em> the new feed generator does a better job than what I was doing previously.</p><p>Nevertheless, with this new update I also bring 3 (or maybe two and a half) Godot Addons.</p><p>The first one is a base class meant to serve as starting point to create custom widget Controls for Godot. It basically deals with the theme system in order to automatically expose styling entries to the <em>Inspector</em> for easier overriding. With this, custom controls can somewhat behave like any other core Control when attempting to override the theme of a single Control within the editor.</p><p>The second one is a UI Control (<code>TabularBox</code>) meant to allow viewing and editing of tabular data, providing means to create custom columns for dealing with specific value types. As an example, one of the columns provided with the pack allows rendering thumbnails of texture resources assigned to cells.</p><p>Finally, a Database addon that includes an editor plugin to create and manage in game databases. This plugin uses the <code>TabularBox</code> Control in order to allow editing and viewing of the data. This addon also provides means for a column to reference another table within the database, which could be really useful. Also, it does integrate into it the <a href="http://kehomsforge.com/tutorials/single/weighted-random-selection-godot">Weighted Random Selection With Godot</a> technique for easier random picking rows from the tables.</p><p>As usual, those addons have <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/partundefined">tutorials</a> to explain how to use them.</p><p>So, this is the nuxt generation of my site. Hopefully I didn't break anything during the migration process!</p>]]></description>
            <content:encoded><![CDATA[<p>And I can finally update my site again! For a little bit of information on what happened, I have a new <a href="http://kehomsforge.com/blog/posts/20210831/nuxt-generation">blog post here</a>. In short, I had to switch static site generators.</p><p>With this, the RSS feed generation is different and it probably have triggered a lot of &quot;new&quot; posts within some (if not all) aggregators. If that's the case, please know I'm deeply sorry for that! On the bright side, I <em>believe</em> the new feed generator does a better job than what I was doing previously.</p><p>Nevertheless, with this new update I also bring 3 (or maybe two and a half) Godot Addons.</p><p>The first one is a base class meant to serve as starting point to create custom widget Controls for Godot. It basically deals with the theme system in order to automatically expose styling entries to the <em>Inspector</em> for easier overriding. With this, custom controls can somewhat behave like any other core Control when attempting to override the theme of a single Control within the editor.</p><p>The second one is a UI Control (<code>TabularBox</code>) meant to allow viewing and editing of tabular data, providing means to create custom columns for dealing with specific value types. As an example, one of the columns provided with the pack allows rendering thumbnails of texture resources assigned to cells.</p><p>Finally, a Database addon that includes an editor plugin to create and manage in game databases. This plugin uses the <code>TabularBox</code> Control in order to allow editing and viewing of the data. This addon also provides means for a column to reference another table within the database, which could be really useful. Also, it does integrate into it the <a href="http://kehomsforge.com/tutorials/single/weighted-random-selection-godot">Weighted Random Selection With Godot</a> technique for easier random picking rows from the tables.</p><p>As usual, those addons have <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/partundefined">tutorials</a> to explain how to use them.</p><p>So, this is the nuxt generation of my site. Hopefully I didn't break anything during the migration process!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[New Tutorial - Conditionally Expose Properties to the Inspector In Godot]]></title>
            <link>http://kehomsforge.com/news/posts/20201119/gdconditionalproperty</link>
            <guid>http://kehomsforge.com/news/posts/20201119/gdconditionalproperty</guid>
            <pubDate>Thu, 19 Nov 2020 12:00:00 GMT</pubDate>
            <description><![CDATA[<p>In this new tutorial I show how we can use conditions to determine which properties will be shown within the Inspector tab of the Godot Engine editor.</p><p>The result should be something like this:</p><img src="http://kehomsforge.com/tutorials/single/conditionally-export-properties-godot/result.gif" alt="Result"><p>The tutorial itself can be found <a href="http://kehomsforge.com/tutorials/single/conditionally-export-properties-godot">here</a>.</p><p>Happy forging!</p>]]></description>
            <content:encoded><![CDATA[<p>In this new tutorial I show how we can use conditions to determine which properties will be shown within the Inspector tab of the Godot Engine editor.</p><p>The result should be something like this:</p><img src="http://kehomsforge.com/tutorials/single/conditionally-export-properties-godot/result.gif" alt="Result"><p>The tutorial itself can be found <a href="http://kehomsforge.com/tutorials/single/conditionally-export-properties-godot">here</a>.</p><p>Happy forging!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[New Tutorial - Dedicated Server With a Single Godot Project]]></title>
            <link>http://kehomsforge.com/news/posts/20201030/gddedicatedserver</link>
            <guid>http://kehomsforge.com/news/posts/20201030/gddedicatedserver</guid>
            <pubDate>Fri, 30 Oct 2020 12:00:00 GMT</pubDate>
            <description><![CDATA[<p>After a few requests, here is a tutorial on how to create dedicated servers with Godot Engine. In this tutorial I show how to obtain that through a single Godot project, instead of using one project for server and another project for client.</p><p>Note that there is a little bit of the synchronization code to showcase the proposed code architecture in practice, although this part of the tutorial uses my <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/partundefined">Network Addon</a>.</p><p>The dedicated server tutorial can be found <a href="http://kehomsforge.com/tutorials/single/dedicated-server-single-godot-project">here</a>.</p><p>Happy forging!</p>]]></description>
            <content:encoded><![CDATA[<p>After a few requests, here is a tutorial on how to create dedicated servers with Godot Engine. In this tutorial I show how to obtain that through a single Godot project, instead of using one project for server and another project for client.</p><p>Note that there is a little bit of the synchronization code to showcase the proposed code architecture in practice, although this part of the tutorial uses my <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/partundefined">Network Addon</a>.</p><p>The dedicated server tutorial can be found <a href="http://kehomsforge.com/tutorials/single/dedicated-server-single-godot-project">here</a>.</p><p>Happy forging!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[New Tutorial - Weighted Random Selection With Godot]]></title>
            <link>http://kehomsforge.com/news/posts/20201007/gdweightedrandom</link>
            <guid>http://kehomsforge.com/news/posts/20201007/gdweightedrandom</guid>
            <pubDate>Wed, 07 Oct 2020 12:00:00 GMT</pubDate>
            <description><![CDATA[<p>There is a new relatively short tutorial on how to randomly select something from a list taking different probabilities (weights) into account. The described technique is very simple and the best part is that if weights and the actual list must be changed the code remains the exact same!</p><p>The tutorial can be found <a href="http://kehomsforge.com/tutorials/single/weighted-random-selection-godot">here</a>.</p><p>Happy forging!</p>]]></description>
            <content:encoded><![CDATA[<p>There is a new relatively short tutorial on how to randomly select something from a list taking different probabilities (weights) into account. The described technique is very simple and the best part is that if weights and the actual list must be changed the code remains the exact same!</p><p>The tutorial can be found <a href="http://kehomsforge.com/tutorials/single/weighted-random-selection-godot">here</a>.</p><p>Happy forging!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[New Godot Addon - Inventory System]]></title>
            <link>http://kehomsforge.com/news/posts/20200921/gdinventoryaddon</link>
            <guid>http://kehomsforge.com/news/posts/20200921/gdinventoryaddon</guid>
            <pubDate>Mon, 21 Sep 2020 12:00:00 GMT</pubDate>
            <description><![CDATA[<p>The Godot Addon pack has just got a new addon, which provides a reasonably featured inventory system.</p><p>Some of the feature highlights are:</p><ul><li>Bags automatically handle multiple slots and items. The amount of columns and rows can be specified from the <em>Inspector</em>.</li><li>Items can span across multiple rows and columns.</li><li>Special slots can be linked in order to easily manage &quot;two handed weapons&quot;.</li><li>Special slots use internal filters to automatically <em>allow</em> or <em>deny</em> specified items.</li><li>A completely custom drag &amp; drop system in order to allow for a finer control over when and how to start/end the process.</li><li>Items can have sockets.</li><li>Items on a bag can be automatically sorted.</li><li>Saving/loading inventory state into/from JSON data (binary support is in the TODO).</li><li>Inventory bag can be expanded or shrinked without affecting item placement.</li><li>Special slots can override maximum stack sizes to create specialized storing systems.</li></ul><p>There is the <code>OverlayDebugInfo</code> script that provides means to quickly add text into the screen without the need to create UI controls all over the place. The resulting panel will expand/shrink according to its contents.</p><p>The addon pack <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/partundefined">tutorial</a> has been updated to explain things about this new addon.</p><p>The addon pack itself can be found on my <a href="https://github.com/Kehom/GodotAddonPack">GitHub Repository</a>.</p><p>Happy forging!</p>]]></description>
            <content:encoded><![CDATA[<p>The Godot Addon pack has just got a new addon, which provides a reasonably featured inventory system.</p><p>Some of the feature highlights are:</p><ul><li>Bags automatically handle multiple slots and items. The amount of columns and rows can be specified from the <em>Inspector</em>.</li><li>Items can span across multiple rows and columns.</li><li>Special slots can be linked in order to easily manage &quot;two handed weapons&quot;.</li><li>Special slots use internal filters to automatically <em>allow</em> or <em>deny</em> specified items.</li><li>A completely custom drag &amp; drop system in order to allow for a finer control over when and how to start/end the process.</li><li>Items can have sockets.</li><li>Items on a bag can be automatically sorted.</li><li>Saving/loading inventory state into/from JSON data (binary support is in the TODO).</li><li>Inventory bag can be expanded or shrinked without affecting item placement.</li><li>Special slots can override maximum stack sizes to create specialized storing systems.</li></ul><p>There is the <code>OverlayDebugInfo</code> script that provides means to quickly add text into the screen without the need to create UI controls all over the place. The resulting panel will expand/shrink according to its contents.</p><p>The addon pack <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/partundefined">tutorial</a> has been updated to explain things about this new addon.</p><p>The addon pack itself can be found on my <a href="https://github.com/Kehom/GodotAddonPack">GitHub Repository</a>.</p><p>Happy forging!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[New Godot Addon - Debug Helpers]]></title>
            <link>http://kehomsforge.com/news/posts/20200609/gddebughelperaddon</link>
            <guid>http://kehomsforge.com/news/posts/20200609/gddebughelperaddon</guid>
            <pubDate>Tue, 09 Jun 2020 12:00:00 GMT</pubDate>
            <description><![CDATA[<p>The Godot Addon pack has just got a new addon, which provides some extra tools to help debug the projects.</p><p>There is the <code>OverlayDebugInfo</code> script that provides means to quickly add text into the screen without the need to create UI controls all over the place. The resulting panel will expand/shrink according to its contents.</p><p>And the <code>DebugLine3D</code>, which helps with the task of drawing lines in 3D.</p><p>The addon pack <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/partundefined">tutorial</a> has been updated to explain things about this new addon.</p><p>The addon pack itself can be found on my <a href="https://github.com/Kehom/GodotAddonPack">GitHub Repository</a>.</p><p>Happy forging!</p>]]></description>
            <content:encoded><![CDATA[<p>The Godot Addon pack has just got a new addon, which provides some extra tools to help debug the projects.</p><p>There is the <code>OverlayDebugInfo</code> script that provides means to quickly add text into the screen without the need to create UI controls all over the place. The resulting panel will expand/shrink according to its contents.</p><p>And the <code>DebugLine3D</code>, which helps with the task of drawing lines in 3D.</p><p>The addon pack <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/partundefined">tutorial</a> has been updated to explain things about this new addon.</p><p>The addon pack itself can be found on my <a href="https://github.com/Kehom/GodotAddonPack">GitHub Repository</a>.</p><p>Happy forging!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[New Godot Addon - Float Quantize]]></title>
            <link>http://kehomsforge.com/news/posts/20200520/gdquantizeaddon</link>
            <guid>http://kehomsforge.com/news/posts/20200520/gdquantizeaddon</guid>
            <pubDate>Wed, 20 May 2020 12:00:00 GMT</pubDate>
            <description><![CDATA[<p>The Godot Addon pack has just got a new addon, which provides means to quantize floating point numbers. In addition, it contains a few functions to help compress rotation quaternions using the <em>smallest three</em> method.</p><p>The addon pack <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/partundefined">tutorial</a> has been updated (more specifically the first page) to explain things about this new addon.</p><p>The addon pack itself can be found on my <a href="https://github.com/Kehom/GodotAddonPack">GitHub Repository</a>.</p><p>Happy forging!</p>]]></description>
            <content:encoded><![CDATA[<p>The Godot Addon pack has just got a new addon, which provides means to quantize floating point numbers. In addition, it contains a few functions to help compress rotation quaternions using the <em>smallest three</em> method.</p><p>The addon pack <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/partundefined">tutorial</a> has been updated (more specifically the first page) to explain things about this new addon.</p><p>The addon pack itself can be found on my <a href="https://github.com/Kehom/GodotAddonPack">GitHub Repository</a>.</p><p>Happy forging!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[New User Interface Addon]]></title>
            <link>http://kehomsforge.com/news/posts/20200513/newuiaddon</link>
            <guid>http://kehomsforge.com/news/posts/20200513/newuiaddon</guid>
            <pubDate>Wed, 13 May 2020 12:00:00 GMT</pubDate>
            <description><![CDATA[<p>A few weeks ago I have released the initial version of my Godot Addon pack. I'm now adding a new one, a custom User Interface Control node. This new control is named <code>FancyLineEdit</code> and it has been created primarily to be used as input for console and/or chat boxes. To that end, while it implements most of the <code>LineEdit</code> control functionality, it allows images to be rendered as well as basic text formatting.</p><p>The image bellow gives an example of the control in action:</p><img src="http://kehomsforge.com/tutorials/multi/godot-addon-pack/05-fle_result.png" alt="Fancy Line Edit"><p>The addon pack <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/partundefined">tutorial</a> has been updated with a new page for user interface addons, which for the moment contains information only for the <code>FancyLineEdit</code>.</p><p>And the addon pack itself can be found on my <a href="https://github.com/Kehom/GodotAddonPack">GitHub Repository</a>.</p><p>Happy forging!</p>]]></description>
            <content:encoded><![CDATA[<p>A few weeks ago I have released the initial version of my Godot Addon pack. I'm now adding a new one, a custom User Interface Control node. This new control is named <code>FancyLineEdit</code> and it has been created primarily to be used as input for console and/or chat boxes. To that end, while it implements most of the <code>LineEdit</code> control functionality, it allows images to be rendered as well as basic text formatting.</p><p>The image bellow gives an example of the control in action:</p><img src="http://kehomsforge.com/tutorials/multi/godot-addon-pack/05-fle_result.png" alt="Fancy Line Edit"><p>The addon pack <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/partundefined">tutorial</a> has been updated with a new page for user interface addons, which for the moment contains information only for the <code>FancyLineEdit</code>.</p><p>And the addon pack itself can be found on my <a href="https://github.com/Kehom/GodotAddonPack">GitHub Repository</a>.</p><p>Happy forging!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Godot Addon Pack and New Layout]]></title>
            <link>http://kehomsforge.com/news/posts/20200417/addonandlayout</link>
            <guid>http://kehomsforge.com/news/posts/20200417/addonandlayout</guid>
            <pubDate>Fri, 17 Apr 2020 12:00:00 GMT</pubDate>
            <description><![CDATA[<p>At long last! After several months in development I can finally release the initial version of my Godot Addon Pack! It can be found on my <a href="https://github.com/Kehom/GodotAddonPack">Github Repository</a>.</p><p>I also created a set of tutorials to accompany the addons. Those can be found <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/partundefined">here</a>. Each page of this tutorial corresponds to one addon and contains two major sections, one explaining the basics of using the addon and the other a little bit of how it internally work.</p><p>Finally, if you have visited my web page before, you will probably notice it now has a completely new layout. In the navigation bar there is a toggle button allowing you to switch between dark and light theme. And this new layout will adjust to work on smaller screens. Just don't expect snippets of code to be easily readable.</p><p>Anyway, I hope this new layout is OK'ish enough and that you find this addon pack useful! Happy forging!</p>]]></description>
            <content:encoded><![CDATA[<p>At long last! After several months in development I can finally release the initial version of my Godot Addon Pack! It can be found on my <a href="https://github.com/Kehom/GodotAddonPack">Github Repository</a>.</p><p>I also created a set of tutorials to accompany the addons. Those can be found <a href="http://kehomsforge.com/tutorials/multi/godot-addon-pack/partundefined">here</a>. Each page of this tutorial corresponds to one addon and contains two major sections, one explaining the basics of using the addon and the other a little bit of how it internally work.</p><p>Finally, if you have visited my web page before, you will probably notice it now has a completely new layout. In the navigation bar there is a toggle button allowing you to switch between dark and light theme. And this new layout will adjust to work on smaller screens. Just don't expect snippets of code to be easily readable.</p><p>Anyway, I hope this new layout is OK'ish enough and that you find this addon pack useful! Happy forging!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[More Networking with Godot]]></title>
            <link>http://kehomsforge.com/news/posts/20190613/gdmorenetworking</link>
            <guid>http://kehomsforge.com/news/posts/20190613/gdmorenetworking</guid>
            <pubDate>Thu, 13 Jun 2019 12:00:00 GMT</pubDate>
            <description><![CDATA[<p>Several days ago I posted a very basic tutorial on <a href="http://kehomsforge.com/tutorials/multi/multiplayer-game-setup-godot/partundefined">How to Setup Multiplayer Game in Godot</a>. My original intention was to quickly release a follow up tutorial so some of the things that I deliberately didn't mention regarding the problems wouldn't be focus of people wanting to behead me. Unfortunately writing this new tutorial took me way longer than anticipated.</p><p>Anyway, it's finally here, <a href="http://kehomsforge.com/tutorials/multi/more-networking-godot/partundefined">More Networking with Godot</a>. In this new tutorial I cover the following topics:</p><ul><li>Fixes to some of the oversights of the first tutorial.</li><li>Very basic authoritative server setup.</li><li>Latency simulation and measurement.</li><li>Snapshot interpolation.</li><li>Player kicking from the server.</li><li>Chat system.</li></ul><p>Truly hope you find it useful!</p>]]></description>
            <content:encoded><![CDATA[<p>Several days ago I posted a very basic tutorial on <a href="http://kehomsforge.com/tutorials/multi/multiplayer-game-setup-godot/partundefined">How to Setup Multiplayer Game in Godot</a>. My original intention was to quickly release a follow up tutorial so some of the things that I deliberately didn't mention regarding the problems wouldn't be focus of people wanting to behead me. Unfortunately writing this new tutorial took me way longer than anticipated.</p><p>Anyway, it's finally here, <a href="http://kehomsforge.com/tutorials/multi/more-networking-godot/partundefined">More Networking with Godot</a>. In this new tutorial I cover the following topics:</p><ul><li>Fixes to some of the oversights of the first tutorial.</li><li>Very basic authoritative server setup.</li><li>Latency simulation and measurement.</li><li>Snapshot interpolation.</li><li>Player kicking from the server.</li><li>Chat system.</li></ul><p>Truly hope you find it useful!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Godot Networking]]></title>
            <link>http://kehomsforge.com/news/posts/20190517/gdnetworking</link>
            <guid>http://kehomsforge.com/news/posts/20190517/gdnetworking</guid>
            <pubDate>Fri, 17 May 2019 12:00:00 GMT</pubDate>
            <description><![CDATA[<p>Added a new tutorial, <a href="http://kehomsforge.com/tutorials/multi/multiplayer-game-setup-godot/partundefined">How to Setup Multiplayer Game in Godot</a>. It's a multi-part tutorial that details how to create a simple synchronized multiplayer game, including some rudimentary &quot;bots&quot; to fill in the maximum amount of players in the game.</p>]]></description>
            <content:encoded><![CDATA[<p>Added a new tutorial, <a href="http://kehomsforge.com/tutorials/multi/multiplayer-game-setup-godot/partundefined">How to Setup Multiplayer Game in Godot</a>. It's a multi-part tutorial that details how to create a simple synchronized multiplayer game, including some rudimentary &quot;bots&quot; to fill in the maximum amount of players in the game.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Forge is Lit]]></title>
            <link>http://kehomsforge.com/news/posts/20190411/forgeislit</link>
            <guid>http://kehomsforge.com/news/posts/20190411/forgeislit</guid>
            <pubDate>Thu, 11 Apr 2019 12:00:00 GMT</pubDate>
            <description><![CDATA[<p>And so, my humble web... <em>cough</em> forge is open!</p><p>Right at its beginning, two Unreal Engine tutorials. A huge one, teaching how to create a 2D game, from start to &quot;finish&quot;, named <a href="http://kehomsforge.com/tutorials/multi/ucolumns-ue4/partundefined">uColumns</a>. The other tutorial is small and shows some ways to create custom C++ classes within an Unreal project. It can be found <a href="http://kehomsforge.com/tutorials/single/adding-class-ue4-project">here</a>.</p><p>I have also started the blog section with some <a href="http://kehomsforge.com/blog/posts/20190411/markdownstatic">Markdown impracticalities</a> that I have found while working on this website.</p><p>That is my warm welcome to the forge!</p>]]></description>
            <content:encoded><![CDATA[<p>And so, my humble web... <em>cough</em> forge is open!</p><p>Right at its beginning, two Unreal Engine tutorials. A huge one, teaching how to create a 2D game, from start to &quot;finish&quot;, named <a href="http://kehomsforge.com/tutorials/multi/ucolumns-ue4/partundefined">uColumns</a>. The other tutorial is small and shows some ways to create custom C++ classes within an Unreal project. It can be found <a href="http://kehomsforge.com/tutorials/single/adding-class-ue4-project">here</a>.</p><p>I have also started the blog section with some <a href="http://kehomsforge.com/blog/posts/20190411/markdownstatic">Markdown impracticalities</a> that I have found while working on this website.</p><p>That is my warm welcome to the forge!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Markdown (Im)practicalities for Static Site Generation]]></title>
            <link>http://kehomsforge.com/blog/posts/20190411/markdownstatic</link>
            <guid>http://kehomsforge.com/blog/posts/20190411/markdownstatic</guid>
            <pubDate>Thu, 11 Apr 2019 12:00:00 GMT</pubDate>
            <description><![CDATA[A quick and short rant on how markdown can sometimes be impractical for static site generation.]]></description>
            <content:encoded><![CDATA[<p>Yes, I know this is not exactly related to game development, but I have to talk/rant about this. Markdown is a really nice tool! It makes writing texts for web pages a lot easier. Yet, if you are using it as part of static site generation chain, like this entire site, then it becomes impractical, unless you have very simple requirements.</p><p>That's not the case for this site. As an example, I created the &quot;card&quot; system to layout the tutorials, news and blog entries. Those cards require quite a bit of nested <code>&lt;div&gt;&lt;/div&gt;</code> contents. After searching a bit about this specific case, people suggested to directly use the tags within the markdown file. Well, honestly that already defeats the purpose of the format. But, there is another problem. Nesting tags like that will somewhat &quot;force&quot; indentation in order to make the source readable. Well, depending on the markdown interpreter, it will trigger the <code>&lt;code&gt;...&lt;/code&gt;</code> tag, forcing to remove the readability of the text.</p>]]></content:encoded>
        </item>
    </channel>
</rss>