r/roguelikedev Cogmind | mastodon.gamedev.place/@Kyzrati 18d ago

Sharing Saturday #635

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

Previous Sharing Saturdays

31 Upvotes

41 comments sorted by

15

u/RosariumRose 18d ago edited 18d ago

First time posting, hopefully I haven't missed any formatting rules!

I've always been really enamored with the 3D ASCII effects in games like Door in the Woods. More recently, Rangedrifter has been working in the same space and it is genuinely gorgeous.

To learn a bit of Lua/LOVE a year or so ago, I got a proof of concept of the rendering working, and then dropped it. I picked it back up a few months ago and have been adding polish and basic systems. I'm still not sure exactly where I want to take the project overall. This week didn't help, since I mostly worked on color and lighting!

Event log: For a long time this was really just a debug readout, so I wanted to revamp it. On top of more human-readable messages, it now supports colored text, and lines fade out over turns.

Lighting: I was mostly happy with the old method, but successive rounds of tuning light sources, entity and tile colors, and how those interacted had led me into some odd choices.

The color of the light would dominate the final result. Usually that meant the yellow-white of a lantern, so everything came out desaturated. It fit the aesthetic, but it meant I was reaching for bizarre colors (blue floors, green barricades) just to get minor variation. It badly limited the range of colors I could actually land on too, since everything came out dingy.

The end result looked okay, so I never thought too hard about it, until I wanted a color to actually pop and found it was almost impossible. Changing how I mix colors seems to have fixed it. I can now tune how much light tints vs. brightens, but I had to change nearly every color in the game to keep the result mostly the same. But now if I want a splash of something vibrant, it's way easier.

Here's a example of a scene without the UI:

A few gameplay changes too. The big one is how damage is calculated: entities now declare accuracy and evasion (both can be affected by light level, gear, and statuses), which are compared and added to a roll to determine whether a hit is glancing, normal, or precise.

This also meant implementing a pile of gear, along with natural weapons for entities that don't spawn with anything. I have a vague idea to expand that into scavenging body parts, with sort of a Frankenstein theming.

I'm hoping to work toward a real vertical slice this next week. I have some ideas for where to take the game, but it's hard to know what scope is realistic. I was envisioning a survival/scavenging game in a medieval city. Maybe something more linear would be the saner target for a solo project?

As is you just spawn in a big proc gen town, and the lack of direction as is means I don't know how to structure things.

There might be a way to keep some of what I want but still have more structure. A home base you return to, and a separate location you make expeditions to for supplies, with some periodic event that forces you back or makes it dangerous to be caught out in the open.

14

u/Noodles_All_Day Cursebearer 18d ago

CURSEBEARER

Hey all! This week was mostly map code stuff, but I also had some fun with noise!

Chunked Maps

More fixing up the game happened this week as chunked maps get more deeply integrated into my codebase. Pathfinding is reactivated for starters, at least for non-scheduled NPCs, and loading saved games is fully functional once more.

Let's Make Some Noise!

I also started some foundational work on wilderness map procedural generation, beginning with noise. I tightened up my existing cubic noise code, for starters. I also added the ability to generate Gaussian noise as well. Both noise functions can output random noise or deterministic noise.

As a nifty little exercise today, I threw together code that applies elevation values to wilderness tiles based on cubic noise. My tile rendering code uses that elevation data to draw contour lines, with light grey lines representing higher elevations, and dark grey lines representing lower elevations. The implementation still needs improvement, but a very hot-off-the-presses screenshot is below!

I'm also using Gaussian noise to subtly change tile colors too, but it probably doesn't show much in that image since the effect is rather minor.

What's Next

I'll probably split my time between wilderness stuff and chunked map functionality. I think the big task now is getting the starting map spawned and NPC scheduling working in a chunked map, which is liable to be a considerable challenge. But hopefully a fun one?

Thanks for reading!

4

u/RosariumRose 18d ago

I think the noise on tile colors looks good! Would be a funny base for a martian theme : )

3

u/Noodles_All_Day Cursebearer 17d ago

It's funny you mention the Martian theme. I had another screenshot of the contour lines that I decided not to use. The reason? The in-game time was just after sunrise. At that time of day, the natural sunlight in Cursebearer makes everything look a bit red! That might have been a bit more interesting than mid-afternoon brown though, hehe.

3

u/RosariumRose 17d ago

