• 5 Posts
  • 79 Comments
Joined 1 year ago
cake
Cake day: June 12th, 2023

help-circle




  • Couldn’t aimbots be picked up as odd movement and be detectable on a server though? Kind of similar to how those “not a robot” checks can tell if a human is clicking on the box just by looking at the movements of the cursor.

    In addition, things like textures and game-modifications could be picked up in part by things like checksum verification to make sure the client is unmodified (assuming the files are modified on the disk and not in memory)

    I feel like most client-side changes like see-through walls or player highlighting make themselves pretty obvious when aggregated over multiple games. A good user-reporting system could probably catch most of these.

    I definitely agree though, allowing multiple random companies to install ring 0 rootkits should not be the norm. Honestly, even a Windows-level anticheat would be problematic because it would only worsen the monopoly Microsoft has on competitive games as a platform. A new solution would need to be cross-platform or else it would only be marginally better than what already exists.




  • Preface: I’m not an expert in this yet but I’m pretty interested in learning about systems-level topics so if I’m wrong please correct me!

    Yes, the thing about anticheats and anti viruses is that they are only useful when they have access to the underlying resources that a virus or cheat engine might try to modify. In other words, if cheating software is going to use kernel-level access to modify the game, then an anticheat would also need kernel-level access to find that software. It very quickly became an arms race to the lowest level of your computer. It’s the same with anti viruses.

    IMO the better strategy would be to do verification on a server level, but that probably wouldn’t be able to catch a lot of cheats like wall hacks or player outlines. At some point you just have to accept that some cheaters are going to get through and you’ll have to rely on a user-reporting system to get cheaters because there will always be a way to get past the anticheats and installing a separate rootkit for each game isn’t exactly a great idea.


  • That’s fair. I was mostly commenting on my own experiences with JS/TS, I’ve never used PHP so I can’t say if it’s better or worse but a few people I know have said that modern PHP is actually pretty good for personal projects. I’m guessing it would have its own set of nightmares if it was scaled to an enterprise level though.



  • That’s true but at the same time the fact that JavaScript equality is so broken that they needed a === operator is exactly the problem I’m talking about.

    And those examples were low hanging fruit but there are a million other ways JavaScript just makes it easy to write buggy code that doesn’t scale because the JavaScript abstraction hides everything that’s actually going on.

    For example, all of the list abstractions (map, filter, reduce, etc.) will copy the array to a new list every time you chain them. Doing something like .filter(condition).map(to new value) will copy the list twice and iterate over each new list separately. In most other languages (Java, C#, Rust, Go, etc.) the list abstractions are done over some sort of iterator or stream before being converted back into a list so that the copy only has to be done once. This makes using list abstractions pretty slow in JavaScript, especially when you have to chain multiple of them.

    Another simple but really annoying thing that I’ve seen cause a lot of bugs - Array.sort will convert everything into strings and then sort if you don’t give it a comparison function. Yes, even with a list of numbers. [ -2, -1, 1, 2, 10 ] will become [ -1, -2, 1, 10, 2 ] when you sort it unless you pass in a function. But if you’re looking over code you wrote to check it, seeing a list.sort() won’t necessarily stand out to most people as looking incorrect, but the behavior doesn’t match what most people would assume.

    All this is also without even getting started on the million JS frameworks and libraries which make it really easy to have vendor lock-in and version lock-in at the same time because upgrading or switching packages frequently requires a lot of changes unless you’re specifically isolating libraries to be useful (see any UI package x, and then the additional version x-react or x-angular)

    Tldr; Why can’t we have nice things JS?


  • That’s true but in practice it wouldn’t take 60^11 tries to break the password. Troubador is not a random string and all of the substitutions are common ( o -> 0, a ->4, etc. ). You could crack this password a lot easier with a basic dictionary + substitution brute force method.

    I’m saying this because I had an assignment that showed this in an college cybersecurity class. Part of our lesson on password strength was doing a brute force attack on passwords like the one in the top of the xkcd meme to prove they aren’t secure. Any modern laptop with an i5 or higher can probably brute force this password using something like hashcat if you left it on overnight.

    Granted, I probably wouldn’t use the xkcd one either. I’d either want another word or two or maybe a number/symbol in between each word with alternating caps or something like that. Either way it wouldn’t be much harder to remember.



  • Short answer:

    Long answer:

    There are a lot of gatcha moments in JS with weird behavior that makes it really easy to shoot yourself in the foot. It does get better as you get more experience but a lot of the oddities probably shouldn’t have existed to begin with. For what it was originally intended for (adding light scripting to websites) it’s fine but it very quickly gets out of hand the more you try to scale it up to larger codebases. TypeScript helps a little bit but the existence (and common usage) of ‘any’ has the potential to completely ruin any type safety guarantees TypeScript is intended to provide.




  • IMO the GBC isn’t really a full successor to the original game boy. Even though there were exclusives the actual system is more or less just an overclock/spec bump from the original game boy. Nothing about the system (architecture, input layout, developer experience, etc.) fundamentally changed Edit: aside from the PPU being able to handle colors on the screen.

    On the other hand, the GBA is a different generation because it has a completely different architecture and development process. In order to maintain backwards compatibility, Nintendo basically just stuffed the original GB/GBC internals into the GBA alongside the GBA hardware, and it will just decide which CPU to use depending on the cartridge it has loaded.



  • It’s a setting you can change in your lemmy profile, and having the bot setting turned on doesn’t stop you from posting manually.

    I’m not sure if it goes the other way around though so bad-faith bot posts pretending to be real people could probably still happen if the bot setting is never enabled.

    Edit: just to be clear Blaze is definitely not a bot but I don’t think bots necessarily have to have the bot icon.


  • Zangoose@lemmy.worldtoMemes@lemmy.mlpriorities
    link
    fedilink
    arrow-up
    2
    ·
    5 months ago

    Honestly if it weren’t for the headache of some software still not ported over to arm 4 years later, Macs would be pretty good for software development since they have a lot of the POSIX tooling.

    For the same reason I have windows so that games will “just work,” I have Linux so my programming setup will “just work.” Low level languages like C/C++ are so much easier to work with on Linux.