Anti-cheat systems in general tend to be fragile to changes in the game environment.
Honestly, I used to want that, and I’ll believe that game devs could do better than they do today, but honestly, I think that the problem is, end of the day, fundamentally not a technically-solvable one. The only way you’re going to reasonably-reliably do anti-cheat stuff is going to be to have a trusted system, where the player can’t do anything to their system.
I’d say that it’s one of the stronger arguments for consoles in general versus PC gaming. On a console, the playing field is pretty much level. Everyone has the same software running on their system, the same number of frames on their screen. Maybe there might be limited differences to the controller or better latency to a server, but that’s it. It’s hard to modify the system to get that edge. A console is pretty close to the ideal system for competitive multiplayer stuff. On a PC, in a (real-time) competitive multiplayer game, someone is always going to have some level of an edge. Like, the ability to get higher resolution or more frames per second, the ability of games to scale up to use better hardware, is fundamentally something of a pay-to-win baked into the system.
There will always be a place for competitive multiplayer games, but I honestly think that a better route forward for many games is to improve game AI from where it is today and then use computer opponents more heavily. While humans make for a very smart enemy “AI” in a lot of ways, and using them may be a technically-easier problem than doing comparable enemy AI, there are also all kinds of baggage that fundamentally come with competitive multiplayer play:
Limited lifespan for the game. At some point, nobody (or not many) people will be playing the game any more, even if it doesn’t depend on the game publisher to operate online servers. At that point, the game will head into the dustbin of history – it’ll be hard to meet the threshold to get enough people together at any one time to play a game. Multiplayer games are mortal, and single-player games are immortal.
You can’t pause. Or, well, you can, but then that doesn’t scale up to many players and can create its own set of problems. A lot of people need to change an infant’s diaper or get the door or take a call. They can play against computers, but they can’t (reasonably) play against other players.
Cheating.
Griefing.
Sometimes optimal human strategy isn’t…all that much fun to actually play against. Like, I remember playing the original Team Fortress, and that a strategy was to have classes that could set up static defenses (pipe bombs, lasers, turrets, etc) set them up right atop spawn points. That may well be a good strategy in the game, but it’s also not a lot of fun for the other players.
Immersion. Doesn’t matter for all games, but for some it does. I don’t expect humans to role-play, to stay in character, because I know that it’s work and i don’t want to hassle with it myself. But, end of the day, playing against xxPussySlayer69xx is kind of immersion-breaking.
Latency is always going to be an issue. You can mitigate it a bit with prediction and engine improvements or more telecom infrastructure, but the laws of physics still place constraints on the speed of light. There are ways you can minimize it – LAN parties, if you can get enough people. Regional servers, though that guy who lives in Hawaii is always gonna just have a hard time of it. But it’s always going to be there; you’re never going to truly have a level playing field.
The game is intrinsically mandatory-online. If you have a spotty or no connection, the game doesn’t work.
Another issue is the advance of technology. If it isn’t there now, I can imagine a generic AI engine, something like Havok is for physics, becoming widespread. And as that improves, one can get more-and-more compelling AI. Plus, hardware is getting better. But humans are, well, human. Humanity isn’t getting better at being a game opponent over the years. So my long-run bet is gonna be on game AI tending to edge in on humans as an opponent for human players.
Also, at least on the PC, it’s possible to just back up saves.
I mean, I feel like there’s legitimately value to having an “ironman mode”, but I’d really like to have the option not to use it, for a number of reasons.
One of which is that sometimes games have bugs – I just hit a bug in Starfield that was easily worked around by rolling back to an earlier save and taking a slightly different action. However, Starfield had autosaved between the action that triggered the bug and it becoming visible to the player, which would have been a problem if (a) I hadn’t manually saved prior to that and (b) Starfield didn’t do the multiple-autosave-slot thing.
The player can always impose not using saves on themselves, but they can’t debug games.
Hmm. That works for games with static cutscenes. But some games don’t have fixed cutscenes. Like, okay, take Starfield. A bunch of your actions can affect what people say in a given cutscene. So what you’ll see in a given cutscene may change.
I’ve only seen that a couple times, but yeah, the fact that NPCs can be off doing their own thing – the engine is a pretty open sandbox – can mean that they’re talking during a cutscene, and the way Starfield works, whichever character started talking first gets priority for the caption – the other caption only comes up after the first one finishes.
I kind of wish that they’d just stack the captions onscreen.
and it means you’re always doing that load “the first time”
So keep the checkpoint list for each world.
perhaps you add new content or DLC regularly that throws off this calculation
If it uses the last checkpoint times, then it should adapt to that.
All that for a return on development time invested that’s probably not worth the effort. It is worth it to show progress to confirm that the system hasn’t locked up
I think that we’re going to have to disagree. I would like to have a progress bar.
Hmm. I think that a better way to do it is probably in the OS, rather than in-game, on a per-game basis.
Processors thermal-throttle today, and OSes can limit what modes they’re allowed to shift into. And my guess is that usually, if someone wants to constrain performance, they want to do it systemwide, rather than for an individual game.
On the game developer end, if the player wants to play both in a performance-limited and not-performance-limited mode, I’d think that there are probably two ways to go about that:
Permit for two different sets of saved video settings, where the player can flip between them. Honestly, I think that this is probably more tweaking than most players are going to do.
Provide some kind of adaptive quality mechanism. Then, if the computer becomes “lower end”, then the adaptive quality system just twiddles settings until the target framerate is maintained.
There’s also a third point you make here, and that is that in a world with battery-powered devices, CPU/GPU usage actually matters. It’s not zero-cost to just use whatever’s available. I remember submitting an issue some time back for Caves of Qud, where the thing ran a busy loop when the window didn’t have focus, even though the game was paused (which the dev fixed, kudos to them). I noticed it because the fans would spool up when the game was in the background. That’s a game that, because it’s turn-based, has the potential to use very little CPU time, even when the game is in the foreground.
I think that there’s a fair argument that historically, most game developers, aside from maybe mobile or portable console guys, haven’t needed to worry much about consuming resources if they were available.
Speaking as a player, though, I don’t much care about power consumption if a system has wall power. But I care a lot about it if it’s battery-powered.
For phones, I kind of wish that Google would consider providing a “battery usage” rating in the app store that provides some kind of approximate metric for how much CPU time the game uses while active – if Google is going to send all kinds of telemetry from devices, might as well use that for something useful. Maybe permit the game developer to register multiple “modes” (high-power, low-power) and give a ranking for each. As things stand, though, there’s no way for the potential customer to know power consumption, and this would help push that information out to the customer.
One issue is that this can be a vector for malware. I kind of wish that game engines came standard with something like the Javascript engine in browsers, with some sort of sandbox for mods. I’m not saying that that’d solve everything – the game code that the mods invoke probably isn’t hardened – but it’d be better then just having arbitrary modifications go in. Especially with mod systems that auto-download new versions – even if the mod author is on the up-and-up, if someone compromises his account or computer, they’ve compromised all the computers using the mod.
EDIT: This isn’t just a problem specific to mods, either. A lot of online software library systems that provide auto-updates (pip for Python, rvm for Ruby, etc) can be a vector into systems. Providing auto-updates where many, many people have rights to push updates to computers is convenient in terms of getting software working, but unless the resulting code is running sandboxed, it’s creating an awful lot of vectors to attack someone’s system. This isn’t to impugn any one author – the vast bulk of people writing mods and open-source software are upstanding people. But it only takes one bad egg or one author who themselves has their system compromised to compromise a lot of other systems, and in practice, if you’re saying “subscribe to this mod”, you’re doing something that may have a lot of security implications for your system.
Consoles and phones already do a decent job of sandboxing games (well, as far as I know; I haven’t been working on security for either of them, but from what I’ve seen of the systems, they at least aim to achieve that). So maybe someone can compromise an app, but there’s a limited amount they can do aside from that. Maybe dump your name and location and such, but they can’t get control of your other software. However, Linux, Windows, and MacOS don’t have that kind of app sandboxing generally in place. I know that Linux has been working towards it – that’s one major reason for shifting to Wayland, among other things – but it’s definitely not there today.
For servers, I think that part of the way that sysadmins have been trying to deal with this is running containers or VMs on a per-service basis. Looking at !homelab, I see a lot of people talking about containers or VMs. But that’s not really an option today for desktop users who want to run games in a sandbox; it’s not set up automatically, and 3D card support spanning containers is not great today, or at least wasn’t last time I looked at it. I can run Ren’Py games in a firejail today successfully on Linux, but that’s not out-of-box behavior, Steam definitely doesn’t have it in place by default, I have no idea whether it’s possible for WINE (which is important for a lot of Windows games that run on Linux) and at least some if not all of the mechanisms firejail uses for graphics won’t permit for access to the 3D hardware.
Yeah, but if that’s the only way a game developer implements it, they’re tying themselves to Steam. I mean, if I were a game developer, I wouldn’t want to do that, as it’s a lot of lock-in.
I think that Valve’s service is a pretty good one, but they’re taking a 30% cut for doing a number of things for game developers. If they become the only game in town, it’s possible that they might start taking more than 30% and those developers are going to be kind of stuck with that.
It’s common across games, so it doesn’t make sense for game devs to reimplement the wheel, but I’d think that putting as much as possible in the game engine would be a reasonable place.
Keep a rotating history of 20 or so autosaves/checkpoints, not 1, in case the last autosave was at a bad spot. Storage space is cheap. Yeah, I can do that myself with manual saves, but why make me do that? Maintaining that isn’t a fun part of the game for me, and it’s easy for the developer to do.
A number of games would benefit from also showing a DPS number on weapons. Same idea. Yeah, I can do it in my head, but you’re running on a computer that can flawlessly do billions of calculations a second. Why not do the extra step for me?
Don’t do unskippable cutscenes. Even if you’re using them to cover up for a loading screen or something, at least give me the option to not watch them. Let me tap a button to skip the scene.
While I don’t disagree, if part of the game runs on the server and the game publisher is the only one with the server, it makes the game hard to pirate, so they’ve a potent incentive to do this.
I’d rather not have loading screens at all, but if you need them, I’d kind of like a progress bar, rather then just watching some animated doohicky telling me that hopefully the game hasn’t frozen.
I would imagine that it’s probably possible to, if the game emits checkpoints (“loading terrain”, “loading textures”), etc, to record the timestamps for each of those and then, when it emits the same checkpoints next time through, to be able to estimate how far it is through the process.
A lot of PC games let you change mouse and keyboard bindings, but not controller bindings, because they have “keyboard and mouse mode” or “console mode” if the controller is used.
I’ve got no problem with having a sensible set of defaults, but if I get a controller with more buttons, unless this is a competitive multiplayer game that needs a level playing field, I’d like to be able to take advantage of them.