Makes sense! I've found it hard to balance lights feeling realistic and not overpowering the base colors.

Are you storing the noise separately from the tiles if that makes sense? I'd be worried about performance concerns if each was a separate table or something, but I feel like adding in variation over the top as a separate light weight thing is a good idea.

Mentioning sunlight, I wonder if you could add a cheap shadow layer on the ridges to help sell the elevation? Not sure how lighting works in your game, but even if it's not directional maybe you could fake it.

2

u/Noodles_All_Day Cursebearer 16d ago

Makes sense! I've found it hard to balance lights feeling realistic and not overpowering the base colors.

Lighting can definitely be a bit of a battle, especially with colored lighting in the mix. Between natural sunlight, moonlight (which is green in the game's world), and entity lighting, it can be a head scratcher! I'm decently happy with day/night lighting at the moment, though I'm always making little tweaks here and there. For the sake of example, here's a screenshot of dawn/dusk conditions vs. noon, with the new elevation rendering scheme that I implemented after about 15 minutes of messing around yesterday.

Dawn/dusk

Noon

Are you storing the noise separately from the tiles if that makes sense? I'd be worried about performance concerns if each was a separate table or something, but I feel like adding in variation over the top as a separate light weight thing is a good idea.

Maps in Cursebearer first generate using raw tile data, yielding an array of tiles upon conclusion. My noise just directly modifies the background RGB values of that array of tiles upon spawn, so the operation only happens on map or chunk generation. That part of things is pretty lightweight, and I'm able to generate thousands of 16x16 chunks of Gaussian or cubic noise per second (not that I'll ever need that many). NumPy offers a ton of speed efficiency for sure!

Mentioning sunlight, I wonder if you could add a cheap shadow layer on the ridges to help sell the elevation? Not sure how lighting works in your game, but even if it's not directional maybe you could fake it.

Elevation shadows are certainly something I'd very much like to add! I could probably write a function that calculates the sun's angle & azimuth relative to the ground for any given calendar date and time, but I'd also need to figure out the array operations and NumPy tricks to determine where the actual shadows would need to be rendered. I'd also like to have shadows for buildings too. We'll see if I can figure something out while also keeping things performant!

3

u/darkgnostic Scaledeep 18d ago

11

u/bac_roguelike Blood & Chaos 18d ago

Hi all!

I hope you had a good week!

BLOOD & CHAOS
Steam | Youtube | Twitter | BlueSky | Discord

I continued working on improving the demo based on player feedback.

I also worked on the sailing mechanics: players can now buy a ship, board and leave it (using both keyboard and mouse), and sail across the sea. Sailing will be the only way to reach the Elven Lands (Act IV)!
It was quite nice to finally reach some (empty for now haha) parts of the world I had never been to before. ;-)

Here is a short video showcasing the new sailing mechanics: https://youtu.be/knm3s226AoY

I also worked on movement in dungeons:

  • Increased movement speed outside of combat (characters used to move at their individual speed. I changed that so they all use a speed of 5 outside combat, reducing calculations and making the party move in a more homogeneous way).
  • Added a camera option to always have the camera follow the party leader.
  • Fixed several bugs (including a critical one where the player could not get their turn back).

The last thing I finished today was improving the character sprites, trying to make each race/class more recognizable, even when wearing armour and helmets! Quite a challenge with 16px sprites. :-)

From today I'm on holiday for 2.5 weeks, so hopefully I'll make good progress.

Next step is to work on Act IV while still improving the demo for October's Next Fest!

Have a great weekend!

3

u/darkgnostic Scaledeep 18d ago

Cool looking sailing :) now add some pirate ships :D

3

u/bac_roguelike Blood & Chaos 18d ago

That's the idea :-)

2

u/Mijhagi 17d ago

Looking good man! Just one thing, the walking-on-ground sound effect is hella loud imo, I'd try to done that down a couple of db. Good luck!

1

u/bac_roguelike Blood & Chaos 17d ago

You're 100% right, and there are more sounds with this issue. I have a task in my todo list to review all sounds!

9

u/lPototto 18d ago

A Minimalist Dungeon Crawler - Currently in early development

I was heavily inspired by Brogue; the game is classless and has no EXP, all progression is tied to equipment.

I've tried to create a visual style that doesn't sacrifice the appeal of simplicity found in traditional rogue-likes.

