<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Gabriel Xavier</title>
    <description>The latest articles on Forem by Gabriel Xavier (@dotxavket).</description>
    <link>https://forem.com/dotxavket</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1731983%2F98334ac3-751d-42eb-9a90-e3ade3469940.jpg</url>
      <title>Forem: Gabriel Xavier</title>
      <link>https://forem.com/dotxavket</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/dotxavket"/>
    <language>en</language>
    <item>
      <title>Hova: a small DSL for describing worlds (early projects)</title>
      <dc:creator>Gabriel Xavier</dc:creator>
      <pubDate>Wed, 21 Jan 2026 21:13:33 +0000</pubDate>
      <link>https://forem.com/dotxavket/hova-a-small-dsl-for-describing-worlds-early-projects-4oa</link>
      <guid>https://forem.com/dotxavket/hova-a-small-dsl-for-describing-worlds-early-projects-4oa</guid>
      <description>&lt;p&gt;I've been working on a small project called Hova.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hova&lt;/strong&gt; is a DSL focused on** describing game worlds, entities and universe structures** in a clean and declarative way.&lt;/p&gt;

&lt;p&gt;It is not a game engine, and it doesn't execute logic or handle rendering.&lt;/p&gt;

&lt;p&gt;Its only goal is to describe what exists in a universe — not how it run.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why I built it
&lt;/h3&gt;

&lt;p&gt;When building games or tools, I often felt that world design ended up mixed with engine code, scripting logic or implementation details.&lt;/p&gt;

&lt;p&gt;I wanted something that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stays engine-agnostic&lt;/li&gt;
&lt;li&gt;focuses only on world structure and meaning&lt;/li&gt;
&lt;li&gt;can be consumed by different tools or pipelines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's where Hova came from.&lt;/p&gt;




&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;

&lt;p&gt;You write Hova source code describing your world, and it gets converted into a &lt;strong&gt;neutral format&lt;/strong&gt; (currently JSON).&lt;/p&gt;

&lt;p&gt;This output can then be consumed by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;game engines&lt;/li&gt;
&lt;li&gt;custom tooling&lt;/li&gt;
&lt;li&gt;build pipelines&lt;/li&gt;
&lt;li&gt;converters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hova doesn't decide &lt;em&gt;how&lt;/em&gt; the world is used — it only describes it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A small example&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;anvil Shapes 

    atomic 
        atom visual : "minimal"
        atom hideConfig : "on"
    end

    ore Square 
        spark sides : 4
    end

    ore Triangle
        spark sides : 3
    end

end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Which converts to:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Shapes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"atomic"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"emit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"json"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Square"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"sides"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Triangle"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"sides"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Current state
&lt;/h3&gt;

&lt;p&gt;Hova is still an &lt;strong&gt;early project&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Documentation is a work in progress, so the &lt;code&gt;/examples&lt;/code&gt; folder is currently the main reference to understand the language.&lt;/p&gt;

&lt;p&gt;The language itself is evolving, and feedback at this stage is extremely valuable.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi60xm0lu1uepi1pe8hnj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi60xm0lu1uepi1pe8hnj.png" alt=" " width="800" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What I'm looking for
&lt;/h3&gt;

&lt;p&gt;I'd love feedback on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the language design&lt;/li&gt;
&lt;li&gt;syntax clarity&lt;/li&gt;
&lt;li&gt;whether this kind of DSL could be useful in real game or tooling workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're interested, here's the repository:&lt;br&gt;
👉 &lt;a href="https://github.com/G4brielXavier/Hova" rel="noopener noreferrer"&gt;https://github.com/G4brielXavier/Hova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;THANKS FOR READING.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>dsl</category>
      <category>opensource</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Hova: a small DSL for describing worlds (early projects)</title>
      <dc:creator>Gabriel Xavier</dc:creator>
      <pubDate>Wed, 21 Jan 2026 21:13:33 +0000</pubDate>
      <link>https://forem.com/dotxavket/hova-a-small-dsl-for-describing-worlds-early-projects-336m</link>
      <guid>https://forem.com/dotxavket/hova-a-small-dsl-for-describing-worlds-early-projects-336m</guid>
      <description>&lt;p&gt;I've been working on a small project called Hova.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hova&lt;/strong&gt; is a DSL focused on** describing game worlds, entities and universe structures** in a clean and declarative way.&lt;/p&gt;

&lt;p&gt;It is not a game engine, and it doesn't execute logic or handle rendering.&lt;/p&gt;

&lt;p&gt;Its only goal is to describe what exists in a universe — not how it run.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why I built it
&lt;/h3&gt;

&lt;p&gt;When building games or tools, I often felt that world design ended up mixed with engine code, scripting logic or implementation details.&lt;/p&gt;

&lt;p&gt;I wanted something that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stays engine-agnostic&lt;/li&gt;
&lt;li&gt;focuses only on world structure and meaning&lt;/li&gt;
&lt;li&gt;can be consumed by different tools or pipelines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's where Hova came from.&lt;/p&gt;




&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;

&lt;p&gt;You write Hova source code describing your world, and it gets converted into a &lt;strong&gt;neutral format&lt;/strong&gt; (currently JSON).&lt;/p&gt;

&lt;p&gt;This output can then be consumed by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;game engines&lt;/li&gt;
&lt;li&gt;custom tooling&lt;/li&gt;
&lt;li&gt;build pipelines&lt;/li&gt;
&lt;li&gt;converters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hova doesn't decide &lt;em&gt;how&lt;/em&gt; the world is used — it only describes it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A small example&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;anvil Shapes 

    atomic 
        atom visual : "minimal"
        atom hideConfig : "on"
    end

    ore Square 
        spark sides : 4
    end

    ore Triangle
        spark sides : 3
    end

end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Which converts to:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Shapes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"atomic"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"emit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"json"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Square"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"sides"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Triangle"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"sides"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Current state
&lt;/h3&gt;

&lt;p&gt;Hova is still an &lt;strong&gt;early project&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Documentation is a work in progress, so the &lt;code&gt;/examples&lt;/code&gt; folder is currently the main reference to understand the language.&lt;/p&gt;

&lt;p&gt;The language itself is evolving, and feedback at this stage is extremely valuable.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi60xm0lu1uepi1pe8hnj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi60xm0lu1uepi1pe8hnj.png" alt=" " width="800" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What I'm looking for
&lt;/h3&gt;

&lt;p&gt;I'd love feedback on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the language design&lt;/li&gt;
&lt;li&gt;syntax clarity&lt;/li&gt;
&lt;li&gt;whether this kind of DSL could be useful in real game or tooling workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're interested, here's the repository:&lt;br&gt;
👉 &lt;a href="https://github.com/G4brielXavier/Hova" rel="noopener noreferrer"&gt;https://github.com/G4brielXavier/Hova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;THANKS FOR READING.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>dsl</category>
      <category>opensource</category>
      <category>gamedev</category>
    </item>
  </channel>
</rss>
