• 1 Post
  • 205 Comments
Joined 1 year ago
cake
Cake day: June 15th, 2023

help-circle




  • While Visual Novels are not my favourite genre, there are a few entries that I would like to highlight, because I enjoyed playing them quite a lot:

    • Pyre: While it isn’t marketed as Visual Novel, it pretty much is one. To be precise, it is a Visual Novel with sports-game elements. The world-building in this one is excellent, as is the art. The visuals alone would make this game worth playing, but there is also the soundtrack, and the gameplay of the sports events is pretty fun too. Oh, and the story. This game really requires tough choices. It’s from the same studio that made Hades, Transistor and Bastion, and it shows.
    • Griftlands: Again, not marketed as Visual Novel, despite very clearly being one. This one is a Visual Novel with card battles and deck-building. Just as with Pyre, the world-building in this one is outstanding. The card battles are well done. It’s no Slay the Spire, but it’s still pretty good. Also, it has some of the best jokes I have seen in games recently.
    • Loren the Amazon Princess: Again a Visual Novel that is primarily marketed as something else - this time Role Playing Game. And to be honest, it has everything you would expect from an RPG: inventory management, character stats, JRPG-style turn-based battles, trading, a world map,… But it’s still pretty much a Visual Novel with RPG elements. It has a massive scope for an indie game, and is overall pretty well done. To be blatantly honest, I played this mainly for the RPG parts, but the story isn’t bad either, once one gets past the initial “I see your party has no rogue, mind if I join?” part. The setting is still being actively developed by the studio behind it, who have released several other visual novels (with and without RPG elements) set in the same world, with recurring characters.


    • cargo install is for installing rust programs for your user, not for adding dependencies to your Rust project. Many cargo subcommands can be installed this way, for instance cargo bloat.
    • The file you are talking about is called Cargo.toml, because it is the file you need to write in order to configure cargo for your Rust project. TOML is the name of the file format. For details, please see the introductory chapter to Cargo in the Rust book.
    • Cargo recently got a new subcommand called cargo add, which allows to add dependencies directly on the command line. However, all it does is to add/edit/remove the respective lines in Cargo.toml. (Personal opinion: I have found it way easier to just edit the file directly than to learn yet another command…)

    That said: You still need to edit the Cargo.toml file, even if you solely use cargo add to manage your dependencies. That’s because that file contains a lot more information about your project than just the dependencies. For instance the current version, the feature-flags, your name, a link to the public repo,…








  • 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.






  • ARM based Deck would be a huge improvement to battery life. Don’t get your hopes up too high. You will need an emulation layer like FEX of Box64, and unlike WINE those do have quite a substantial overhead.

    It is impressive how far those emulators have come, especially since they got the option to use native libraries instead of emulated ones, but the game logic itself will always need emulation…

    This doesn’t mean it can’t be done, it just means that the ARM CPU needs to be pretty fast to counter the emulation overhead, and that’s why I have my doubts about the energy efficiency…

    (Btw: I have tried running several AMD64 games on my A311D powered MNT Reform laptop with Box64. It’s impressive how well the emulation runs, and how many games are actually playable already. However, I also encountered a lot of games that don’t reach enjoyable FPS on that hardware. With a faster ARM chip though…)


  • It depends on what kind of patent. I just googled the term I had used before, and it is indeed what I expected it to be: https://en.wikipedia.org/wiki/Design_patent

    And yes, that name is stupid. That’s why I am happy that my native language, German, has a better distinction between “Patent” (what you described) and “Geschmacksmuster” (design patent).

    About patents being public: They are. That’s because the idea behind patents is that after they expire, anyone can use them to build the technology they describe. The temporary exclusive usage rights that they offer are meant as an incentive for inventors to publish their findings. The only problem is that the legal situation did not keep up with the creativity of patent lawyers… (I will stop now, otherwise this will turn into an endless rant about how broken the patent system is.)