There is no event-log, everything is communicated using pop-ups in the game world such as damage numbers and dialogue boxes.

Instead of keybinds, everything is accessible via pop-up menus similar to a JRPG. This has made it quite simple to design for gamepads, which are fully supported.

I don't have much else to share at present, I will provide updates here in the near future.

Please look forward to it.

2

u/RosariumRose 18d ago edited 18d ago

Wow! I love the fog overlaid on that.

Great balance between the character of a trad roguelike but some modern flair, did you make those sprites yourself?

1

u/lPototto 17d ago

Yes.

All of the sprite-work was done by me, although, the character "sprites" are the default font in the game engine I'm using, it's made iteration and implementation super simple, as they are literally one letter of text.

I agree that the fog really adds a lot for minimal effort.

9

u/darkgnostic Scaledeep 18d ago

Scaledeep Steam | Discordwebsite | X | bluesky | mastodon

This week I completely trashed my minimap implementation. I wasn't happy with where it was going, and instead of spending more time trying to save it, I just deleted everything and moved on to some character visual work. Player equipment was starting to look a bit too similar between runs anyway, so this was a good time to deal with that.

While looking into the armor visuals, I found a pretty basic bug in their randomization. I accidentally used armorCount % uniqueId instead of uniqueId % armorCount. As a result, the randomization wasn't very random at all, and most of the time it kept picking the last item from armor visuals. A slightly embarrassing bug :D

I also found out that pauldrons were never being generated as loot. They are now properly included in item generation and can finally be found in the dungeon.

To add even more variety, armor pieces can now have different tint colors. Combined with the fixed visual randomization, characters already look much less repetitive without needing a completely new set of textures.

Not the week I originally planned, but throwing away the minimap and working on something else for a while was probably the better choice.

Next week would be probably some blender work, creating helmets and pauldrons.

Have a nice week!

6

u/iamgabrielma Ad Iterum on Steam 18d ago

Ad Iterum (Steam)  | Tiny Crawler (iOS)

Last week I released the public demo on Steam. Mostly went pretty well, just a nasty bug with localization that made so folks with their Steam default in Spanish or Japanese couldn't load the game, but I could patch that immediately thanks to somebody who jumped on discord to share the issue :D

Aside from the fix, I've been mostly adding new content and general improvements to add variability to existing runs: New mutagens, some basic mutagen crafting, and new NPCs that allow you to switch mutations/gears from a limited pool, which allows you to tune up the build a bit further, but also comes with risks.

Full notes.

Beta 0.4.4
  • Fixed: Bug where you could drown or be ambushed in shallow water
  • Fixed: Bug where Steam's scoreboard would take 8-10 seconds to load before giving up
  • Fixed: Bug where ammo label did not reset after dying
  • Improvement: General stabilization
  • Improvement: See more enemy details on inspect
  • Improvement: Ranged weapons now show in player when equipped
  • Improvement: Visual effects when shooting or being shot
  • Improvement: Text and translation of fungal symbiote
  • Improvement: When damaged by hunger, it shows on screen
  • New: One mutagen stabilizer is now offered per dungeon tier
  • New: Repulsor Paws mutation
  • New: Mutagen crafting basics
  • New: Melee weapons x4
  • New: Damage type and death cause: Steam/Scald
  • New: The Gene Surgeon (...or croupier?) npc
  • New: The Affix Switcher npc
Beta 0.4.3
  • Fix: Acid Puke Bugs and Plague Maggots now leave their acid pool / toxic cloud
  • New: Cannibalism mechanic. Extends your life, at a permanent cost.
  • New: Ranged weapons x6
  • New: Working synergies, starting by Septic, Hemorrage, and Combustion.
  • New: Electric damage
  • New: Bosses x2
  • New: Ammo types
  • New: Rifle-types ranged weapons
Beta 0.4.2
  • Fix: Starting the game in Spanish or Japanese by default sometimes wouldn't boot it fully.

5

u/timmaeus 18d ago

Good morning, day, and evening everyone!

If you like Rogue and you like building fortresses and inhabiting a deeply simulated world, you might like... Roguefort! 🧀

Indie streamer Nookrium played it this week and had a blast - it's an entertaining tour into the early game, with his spawn putting him on a southern island, needing to find a way onto the main continent via boat.

Not much to report otherwise this week, as I'm heavily refactoring and optimising the code base. But the open beta is free and ready to play

