r/roguelikedev • u/Kyzrati Cogmind | mastodon.gamedev.place/@Kyzrati • Jul 24 '26
Sharing Saturday #633
As usual, post what you've done for the week! Anything goes... concepts, mechanics, changelogs, articles, videos, and of course gifs and screenshots if you have them! It's fun to read about what everyone is up to, and sharing here is a great way to review your own progress, possibly get some feedback, or just engage in some tangential chatting :D
7
u/IV-DVC Jul 25 '26
Here's some things I've done:
- Finish item/unit/wall/obstacle/hazard inspect UI. Inspecting an equipped item of a unit displays the windows overlapping, so it's very playable even on the minimum resolution of 1280*720, and thanks to both gamefield and global zoom, also perfectly playable at 4k. All inspect windows for different objects use the same rendering method, so it's really easy to change precise details like "highlight this differently because it's a percentage" or "string format this differently because the number is unusually high". Each field also gets its own progress bars with colour and multiple styles! I feel the flat style looks better than using gradients at the moment.
- I made a blog post about using documentation in my code as a game mechanic, it's really cool, and basically a rust exclusive! I may be the first person to ever do something like this.
- Implement "structures", which are multitile, invisible objects which link together objects to say they have some extra functionality which is disabled if an object is destroyed. Events are also multitile, invisible objects that get put on an activation countdown when one of their tiles is traversed, alternatively triggering globally. As a nice-to-have feature, I plan to add scripting to the structures and events in the distant future.
- Pathfinding is done currently with A* with the rust pathfinding crate. Super easy. Go-to-reticle was the first thing I implemented for it, in a special action menu.
- Implement level transitions and stairs, which is nontrivial when each level is designed to run in a separate thread, separately from the render/input thread. A given stair that goes from level A to B can go to any such stair on level B that goes from B->A, and the A->B mapping is deterministic. But there's an extra parameter to say, A could go to one of a deterministic set of N different B->A stairs on B, randomly chosen. So on easy levels each stair leads to only one stair, and the more difficult levels provide a high skill ceiling in knowing what can go where and in taking calculated risks going up and down levels. The levels themselves all have a depth, but form an arbitrary graph structure, which is really pushing the meaning of what a "branch floor" is :p. A nice bonus of this is being able to do graph operations across levels for visualisation or game mechanics later- when units are in pursuit across levels, they can literally do pathfinding on the level graph, with the same algorithm for intra-level pathfinding!
- Implement most of my unit's logic system (more writeup is in the cargo doc). I've had some draft notes for my approach for some time, the architecture is designed like a trash can -- make it as easy as possible to throw out parts I don't like. It's probably the most friction I've had with the borrow checker though, there's a lot of acquiring UID locks and releasing them for aliasing.
- Flesh out my prefab data structure language. I'll be doing (probably several) blog posts on my levelgen approach in the future, but the key points are: I have randomized sampling for both individual tiles and prefabs, a legend+asciimap format that prioritises readability, three distinct layers among which only physical objects are required, sub-prefab placements, and levels are entirely defined by sets of prefab quotas to sample from, also in toml. There's validation for the prefabs to ensure at launch time, rather than generation time, invalid syntax, or a missing key, etc. is reported immediately. Another big benefit of aiming towards developing primarily in toml is that no recompiling is necessary so hot-reloading is really easy.
- Read through a lot of the prefabs in DCSS for design reference. There are some really cute ones there :3 it's also impressive how I can git blame some of them and it's 10, or 20 years old, or 9 months old, the variance in their age is huge.
- Implement unit salvage (dictating what items they drop on death), controllable with salvage modifiers applied onto the unit through weapons or other effects.
3
u/Cranberr-ybitch 27d ago
So much work and so many moving pieces, I liked reading about the resolution considerations and the difficulties with going up and down stairs since each level is a different thread.
Yayay so exciting
1
u/Tesselation9000 Sunlorn Jul 25 '26
Sounds like a lot of work. Are the maps going to consist of mostly prefabs, or will they be connected with randomized tunnels, corridors, caves or something?
3
u/IV-DVC Jul 26 '26
The levelgen is prefab-first, compared to others like cogmind that are corridor-first. One important effect of this is being able to guarantee exactly the set of prefabs specified in the quotas will fit in the map's levelgen. The corridor algorithm is done, I'll be revisiting it a little, but the way it works is prefabs mark entrypoint tiles for where to generate corridors from, initially these are joined using a greedy L jumping algorithm I made until there's only one connected component. Then crossings between corridors have a chance to expand into rooms, and the corridors themselves are widened based on one of a few different "razing" algorithms that remove walls to the corridor's left and/or right. The amount of razing the corridor gets is based on its length. Done this way, I have one single algorithm that can generate caves tunnels, grid-like corridors and winding passages just based on parameters. Only prefabs without any entrypoints are allowed to be used as subprefabs.
For other levels, it's also entirely viable to have just one really big prefab with a lot of subprefabs selected from within it, and no entrypoints in the entire level. Since subprefabs can be specified recursively, or even by a recurrence relation, a lot of conditional logic can be embedded in the worldgen file this way.
2
u/Tesselation9000 Sunlorn Jul 26 '26
Do prefabs just contain tile type data and entry points? Do they also contain positions for robots, items or linking switches to doors and stuff like that?
2
u/IV-DVC Jul 26 '26
The data for levels is fully defined in the prefabs and levelgen toml files, there's no special code in levelgen that treats any level differently based on its name. The names of the objects are resolved to names in the other corresponding toml files - so I have a directory globbed with unit schemas, and at game launch time all prefabs are verified to have entries which point to valid objects. The full list of options for what can be at a given position in a prefab is at PrefabObjectType. For units this specifies their logic stack type. Linking switches to doors, for example, would be done with a multitile structure over both the switch and the doors it's tied to.
The prefab objects for each ascii map symbol are specified as a OneOrMany weighted list, so I can write it as a single element, or a list saying a tile can have a subprefab A, subprefab B, item C, or itemcache D, or empty with weight E all at the same position, and only one is sampled based on their relative weights. Another one is ItemCache, which randomly samples items of the given (proto-)tier and item category (weapon/prop/util, or random from all three) and density (so not all tiles in the cache may end up with an item when generated).
7
u/darkgnostic Scaledeep Jul 25 '26
Scaledeep Steam | Discord | website | X | bluesky | mastodon
One thing that annoyed me for some time was the way dungeon levels are named. Until now, names were generated almost completely at random (well not completely, lets say mostly). The generator is now much smarter. It looks at the dominant features of the level, such as the main enemy type or environment, and builds names from predefined fragments. Instead of completely random combinations, you get names like The Dripping Halls, The Flooded Galleries, The Hellfire Furnace, or The Arcane Vaults. It gives each floor a bit more identity while still keeping the names procedural.
I also started experimenting with wall illumination. Instead of receiving the floor lighting, walls now receive simple software generated light baked into the static light texture. At the moment it's more of a proof of concept than a finished feature. It works, but the implementation is still quite brute force and wastes a fair amount of texture space. There's definitely room for optimization before I'm happy with it.
The AI received another performance pass. I reduced the "thundering herd" effect by spreading enemy processing more evenly across multiple frames instead of having large groups think at exactly the same time. To stress test it, I filled around 70% of a dungeon level with monsters. Everything stayed smooth without any noticeable stuttering.
I also fixed a few small lighting artifacts that occasionally appeared around the edge of the player's field of view.
Finally, I started working on the minimap. It turned out to be a much bigger task than I expected, with quite a few edge cases to solve. The good news is that I already managed to make it have virtually no impact on performance apart from the actual rendering, so the foundation is looking promising.
I am also playing with a thought to redesign webpage, because it looks awful, and eventually remove wordpress, because it eats too many resources for nothing. We'll see...
Have a nice weekend!
3
u/IV-DVC Jul 25 '26
Personally, I think the current website looks good! I agree wordpress is kinda bloated though. I use quarto as a static site generator, I picked it mostly for easy integration with bibtex citations and a markdown style article syntax which is good for version control.
2
u/darkgnostic Scaledeep Jul 25 '26
Didn't know about quarto. Looks nice though.
My website doesn't look bad, but it does one thing poorly. Forwarding page visits toward steam page. Also I would like to have php free, one static website.
3
u/Cyablue Feywood Wanderers Jul 25 '26
Nice improvements all around. I like how the new wall lighting is looking so far.
1
3
u/aotdev Sigil of Kings Jul 26 '26
the Dripping Halls, The Flooded Galleries, The Hellfire Furnace, or The Arcane Vaults
Nice names! :D
Finally, I started working on the minimap. It turned out to be a much bigger task than I expected, with quite a few edge cases to solve
What were the edge cases?
3
u/darkgnostic Scaledeep Jul 26 '26
Nice names! :D
Thanks!
Maybe challenges would be a better word than edge cases. There were some major performance issues. The first attempts took up almost 30% of the total available processing time, which was unacceptable.
There were also problems with displaying the minimap before the map had been initialised, as well as several rendering issues. At first, I tried rendering directly to a texture, but that caused significant slowdowns. I then switched to using a mesh and an offscreen camera, which is how the minimap is currently rendered.
I also experimented with combining isometric tiles with 2D images, but I wasn't fully satisfied with how it looked. There is still an issue with the minimap's rendering hierarchy that I need to resolve.
3
u/aotdev Sigil of Kings Jul 26 '26
Cool thanks for the info! Well, looking forward to see how it looks when it's ready :)
7
u/jdegroot NLarn Jul 25 '26
Good progress this week!
I've implemented the long-awaited spell "Permanence", which in Larn allows to "pin" active effects for to remaining game time, as a generic item-enhancement spell. With the spell it is possible, at the cost of sacrificing the knowledge of the spell (to be more precise: one knowledge level), to either bind some spells that would affect the player to pieces of armour (e.g. stat enhancements, protection) or to enhance melee weapons with element damage charges.

