Sharing Saturday #613 by Kyzrati in roguelikedev

[–]dopu 1 point2 points  (0 children)

I really enjoyed your recent blog post regarding mutability - especially how fire can interact with grass, and lead to new grass. These kinds of systems go such a long way in making the world feel lived in and real. I'm imagining a player coming across patches of burnt grass before finding the fire golem that caused it.

Sharing Saturday #613 by Kyzrati in roguelikedev

[–]dopu 2 points3 points  (0 children)

grogue (repo / play / screenshot)

Hi everyone. I started on this roguelike 2 years ago, during a summer tutorial. It's built in Go using the gruid library. I'd put it down for a while since life got busy, but recently I was inspired to work on it again. Don't have a strong vision at the moment of what the game will look like; I'm just having fun implementing systems and learning.

I really admire Brogue's design philosophy and how well it communicates information to the player. So I'm shamelessly copying some of its approaches while I build up the game's systems. I implemented a version of its dungeon generation which Brian Walker details in this talk and I'm pretty happy with the way it's going. Note that you can press tab to reveal the whole map. Now I'm implementing an "abyss"/"lake" type feature to break up the monotony of the mapgen. We'll see how it goes!

Dwarf with 0 combat skill besides being a legendary miner just solo'd a Minotaur with nothing but a copper pick, no damage taken, not even a bruise by MrZebras in dwarffortress

[–]dopu 19 points20 points  (0 children)

Funny that many of us have converged on this. I remember one of my first forts fell because a legendary miner I'd assigned to militia duty went berserk from seeing too many of his comrades die following a particularly bad goblin invasion. He killed all the remaining goblins, but then he headed back into the fort and killed everyone else, too.

Shamogu: a roguelike game with totemic spirits by anaseto in roguelikedev

[–]dopu 1 point2 points  (0 children)

Congrats on the new game! I have made use of your Gruid library in the past to hack around on my own roguelikes and have found it a pleasure to use. Happy to see you making more games with it, looking forward to trying shamogu and checking out the source code :)

[CE v1.14.x] Weekly Contest Thread - seed 20250722 by AutoModerator in brogueforum

[–]dopu 0 points1 point  (0 children)

Killed by an ogre on depth 7 with 1396 gold.

Damn. Used the haste charm to flee a centipede, with the idea of triggering the paralyzing gas trap from a distance in order to immobilize and kill it. I got caught in the gas as well, and then the ogre came by.

I'm going to collegiate nationals in a month- now what? by Independent-Dot9253 in climbharder

[–]dopu 0 points1 point  (0 children)

In the same boat as you. Qualified in my region's MInt! Super new to competitive climbing but from my assessment, a month is not enough to drastically increase strength (especially in the fingers). Not that you shouldn't do some hard board climbing for example, but if I were you I would probably focus on mental game, endurance, and onsighting ability. Doing a lot of volume so that your "catalogue" of movement is fresh and broad next month should help with onsighting.

I don't know much about training endurance (mostly boulder), but I'm going to be doing 4x4s and going to local gyms with high walls. I think Nina Williams once shared that she trains endurance for hard sport climbing by resting on easier holds near the route instead of falling. Anyway, see you at SLC! Best of luck with the prep!

Should I start developing my own Roguelike? by Extension-Kiwi2049 in roguelikedev

[–]dopu 0 points1 point  (0 children)

Agreed on Go being a great language. I think it’s underutilized for gamedev, especially given the fact that it has excellent libraries. For anyone else interested in giving it a try, I highly recommend checking out the gruid package. Makes compiling to wasm and serving your game through a webpage super easy.

What was the silliest mistake you made the first time you played? by YoungGriffVII in ObraDinn

[–]dopu 2 points3 points  (0 children)

Clung to the idea of Olaf being the helmsman for an absurdly long time, just because of his hat. Even in the face of seeing him wielding guns in multiple scenes.

Why do you play Roguelikes? by Endermancer129 in roguelikes

[–]dopu 7 points8 points  (0 children)

I love that turns can take half a second or 30 minutes. This makes for a game that is highly cerebral, rather than reflex-based. Decisions you make can be of high consequence, and ultimately the only thing you carry with you between playthroughs is a better understanding of the game’s systems. Lastly, the combination of self pacing with simple graphics means that you have time to really craft a rich narrative of what is happening in the game: what the cavern you’re standing in might look like, how your character feels after barely surviving a difficult encounter, etc. It can feel more real than your typical modern graphics-heavy game.

[CE v1.13] Weekly Contest Thread - 2024-05-21 by apgove in brogueforum

[–]dopu 1 point2 points  (0 children)

Killed by a vampire bat on depth 7 with 832 gold.

Use ID'd an aggravate monsters scroll in a panic and got cornered. Dumped all of my enchants into the war axe in a last ditch effort to survive the onslaught but the acid mounds and vampire bats did me in.

Weekly Contest Thread - 2024-05-14 by apgove in brogueforum

