Hiker, software engineer (primarily C++, Java, and Python), Minecraft modder, hunter (of the Hunt Showdown variety), biker, adoptive Akronite, and general doer of assorted things.

  • 3 Posts
  • 494 Comments
Joined 2 years ago
cake
Cake day: August 10th, 2023

help-circle
  • Yeah, I was really confused when the game Brighter Shores first entered early access with its initial aggressive chat moderation system (because it’s out of the UK law and the liability on their part is insane I guess) and a bunch of people were like “seriously? I got banned for this.”

    Nobody was getting banned, they were getting temporarily muted and calling it a ban.

    I feel like “ban” is a term that used to have a really clear meaning: you can no longer use this service. Now, it seems like that word is increasingly being abused to just mean: the service stopped me from doing something I wanted to do.




  • But they are not the default option. And your new job may not use them.

    Who cares if it’s the default? If it’s the best tool, use it.

    It’s silly to have a reason for “going Rust” be the build system, especially in the context of something as new as a WASM context where basically any project is going to be green field or green field adjacent.

    Exceptions is a non standard exit point. And by “non standard” I’m not talking about the language but about its surprise appearance not specified in the prototype. Calling double foo(); you don’t know if you should try/catch it, against which exceptions, is it an internal function that may throw 10 level deep ?

    And that’s a feature not a bug; it gets incredibly tedious to unwrap or forward manually at every level.

    By contrast fn foo() -> Result<f64, Error> in rRst tell you the function may fail. You can inspect the error type if you want to handle it. But the true power of Result in Rust (and Option) is that you have a lot of ergonomic ways to handle the bad case and you are forced to plan for it so you cannot use a bad value thinking it’s good:

    You can do this in C++ https://en.cppreference.com/w/cpp/utility/expected (and as I said, if you feel so inclined, turn off exceptions entirely); it’s just not the “usual” way of doing things.




    1. It’s statically compiled and isn’t dependent on system binaries and won’t break if there if the system has the wrong version like C/C++, allowing you to distribute it as a single binary without any other installation steps

    You can do that with C++ too.

    1. Still produces fairly small binaries unlike languages like Java or C# (because of the VM)

    I mean, the jars are actually pretty small; but also I really don’t get the storage argument. I mean we live in a world where people happily download a 600 MB discord client.

    1. Is a modern language with a good build system (It’s like night and day compared to CMake)

    Meson exists … as do others.

    1. And I just like how the language works (errors as values etc.)

    Fair enough; though why? What’s wrong with exceptions?

    I work in a code base where I can’t use exceptions because certain customers can’t use exceptions, and I regularly wish I could because errors as values is so tedious.









  • I get Tim’s reasoning though with Xbox, Switch, and PlayStation. As it stands, these are not general purposes operating systems. You don’t “install apps” on them, you play games, maybe stream a show, and maybe use a web browser (but realistically few people are doing the latter two with these devices). They’re also typically much more subsidized because Sony, Nintendo, and Microsoft can recoup a lot of the hardware cost in game sales (where as Apple and Google increasingly make the most money off of the hardware sales).

    Compare that to the Apple and Google case; like imagine if Microsoft and Apple had done this with PCs in the 90s. The world would look significantly different because you couldn’t install various things on Macs. Like as an example, Firefox and Chrome arguably wouldn’t exist (or would be a pain to install), because your system would ship with Safari and Internet Explorer (and the other browsers would just “not be allowed”).

    This is hugely anti-competitive in a way that’s far more offensive than Nintendo, Sony, or Microsoft’s behavior on their gaming consoles. These are not general purposes devices (maybe they should be, but they’re not). Basically nobody is doing their taxes on a Switch or PlayStation … but plenty of people use iOS/Android devices as their only computers (they do their taxes there, pay their bills online via these devices, etc).






  • Well like, basically every shooter currently uses a hitbox to do the hitscan and that never matches the model 1:1. The hitboxes are typically far less detailed and the weak points are just a different part of the hitbox that is similarly less detailed.

    I think what they’re doing is using the RT specialized hardware to evaluate the bullet path (just like a ray of light from a point) more cheaply than can be traditionally done on the GPU (effectively what Nvidia enabled when they introduced hardware designed for ray tracing).

    If I’m guessing correctly, it’s not so much that they’re disregarding the mesh but they’re disregarding hitbox design. Like, the hit damage is likely based on the mesh and the actual rendered model vs the simplified hitbox … so there’s no “you technically shot past their ear, but it’s close enough so we’re going to call it a headshot” sort of stuff.

    If you’re doing a simulated shotgun blast that could also be a hundred pellets being simulated through the barrel heading towards the target as well. Then add in more enemies that shoot things and a few new gun designs and… maybe it starts to make sense.