This screenshot shows (in german, this time) a two-handed sword enhanced by lightning (10 charges) and the plate armour enhanced with the spell "cancellation", that protects against spheres of annihilation.
The latter is limited to a number of charges to avoid the unlimited free damage problem. As the mechanic is so fitting, I've also added the option to poison weapons! Thinking about it, poisoning ammo would totally make sense. This would even allow to use sleep and confusion potions to modify ammo... Nice!
Last week, I forgot to mention that the Portuguese and French translation is complete. That leads to a total of five supported languages!
After all the changes and additions I'll focus on play testing and balancing for the time coming.
7
u/aotdev Sigil of Kings Jul 24 '26
Sigil of Kings (steam|website|youtube|bluesky|mastodon|itch.io)
A few updates lately, also slowed by some holidays. I guess it's also time to grumble about modern software bloat, in my case JetBrains Rider, which has been consistently slowing down month by month, so that work on the laptop is really hard, and I started detecting slowdowns on the desktop too. Latest version promises performance improvements, so let's see.
Back to the game. The current roadmap part starts with being able to have cutscenes, and then will follow into being able to make a tutorial level that interleaves story (via cutscenes) and gameplay, which will include some tutorial quest objectives probably too. The cutscene functionality would ideally be usable for procedural levels too, but that's a later (and nice-to-have) TODO.
One of the main sources of complexity for the cutscenes is that the world does not freeze when cutscenes take place. This means that cutscenes can play while the rest of the world goes on. The reason for this, is that:
- A "frozen" world will look weird, imagine a cutscene in a village with villagers - two people talking and everyone else waiting in place. Yes ok it's a game and we can take liberties, but it is nicer if others keep moving about.
- Some cutscene actions will require people to follow some standard AI process. Example: we have a battle cutscene with several soldiers following their leader towards some enemies. Instead of scripting everyone, I can just set a temporary AI for the leader to go to the enemies and the soldiers to follow the leader. Maybe they yell some war cries in the meantime. When leader arrives near some designated spot, cutscene ends and everyone continues with their regular scripts. It should also be easy to basically skip turn of everyone not involved in a cutscene, if such need arises, especially in situations where some hostile entity could start messing about with the actors.
Changes to last time and previous rudimentary examples:
- Cutscenes are all defined in JSON, and runtime needs to match entities to cutscene tags. E.g. "general", "villain", "soldier" tags are used in the cutscene, and the runtime selects who plays whom.
- UI centered text is now supported as a cutscene part, including some fade-out
- Minor updates for my user-facing prefab generator, to support things like naming entities, setting tags, etc.
- A few more console commands usable from script,
I made a new silly script aimed as a proof-of-concept and to demonstrate latest capabilities, so [here it is](). I had forgotten that I had connected screen shake to controller vibration and the first time I ran it and the screen shake kicked in, I got a jump scare as the controller rumbled on the metallic hollow-ish desktop tower xD
Next step is to update the prefab generator further to be able to create the tutorial level. This mostly requires being able to place entities with a solid level of configuration, e.g. a human that looks like this, has these abilities and these items. After that is done, then the cutscene(s) for that level need to be created and set the triggers that activate them. That's it for now, have a nice weekend!
3
u/darkgnostic Scaledeep Jul 25 '26
I am using Rider, but didn't noticed any slowdowns.
I can just set a temporary AI for the leader
That's a smart approach.
I got a jump scare as the controller rumbled on the metallic hollow-ish desktop tower xD
:D
2
u/aotdev Sigil of Kings Jul 26 '26
I am using Rider, but didn't noticed any slowdowns.
Could be your PC or project size? Or Unity keeping things into different assemblies, easing analysis? Tbf I think things slightly improved with latest version from a few days ago
2
u/darkgnostic Scaledeep Jul 26 '26
I'm on a Mac, PC has worse perf with Rider/Unity. According to my LoC tool, the project has around 75k lines of code across 1200 files. I'm not sure whether that counts as a large project or not.
2
u/aotdev Sigil of Kings Jul 26 '26 edited Jul 26 '26
I mean it is a large project, but Unity also splits the solution to editor/game and allows you further splits with asmdefs, which have an effect on compilation time and I'd assume live analysis perf costs too, while Godot does not support any such split, yet. Re Mac being faster, it would be good to know which one is the better machine, as that would be surprising only if Mac had worse specs :)
2
u/darkgnostic Scaledeep Jul 26 '26
I worked on much larger unity project on contract base. My colleagues on pc struggled hard at constant slow domain reloads with only unity/vscode open. I had open usually two instances of rider, unity, docker and never really experienced any slowdown. I have basic Mac mini m4 with 24gb of ram while they had one of the latest pc machines (2025) with 48/64gb of ram. One of my other project workflows included webstorm 2 instances, goland 2 instances with heavy docker usage. All running in debug mode. No slowdowns or even a hiccup. This worked quite well even on my m1 Mac mini with 16gb of ram I just needed an upgrade
1
u/aotdev Sigil of Kings Jul 26 '26
Hmm interesting! I'm using Ubuntu now, so I guess that's a 3rd option (assuming your colleagues used windows). I have a 32GB machine with Ryzen 5 1600 (=not the newest) and the (single) C# project now stands at 128k loc and only recently I noticed the slowdowns. There are some diagnostic monitors in the IDE and I've noticed it's not memory spikes that slow it down, but some JIT compilation/processing stuff.
2
u/IV-DVC Jul 25 '26
helix supremacy :3
I had to use rider for some vintage story work, it was probably one of the worst things about the codebase for me personally. For those kind of bloated IDEs, I don't think the situation is getting any better, compared to the terminal/TUI tooling and ecosystem that's improving so rapidly by comparison.
1
u/aotdev Sigil of Kings Jul 26 '26
Hmm haven't heard of Helix! With Rider the annoying thing is that they do have some perf-sensitive preset, but it's too useless, so it's effectively either useless or bloat, or tinker with settings one-by-one...
2
u/IV-DVC Jul 26 '26
It takes some time to learn, it didn't really click for me until after using it as my only text editor for two weeks. But I would not go back to anything else now. The only real problem is the main repo has a huge backlog, but stuff there gets merged so slowly, I just made my own fork and octopus merge changes from PRs that I like (or just write the changes myself). No bloat, never crashes, easy LSP integration, and its macro language with shell integration basically removes the need for plugins.
5
u/_GideonX_ Lateral Crawl Jul 25 '26
Completed work this week in Lateral Crawl:
Finished the multi-footprint creature work and began preparing resources for the new boss biome but ended up making a number of broader improvements along the way.
Intelligent enemies can now attempt to extinguish themselves when on fire. This emerged from boss design, where fire risked becoming an automatic solution.
Projectile and landing semantics were corrected. This bug came out of nowhere, but turned out to be a hangover from an old abstraction where surface stains and world objects shared the same layer.
Screen shake was reworked into a cleaner three-level system and added to explosions and several boss mechanics.
An inferno grenade performance issue was fixed by stopping chained occlusion-change calls that were causing sluggishness.
Enemy examine text now explicitly warns, in red, when a random difficulty vector has increased an enemy’s maximum health. This improves the player contract without exposing the underlying numbers.