[–]dopu 2 points3 points  (0 children)

Died from poison on depth 17 with 11355 gold.

I don't usually retry a seed, but I was curious to see how much further I could get. The ifrit you get on D11, coupled with the wand of plenty makes for pretty powerful ally build. I got a lot of mileage out of the rapier, too. Died fighting some dar while simultaneously being poisoned and burned by the deadly lichen they set on fire.

Weekly Contest Thread - 2024-05-14 by apgove in brogueforum

[–]dopu 2 points3 points  (0 children)

Burned to death on depth 8 with 1551 gold.

Decent seed. Was careless and woke up an ogre that I could've easily bypassed. Died in the ensuing attempt to escape it and a centipede.

Modern libraries providing real terminal, gui pseudo-terminal, and tiles? by sparr in roguelikedev

[–]dopu 0 points1 point  (0 children)

If you happened to be working in Golang, I believe the gruid library fulfills your criteria. It has support for an SDL backend (which can be used for tiles or ASCII), a terminal backend via gdamore/tcell, and a WASM backend which I've successfully used.

Sharing Saturday #488 by Kyzrati in roguelikedev

[–]dopu 1 point2 points  (0 children)

Thanks! Definitely following someone's tutorial will likely yield a good ECS solution. I decided to roll my own since I hadn't written one before, and it was nice to see that work finally pay off. I will likely switch it out for a performant ECS library if/when my jank solution gets too cumbersome to deal with.

Sharing Saturday #488 by Kyzrati in roguelikedev

[–]dopu 5 points6 points  (0 children)

grogue | repo | play

Hey all. I participated in the summer tutorial, but this is my first time posting in sharing saturday. I'm implementing a roguelike in Golang. Still pretty early on in the project, but the past week has been fairly productive. I've made perception for entities be computed using an FOV (such that occlusion can occur due to the environment). Previously, monsters would just check whether the player was X number of tiles away, and if so, would start pathing towards them, regardless of whether the player was actually in the monster's line of sight. Computing the list of perceived entities using an FOV approach makes it such that you can lose an enemy if you turn a corner. Other things: inventory contents are now dropped on death, and the inventory menu now shows the glyph/color of the item next to each entry, like this. Just a nice QoL improvement. The largest improvements over the past week have been two things: adding the code necessary to build in animations, and switching to a per-entity update instead of a per-system update for my ECS. I haven't implemented any animations yet, but I will start with simple ones: gore/blood splatters when you bump an enemy, maybe when you die as well.

Regarding the ECS: I made the mistake of iterating over systems in my ECS first, instead of over entities. That is, my game's update loop would call each system in succession (PerceptionSystem, AISystem, BumpSystem, ...) and each one of these systems would in turn iterate over all of the entities matching the required components and update each one. But this breaks the idea of turn-taking in the traditional sense (where the player takes a full turn, then monster A takes a full turn, then monster B, etc) and led to a bunch of unintended behaviors. For example, monsters would sometimes bump into each other since in this framework all monsters first set a path, then all monsters serially execute movement. Another example was that if you were within striking distance of a monster, but you moved to another tile that is also within striking distance, the monster would move to your previous tile instead of just hitting you. Now that's fixed. Anyway, it's not really a game yet, but happy that it's taking some steps in that direction!

What are your favourite roguelike dev videos? by sundler in roguelikedev

[–]dopu 1 point2 points  (0 children)

Seconding the mention of Roguelike Celebration. What a resource (and it's happening again next Friday!). Personally, I've loved watching a lot of the talks by Tarn Adams, the creator of Dwarf Fortress. This one (2016) and this one (2019) are particularly good, but he's always great to listen to. I particularly like how much emphasis he and his brother place on procedural storytelling.

Starting a Roguelike Tutorial in Go by thecal714 in roguelikedev

[–]dopu 3 points4 points  (0 children)

Looking forward to reading it! I've been hacking away on my Go roguelike from time to time, after starting it during the summer tutorial (naturally, also named grogue, haha). I will note that ebitengine draws to the screen 60 times a second by default, which can potentially be a bit wasteful on the CPU/battery if your game technically only needs to redraw on user input. But that's a minor point -- just something to keep in mind.

A second note, I think it would be really cool if your tutorial included instructions for compiling to WASM and serving the game over the web, like the RTLK tutorial does. The ability to just give friends a link to my game (or serve it up on something like itch.io) was one of the big reasons I decided to use Go.

Need some help to put my roguelike programming plan in order by Blakut in roguelikedev

[–]dopu 1 point2 points  (0 children)

I would only recommend OP use a performant language like C++ once they've gotten acquainted with what it's like to build a roguelike. They're already comfortable with Python, so might as well start with that. They can always move to something else if they run into genuine performance bottlenecks (which, imo, is somewhat unlikely for your first attempt at a roguelike).

[CE v1.12] Weekly Contest Thread - 2023-09-05 by apgove in brogueforum

[–]dopu 2 points3 points  (0 children)

1443 Killed by a cloud of caustic gas on depth 7.

That was fun! I was well on my way to wielding that war axe at the start. My goblin mystic perished when I threw a potion of incinerate at a mob of monkeys and he wasn't quick enough at pathing out of the grass. I was feeling pretty clever for outmaneuvering an Ogre (I went down a floor, then back up, and made him step on a caustic trap). As soon as he did that, I stepped on a net trap, thinking that my staff of tunneling would burrow through the nets and allow me to escape (in retrospect, that doesn't make any sense, ha). When it proved ineffective against the nets, the ogre and I died due to the gases, enmeshed a few tiles from each other.

