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 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.
The game currently has these working pieces, making it a playable game:
Large map rendering & high entity count renderingScreenshot
Utility AI for behavior decision making
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.