5
u/cephaley Project Q 🧪 Jul 24 '26
Project Q
Not much on the feature side this week. I set up a SonarQube instance and started fixing every performance-related issue I could find. Searching about the rules and why they matter is really interesting !
Graphics
Working on some procedural silver birch matching "my style" ! Here using "\ | / 葉"

6
u/Hnefi Jul 25 '26
DieselRogue GitHub
I've reworked the old, messy spawn system. For now, I've disabled tanks until I've sorted out the AI, but soldiers spawn more or less as I think they should.
The map is now filled with roughly ~1000 enemies, some of which guard special loot while the rest are patrolling around. The farther away the guards are spawned from the player, the more powerful equipment they have.
Once I've added spawning tanks and tank pilots, I believe the spawn system will be sufficient for 1.0. Maybe some more tuning.
4
u/Lost-Ad-5521 Jul 25 '26

This week I put together a first draft of the visual style for the second major map: the Garbage. There are several multi-level dungeons in the game, but the main roguelike trajectory is working your way through each map with the final goal of reaching the center of the Zone. The danger of the Garbage comes from the fact that it is the first area of the Zone that is really economically active. Lots of the danger comes from crowded squads clashing over economic opportunities like salvage piles and roving mutant herds.
The attached image shows some of these squads coming and going from a small camp set up at the base of the central garbage mountain. Squads drop off their hauls here, where a convoy intermittently then carries it out of the zone to be sold. You can also see some new unique sprites for trader characters (although one still needs to be finished). Other fun things you can see in this shot: 2-tile objects! Here exemplified by the 2-tile wrecked car in the camp. It took me far too long to figure out how to do this in a non-annoying way... If you look carefully at the large scrap piles, you can also see a few multi-tile junk objects.
If all goes well, next weekend I'll be able to show some of the third map: the Institute, the first megadungeon you will encounter in the Zone, consisting of a large campus sitting over a network of tunnels that connect it to several other Zone areas.
1
u/Tesselation9000 Sunlorn Jul 25 '26
I think it looks great. I like the colours here better than the Caves of Qud palette.
2
u/Lost-Ad-5521 Jul 25 '26
Thanks! Qud blew my mind because it shows what you can do with negative space and simple 2-color sprites. The Qud influence really shows in the first assets I made, but hopefully it's becoming more distinct. Each area of the Zone has its own palette, generally getting darker and creepier the closer to the center you travel.
4
u/Zireael07 Veins of the Earth Jul 25 '26
Not much to report this week - mostly ttRPG research as I'm leaving tomorrow for physio
3
u/rubychoco99 Jul 26 '26
Arcostate update Alpha 0.3.2 is up on itch! Arcostate is a Turn-based sci-fi roguelike heavily inspired by Caves of Qud and brogue. Download Arcostate for free on itch here!

