I’ve always loved roguelikes, and have dabbled in writing them over the years. In true RL dev fashion, I have a large folder of unfinished fiddling and projects. 1340 is kind of the culmination of that, my ArmA modding experience, and playing way too much Cataclysm: Dark Days Ahead1, Dwarf Fortress2 and RimWorld Hardcore SK mod3. All of those games, and ACE4/ACRE5, tickle my fancy for one thing: making or playing stupid simulations in games for no reason at all.

1340 is a rogulike/roguelite/whatever settlement management game set in a fantasy setting, based on the society and technology of 1340. The goal of this project is a Dwarf Fortress/RimWorld style settlement manager and builder, with a heavy focus on medieval society, relationships, religion and death. 1340 is the year chosen due to the beginning of the Black Plague. I don’t want to allow technological progression, and don’t want to limit myself to realistic aspects of the age - hence the fantasy side. Many people believes in snarks, grumpkins, werewolves, goblins and other types of monsters - and I want to have them in the game. Just the same, herbal and magical practices still existed; both magical and religious, which were large parts of peoples lives.

The Engine

The game is written in my own dogfooding (testing) engine using various technologies, all in purely Rust. It’s a fairly ECS-heavy architecture, with a lot of laziness and testing sprinkled on top. It currently supports Vulkan (via ash) and OpenGL/WebGL (via glow). I’ve only actually written a rendering backend for Vulkan, however, as I continue testing how I want to render my maps and entities.

I’ll probably be detailing the various technologies and their uses as I try to continue writing here.

Highlights

The game currently has these working pieces, making it a playable game:

  • Large map rendering & high entity count rendering

    Screenshot
    This is my experimentation with rendering 4096x4096x128 maps, with hundreds of thousands of entities (trees, mostly) in non-classical methods. So far, I feel I’ve been fairly successful here.

  • Behavior Tree implementation with behaviors
    Module
    Usage
    I use BT’s for smaller units of task completion, and this system is implemented and working.

  • Utility AI for behavior decision making
    Module
    The IAUS/Utility AI performs high level decisions of things the AI wants to do; such as eat, do work, or run away.

  • A data driven reactions/production system
    To try and stop myself from becoming depressed writing too much code, I have a simple data definition system for reactions, or recipes basically, which produce the majority of in game results: this includes digging, cutting, workshops, pooping, and everything else. Example

    • Conditions Lexer I’m also experimenting with writing a conditional lexer for these reactions, to make conditions “scriptable”, and more data driven. You can see my experimenting with that Here
  • Things are playable!

    GIF

I feel I’ve gotten to the point I feel comfortable expanding content and features now; the engine is in a state that adding things is rather smooth, and I now know my own foot guns. I do find myself refactoring code and moving things around a fair bit, but it really is time to add FUN and content.

So without further uncomfortable showoffy stuff; my goal is to continue development of all things 1340 and Rust and write my tales here, for no one to read.


  1. Cataclysm: Dark Days Ahead - https://cataclysmdda.org/ ↩︎

  2. Dwarf Fortress - http://www.bay12games.com/dwarves/ ↩︎

  3. Hardcore SK - https://github.com/skyarkhangel/Hardcore-SK ↩︎

  4. ACE3 - https://ace3mod.com ↩︎

  5. ACRE2 - https://github.com/idi-systems/acre2 ↩︎