• 2 Posts
  • 326 Comments
Joined 3 years ago
cake
Cake day: June 15th, 2023

help-circle

  • I think you have done way more work than would be needed to learn Rust. I mean, it certainly is useful knowledge if you want to do any of those things in Rust, but it’s definitely not needed to learn Rust.

    The Book (the Rust language guide) assumes that you know some other language first, but you don’t need to be an expert in anything in order to start learning Rust. If you understand the basic concepts of branching, loops, recursion and function calls, you are good to go.

    There are of course other concepts you will encounter in Rust (like Algebraic Data Types, Polymorphism, Ownership,…), but those are all explained in the Rust Book, so there really is no need to learn them in advance.


  • Also an “encrypted email host” needs to process the metadata in order to deliver the mail. For mail that needs to be sent to a different server, the receipient’s mail address needs to be decrypted in any case. Even for mail that has a local receipient there is as far as I know (beware: not an expert) no server software that can do this without decrypting the metadata first.

    The connection between the sender/receipient and their respective mail server is encrypted (with any decent mail hoster, at least - and both users can check the encryption in their mail client), so the metadata isn’t publicly readable during this connection.

    Server-to-server communication is a different story though… This could in theory be unencrypted (it almost always is encrypted though), and as a user one needs to trust one’s mail hoster and the mail hoster of the receipient that they support encryption for server-to-server messages…

    Still, I don’t think there is much to gain by adding yet another layer of encryption to the metadata. In the end it’s just going to be encrypted metadata in an encrypted connection, where the same parties have decryption keys for both, the metadata encryption and the encrypted connection…

    With an encrypted message body it’s different, as that’s irrelevant for the delivery of the mail, and therefore no mail hoster needs to be able to decrypt it.


  • The best part is the job opening…

    Actively use and promote AI-assisted development tools to increase team efficiency and code quality

    Probably the boss of the person who had to write the job opening demanded they include something about AI, and the person who wrote it decided to turn their sarcasm up to 100. The only way to make it more clear would have been sarcastic casing:

    Actively use and promote AI-assisted development tools to InCrEaSe TeAm EfFiCiEnCy AnD cOdE qUaLiTy




  • The actual writing of course isn’t pure. Loading isn’t either, but we only support loading on level transition, so we can supply the data already when constructing the game state. Saving is done by gathering all the data that should be saved in a struct, what is pure and happens at a well defined point in the frame, where the game state is known to be consistent (-> I think it’s after all systems have been updated), and then this struct is written out to a file.


  • As said, we try to. Not that we managed to reach this ideal in any existing project yet. We did manage to get Auto-Save implemented without affecting the “purity” of computations, but as you said, achievements and analytics are a PITA. I think those are possible with pure computations too, but we did not yet manage to build the game architecture in a way that makes that work. Yet.

    I’m currently on a research project to investigate how much of a game we can move into pure Embedded Domain Specific Languages. So, basically a set of gameplay scripting languages that enforce the “everything that happens during the frame is pure” constraint. Buuut, again, this project is still at its early stages, and under very strict budget constraints, so I cannot say yet if the outcome will be a feasible architecture or not…


  • Every function has side effects and variables will need to be modified in multiple places in the same frame

    We try to avoid exactly that, because it is what caused us man-years of bug-hunting and bug-fixing over our past projects. Our end-goal (that is still very far away…) would be to have the state from the previous frame and the user inputs, do only pure computations based on this data, and write out a new state before rendering the current frame.

    We do use C++ though (because Unreal, and console platforms), what makes this extra hard, because C++ is a language for writing bugs, not for writing software.



  • small performance hit

    How big the performance hit is depends on the game. If the game logic itself is CPU-heavy, the performance hit will be big. If the game spends most of the CPU time in system-supplied libraries or isn’t CPU-heavy to begin with, it’s gonna be small.

    The good news is that many VR titles aren’t CPU-heavy.





  • I’m willing to bet that it’s AI. It soft-contradicts itself quite often, emphasising that C++ is “Performance First”, but then also claiming stuff like “Rust achieves memory safety with zero runtime overhead”.

    Edit: What I am trying to say is that I have seen text like this in LLM output quite often, if the LLM is mixing text from different sources in its training data.

    Also, there is just wrong stuff in the text itself, not only in the conclusion. For instance the claim that Rust’s type system makes data races impossible. They are easier to avoid, but there is nothing stopping you from writing data races… Here, for instance, have a data race in safe Rust




  • There are several small differences between the Xbox 360 and the Xbox Series X gamepad. No single point by itself would be a very big difference, but overall it sums up. I have both gamepads in front of me, and will try to make a comparison:

    • The material of the Xbox 360 gamepad feels “better”. I can’t exactly say why, but I think it’s because of its smooth material on the bottom.
    • The Xbox 360 gamepad has bigger analogue sticks, with stronger springs.
    • Similarly, the triggers of the Xbox Series X gamepad are “weaker” than of the Xbox 360 gamepad.
    • I would have sworn that the Xbox Series X controller is a lot lighter too, but turns out, after weighing them both, that the Xbox 360 controller is slightly lighter. It does not feel this way though, with the Xbox 360 gamepad feeling way sturdier and heavier (but, as said, it’s actually lighter?!?).
    • The buttons on the Xbox 360 gamepad feel a lot smoother. They don’t make a “cheap, broken device” noise when being pressed.
      • This also applies to the D-Pad.

    I think the last point - the feeling when using the buttons and especially the D-Pad - is the most important one for me. On the Xbox 360 gamepad the buttons feel like actual buttons. On the Xbox Series X gamepad they sound and feel like a fidget toy. Using the D-Pad on the Xbox Series X gamepad is really annoying, because of the noise it makes.