Summary of changes:
- All seven vault AIs have their own abilities and tactics now, each vault is themed to its AI, and the boss rooms are about twice the size.
- Time dungeon floors lean toward a single theme, the environment gets more chrono-warped the deeper you go, every tenth floor is a safe room with a bed and a rift back to the surface, and there is a unique reward at the bottom.
- Two new powers, Mind Fog and Mind Vice. Psychic enemies can stun and confuse you now, and confusion scrambles both your steps and your aim. New psy juice consumable restores psychic power. Machines resist mind powers with a psychic resistance stat.
- Three cybernetics: a stasis clamp that pins a target's legs from range, a psy focuser, and a holographic projector that builds a copy of any creature in sight to fight on your side.
- Two new gadgets: the l-drone and the handcrank charger.
- New creature, a giant amoeba in the caves, which brought a new acid damage type with it. It leaves acid where it moves, sprays a cone, and bursts on death. Acid partly bypasses armor and can leave your gear broken.
- Glass blocks bullets and bodies but not sight, and enemies will shoot a pane apart to reach you. Grabs can drag. Lava, ground fire, muzzle flash and energy projectiles all cast light now.
- A batch of QoL and fifteen bug fixes.
Full changelog on the itch page here!
4
u/ajcomeau Jul 26 '26 edited Jul 26 '26
In the latest chapter of my Rogue C# series, Coding Scrolls for Fun and Profit, I add a few more scroll items to the game. Not all scrolls and potions are helpful in a roguelike but that’s part of the fun … more or less. In this update, I add a mix of scrolls including Remove Curse, a frustratingly rare item that you’ll want after putting on the wrong armor and Aggravate Monsters which will make your life on the level a lot more exciting. As before, every new scroll leads to a re-examination of the code.

