home.social

#suetum — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #suetum, aggregated by home.social.

fetched live
  1. Working on the LSP VSCode extension for #suetum posed interesting questions, like "what is a variable definition in a logic programming language"?

    Formally there's nothing like a declaration in that case, but the best way to put it is that the first time a variable is used, this is where it gets declared, and since Suetum integrates logic and imperative programming, it's been cool to notice that every reference in the imperative part must have a counterpart in the logic one to be correct!

  2. Working on the LSP VSCode extension for #suetum posed interesting questions, like "what is a variable definition in a logic programming language"?

    Formally there's nothing like a declaration in that case, but the best way to put it is that the first time a variable is used, this is where it gets declared, and since Suetum integrates logic and imperative programming, it's been cool to notice that every reference in the imperative part must have a counterpart in the logic one to be correct!

  3. The expansions generating that code look something like this. #suetum #versu #praxis

  4. The expansions generating that code look something like this. #suetum #versu #praxis

  5. Well, even though I was working on Selanía too these days, I've been able to get to the end of the expansion mechanism too! Now I can write stuff like

    ```
    Have you heard of what [Gossippee.subj] said yesterday?
    No! What did [Gossippee.subj] do?
    Well, you know, someone gave [Gossippee.obj] the excuse to...
    ```

    And have it expand to

    ```
    Have you heard of what Mary said yesterday?
    No! What did she do?
    Well, you know, someone gave her the excuse to...
    ```

    #suetum #versu #praxis

  6. Well, even though I was working on Selanía too these days, I've been able to get to the end of the expansion mechanism too! Now I can write stuff like

    ```
    Have you heard of what [Gossippee.subj] said yesterday?
    No! What did [Gossippee.subj] do?
    Well, you know, someone gave [Gossippee.obj] the excuse to...
    ```

    And have it expand to

    ```
    Have you heard of what Mary said yesterday?
    No! What did she do?
    Well, you know, someone gave her the excuse to...
    ```

    #suetum #versu #praxis

  7. In order to expand strings like
    "Hello, [greeting.towards.Person]."
    I must know context about Person (like: do I hate them? I love them? I'm neutral?), which means that intelligent expansions must be used (context free grammars with conditions from the current state of the game, in practice), which means that they are not just syntactic replacement but need the whole machinery of the runtime engine, which means moving lots of code... AAAAA xD

    #Suetum #versu #praxis

  8. In order to expand strings like
    "Hello, [greeting.towards.Person]."
    I must know context about Person (like: do I hate them? I love them? I'm neutral?), which means that intelligent expansions must be used (context free grammars with conditions from the current state of the game, in practice), which means that they are not just syntactic replacement but need the whole machinery of the runtime engine, which means moving lots of code... AAAAA xD

    #Suetum #versu #praxis

  9. Parsing code + test suite done, so now I can go on with the compilation and then execution of the expansion! #suetum #versu #praxis

  10. Parsing code + test suite done, so now I can go on with the compilation and then execution of the expansion! #suetum #versu #praxis

  11. ok, after some bugfix I reached the astronomical amount of...
    (drumrolls)
    48 lines of antlr4 parser.
    i love so much when i can code less O_O
    #suetum #praxis #versu

  12. ok, after some bugfix I reached the astronomical amount of...
    (drumrolls)
    48 lines of antlr4 parser.
    i love so much when i can code less O_O
    #suetum #praxis #versu

  13. Lots of thinking, and then the grammar for the expansion construct is so embarrassingly simple 🥹 #Suetum #versu #praxis

  14. Lots of thinking, and then the grammar for the expansion construct is so embarrassingly simple 🥹 #Suetum #versu #praxis

  15. Since I have a little lull in the development of Selanìa, I'm advancing with #Suetum.

    The system is more and more getting structured in a way that allows for parts of the project to be used independently. One can just use the fact list as a knowledge base, or just the expansion mechanism, just the instructions, or multiple parts combined into something different from Suetum (e.g.: with this architecture, one could implement a Lume-like system based on exclusion logic: researchgate.net/publication/3 )

  16. Since I have a little lull in the development of Selanìa, I'm advancing with #Suetum.

    The system is more and more getting structured in a way that allows for parts of the project to be used independently. One can just use the fact list as a knowledge base, or just the expansion mechanism, just the instructions, or multiple parts combined into something different from Suetum (e.g.: with this architecture, one could implement a Lume-like system based on exclusion logic: researchgate.net/publication/3 )

  17. Ian Horswill is writing a book that is a very good introduction to formalisms around procedural generation.

    I love how it is quite focused on text generation, but it shows how very similar techniques can be applied to e.g. generating environments.

    Very well written, clear, to the point, without sacrificing precision.

    I will definitely use lots of the elements laid out here to work on the expansion/interpolation mechanism in #Suetum .

    ianhorswill.github.io/DPGD/ind

  18. Ian Horswill is writing a book that is a very good introduction to formalisms around procedural generation.

    I love how it is quite focused on text generation, but it shows how very similar techniques can be applied to e.g. generating environments.

    Very well written, clear, to the point, without sacrificing precision.

    I will definitely use lots of the elements laid out here to work on the expansion/interpolation mechanism in #Suetum .

    ianhorswill.github.io/DPGD/ind

  19. Fixed also the last bug regarding axiom/rules exploration. Which allows you to drill-down in axiom expansions, and sub-axiom expansions and so on.

    Now, in the space between the work on Selanìa, I can get to attack (my version of) Prolog's definite clause grammars.

    It will probably be a more pragmatic approach, strongly oriented towards the narrative usages, with dedicated syntax, although it will be 100% based on exclusion logic like the rest.

    #Suetum #versu #praxis

  20. Fixed also the last bug regarding axiom/rules exploration. Which allows you to drill-down in axiom expansions, and sub-axiom expansions and so on.

    Now, in the space between the work on Selanìa, I can get to attack (my version of) Prolog's definite clause grammars.

    It will probably be a more pragmatic approach, strongly oriented towards the narrative usages, with dedicated syntax, although it will be 100% based on exclusion logic like the rest.

    #Suetum #versu #praxis

  21. Big commit on #Suetum to improve axioms (rules). Now you can write mutually recursive rules, and Habitus is also kind-of able to show them (there are still cases in which it can't expand an axiom, in case the very first rule of the axiom already fails)!

    codeberg.org/owofgames/suetum/

    #praxis #versu

  22. Big commit on #Suetum to improve axioms (rules). Now you can write mutually recursive rules, and Habitus is also kind-of able to show them (there are still cases in which it can't expand an axiom, in case the very first rule of the axiom already fails)!

    codeberg.org/owofgames/suetum/

    #praxis #versu

  23. Since I'm still deep in the rewriting of the code for Selania, should I investigate deeper in definite clause grammars ( book.simply-logical.space/src/ ), which brings me ideas on how to complete the parts of #Suetum that are missing?
    Probably not.
    AND YET.

  24. Since I'm still deep in the rewriting of the code for Selania, should I investigate deeper in definite clause grammars ( book.simply-logical.space/src/ ), which brings me ideas on how to complete the parts of #Suetum that are missing?
    Probably not.
    AND YET.

  25. These next few weeks I'll put on hold my work on #suetum to help with the code infrastructure of #Selania ( store.steampowered.com/app/394 ).

    I've helped a little bit too with the new version of the graphics and effects and I'm really excited to see it all get together ^_^

  26. These next few weeks I'll put on hold my work on #suetum to help with the code infrastructure of #Selania ( store.steampowered.com/app/394 ).

    I've helped a little bit too with the new version of the graphics and effects and I'm really excited to see it all get together ^_^

  27. This #Suetum program is doing like a thousand more computations than it should to check a condition, but at least the indented logger produces a very pleasing minimap on the right of the editor.

    #versu #praxis

  28. This #Suetum program is doing like a thousand more computations than it should to check a condition, but at least the indented logger produces a very pleasing minimap on the right of the editor.

    #versu #praxis

  29. I kind of, sort of forgot that axioms are parts of the system, and right now they are completely opaque to the debugger.

    So! Let's expand the system the allows for notifications during the unification of logic clauses to work also on axioms, and track a "stack" of the resolution.

    This was quite tricky, and revealed a bug in recursive axiom applications, but: it's done! Now, how to properly display it...

    #Suetum #versu #praxis

  30. I kind of, sort of forgot that axioms are parts of the system, and right now they are completely opaque to the debugger.

    So! Let's expand the system the allows for notifications during the unification of logic clauses to work also on axioms, and track a "stack" of the resolution.

    This was quite tricky, and revealed a bug in recursive axiom applications, but: it's done! Now, how to properly display it...

    #Suetum #versu #praxis

  31. The work on the debugging tool for #Suetum is reaching its completion, but this is the most dense part, conceptually.

    Added the possibility to see the agents' heuristics, to time travel (!) between the current and past states of the simulations, and what I'm now working on is the ability of creating "alternative" world states, where you simulate a different choice from the one picked by the game purely inside the debugging tool.

    #praxis #versu

  32. The work on the debugging tool for #Suetum is reaching its completion, but this is the most dense part, conceptually.

    Added the possibility to see the agents' heuristics, to time travel (!) between the current and past states of the simulations, and what I'm now working on is the ability of creating "alternative" world states, where you simulate a different choice from the one picked by the game purely inside the debugging tool.

    #praxis #versu

  33. So, apparently, yes: it was a matter of an afternoon to add support for forall/exists quantification in #Suetum 😮

    (also added the possibility to explore the bindings that matched the conditions, to debug problems in matching, and set an icon too)

    #praxis #versu

  34. So, apparently, yes: it was a matter of an afternoon to add support for forall/exists quantification in #Suetum 😮

    (also added the possibility to explore the bindings that matched the conditions, to debug problems in matching, and set an icon too)

    #praxis #versu

  35. Welp, looks like "for all" and "exists" operator are indeed necessary to build logic programs like i need.

    So, this afternoon will be dedicated to that... because it will be... very... simple... to add quantifiers... right? >_>

    #suetum #versu #praxis

  36. Welp, looks like "for all" and "exists" operator are indeed necessary to build logic programs like i need.

    So, this afternoon will be dedicated to that... because it will be... very... simple... to add quantifiers... right? >_>

    #suetum #versu #praxis

  37. *cone of shame, pt. 2*

    Does it ever happen to you to completely blank out on the existence of a _whole construct_ of your language, and one which is just about as central to it as possible? No? Oh. Ok. #Suetum #Versu #Praxis

  38. *cone of shame, pt. 2*

    Does it ever happen to you to completely blank out on the existence of a _whole construct_ of your language, and one which is just about as central to it as possible? No? Oh. Ok. #Suetum #Versu #Praxis

  39. Fixed some threading bugs in the debugging client - which I thought would be much harder, and instead were all decently easy to face! #Suetum #praxis #versu

  40. Fixed some threading bugs in the debugging client - which I thought would be much harder, and instead were all decently easy to face! #Suetum #praxis #versu

  41. I knew I would find things to correct in the #Suetum implementation as soon as I worked on another example, but I broke my record by finding a problem before the first "start" section or the first practice completed. Yay! ... I guess. #versu #praxis

  42. I knew I would find things to correct in the #Suetum implementation as soon as I worked on another example, but I broke my record by finding a problem before the first "start" section or the first practice completed. Yay! ... I guess. #versu #praxis

  43. Sure thing, StreamJsonRpc, "An error occured during serialization" gives me exactly zero (0) clues about what's wrong, especially because it's *you* who's doing the serialization.

    (and for some reason, Rider successfully connects in debug mode to #Godot, but doesn't hit breakpoints...? although it can read Godot's console output...? *sigh* I hate when I find a problem while debugging a problem caused by the debug of another problem caused by...) #Suetum #versu #praxis

  44. Sure thing, StreamJsonRpc, "An error occured during serialization" gives me exactly zero (0) clues about what's wrong, especially because it's *you* who's doing the serialization.

    (and for some reason, Rider successfully connects in debug mode to #Godot, but doesn't hit breakpoints...? although it can read Godot's console output...? *sigh* I hate when I find a problem while debugging a problem caused by the debug of another problem caused by...) #Suetum #versu #praxis

  45. The fact that I was able to slap the .net 8 compiled #Suetum DLL libraries in the #godot C# project, add the missing nuget dependencies, and everything just *worked* is a very much welcome surprise.

    #versu #praxis

  46. The fact that I was able to slap the .net 8 compiled #Suetum DLL libraries in the #godot C# project, add the missing nuget dependencies, and everything just *worked* is a very much welcome surprise.

    #versu #praxis

  47. Today I've ironed out some bugs and uncomfortable edges, and now I'm ready to find inspiration for the scene I want to test in my next, larger #Suetum program >_>
    #praxis #versu

  48. Today I've ironed out some bugs and uncomfortable edges, and now I'm ready to find inspiration for the scene I want to test in my next, larger #Suetum program >_>
    #praxis #versu

  49. Although unassuming, I'm pretty excited for this (also because almost all the code for this part was right practically first try)!

    Here the debugging tool is able to to see the available practice instances (and reference to the general practice), and its actions (instantiated). Each action also shows all the conditions, and most of all, whether the conditions are matched for the given Agent, including the results of the sub-conditions! This helps A LOT.

    #Suetum #Versu #praxis

  50. Although unassuming, I'm pretty excited for this (also because almost all the code for this part was right practically first try)!

    Here the debugging tool is able to to see the available practice instances (and reference to the general practice), and its actions (instantiated). Each action also shows all the conditions, and most of all, whether the conditions are matched for the given Agent, including the results of the sub-conditions! This helps A LOT.

    #Suetum #Versu #praxis

  51. Psst... hey... could I interest you in some... *looks around in a conspiratorial way*... BINDINGS?

    #suetum #praxis #versu

  52. Psst... hey... could I interest you in some... *looks around in a conspiratorial way*... BINDINGS?

    #suetum #praxis #versu

  53. Fact list initialization and propagation towards the debugging tool is ok, displaying it is still a bit uncertain ;D.

    After all, I now have to add filters, which include expressions with free bindings, so that's a part I'll definitely have to rework and expand. The important thing was to have the fact list synchronized between the application and the debugger!

    Note to self: making UIs is always a PAIN.

    #suetum #versu #praxis

  54. Fact list initialization and propagation towards the debugging tool is ok, displaying it is still a bit uncertain ;D.

    After all, I now have to add filters, which include expressions with free bindings, so that's a part I'll definitely have to rework and expand. The important thing was to have the fact list synchronized between the application and the debugger!

    Note to self: making UIs is always a PAIN.

    #suetum #versu #praxis

  55. Every time I work with #Avalonia and #ReactiveUI I'm equal parts delighted and enraged. Anyway! The foundations of the debugging tool are on.

    Right now I've built an (optional) server that provides the debugging tool for the data necessary to see the internal state of the game as it runs. Simple JSON/RPC over TCP connection, nothing fancy. The idea is to build two main parts: one for querying the fact list, another for the practices and actions.

    #suetum #versu #praxis

  56. Every time I work with #Avalonia and #ReactiveUI I'm equal parts delighted and enraged. Anyway! The foundations of the debugging tool are on.

    Right now I've built an (optional) server that provides the debugging tool for the data necessary to see the internal state of the game as it runs. Simple JSON/RPC over TCP connection, nothing fancy. The idea is to build two main parts: one for querying the fact list, another for the practices and actions.

    #suetum #versu #praxis