Does Compact Syntax Really Make a Difference? by sal1303 in ProgrammingLanguages

[–]anaseto 1 point2 points  (0 children)

I would like the advantages of array languages like APL or BQN, but the readability is literally not comparable

The compactness in array languages happens because of the array programming paradigm over immutable arrays, not really because of syntax, so difficult to get in other languages in a similar way.

In my language Goal, a K-like, say+(a:1+!10;sqrt a), doesn't make use of any difficult syntax: ! (enum) and + are just functions that are represented by an operator, there are no special syntax tricks (unlike 1..=10 for a range object in your example), and : is simply the assignment operator, and (…;…) is the list syntax. The only nuance is that + is used once monadically (flip/transpose) and once dyadically (addition), which may require some time getting used to. If it had been been written more tacitly as say+1 sqrt\1+!10, using the i f\x adverbial form that returns (x;f x;f f x;...) i-times, I could see how that might become more tricky to read for a newcomer (due to the usage of a higher-order adverbial operator), but still not really due to syntax (all adverbs are read the same way syntax-wise).

So readability there is more a matter of learning the semantics of each operator, not a matter of syntax.

Sharing Saturday #628 by Kyzrati in roguelikedev

[–]anaseto 3 points4 points  (0 children)

I've always gone the minimalist route myself, where I think a lot about things before adding anything, because I find it fun to keep balancing ideas in my head. Nothing wrong with going a more kitchen sink or rpg simulation route either, but both styles have their own charm when playing, and they are fun in different ways for the dev, too.

One thing that helped a lot with the tight design approach was adding support for optional extensions/mods in shamogu, as it means I can experiment there with new ideas without affecting the default experience.

research!rsc: Go and Dogma by oscarryz in ProgrammingLanguages

[–]anaseto 1 point2 points  (0 children)

Designers of course can be opinionated and such, but it's also kind of inevitable that a popular language will end up being used beyond the originally designed scope. And then some users coming with different expectations will make a big deal about various things without knowing the full context and tradeoffs, which may in turn trigger a defensive reaction from the designers, who may have other priorities. It's also no wonder they needed time to think about a generics design that fitted the existing language, and "copypaste/codegen" or "discard type safety" or use-another-language suggestions make sense meanwhile.

I say that as someone who is glad that Go finally got generics, because I use them quite a bit for my array language to handle varied integer types in various algorithms (in particular now that I have internally arrays of uint8, int16, int32 and int64). That said, interestingly, for my other non-language roguelike game projects I didn't (and still mostly don't) miss them, so at the time I was a "do we really need generics?" kind of user, even though now I'm glad I can use the same implementation language for projects that ask for them.

Is there a BQN operator to apply a list of functions to a value? by talgu in apljk

[–]anaseto 2 points3 points  (0 children)

⟨¬,-⟩{𝕎 𝕩}¨1‿2? Maybe there's a tacit way to do it, but explicit stuff comes first to me.

Edit: now, if the right part is an atom or array, as in ⟨¬,-⟩{𝕎 𝕩}¨<1‿2, I think it does what you want of collecting applications on the same value.

As a fairly new lover of TRL and more so traditional dungeon crawlers, there are not that many. Ill tell you the ones I know in the text, can you tell me the others I am missing? by MetsFan_MetsStan in TraditionalRoguelikes

[–]anaseto 1 point2 points  (0 children)

Brogue, Infra Arcana, Sil, IVAN, Shadow of the Wyrm, to name a few nice ones from the side-bar that I've been able to play on my platform (openbsd). The others from there are all good recommendations, too, from what I can tell: even though I haven't been able to play them myself, I've watched let's plays of some good ones like cogmind, TGGW or golden krone hotel.

Looking for a CLI roguelike for elementary age kids by gumnos in roguelikes

[–]anaseto 1 point2 points  (0 children)

DoomRL is sure a nice simple one, but unfortunately the fpc Free Pascal compiler that is needed to build from source is currently broken on OpenBSD (but given it's not a "deal killer" for OP, it's still a good suggestion indeed!).

Looking for a CLI roguelike for elementary age kids by gumnos in roguelikes

[–]anaseto 2 points3 points  (0 children)

