Forum Discussion
BattaIia
7 years agoSeasoned Ace
Got some more info on this issue, pasting it below:
RedwoodGasty
1 point
·
3 minutes ago
Hello! I can provide some information about this. I'll go into some technical detail for those curious, but with a TL;DR at the bottom.
Rivals is a deterministic game. What this means is that we've done a ton of work to make sure if given the same set of inputs 100,000,000 times, it will play out exactly the same way every time.
This means the game does not need to be server authoritative the way most games are. There isn't a central authority on what actually happened. The server isn't saying "Unit X is at position Y and is doing Z damage". Instead, the server is simply like a mirror. It reflects commands to both players. So you tell your predator tank to move up three hexes, that command gets reflected to your opponent and their client plays out the simulation. Both clients, if using identical game tuning, results in the exact same scenario, and everything syncs up! The advantage to this is our network traffic is extremely tiny compared to server authoritative games, which is great for mobile! Less data used when not on wi-fi!
However, a side effect of this is that since the server isn't the authority on what happened, players could cheat. Someone could have their client say "I just spawned 50 predator tanks at once" and the server would just reflect that, without validating it, since it doesn't actually have any gameplay logic running. So what stops cheating? Well, when two clients give different results, they both lose "trust". If one player is cheating, his results will differ every game, whereas their opponents would only differ in that one game where they played the cheater. As a result, the cheater will always have a lower trust score. We take the actual game results of the higher trusted player. And viola! The cheater doesn't actually get anything for his cheating. It may say he won, but he correctly loses medals since he would've lost. This is what is happening to you.
So! You aren't cheating, so why are you experiencing this? Well, unfortunately, because of a bug. Our downloadable content system allows us to deliver unit tuning and other game configuration data without doing a full app store version update, which is nice since we can do it a lot more quickly (since we don't have to wait for Google or Apple certification). However, there is a bug that for a tiny amount of users, a small percentage of the time, they will basically fail to get the new data for some files, but their game thinks it did and as a result doesn't try to re-get it.
TLDR
A specific unit of yours may have different data than everyone else in the game and behave slightly differently. This might mean that it lives on your screen where it dies on theirs, meaning you had control of a missile on your game and "won" where on their screen they killed it, they controlled the missile, and they won. We call this a desync. Since your game is the one with the problem, you're reporting different results every match (unlike your opponent), and you're losing "trust" score with the game, causing the game to take your opponents results instead of yours. To fix it, you need to cause the game to redownload all of its files so it can do it correctly. Reinstalling should fix it. We also wipe out all config data and force re-download it when we do app store updates, so getting a new version from the app-store should also fix it.
RedwoodGasty
1 point
·
3 minutes ago
Hello! I can provide some information about this. I'll go into some technical detail for those curious, but with a TL;DR at the bottom.
Rivals is a deterministic game. What this means is that we've done a ton of work to make sure if given the same set of inputs 100,000,000 times, it will play out exactly the same way every time.
This means the game does not need to be server authoritative the way most games are. There isn't a central authority on what actually happened. The server isn't saying "Unit X is at position Y and is doing Z damage". Instead, the server is simply like a mirror. It reflects commands to both players. So you tell your predator tank to move up three hexes, that command gets reflected to your opponent and their client plays out the simulation. Both clients, if using identical game tuning, results in the exact same scenario, and everything syncs up! The advantage to this is our network traffic is extremely tiny compared to server authoritative games, which is great for mobile! Less data used when not on wi-fi!
However, a side effect of this is that since the server isn't the authority on what happened, players could cheat. Someone could have their client say "I just spawned 50 predator tanks at once" and the server would just reflect that, without validating it, since it doesn't actually have any gameplay logic running. So what stops cheating? Well, when two clients give different results, they both lose "trust". If one player is cheating, his results will differ every game, whereas their opponents would only differ in that one game where they played the cheater. As a result, the cheater will always have a lower trust score. We take the actual game results of the higher trusted player. And viola! The cheater doesn't actually get anything for his cheating. It may say he won, but he correctly loses medals since he would've lost. This is what is happening to you.
So! You aren't cheating, so why are you experiencing this? Well, unfortunately, because of a bug. Our downloadable content system allows us to deliver unit tuning and other game configuration data without doing a full app store version update, which is nice since we can do it a lot more quickly (since we don't have to wait for Google or Apple certification). However, there is a bug that for a tiny amount of users, a small percentage of the time, they will basically fail to get the new data for some files, but their game thinks it did and as a result doesn't try to re-get it.
TLDR
A specific unit of yours may have different data than everyone else in the game and behave slightly differently. This might mean that it lives on your screen where it dies on theirs, meaning you had control of a missile on your game and "won" where on their screen they killed it, they controlled the missile, and they won. We call this a desync. Since your game is the one with the problem, you're reporting different results every match (unlike your opponent), and you're losing "trust" score with the game, causing the game to take your opponents results instead of yours. To fix it, you need to cause the game to redownload all of its files so it can do it correctly. Reinstalling should fix it. We also wipe out all config data and force re-download it when we do app store updates, so getting a new version from the app-store should also fix it.
7 years ago
@BattaIia wrote:
However, there is a bug that for a tiny amount of users, a small percentage of the time, they will basically fail to get the new data for some files, but their game thinks it did and as a result doesn't try to re-get it.
Huh. Don't they do hashes on those file? Like, MD5 or something? Shouldn't be too difficult to check the integrity of the client software installation, should it?
In any case, thank you for posting this information Battalia. Not sure why they don't put this up as a sticky note here on the forum... but then again, they have strange ways of dealing with many things.
About Command & Conquer Franchise Discussion
Chat about your favorite games in the Command and Conquer franchise and get help from the player community.13,563 PostsLatest Activity: 18 hours ago
Recent Discussions
- 18 hours ago
- 11 days ago