sigmoid.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A social space for people researching, working with, or just interested in AI!

Server stats:

537
active users

#devlog

41 posts20 participants4 posts today
Leonard Ritter<p>4 days later i have the amen choppage procgen (see further up in thread) ported to LRDL.</p><p>program executes in 580ms rather than tens of seconds as with soufflé :)</p><p><a href="https://mastodon.gamedev.place/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodon.gamedev.place/tags/datalogue" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>datalogue</span></a> <a href="https://mastodon.gamedev.place/tags/LRDL" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>LRDL</span></a></p>
Leonard Ritter<p>i'm renaming dldsl to LRDL, so the hashtag i use here will change too. </p><p>haven't really settled on the final meaning of this acronym, but it's somewhere in the region of <br>"Lightweight Relational Data Language"<br>or, for my friends,<br> "Leonard Ritter's DataLog"</p><p><a href="https://mastodon.gamedev.place/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodon.gamedev.place/tags/dldsl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dldsl</span></a> <a href="https://mastodon.gamedev.place/tags/LRDL" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>LRDL</span></a></p>
Leonard Ritter<p>containers implement double-buffering for when a case appends to a set it is presently iterating. we need two paths *and* analysis to decide when implicit double-buffering can be omitted.</p><p>therefore, i'm going to add one more "reversible" limitation to dldsl:</p><p>cases must not mutate source sets.</p><p>the limitation only really ever matters for single-case feedback loops; when your loop natively transfers data between two or more sets, you have implicit multi-buffering anyway.</p><p><a href="https://mastodon.gamedev.place/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodon.gamedev.place/tags/dldsl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dldsl</span></a></p>
Leonard Ritter<p>and we have a pipeline. writes 124160 samples, completes in 80ms.</p><p>a very good start.</p><p><a href="https://mastodon.gamedev.place/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodon.gamedev.place/tags/dldsl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dldsl</span></a></p>
Leonard Ritter<p>and we have support for calling C externals.</p><p><a href="https://mastodon.gamedev.place/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodon.gamedev.place/tags/dldsl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dldsl</span></a></p>
Leonard Ritter<p>to get dldsl audio-ready so i can port my datalogue program, i still need:</p><p>* named constants<br>* aggregates (we'll do it with relations)<br>* basic FFI (also relations)<br>* components (these are just hygienic namespace macros)<br>* nested disjunctives</p><p><a href="https://mastodon.gamedev.place/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodon.gamedev.place/tags/dldsl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dldsl</span></a></p>
Leonard Ritter<p>now using tarjan's SCC algorithm to toposort and isolate loops.</p><p>the result is that relation rules are dependency ordered (which implies stratification).</p><p>i already undertook the first steps to add subloops, but don't have good use cases yet. will wait until those pop up. here, i will likely have to add another design element to make loop boundaries more explicit.</p><p>here's the generated execution plan for the fib program. not particularly interesting. i'll have better ones later.</p><p><a href="https://mastodon.gamedev.place/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodon.gamedev.place/tags/dldsl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dldsl</span></a></p>
Leonard Ritter<p>explicit semi-naivity is implemented.</p><p>i also removed the expression type from its AST and instead implemented operators as simulated relations; e.g. (add x y) is internally extended to (add x y tmp) and tmp returned.</p><p>i want to make it possible to generally write `rel a b ... x` as `x = rel a b ...` or `rel a b ...` when nested, so relations can be used like operators where it is useful.</p><p><a href="https://mastodon.gamedev.place/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodon.gamedev.place/tags/dldsl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dldsl</span></a></p>
Niko (lethal_guitar)<p>New BioMenance Remastered dev log is up, sharing some spoiler free details about one of the new boss fights and more information about the level editor: <a href="https://lethalguitar.wordpress.com/2025/11/11/biomenace-remastered-dev-log-2/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">lethalguitar.wordpress.com/202</span><span class="invisible">5/11/11/biomenace-remastered-dev-log-2/</span></a></p><p><a href="https://mastodon.social/tags/BioMenaceRemastered" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>BioMenaceRemastered</span></a> <a href="https://mastodon.social/tags/IndieDev" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>IndieDev</span></a> <a href="https://mastodon.social/tags/IndieGame" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>IndieGame</span></a> <a href="https://mastodon.social/tags/DevLog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DevLog</span></a></p>
Leonard Ritter<p>now it's time to reintroduce rigidity to the semantics; ways to control naive and semi-naive evaluation exactly in a way that is removable when the compiler matures.</p><p>the first step is to define that all rules are evaluated *naively*, in *exactly the proposed order*. </p><p>but rules that are part of a cyclical dependency must be evaluated semi-naively; this means they only trigger on deltas. this becomes controllable with two new keywords:</p><p><a href="https://mastodon.gamedev.place/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodon.gamedev.place/tags/dldsl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dldsl</span></a></p>
screwlisp<p><a href="https://gamerplus.org/tags/lispGameJam" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>lispGameJam</span></a> <a href="https://gamerplus.org/tags/commonLisp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>commonLisp</span></a> <a href="https://gamerplus.org/tags/programming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>programming</span></a> <a href="https://gamerplus.org/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://gamerplus.org/tags/commonLisp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>commonLisp</span></a> <a href="https://gamerplus.org/tags/mcclim" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>mcclim</span></a> <a href="https://gamerplus.org/tags/nicclim" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>nicclim</span></a> <a href="https://gamerplus.org/tags/gamedev" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>gamedev</span></a> <a href="https://gamerplus.org/tags/itchio" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>itchio</span></a> in which I play with the make-my-own-level player activity. (It's unix-surrealism-jam not just NicCLIM because it is built around the unique unix-surrealism-jam controls not my preexisting NicCLIM's)</p><p>Article: <a href="https://screwlisp.small-web.org/lispgames/my-common-lisp-game-jam-self-experience/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">screwlisp.small-web.org/lispga</span><span class="invisible">mes/my-common-lisp-game-jam-self-experience/</span></a></p><p>Jam submission <a href="https://itch.io/jam/autumn-lisp-game-jam-2025/rate/3822491" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">itch.io/jam/autumn-lisp-game-j</span><span class="invisible">am-2025/rate/3822491</span></a> , <br>my fellow jammers: <br>+<br>Pixel Outlaw's <a href="https://gamerplus.org/tags/interlisp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>interlisp</span></a> <a href="https://itch.io/jam/autumn-lisp-game-jam-2025/rate/4015363" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">itch.io/jam/autumn-lisp-game-j</span><span class="invisible">am-2025/rate/4015363</span></a><br><span class="h-card" translate="no"><a href="https://appdot.net/@mdhughes" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>mdhughes</span></a></span> ' MUD <a href="https://itch.io/jam/autumn-lisp-game-jam-2025/rate/4002647" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">itch.io/jam/autumn-lisp-game-j</span><span class="invisible">am-2025/rate/4002647</span></a></p>
Leonard Ritter<p>fibonacci example works and is optimal (extends by one number per iteration)</p><p><a href="https://mastodon.gamedev.place/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodon.gamedev.place/tags/dldsl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dldsl</span></a></p>
Leonard Ritter<p>the special implementation for array containers is minimally functional: the only index that's O(1) accelerated is any index that contains i.</p><p>we don't need to deduplicate since every i is unique.</p><p>then there's deltas: for this we need an unordered set of updated indices; if the array isn't recursive, it's not needed. if there's only 1 update per iteration, then a loop optimization would help greatly here.</p><p>one can also optimize for cases where new rows are contiguously packed.</p><p><a href="https://mastodon.gamedev.place/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodon.gamedev.place/tags/dldsl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dldsl</span></a></p>
Leonard Ritter<p>with the `@` shorthand for `(autoindex)`, we can now populate arrays</p><p><a href="https://mastodon.gamedev.place/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodon.gamedev.place/tags/dldsl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dldsl</span></a></p>
Leonard Ritter<p>more vital sugar for data entry: `for` has been replaced with a repeatable `..` concatenation token, which can be used to describe trees where the top element remains constant for more than one entry.</p><p>this becomes relevant when we're appending facts to arrays, where the first element is an autoindex.</p><p><a href="https://mastodon.gamedev.place/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodon.gamedev.place/tags/dldsl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dldsl</span></a></p>
Leonard Ritter<p>facts follow the same principle, just with a toplevel `then`. in conjunction with `for`, many facts can be specified for a relation without redundant mentioning of the relation name for each row.</p><p><a href="https://mastodon.gamedev.place/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodon.gamedev.place/tags/dldsl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dldsl</span></a></p>
Leonard Ritter<p>overhauled dldsl's rule syntax. all rules start with "case". head clauses (prefixed with "then") can be inserted in any order. any other clause is a body clause.</p><p><a href="https://mastodon.gamedev.place/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodon.gamedev.place/tags/dldsl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dldsl</span></a></p>
Filip Rachůnek<p>Hi everyone! Let’s take a short break from post-processing effects. In this tutorial, I’ll be creating a dynamic ornament that at one stage resembles a magical portal and at another something like a fiery eye. Essentially, it’s another demonstration of how we can use iterations and simple functions to achieve quite interesting transformations that can be further configured and combined in new ways. <a href="https://mastodonczech.cz/tags/Godot" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Godot</span></a> <a href="https://mastodonczech.cz/tags/Godot4" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Godot4</span></a> <a href="https://mastodonczech.cz/tags/GodotEngine" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GodotEngine</span></a> <a href="https://mastodonczech.cz/tags/GodotTips" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GodotTips</span></a> <a href="https://mastodonczech.cz/tags/shaders" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shaders</span></a> <a href="https://mastodonczech.cz/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodonczech.cz/tags/indiedev" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>indiedev</span></a> <br><a href="https://www.youtube.com/watch?v=yRA3DSgV7lw" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="">youtube.com/watch?v=yRA3DSgV7lw</span><span class="invisible"></span></a></p>
raccoon<p>Added another tool to my Rust CLI tools project! </p><p>It's a wrapper for Hurl that allows including/referencing one file in another. </p><p><a href="https://github.com/brenordv/rusted-toolbox/blob/master/crates/tool-whurl/readme.md" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/brenordv/rusted-too</span><span class="invisible">lbox/blob/master/crates/tool-whurl/readme.md</span></a></p><p><a href="https://hachyderm.io/tags/dev" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dev</span></a> <a href="https://hachyderm.io/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://hachyderm.io/tags/indieDev" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>indieDev</span></a> <a href="https://hachyderm.io/tags/rust" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>rust</span></a> <a href="https://hachyderm.io/tags/api" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>api</span></a> <a href="https://hachyderm.io/tags/apitest" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>apitest</span></a> <a href="https://hachyderm.io/tags/hurl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>hurl</span></a></p>
Leonard Ritter<p>alright. so. reached a performance wall with soufflé rather quickly, but as artist-user, i had a good time. </p><p>i'm going to build another datalog-esque compiler for procedural audio. maybe this is the right avenue in, bind it directly to an art-oriented use case that doesn't touch too many APIs, doesn't need a GPU, doesn't have to be realtime, and yet does a lot of possibly parallelizable float stream processing.</p><p>and hopefully we can expand from there.</p><p><a href="https://mastodon.gamedev.place/tags/devlog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>devlog</span></a> <a href="https://mastodon.gamedev.place/tags/datalogue" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>datalogue</span></a></p>