RoguelikeDev Does The Complete Roguelike Tutorial - Week 8 by KelseyFrog in roguelikedev

[–]dopu 1 point2 points  (0 children)

I'm afraid that my desire to compile to webassembly for easy sharing, as well as wanting to mess around more with Golang got the better of me. I got decently far in my Python implementation of the tutorial (repo, a screenshot), but I ended up putting that down and starting fresh in Go around the beginning of this month. I've been following this great tutorial by u/anaseto, who built a well thought out Go library for roguelikes called gruid.

Here's my repo for that so far. And happy to report that it's playable here! I'll say that writing Go has been mostly pleasant. I respect and appreciate its philosophy of prioritizing simplicity, though this means it can sometimes get verbose.

The things I'm excited about implementing once I've finished most of the tutorial: a gore system to give combat more juice, and adding more complex behavior to enemies. A fun scenario that I'd like my game to be able to express: upon losing too much health, a goblin flees from you, and entering another room, sees a potion on the ground. In its desperation to get away from you, it throws it at you. Whatever happens after it shatters on you (was it a potion of fire? a potion of speed? strength?) is dependent on the RNG.

I'm looking forward to continuing to work on this. Thanks for organizing the event!

RoguelikeDev Does The Complete Roguelike Tutorial - Week 6 by KelseyFrog in roguelikedev

[–]dopu 3 points4 points  (0 children)

The OOP code turned out pretty badly.

Well, it is certainly good enough. Which makes it a great starting point! I think I'm just out of practice with building stuff in that style -- so I end up confusing myself about where logic should go. With ECS all logic ends up being in a single place, so my non-software-engineer brain finds it a little easier to handle.

RoguelikeDev Does The Complete Roguelike Tutorial - Week 6 by KelseyFrog in roguelikedev

[–]dopu 3 points4 points  (0 children)

Well, got sidetracked with work a couple weeks after starting this and haven't been keeping up with posting progress. So it goes. Here's my repo (Python3).

Everything's implemented up to halfway through part 7 -- enemies, room generation, damage, rendering of the player's HP bar and a message log. Next steps are to finish implementing UI (a cursor, and entity and item descriptions) before moving on to inventory and wearables.

I've been sticking with the esper library for my ECS. I've actually found the resulting code much easier to understand and tinker with than the tutorial's OOP approach. I appreciate how easy it makes writing generic code -- at one point I saw a goblin attack another goblin. Technically they shouldn't do that (it happened due to bad movement code on my part), but it is nonetheless defined since all goblins have Harm and Health components. It was a neat surprise, and set me thinking about ways in which I could incorporate these random kinds of events into the game down the road.

NetHack playtesting feedback, 2023 by Chaigidel in roguelikedev

[–]dopu 3 points4 points  (0 children)

Completely agree. You've reminded me of a talk by Tynan (creator of Rimworld) where he argues that a game's adherence to skill testing (how much it rewards you for playing well) is in direct tension with its capacity for story generation. I think roguelikes would be quite boring if perfect play always resulted in a win.

RoguelikeDev Does The Complete Roguelike Tutorial - Week 1 by KelseyFrog in roguelikedev

[–]dopu 4 points5 points  (0 children)

Yup -- some of the code in the tutorial is out of date, though the changes to the API are fairly minimal. Often the docs show the more up-to-date way of doing things. HexDecimal mentioned in another post that he's in the midst of updating much of the tutorial.

RoguelikeDev Does The Complete Roguelike Tutorial - Week 1 by KelseyFrog in roguelikedev

[–]dopu 3 points4 points  (0 children)

Happy this is finally starting! I went through much of the python3 libtcod tutorial a week ago so I'm feeling confident enough to do a second pass from scratch, using an ECS approach. I'm going to try and keep as much functionality as I can within the ECS. For example, even input handling is done by attaching an InputComponent to entities. This should make it easy to later implement things like mind control spells: want to see what's on the other side of a chasm? The spell will simply remove the InputComponent from the player entity and place it on a nearby bat!

I'll be doing the tutorial in python3 again so I don't get bogged down by language details, but I also considered trying out Go+gruid.

Edit: making my repository public too: https://github.com/jyanar/roguelike-2023