• 0 Posts
  • 53 Comments
Joined 1 year ago
cake
Cake day: June 15th, 2023

help-circle

  • I haven’t done much Rust coding this year yet, mainly because I am trying to learn Lean4 and spent the last couple of months writing a (partially) formally validated (but not very fast) Binary Heap in Lean4.

    However, a few days ago I had an inspiration at night, that brought me back to my Rust spare time project: The visual novel engine I had started last year.

    For now I only did a relatively small change, but it’s one that will save me a lot of time (and nerves) later on. I am using a Free Monad based embedded Domain Specific Language for writing the game logic. The change now was to wrap that Free Monad in a State Monad Transformer, which I use to store the game state in.

    This idea seems to be working surprisingly well, and that has given me enough motivation to return to this project and to keep developing it further for now.


    Long and boring explanation with way too much detail:

    Sorry for going on a tangent, but there is a Rust-specific detail that makes this cool beyond the usual advantages of using a State Monad Transformer, and I cannot stop myself from sharing.

    For composing a large Free Monad, do-notation is more or less a must-have. However, do-notation in Rust only works well with types that implement Copy. If you want to use any other type in do-notation, you can only access variables of it in the following two lines. An attempt to access the data later will lead to an ownership problem (explained here). I have tried to overcome this by adding additional syntax to do-notation, but that is a crutch at best.

    So, this is where the State Monad Transformer comes in. It side-steps this problem by moving the state out of the do-notation block into the Free Monad’s Pure-nodes. That way it is readily available via the State Monad Transformer’s get()/put() functions, and the “use within two lines” limitation is not a big issue any more, as one can always get the value on one line, do something with it in the next line, and write the result back on the second line.




  • Behind all the negative tone there is a valid concern though.

    If you don’t know Rust, and you want to change internal interfaces on the C side, then you have a problem. If you only change the C code, the Rust code will no longer build.

    This now brings an interesting challenge to maintainers: How should they handle such merge requests? Should they accept breakage of the Rust code? If yes, who is then responsible for fixing it?

    I personally would just decline such merge requests, but I can see how this might be perceived as a barrier - quite a big barrier if you add the learning cliff of Rust.



  • In addition to LibreOffice I often use standalone tools.

    If I want a high quality document, I use LaTeX. Same for presentation slides. However, writing stuff in LaTeX is only worth the effort if the quality is needed. For non-important stuff I just use LibreOffice.

    For calculations it depends on what I want to have in the end. If I just want to play with the data a bit, then LibreOffice Calc it is. However, if it is for something serious, I tend to write script files, or even full programs, that do the processing. That way computation and data is in separate files, and the used formulas are clearly visible and easy to debug.


  • I have been a user since the 90s. Back then it was still called StarOffice.

    Its feature set differs from that of MS Office, and its performance could be (a lot!) better, but I strongly prefer the LibreOffice user interface, and the features that matter to me (like CSV import) are way better in LibreOffice. However, LibreOffice does not have all the features of MS Office, and some are notably worse (for instance auto-fill in spreadsheets, where Excel is way better at guessing the next value).

    Sadly it’s not only a matter of preference, because file exchange between different office suites is not flawless. MS Office and LibreOffice don’t agree 100% on how to load each other’s files…





  • Yep, innoextract just unpacks the files, and I then place them into a folder in the home dir. Before I knew about innoextract I also just used WINE to run the installers, and then copied the installed files around. (btw, the apple pkg installers can also be unpacked by a combination of 7z and cpio - in case you just want to unpack one of the many GoG Dosbox games and don’t have innoextract or WINE available)

    I have a folder named ~/Games - and the individual games in subfolders there. In Steam’s “add non-steam game” dialogue there’s a “browse” button, and in that one I then select the .exe file of the game. That adds it to the library, and allows selecting Proton as compatibility tool in the preferences.

    I am pretty sure the Steam Client reports which games you play to Steam’s “presence” service, such that your Steam Friends can see what you are playing. I don’t know if Valve gathers that data for other purposes (but would assume they do unless told otherwise). Also, some games that ship with Steam integration in their GoG installer (e.g. Loop Hero) will even track as you playing the Steam version - even if you don’t own it there.

    And yeah, there is no GoG Galaxy emulation in Steam of course, but I honestly don’t care much about achievements. The lack of cloud support in non-Steam games is annoying though, as I also have a Steam Deck and those saves don’t automatically synch…


  • I usually just download the installers from their website. It’s not like I would need to install or update games on a day to day basis…

    If the installer is only available for Windows (or if I am using my ARM laptop) I use innoextract to extract the files without needing to run the installer.

    For Windows games I found that the easiest way to deal with them is to add them to the Steam Library as a non-steam-game, and to force Proton on them…





  • Yep. With Kingmaker it was extra annoying, because the game has Steam Deck Verified rating, and the Steam Deck defaults to the Linux build.

    Thing is, you can play through the whole first chapter of the game with a gamepad without issues… However, once you unlock the Kingdom Management screen, you run into the bug, which is a soft-lock once you open said screen. The UI doesn’t properly initialize, all text fields remain at their default value, and you cannot make any inputs any more. Luckily the ESC-Menu still works, so you can save your progress…

    If it weren’t for the Steam Deck, I guess very few people would have run into this bug, if any at all. Kingmaker has a different UI if played with a gamepad, and even though Kingmaker’s gamepad-UI is done really well, it is clear that it is meant for playing the game on a TV screen (think: consoles). If you are sitting right in front of your screen (PC), the UI you see when playing with mouse and keyboard is superior in each and every aspect.



  • I’ll go with “less than 100 reviews”, as with “less than 1000” my list would get really, really long. This leaves two titles in my Steam Library which I think deserve way more attention than they got:

    • ComPressure: It’s a Zachtronics-like game, where you build analogue and logic circuits using steam pipes and valves instead of wires and transistors. Its UI is a bit unwieldy, but the game itself is amazing, and it really is a shame that it hasn’t gotten more attention. Also, while there is a paid version on Steam, the game’s source code is available.
    • Crown of Pain: It’s a match-3 with RPG elements. That’s basically all that is to it, but it’s a lot of fun.

  • My top answers are of course Kerbal Space Program, Dwarf Fortress and Stellaris.

    However, all those have been mentioned already, so, to add something new to the list: Pathfinder: Kingmaker. It is currently my favourite cRPG.

    Edit: Since you mentioned “Great Linux ports”: Kingmaker has a game-breaking bug in the Linux version regarding Gamepad input. However, as long as you play it with mouse and keyboard (as the gods intended - insert PC Master Race meme), the Linux version is working perfectly fine. However, if you plan on playing it on the Steam Deck, you might want to play the Windows build.