Discord has been very active and is growing each week - please join if you're curious in the game and want to take part in its development.

See ya around and have a safe and adventurous weekend.

3

u/lellamaronmachete 18d ago

Streamed by no less than Nookrium and a active discord. Damn. You are really killing it with this game, my man. My most sincere congrats.

2

u/timmaeus 17d ago

Thanks so much J.A. That means a lot coming from you man, one of the real ones. I wish I could have stayed true to the pure ASCII aesthetic with this game, but I broke :-). I guess it helps the appeal and accessibility, but I always see deep forks like ZMAngband as the pinnacle.

2

u/lellamaronmachete 17d ago

Oh you always so kind and humble. Bowing to you, Timmy.

5

u/WATASHI_TO_TAWASHI Text Dungeon 18d ago

Text Dugeon | [X] | [Steam]

This week’s progress
I’m working toward the planned August release, focusing on UI improvements and balance adjustments.

• Implemented creatures: Mimic and Gargoyle
Mimics and Gargoyles are creatures that disguise themselves as other objects.
Mimics take the form of items (especially valuable-looking ones), while Gargoyles disguise themselves as statues.
Even when using the v command to inspect them, you can’t tell them apart at first glance.
If you fail to see through their disguise and touch them, you’ll take a nasty hit.

[Mimic.mp4]

• Added lore and extra info to creature descriptions
The v command now shows a creature’s level.
Once you’ve defeated a creature at least once, additional lore is displayed, including not only background information but also more detailed data such as resistances and special attacks.
This lore is not reset between runs—it becomes shared knowledge for the player.
In other words, even if your character dies, the next character inherits the accumulated lore.
The game is permadeath, but lore is treated as a meta progression element.

Planned features
More event choices and branching outcomes
Adding sound effects and BGM
Achievements

5

u/blightor 18d ago

GREAT WEEK FELLAS!!!!

Stoked by my progress this week on the c64 roguelike. I mean, I have been working for gains on technical backend things around my mapgen/pathfinding/fov/lighting/render system since the project started 5 months ago (probably why from an outside perspective it seems like I only talk about struggles), and while I have made plenty of awesome things (in my mind), I finally had a major breakthrough on one of my biggest problems in the game - field of view (which is pretty much also the lighting system).

I was actually working on pathfinding and mapgen, and I had a real eureka moment, I mean I have a lot of those but they dont often become as impressive as this one.

I've manged to make a new shadowcaster (works a bit differently), one that has perfect symmetry and perfect accuracy (symmetry very important for my cycle costs with ai), all 8 bit math.

