• 0 Posts
  • 132 Comments
Joined 2 years ago
cake
Cake day: June 25th, 2023

help-circle



  • I think you’re wrong about one thing - it’s not about compute cost, but about complexity of accounting for latency. You could check if the player can see the enemy they’re claiming to have shot, but you really need to check if they feasibly could’ve seen the enemy on their computer at the time they sent the packet, and with them also having outdated information about where the enemy was.

    The issue gets more complex the more complex the game logic is. Throw physics simulation into the mix and the server and clients can quickly diverge from small differences.

    Ultimately, compensating for lag is convoluted, can still cause visible desync for clients (see people complaining about seeing their shots connect in CS2 without doing damage), and opens up potential issues with fake lag.

    More casual games will often simply trust the client, since it’s better for somebody to, say, fly around on an object that’s not there for other players, than for a laggy player to be spazzing out and rubberbanding on their screen, unable to control their character.




  • Both java and go seem excessively complex at runtime for fundamental system utilities, featuring garbage collection. Rust, on the other hand, keeps the complexity in the compiler and source, keeping the runtime code simpler. And of course it’s doing that while trying to make it easier to manage memory and harder to make mistakes, without forcing extra runtime logic on you.



  • I think most of the work is in the fact that there often isn’t an “equivalent call”, and it can be quite a lot of code to make it work. One funny thing is the whole esync-fsync-ntsync issue, where synchronization is done differently on Linux and on windows, and translating it was a big performance hit, and difficult to do accurately. If I understood correctly, esync, fsync and ntsync were a series of kernel patches implementing additional synchronization code in the kernel, with ntsync actually replicating the windows style.






  • KubeRoot@discuss.tchncs.detoLinux@programming.dev*Permanently Deleted*
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    2
    ·
    1 month ago

    And then fuck it up by pointing Linux at your windows EFI partition, end up with neither system bootable and make things worse as you panic and try to rush a fix without understanding what you’re doing.

    If you’re new to how it all works and having a working machine is important, best to keep it simple and as separated as you can.

    I’m also not convinced that “Windows doesn’t know about the other partitions”, that sounds like the kind of thing that’s true until it isn’t and it overwrites your Linux bootloader.


  • This is certainly an odd suggestion, and not what you’re really asking for, but makes me think of Space Station 13. It’s a janky round-based multiplayer roleplay/social intrigue game. It’s free, and the game is opensource (though not the engine), which also leads to there being many servers with unique variations. It’s cheating to suggest a multiplayer game when talking about single player natural language processing games, but using actual players is probably the easiest way to pull it off.

    The reason it reminds me is because on a roleplay server, you’ve got something like 20 people, each with their job to do, talking to each other, talking on common radio, etc. - and if you’re lucky, a player playing as the station AI, complete with a (modifiable) lawset they have to follow, Asimov’s laws style. And of course, a few antagonists that have objectives to do.

    If you’re curious, I personally recommend BeeStation, though there are a lot of fine choices for the server, just maybe stay away from the 18+ ones.



  • I would argue that memorization is important, but what you memorize and how you arrive at that is very personal. Forcing kids to memorize very specific things, and trying to enforce memorization (as opposed to the ability to arrive at the solution) seems like a bad idea to me.

    I still don’t have the 10x10 multiplication table memorized, and I took physics in high school and work as a programmer. I have a use for knowing number multiples, and have domain-specific numbers memorized (2^8=8*8=256, 256*256=65536), but what I don’t remember off the top of my head I can figure out from the things I do know, from certain tricks, and from brute force mental math juggling numbers.

    And the important thing to me is, I learned what I know not because somebody told me this is how I should do things, but because I picked them up as needed, a mix of memorizing common multiplications and figuring out tricks (like multiples of 9*N for N<11 being the digits N-1 and 10-N)