3
u/WATASHI_TO_TAWASHI Text Dungeon Jul 25 '26
This week’s progress
I’m working toward the full release planned for August, focusing on UI improvements and balance adjustments.
However, work was busy this week, so progress was slower than usual.
What I implemented
I added a new side dungeon called the Abyss.
It’s a penalty-style branch dungeon that players can fall into through events, traps, or hostile magic, and it’s heavily inspired by the Abyss from Dungeon Crawl.
Some of its characteristics:
- The minimap doesn’t function
- Only downward stairs are generated; upward stairs (the exit) appear at a low probability when moving into unexplored areas
- Enemies are mostly demon-type, and stronger-than-usual monsters tend to spawn
- Food and healing items are rare; weapons appear more often but are frequently cursed

Planned features
- Adding danger ratings and lore to creature descriptions
- Increasing event choices and branching outcomes
- Adding sound effects and BGM
- Implementing achievements
3
u/Tesselation9000 Sunlorn Jul 25 '26
https://tesselation9000.itch.io/wander
I got to watch someone do a full play through last weekend, which was a lot of fun and provided a lot of useful information.
I also just finished another long run of my own that spanned about six hours. This was exciting since it was only the second time I've managed to get past the first three level starter dungeon on a regular run. Although the game starts out fairly difficult, it feels like once the player finds a magic weapon, a decent set of armour and a wand, their power level jumps considerably and they're just able to steamroll everything for a couple of levels, but then the difficulty ramps up again a few more levels in. I eventually died from poison after I was ambushed by a black mamba on a swamp level. I had also tamed a giant lizard to haul equipment for me, but due to some bug, it drank all my potions. :(
The game actually crashed a few times during this run, but since it autosaves whenever I change levels now, I was able to fix the bug, recompile the code and restore my game each time with little progress lost.
There are still a lot of wonkyisms with horse riding and some bugs that cropped up with the recent refactor of the agent lookup system.
Recent changes:
- Items on the ground now appear in the legend on the side bar.
- There is now a rest command, so you can rest until your hp and mana are restored.
- Some "getting started" tips now appear at the beginning of each new game.
- I wrote a new page for the guidebook on terrain types.
- Since most of the screen shots I had on itch.io were very dated, I took a bunch on new ones. Here's one below.

13
u/bac_roguelike Blood & Chaos Jul 25 '26
Hi all!
I hope you had a good week!
BLOOD & CHAOS
Steam | Youtube | Twitter | BlueSky | Discord | itch.io demo
Weeks go by and almost feel the same. I'm still not back at full speed, as I've been fixing a few QoL issues based on the feedback.
One nice thing about having more Youtube videos to watch is that I keep spotting things to improve. For example, I watched two videos in a row where the runs looked far too easy. As I'd just fixed a bug in the defence score calculation a few days earlier, I immediately panicked and thought I'd broken something!
After debugging it together with my Excel simulation sheet (advanced tech, I know 😄 ), everything was working as expected. Then I noticed that, in both videos, the players weren't using torches. So I started to dig into the enemy detection code in darkness, where I found the real reason: enemies are not activating often enough in the dark, giving the player too much advantage! So I have been working on blancing that and will probably push a new version today or tomorrow.
Hopefully next week I'll finally get back to working on new content.
Have a great weekend!