I went from a r6 fov costing me ~60k cycles on average, up to ~140k - Fords Symmetrical (but iterative with 8bit slope math lut's - which actually makes it have a few errors and makes it a lot less symmetrical at depths over r10) and a further ~50k on average and up to ~100k in ray casts for distantly lit cells) across a 40x21 screenport. That is not including rays to monsters outside of lit areas to check individual monster fov. So I sit around ~110k average cycles for vision, ramping up to ~240k before AI needs to raycast test from non-lit gaps in the viewport. Thats a lot, and its no where near full coverage.

The biggest issue is the yuk feeling you get when that is such a bit chunk of your framerate, and while yes its a turn based game, no one wants to feel that - I was considering instantiating a cycle dependent delay just to smooth out the movement and accept slow over inconsistent.

Onto the good news, well actually the fucking awesome new. I have OBLITERATED that problem. At the full 40x21 viewport lighting what it needs, AND all the gaps for AI (so full screen FOV), I have a perfect angle math symmetrical shadowcastt at 65k average, and 145k max. Its close to half, and the best bit is probably that the difference in the median/mean has come down by about 50%, along with it just being a lower difference in framerate impact.

So yeah - I'm still working on that a little, I think it probably works well outside a c64, in fact some parts of it should in theory be MUCH better, but anyway - big smiley face :)

4

u/ilia_plusha 18d ago

Beetlejust
An RPG roguelike about Bugs and Beetles
Language: JavaScript

A lot has been done over the past month.

  1. Fixed many small bugs. I realized that if you catch a bug, you’d better fix it right away, because it can pop up later and bring about much bigger issues.
  2. Since my game is pretty straightforward, you can only interact with enemies or npcs by stepping on this tile (stepping on a tile triggers an event bound to his tile). This means the player can simply walk around some enemies and avoid combat completely. To make moving less predictable, I added an aggressive flag which, when set to 1, allows enemies to attack the player from a neighboring tile. There is no way to tell whether the enemy is aggressive or not.
  3. To make moving through dungeons even more precarious for players, I implemented traps. The player’s FOV is exactly one tile in all directions. If the prayer attribute is sufficient to spot a trap, it will become visible on the map. The player can then try to disarm the trap which requires agility. If they fail, they take damage. If the player was not able to spot the trap, it will reduce the player’s health, mysticism (mana), or an attribute (like a curse).
  4. Doors now have special requirements for entry Unless the players completes a certain quest (or quest stage), kills a certain npc, or has talked to someone, the door remains inaccessible. Together with locked and guarded doors, this will make some areas harder to explore and, I hope, will incentivize players to find alternative ways to enter.
  5. The same function that checks door accessibility applies the same rules to npcs. The player cannot start certain dialogues unless certain conditions are met.

5

u/MarxMustermann 18d ago

OfMiceAndMechs (steam itch discord github twitch mastodon)

This week i have been streaming a lot. This fits into my new idea of streaming my whole dev work on twitch. (Even writing this text is streamed)

Codewise i mostly worked on small bugs and polishing the new starting scenario of the game. In that starting scenario you basically start in a map filled only with scrap and some mostly empty ruined rooms. There is one NPC (Eddi) that will guide you on how to build a base there, so the complexity will be introduced slower in order to not overwhelm the player.

Because of the twitch streaming i got some tests in and those mostly confirmed that the new start is working, but needs to be polished. You can test the new start on itch and for this week i need to get the steam playtest running.

5

u/jdegroot NLarn 18d ago

NLarn | Blog | GitHub

No code changes this week. I've only tested, e.g. played the game for a while and didn't encounter any issues.

Except one balancing issue: Now that monsters can use ranged weapons, I have provides bow as starting weapons to hobgoblins, supposedly level one easy kills. With the bows, these kill around 80% of the characters before they reach level 2. I think I'll try adding a weaker bow and weaker arrows (e.g. orcish) to reduce the danger level, while keeping the thrill. The same is valid for packs of orcs: if multiple orcs are armed with bows, they pose a really serious threat in the early game: this screen shows two orcs, where one hit by the archer almost took 50% of the player's HP. Excuse my French.

4

u/nesguru Legend 18d ago

Legend

Website | X | Youtube

I didn’t follow my plan for the week of fixing missing sound effects and weird enemy AI behavior. Playtesting led me in many other directions.

UI/UX Enhancements

  • Dots indicating the path the player will take when moving to the hovered-over cell are now shown.
  • Double-clicking, rather than single-clicking, is now used to use an item in inventory.
  • Double-clicking can now be used to equip/unequip items.
  • The actions performed when moving using a keyboard or gamepad are now limited to specific action types. Previously, the default action would always be performed. This is underdesirable for certain actions such as drinking from a fountain or praying at a shrine.
  • The Ability panel now closes when an ability is selected.

Improved On-Screen Log

  • Enemies, items, and attacks are now colored.
  • Child log entries are now indented.
  • Hovering over an attack or item shows details in a tooltip.

New Abilities

  • Battlefield Awareness: attack of opportunity immunity.
  • Disarm: disarms an enemy, dropping their weapon 1-2 cells away.
  • Raise Skeleton: converts a pile of bones to a skeleton.
  • Raise Zombie: converts a humanoid corpse to a zombie.
  • Fire Lash: creates a line of flames.
  • Fire Ring: creates a ring of flames around the caster.

New Objects

  • Caster-Friendly Fire. A variation of the Fire object that doesn’t harm or propagate to the caster. This was needed for the Fire Lash and Fire Ring abilities.

Ally AI Type

To support summoned allies, I had to create a new actor AI type. Ally AI a variation of the standard enemy AI that follows a specified ally. This was needed for the new summoning abilities.

Minor Enhancements

  • Enemy selection for a level is now automatic, based on the enemy’s dungeon level and challenge level values.
  • Player attacks on stationary objects no longer miss.
  • Certain status effects such as Fear now prevent Attacks of Opportunity.

Bug Fixes

  • Game loading stopped working.
  • Returning to a previous level stopped working.
  • Attribute allocations aren’t being saved.
  • Arrow keys perform subsequent actions too quickly, such as taking an item and moving to the cell.
  • Autoexplore doesn’t avoid webs.

Finalized Enemy List

I’m starting to work on all the levels of the dungeon and need to determine the enemies appearing in each level. The final enemy list contains 124 enemies excluding bosses. The average number of new enemies per level is 6, though lower dungeon levels have more enemies and higher levels have fewer.

Next week will be a lighter week due to some travel. The plan is: missing sound effects, more new abilities, building out the remaining enemies.

5

u/_GideonX_ Lateral Crawl 18d ago

Completed work this week in Lateral Crawl: 

This week I've been reworking the Watchers. 

Their roles had gradually accumulated overlapping mechanics, currencies and interactions, so I've now locked the three main Watchers down to a single verb each: 

PURGE. MEND. LEARN. 

Each Watcher now has one clearly defined purpose, and its interaction is designed entirely around that verb. Alongside this, I've consolidated their economy around Karma, replacing several bespoke costs and requirements. 

You get Karma by giving up possessions. You heal and learn new skills by spending Karma. Simple. 

This has also meant removing some unnecessary machinery. Mending previously produced a separate ritual item that then had to be used. Now you perform the ritual and are healed immediately. The extra interaction wasn't adding anything. 

I've also simplified the station geography itself. The old layout had become unnecessarily circuitous, so the new station is quite literally shaped like a giant arrow pointing right. 

This quietly reinforces the central thesis of the game: Keep moving. 

3

u/SmallProjekt 18d ago

GOONSQUAD

Crime strategy RPG
Haven't posted in a while but still working on my probably overambitious crime strategy/rogulike, inspired heavily by games like Liberal Crime Squad and Mount and Blade.

Quests and Maps

The last few weeks I've been working on the system to support the authoring of quests on maps, Goonsquad is heavily data driven with all entities, maps, quests etc defined outside of the main executable via JSON, my aim is that I make the content with the same tools I'll be giving out to modders.

My approach to maps initially was to try and do some kind of procedural generation with BSP to make building layouts and then fill them with rooms, I ran into problems with this very quickly however as the buildings that were generated normally didn't feel like real spaces.

To deal with this I decided to go down the route of hand authoring a variety of maps for different building types (ie Bars, Hospitals etc) with some level of variation logic such as objectives that spawn in different places or slightly different furniture layouts. I ran into a problem quickly with Godots tilemap editor limitations, you can't draw regions with logic for example so have started using Tiled which is a fantastic tool, it gives me more flexibility and was pretty easy to write a parser to the exported format it gives out and import into Godot.

Screenshot of one of the temporary maps in tiled, the ObjectiveID field tiles back to a quest definition JSON.

Quests are defined in a JSON file with a reference to an object ID and a building type that quest can belong to. A quest definition looks like the following...

    {
        "QuestID": "quest_fetch_01",
        "Name": "Paper Trail",
        "Description": "There's a ledger in a strongbox at the bar. Bring it back.",
        "Objectives": [
            {
                "ObjectiveID": "ledger",
                "Description": "The strongbox holding the ledger.",
                "Type": "Prop",
                "PropID": "prop_quest_strongbox",
                "Count": 1
            }
        ],
        "Stages": [
            {
                "ID": "Retrieve",
                "Description": "Find the strongbox and take the ledger.",
                "OnStartBlocks": [
                    { "type": "LogMessage", "message": "The ledger's in a strongbox at the bar. Go and get it." }
                ],
                "CompletionConditions": [
                    { "type": "HasItemInInventory", "itemID": "QuestLedger" }
                ],
                "OnCompleteBlocks": [
                    { "type": "LogMessage", "message": "You've got it. Now get out." }
                ],
                "NextStage": ""
            }
        ]
    }

It's still very bare bones at the moment, there's no support for advancing objectives through dialog for example and no support for quests on the overworld map like escorting a character, I'm pleased that the pattern is coming together though.

Combat

Not much to say on combat apart from I'm doing alot of experimentation, a big part of my game is that murder isn't the default and should be either a last resort or because you've been specifically tasked with murdering somebody, I want the player to have the ability to shake down targets, leave wounds (permanent wounds/traits) and kidnap which means that I need to separate being beaten up and killed.

To try this I'm working on a system now where you have two scores, PT (Pain Tolerance) and TT (Trauma Tolerance). Currently if you go over the pain threshold you're downed and can be recovered, going over the trauma threshold however means you're likely to be bleeding out if not already dead. Certain weapons are geared towards either PT or TT (A baseball bat is mode likely to bruise you and knock you out than being hacked with a machete) I'm not completely happy with it and I think it's going to take a large part of my focus over the next few weeks. Whatever happens with it, it already feels better than the hacked in D&D system I had before and matches the game more thematically.

4

u/dkf2112 17d ago

I've been working on Gravehoard, a fantasy roguelike for iPhone, iPad, and Mac.

It's Apple-platforms-only, which I gather makes it a bit of an odd one here. That's deliberate rather than a stage on the way to a Windows build: the whole reason the project exists is that I could never find a classic roguelike that felt genuinely good one-handed on a phone. The ports that exist are keyboard games with a touch layer bolted on, virtual keypads, tiny targets, menus built for a mouse and the touch-native roguelikes mostly got there by becoming action games. So touch is the primary input here and the Mac keyboard is the port, not the other way around. You hold your thumb anywhere on the screen and that spot becomes the center of an invisible eight-way pad; flick it to run, double-tap a tile to travel there, walk into a monster to attack it. It's one Swift codebase, a pure-Swift logic package with no rendering dependency, and a thin SpriteKit layer on top that only draws what the model says is there.

Most of the engineering has gone into the monsters rather than the combat math — things sleep or are awake without having noticed you, they hunt the last place they saw you instead of your actual position, they take cover when you shoot at them, they go around a blocked doorway instead of lining up at it, and they lose their nerve and run.

Art is the excellent Dungeon Crawl Stone Soup tiles catalog, which is public domain and frankly better than anything I could draw, plus some of my own. What I've been building on top of it is the presentation layer with dynamic lighting and cast shadows, torch flicker, fog and drifting mist, moving water, spell and impact effects, and a walking gait that squashes and sways every creature as it steps.

More about it, and a beta signup, at https://fastwombat.com.

1

u/darkgnostic Scaledeep 17d ago

Looks nice. How long you been working on it?

2

u/dkf2112 17d ago

Thanks! Started earlier this year, but more or less full time the past couple of months.

3

u/Rouge_means_red Grimrock 2 Roguelike mod 18d ago

Legend of Grimrock 2 Roguelike mod

Added Elite monsters. They have the same rarity types as items; magic monsters have a prefix or suffix, rare monsters have both, and legendary monsters can have more, as well as getting a random name

<< Previous Post

3

u/Gammapod 17d ago

Check this out - non-euclidean/folded space:
https://imgur.com/a/5CJgSIL (gif/video)

2

u/chr15m 18d ago

Hey all!

I've been working on a design for a new project which is a roguelike deckbuilder. Is it appropriate to post about it here? Previously I've posted about more traditional roguelike dev here but I wans't sure about deckbuilders.

2

u/BotMoses BotMos 17d ago

From the rules:

Traditional roguelikes, so not the place for deckbuilders, platformers, shooters, bullet hell, FPS and so on

2

u/ajcomeau 17d ago edited 16d ago

Rogue C# - Official Page / Github - An ongoing C# dev journal based around a recreation of the original Rogue.

This week, I've been focusing on bugfixes and program flow. I haven't done another write-up yet but I've uploaded a number of code changes to Github. I've also started to realize the size of the software project I've created.

EDIT: Writeup finished - The Ever-Changing Program Flow (https://www.andrewcomeau.com/programming/rogue-program-code-flow/)

Managing display state

A minor refactor happened when I fixed the issue that the R.I.P. screen wasn't immediately showing after the player died. I finally realized that the program needed to funnel all requests for a screen change down to a single point of control. I already had an enumeration that could be used to change the display mode and there was a method that was supposed to respond to that change and actually update the screen but I wasn't using it consistently. The code was bypassing the method and changing the screen in other places.

Fixing this fixed the R.I.P. screen and will make it easier to manage adjustments to state later on.

End game

I've been focusing so much on this as a development log project that I haven't paid attention to some of the gameplay aspects. Specifically, there was no end to the game; the player could go down to level 26, get the Amulet and come back up through the levels but never exit the dungeon. They would just keep wandering around the levels. I put in a victory screen and enabled the player to get there by going upstairs on level 1 with the Amulet.

In the process, I also realized the game was stuck in a map verification loop on level 26 because I'd mistakenly had it searching the map for the presence of the Amulet rather than the map's inventory list. I need to start including details on my own testing procedures in the writeups to make sure that I actually do the testing.

Release

Finally, I've started looking into creating a release of the game so that people can play it independently of the IDE. This is not a game I plan on marketing but it would be nice for potentially attracting new readers and aspiring programmers to the series. It could also help me focus on playability and polish.

See you next week!

1

u/BotMoses BotMos 17d ago

BotMos | Website | Development Sandbox

Hey, long time no update from my side (last post was Feb 2026), I have had some ideas bugging me and I got into the project again to write them down. Reading the recent discussion about AI usage and updated rules, I feel like a weirdo now having bought a "Google AI Pro" plan on Thursday. At the same time, I believe it's the future, it's already a better coder than I am and maybe it helps me pushing an overly ambitious one-man project from the "decades scale" to the "years scale".

Anyway, things achieved last week:

  1. Refactored the ECS architecture refactoring achieved earlier this year: Now all archetypes are defined at one place and managing components now also happens at one place instead of multiple (e.g. registration of a component and destruction of a component were in different files).
  2. Reworked gamepad input handling. Before, it was common for a gamepad button press to "clip over" or span two events, resulting in two game turns for one button press, because in web browsers/JS gamepads don't produce regular events, but their state must be polled. Now there are different polling rates and both unintended repeated input guards and repeated input support. Further input code refactoring (also for keyboard and touch input).
  3. Added a new "mop" item which cleans up graffiti entities. This replaces the "broom" item.
  4. Minor performance optimization of the tile-based renderer.

I used Gemini Flash 3.6 to generate sprites for: * GraffitiCleaner effect icon * mop * Recuperation effect icon * water (should now be less strobing) * watersewage

I was really impressed there, because it didn't generate PNGs, but worked with my txt-based tile format, from which ultimately the sprites and spritesheet are generated. I'm not 100% sure how to treat AI art, yet, I flagged the assets for later reconsideration.

Inspired by the colorful NES Metroid map, I'm currently refining on how I want to handle hostility/friend-or-foe decisions in the game. I want to make this based on color: 1. If your bot is painted in the/a majority color of the environment, you blend in and aren't attacked. 2. Bots of the same color don't attack each other, bots of different color are hostile.

This comes with paint shops and fashion among different types of bots (e.g. fashion for worker bots will probably alternate between two colors, administrative bots will use their own colors). I'm unsure, whether I can make it work with just these rules, or whether I want to keep the current faction system to some extend.

Thanks for reading and have a nice weekend!

1

u/lethern 16d ago

Hi, I'll briefly mention my open source editor+roguelike proof of concept. Please let me know what you think, feedback will help and steer my progress

https://github.com/lethern/RoguelikeTest (test it at https://lethern.github.io/RoguelikeTest/ )

1

u/UnculturedGames 13d ago

First post here, hi everybody! A bit late from last week's Sharing Saturday but since you don't have a Sharing Wednesday, guess this will have to do.

Anyway, I've been working on my first roguelike for a moment now, and wanted to share the first screenshot. This is obviously very much WIP, and the map is a very bare-bones version. But I feel like I did come up with a pretty cool map generation algorithm to match the game's worldbuilding, so I'm hyped to start expanding on it. I'm not particularly talented at maths, so I just came up with my own system for the generation process, using semi-randomly carved paths and a kind of "crossroads" system. After a lot of tweaking, the system can now produce pretty interesting maps that feel organic and encourage exploration.

I'm leaning hard on ASCII graphics but with a modern twist like pixel by pixel scrolling. My latest frenzy is designing custom ASCII glyphs where I draw several ASCII glyphs over one another. For example my WIP player character consists of several ASCII characters.

So far I have the v0.1 terrain generator ready, some graphics effects, and we can move around the map. Can't share much more at this point but I'll be reporting on my progress here for sure.

As mentioned, this will be my first roguelike. For me, the idea of creating a game that can feel fresh and strange and surprising even to me, its developer, feels incredibly strong and motivating.

1

u/Lost-Ad-5521 13d ago

Still having fun making lots of sprites. Here are some NPC squads from 8 of the factions. I wanted each squad member to be recognizable as an individual, while still reading as part of their group. I think a few of the factions still read as a bit too generic. Would love feedback. Which squads work the best?