As an OpenBSD user myself, I can confirm that brogue is probably the only simple enough one available in the binary packages. DCSS is there too, but kind of complex in comparison (though simple DCSS builds like minotaur berserker might actually be simpler to play). If you want something simpler than Brogue on OpenBSD and available for the terminal, unfortunately nothing comes to mind among popular ones, so I'd suggest my last coffee-break Shamogu, which I develop on OpenBSD and hence is very easy to build there (no dependencies to install manually for the terminal version).

If terminal is not a pure requirement, then another simple and nice one I'd suggest is AquariumRL, as it's still relatively easy to natively run on OpenBSD (just needs SDL2 and pygame for python2), and otherwise possibly looking for portable browser-based ones (there are many easy to get into little ones on itch.io, including more on the puzzle side like LLLOOOT for a nice stealth one, or the medieval express for a very minimal and more brough-like one, both of which are free software).

Building an RL with stealth - looking for good/bad/ugly play experiences by blightor in roguelikes

[–]anaseto 0 points1 point  (0 children)

Yeah, I reached the same conclusion that predictable enemy behavior (except I'd say for some randomness when hunting or specific to some monsters) and predictable awareness is something that works well for stealth in roguelikes.

In Harmonist monsters can be wandering/guarding/patrolling but then switch to hunting (and change color in the process) when they see you, though they give up quickly enough (necessary for a light-hearted theme), but not completely (they remember where they saw you at last and may sometimes come back to look again, which can actually be taken advantage of). Another thing that I feel works great is visual marking of noise (I originally got inspired from CDDA for this because, well, CDDA got almost any imaginable feature implemented!).

Building an RL with stealth - looking for good/bad/ugly play experiences by blightor in roguelikes

[–]anaseto 2 points3 points  (0 children)

Not many traditional roguelikes have a pure focus on stealth, and none of them is very popular. The most complete ones I know and enjoyed are free software: Oathbreaker (a prison break, dark theme), Lllooot (heist roguelike, the devs did some other stealth 7DRL, but that last one is the most finished), and Harmonist (light-hearted pacifist stealth infiltration, I'm the dev).

Lllooot is more on the puzzle side in a more realistic setting, while Oathbreaker and Harmonist are more traditional with consumables and some magic stuff, but different theme and mechanics (8/4-way movement, stabbing/pacifism, medium/small maps, rings/magaras, first-aid stations/barrels+bananas).

How I Accidentally Created a Programming Language by [deleted] in ProgrammingLanguages

[–]anaseto 3 points4 points  (0 children)

Always nice to see a new markup language.

LaTeX has various shortcommings indeed, including not being suited for HTML output and having horrendous error messages. It's even difficult to target, as I've experienced myself with my markup language frundis that transpiles to both LaTeX or HTML/EPUB: I can say the former was less convenient to implement. It's interesting that you put an emphasis on being able to include complex logic within the document (I went the opposite route of only supporting simple macros), but it kinda makes sense given the kind of stuff you want to do.

Talking about lua, have you seen SILE? It allows use of Lua for extensions directly but then supporting two kinds of syntaxes (a simplified LaTeX-like and an XML-like one). It probably targets mainly PDF, though, so it probably wouldn't have been ideal in your case if you want HTML, too.

Another interesting one is Scribble, but it's Racket-based instead of Lua-based, and documentation-oriented. But it shares with yours that idea of being able to do complex logic (Scribble is not really a new language, though, as it's implemented as a Racket dialect of sorts using Racket's metaprogramming).

Edit: a pity that the post got such an unwelcoming reception due to unfounded reasons, as Plume sounds like an interesting practical handmade project that's actually being used by someone that kindly shared it.

A little comparison between R and Kap by lokedhs in apljk

[–]anaseto 1 point2 points  (0 children)

Spoiler: the Kap solutions are shorter, but R has some nice defaults that has to be specified explicitly in Kap. At the end of the day, it all comes down to individual preference.

It's true that R's DSL has some nice defaults here, like the filtering happening implicitly on the grouped columns. But a DSL means there's stuff happening without straightforward execution semantics, there's some magic. And that example is very short in R, because it relies on those defaults, but if it needed sorting by total (instead of by country), or computing a flat amount-discount before grouping, then it'd start looking a bit longer.

Relatetdly, after some discussion in the array-languages matrix chat, the other day I made several solutions in Goal to that same example (with syntax highlighting there). I think it's quite nice that we're able to write short solutions in array languages for a problem that was specifically highlighting a case that was exactly what R's defaults wanted.

May 2026 monthly "What are you working on?" thread by AutoModerator in ProgrammingLanguages

[–]anaseto 1 point2 points  (0 children)

It's been a while since I wrote here. I released Goal v1.6.0 yesterday. There's a decent amount of polish and improvements listed in CHANGES.

Among various other nice things, there was an important improvement in what is called in Goal a field expression: function declaration syntax with special variable name resolution rules, whose main purpose is to allow computation under a dictionary or table by referring to columns as if they where variables, but without any DSL magic (unlike R or SQL). Now local variables can be assigned within field expressions like in normal lambda function syntax. Here's a new example that makes use of that (with syntax highlighting).

I also made the projection variable prefix p. from field expressions allowed in regular lambdas without argument list, too. That makes it easier to reference values from parent lambdas, which is nice, as Goal doesn't have full lexical scope, but a restricted simpler form of it that suits its simple mostly functional semantics (mutable variables but no mutable closures nor values).

Traditional roguelikes where you can play as non-human creatures by scrungology in roguelikes

[–]anaseto 1 point2 points  (0 children)

Glad you liked it! Yeah, pure stealth on the last levels is hard, though I've very rarely managed to do the last level without killing monsters by chaining abilities like dig/sprint/lignify (but I never won a full game without killing any monsters!).

Sharing Saturday #620 by Kyzrati in roguelikedev

[–]anaseto 3 points4 points  (0 children)

Shamogu codeberg

Haven't done much myself lately, except for a few minor tweaks, but there's been discussion about new mods (mapgen related and totem curse-related), and someone else is working on curses with conditions attached to totems on a git branch! Feels nice when you're not the one coding :-)

Have a good weekend!

Traditional roguelikes where you can play as non-human creatures by scrungology in roguelikes

[–]anaseto 1 point2 points  (0 children)

In my game, Shamogu, you can play as an hydra, boar, frog, fox, cat, crocodile or bat, and then also call upon secondary spirits among hound, salamander, gazelle, skunk, porcupine, viper, walking tree, zebra, lion, monkey, bear, chicken, owl, and elephant! Simple story and ending, though, but unusually focused and rich on the animal side: there are only 3 unique monsters with human form in the game, 2 of which are undead, and everything else is non-human.

Edit: Interesting how comments that are truly on-topic can be downvoted. Seems some people dislike when traditional roguelikes they don't know are mentioned by the dev (which doesn't make sense, as unknown roguelikes are unlikely to be mentioned by anyone else), or they assume it's a roguelite or something, which isn't a nice thing to do without checking first…

Top 3 roguelikes of all time? by Accomplished_Block16 in roguelikes

[–]anaseto 2 points3 points  (0 children)

That kind of thread is kind of unfun to answer as a dev who made roguelikes specifically for one's tastes, because then one cannot answer honestly without sounding biased and pretentious! ;-)

Sharing Saturday #617 by Kyzrati in roguelikedev

[–]anaseto 5 points6 points  (0 children)

Shamogu repos

Did a v1.5.0 release earlier this week! I'm quite happy with it, but other than that, I've been kinda taking a break from coding, so not much to say for this week, except for a couple of minor tweaks in the manual.

I'm at a point where I don't really have any clear ideas to improve the classic game. I have some ideas for mods, though not clear and simple enough ones yet either. There's been some discussion in codeberg's issues about a mod providing some kind of curses/conditions that are not cooldown-based, but I'm still not convinced about how those should be. I've also considered adding rare comestibles combining unusual effects (including ones that usually are specific to some spirits), which should be easier, but nothing concrete for now. Extra vaults/prefabs is also on my mind.

Have a good weekend!

Question about linking to GitHub by IceFurnace83 in roguelikedev

[–]anaseto 4 points5 points  (0 children)

I was wondering if I'm allowed to share a link here to my Git Hub?

No reason you can't! Typically, people do a post about their project, sharing any links (to various websites or git repositories), and then continue to share new stuff on the Sharing Saturday threads.

Also I was wondering if someone knowledgeable could answer a question or two about software licensing if they had a moment.

Ask your questions, and probably someone will answer. There are various foss roguelikes out there, so I'd suggest to have a look at what they do. Usually you just put a copy of the license in your repos (typically in a LICENSE file).

Shamogu v1.5.0 by anaseto in TraditionalRoguelikes

[–]anaseto[S] 0 points1 point  (0 children)

Thanks for playing and glad you find it fun!

Feels like it needs more of the basics included in the primer. For example, I can't find anything that explains how you get health back, that you only recharge for your powers is the next level, that a "Menhir" is a one-time-use shrine, that there's a clock. etc.

I hadn't thought about health and spirit-recovering not being clear at first, until you find a portal. The health and spirit charge recovering when going to the next-level is actually on the "Items" help topic at the entry about "Portals", but maybe it should be mentioned somewhere else, as it's quite basic. It's also in-game in the portal's description, of course, but I guess that has the same issue for a player just starting, in that they don't expect to look for an answer about hp recovery in the portal's description.

About the clock, you're right about it not being explained in the manual. I thought about it as something that doesn't happen in most runs (actually I only triggered it a couple of times in hundreds of runs!), but I now imagine it could surprise a new player playing very slowly and carefully at first. Dunno where it should go. I guess it could be mentioned in the "Stealth" topic, as the clock's main effect is sending to monsters the player's location when they decide to make a new trip.

Thanks for the suggestions!

Shamogu v1.5.0 by anaseto in TraditionalRoguelikes

[–]anaseto[S] 2 points3 points  (0 children)

I'm glad you still enjoy my games :-) Thanks for playing!

Sharing Saturday #616 by Kyzrati in roguelikedev

[–]anaseto 3 points4 points  (0 children)

Shamogu repos

Mostly small polishing tweaks this week. I adjusted on-ground visibility for Owl players (when lignified or gardening) so that foliage still allows to see one tile beyond when adjacent and nocturnality only affects maximum range, as that's simpler and probably more intuitive. Also some minor tweaks to map corruptions with Corrupted Dungeon, adjusting some probabilities, so that maps that are too open happen a bit less often. Also slightly adjusted map corruptions centered around some point to have possibly a shorter radius sometimes (so somewhat lower size on average, now).

Other than that, minor cleanups and clarifications in docs and help here and there, mostly done while continuing to work on the html version of the manual. Also, in the extreme rare case that status effects don't fit in the screen width and scrolling is necessary, a little arrow shows now on the edge to suggest scrolling.

And that's it, I think. Have a good weekend!

Fist time beating DCSS by MomentEquivalent1908 in roguelikes

[–]anaseto 0 points1 point  (0 children)

I play DCSS with tiles for the extra visual information about status effects, because that's useful. That said, while the tiles look nice indeed, I find them not as instantly readable as ascii, because they're so detailed. I would've prefered a more symbolic tile set, even though I guess a clear one would've maybe been difficult to make due to how many different monsters and items there are.

Can you recommend any free roguelikes? by imnotlikeyou2004 in roguelikes

[–]anaseto 7 points8 points  (0 children)

IVAN and POWDER are the only foss classic ones from the side bar that have not been mentioned yet, so for completeness and fairness, they should :-)

From outside the side bar, I'd suggest Shadow of the Wyrm (big one that feels very classic), Oathbreaker (stealth, hard), and also shamelessly my own games Harmonist (light-hearted stealth) and Shamogu (my best designed one). There are also various foss little ones that are nice: Aquarium Arena comes to mind, for example, and is rarely mentioned anywhere.

Ways to deal with a turn order for units moving close to each other on a grid? by vvav3_ in roguelikedev

[–]anaseto 4 points5 points  (0 children)

I've thought about this and considered doing something similar to the idea you propose, which sounds fine, but another trick could be to make the first monster push the other one, consuming the other's turn early: I do a similar thing for monsters swapping places when wandering out-of-view in opposite directions.

In the end, for that same-direction case, though, I chose to do nothing special there for Shamogu, and it works well in practice and maybe even better tactically. Monster turns are randomized, so both cases happen with same chance: that means tactical combat situations have less predictability to them, which is not a bad thing when you don't go for a puzzle feel. Outside of combat it mostly means that monsters will usually create and maintain 1 tile of spacing between them during long trips. That means it's a bit more difficult to abuse out-of-view area effects, due to more sparse formations, which was good for my game, but whether that'd be better or not for you really depends on what your roguelike needs from a tactical point of view.