Skip to content

G4brielXavier/Hova

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

13 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Hova โ€” A DSL for Worlds, Entities & Game Universes

Made with Python GitHub Repo stars GitHub release (latest by date) GitHub all releases Python Platform Issues

HOVA

Stop describing game worlds, entities and rules using formats made for machines.

Hova is a human-friendly DSL made for world-building, entity definition, modding ecosystems, NPC sets, configuration-heavy systems and narrative universes. Write structured worlds once โ†’ export instantly to JSON, YAML or TOML.

Hova Plugin Extension is available:


๐ŸŽฎ What is Hova?

Hova is a Domain-Specific Language for describing worlds.

It is used to define:

  • games and engines
  • RPG & world-building projects
  • modding frameworks
  • structured narrative systems
  • projects with many entities and metadata

Hova files are written by humans.
They are compiled into JSON, YAML or TOML for machines.

๐Ÿ‘‰ More info & docs: Hova Documentation


๐ŸŒŒ Why Hova Exists

Hova was created by Gabriel Xavier (dotxavierket) to solve a real problem:

Developers, modders, writers and engine creators repeat data structures too much. They fight ugly configuration formats. They lose clarity.

Hova exists to:

  • make entity definition readable
  • formalize worlds without pain
  • keep creativity without chaos
  • export clean data that engines love

๐Ÿ‘ค Who is Hova for?

If your world has entities, rules, metadata or structure, Hova is for you:

โœ” Game devs โœ” Indie studios โœ” Modders โœ” Narrative designers โœ” Engine creators โœ” Tool builders


๐Ÿค” Why not just JSON?

This is the question everyone asks. And it's the wrong one.

JSON is an excellent machine format. It is stable, universal and easy to parse.

But JSON was never designed for human authorship at scale.

The real problem with JSON

JSON works great when:

  • generated by tools
  • used as output
  • consumed by engines

JSON breaks down when:

  • written by hand
  • maintained long-term
  • used to describe large worlds
  • edited by designers or writers

In game development, world data grows fast: enemies, items, NPCs, factions, rules, metadata.

JSON does not communicate intent. it only stores structure.

Hova's position

Hova does not replace JSON.

Hova exists before JSON.

  • Hova is the source of truth
  • JSON / YAML / TOML are build artifacts

Just like:

  • TypeScript -> JavaScript
  • SCSS -> CSS
  • Shaders -> bytecode

You don't write bytecode.
You don't write AST.
And you shouldn't have to write JSON by hand.

In short

JSON is for machines.
Hova is for humans.

Hova in a Build Pipeline

To Hova:

/world
    enemies.hova
    items.hova
    npcs.hova

After Build (Emiting as json):

/hovabuild
    enemies.json
    items.json
    npcs.json

๐Ÿง  Philosophy

Hova is NOT a programming language. Hova does NOT execute logic.

Hova is for describing worlds. Clean. Expressive. Deterministic.

Machines consume JSON. Humans deserve Hova.


Examples

If you want to be what Hova really does.

Simple:

Medium:

Advanced:

๐Ÿ› ๏ธ Defining Game Enemies

โŒ JSON (machine-friendly, human-hostile)

{
  "Enemies": {
    "Slime": {
      "Damage": 15,
      "MaxLife": 50,
      "Drop": {
        "Gold": 5,
        "Chance": 0.8
      }
    },
    "KnightGuard": {
      "Damage": 23,
      "MaxLife": 200,
      "Drop": {
        "Gold": 25,
        "Chance": 0.3
      }
    }
  }
}

Problems:

  • Deep nesting hides meaning
  • No semantic distinction between entities and metadata
  • Repetition grows silently
  • Refactoring is painful
  • Hard to read as a world

โœ… Hova (human-first, structured)

anvil Enemies

    atomic
        atom emit : "json"
        atom visual : "minimal"
    end

    ore Slime
        spark Damage int : 15
        spark MaxLife int : 50

        ore Drop
            spark Gold int : 25
            spark Chance float : 0.3
        end
    end

    ore KnightGuard
        spark Damage : 23
        spark MaxLife : 200

        ore Drop
            spark Gold : 25
            spark Chance : 0.3
        end
    end

end

Benefits:

  • Clear intent and hierarchy
  • Entities feel like entities, not objects
  • Structure reads like a design document
  • Easy to expand, refactor and reason about
  • Exports clean JSON instantly

๐Ÿงฉ Core Concepts

Hova Meaning
anvil world / root container
atomic metadata + output behavior
ore entity / object
spark property

Hova models structure. Your engine executes meaning.


๐Ÿ—บ๏ธ Hova Roadmap

Soon (not guaranteed but dreamed):

  • Markdown + .ini export
  • Better tooling
  • Game engine adapters

See full roadmap: Hova Roadmap


โš™๏ธ Installation

โœ” Releases on Github

Go to https://github.com/G4brielXavier/Hova

Download installer from Releases.


๐Ÿ“– Install in documentation

  1. Click on Install Hova vX.XX button in navbar.
  2. After, open the installer and install bin.

Don't forget to check ADD PATH.

๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ Test

Verify if it works using this commands:

> hova --version
Hova vX.Xx
> hova -v
Hova vX.Xx

๐Ÿš€ Learn Hova in 3 Steps

1๏ธโƒฃ Create shapes.hova 2๏ธโƒฃ Write:

anvil shapes
    atomic
        atom emit : "json"
        atom creator : "dotxav"
    end

    ore Square
        spark sides int : 4
    end

    ore Triangle
        spark sides int : 3
    end
end

3๏ธโƒฃ Run:

hova forge shapes.hova

Output appears in:

hovabuild/json

๐Ÿ”„ JSON / YAML / TOML

Set output:

atomic
    atom emit : "yaml"
end

Hova builds:

hovabuild/
  json/
  yaml/
  toml/

๐Ÿค Contribute

  1. Fork
  2. Create branch
  3. Commit
  4. Push
  5. PR

Ideas, docs, features and fixes are welcome.

View more here: Contribute Hova


๐Ÿ”ฅ Final Thought

Hova isnโ€™t โ€œjust another data formatโ€.

Itโ€™s:

  • a language for worlds
  • a bridge between creativity and machines
  • something game dev tools donโ€™t have yet

About

Hova is a Domain-Specific Language designed to describe and organize entities in a clean, readable and structured way. It lets you define your data once and automatically export it as JSON, YAML or TOML.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors

Languages