Author Topic: The idea Going to change history MG  (Read 5238 times)

david123

  • Battlemage
  • **
  • Posts: 34
    • View Profile
The idea Going to change history MG
« on: 5 November 2014, 12:00:34 »
hello . Some people know me here , and some do not .
   ** The idea that I'm going to present to you ** Going to change history MG .

To date, the game was simple. Incoming. Did you play. Exited . How much longer can this go on? ..

the idea talking about this . every player will have account . and this account will be stats . lose \ win \ point . for newbie Be an option if he want to chooice it or just play with no point . Registration will be in the game or to have free access without  Registration .

There were discussions about the newbie so many so they can get their own scoring ... So what is the solution ? simple ..

Every new player with no prior acquaintance of IP ( now its newbie ) And will show automatically change his name before he click Multiplayer .

Will be detailed specification of each player , human Vs cpu . human + human . win \ lose \ score .

It is time it will happen than to talk about it all the time

kagu

  • Administrator
  • Horseman
  • ********
  • Posts: 203
    • View Profile
Re: The idea Going to change history MG
« Reply #1 on: 5 November 2014, 17:52:04 »
Yeah , its about time, up until now we played only for fun, I think its time to play for a little glory too  :P
Megaglest Chat
Please support:
1. CEGUI 2. In-process games 3. Registered Players
Playtime:
Every Sunday 21:00 - 01:00 CET

Omega

  • MegaGlest Team
  • Dragon
  • ********
  • Posts: 6,167
  • Professional bug writer
    • View Profile
    • Personal site
Re: The idea Going to change history MG
« Reply #2 on: 6 November 2014, 06:47:37 »
The main difficulty comes from cheat prevention. It's very difficult because someone can modify the source code to cheat.

With that said, cheating is an issue for even large closed source games. I think it's reasonable to simply ignore the cheating (there's already systems in place that would prevent the easiest methods of cheating) and simply remove any cheating accounts that might show up.

In which case, it's mostly a matter of using the game stats that are already sent to play.mg. The sent data would have to be modified to take accounts into affect. There's probably other issues -- I'm not very familiar with the multiplayer code. We could then create some kind of scoring system. For example, create ranks (based on points) and give points for winning games using the score times some rank multiplier (so beating rank 1 players doesn't reward as many points as beating a rank 10 player). The configuration of the game (players versus AI, players versus players, etc) needs to be taken into account. It's not that important right now (that's the easy part).

Of course, this opens additional complexities for those who want competitive play (namely the ability to find similarly ranked players), but that's not a big concern, particularly since our community is too small to sustain such a type of play.

That leaves most of the development on the creation and management of user accounts. It seems that the main difficulty is sending scores to this ranking site without allowing just anyone to send the score. This again ties into the cheating issue and would depend on what part of the game is sending these scores. If a master server can send the scores, this is more ideal. We could maintain a list of trusted master servers that have keys that they use to encrypt the score and only properly encrypted scores would be accepted. It does limit the ability to play ranked games (have to use an approved master server), but there's just no getting around the fact that we cannot trust the client (and the open source nature of MG prevents us from placing any kind of key inside MG). Again, I'm not familiar with the multiplayer code and it totally depends on that (it may already be the case that the master server is the only part reporting finished games).

The creation of user accounts is actually fairly straightforward (especially if we use a library). The game would login by connecting to this ranking server. We'd get current rank from this server. At the end of the game, we'd send the points earned by the game to the ranking server (securing this was the topic of the previous paragraph). Players would be able to create accounts in the game. The difficulty here is preventing easy creation of multiple accounts and playing against these accounts. I don't think there's any real solution. It shouldn't be necessary to verify the account since we don't want to exit the game. Similarly, we don't want to use the IP in the account because the same IP may have different users (consider the case of Titi and his son using the same computer even though they'll certainly have different accounts).

User accounts can simply be a username - password pairing. There's no need for anything else at the time (although future features could expand on that). Although an optional email for the purpose of allowing accounts to be recovered is a good idea (no email = no recovery option). We can allow unregistered players to also play in a similar fashion, and treat them as players of the lowest rank when creating the scores for other registered players. Alternatively, we could force players to register (more enticing for competitive players who want to be able to maximize their score by playing against similarly ranked players). I don't see any reason that anyone would want to avoid registering besides the very small registration time (there's no required personal information being stored).

So in summary, we'd need to
  • Create ranking server that stores rankings online and provides the means to communicate with this server to authorized master servers.
  • Master server must have some private key to show that it is trustworthy.
  • After completion of games, master server sends the score change for all registered players. Alternatively, master server sends the data it already sends but with account information and the play.mg site calculates scoring and ranking.
  • Change in scoring depends on factors such as game configuration and other player's ranks. Ranks are simply obtained by getting certain scores (like how the ranks on this forum depend on posts).

The security of this is important to keep in mind, since if the system gets easily and uncontrollably gamed, then the entire ranking system becomes worthless.

Sample scoring system
  • Use score from games (and the game's scoring system can/should be adjusted to better reflect skill). I implicitly refer to this score from now on.
  • Games against AI where there are no humans on the AI's team are divided by 2h where h is the number of humans played against the AI and multiplied by the number of AI and the multiplier of the AI. So 2 humans versus 2 AIs with a 1.5 multiplier (CPU-ultra) is a score multiplier of (2 AI * 1.5 multiplier) / 22 humans = 0.75.
  • Games where the human has AI on their team are further divided by the multiplier of that AI plus one. The plus one is to prevent increasing the score when humans have weaker AI on their team. So stronger AI teammate = score penalty. This effect stacks. For example, if you have a two normal AIs on your team (1.0 multiplier), your score is divided by 2 twice, resulting in a score multiplier of 0.25.
  • Teams get the average AI-on-your-team score penalty of all other teams + 1. So if the above example of a team with two normal AIs was playing against a different team with no AIs, then the team with no AIs gets the 0.25 plus 1 = 1.25.
  • Games against humans are ultimately going to depend on how hard it is to get ranks, but something like multiplying by the difference in your ranks divided by the number of ranks plus one seems like a quick approach. Thus, it's beneficial to play against higher ranked players and worse to play against lower ranked players. For example, if a rank 2 player plays against a rank 5 player and there are 10 ranks, that player gets a score multiplier of (5 - 2) / 10 + 1 = 1.3. On the other hand, the rank 5 player gets (2 - 5) / 10 + 1 = 0.7.
  • To handle the case of teams of humans versus teams of humans, we use the algorithm from the above point and apply it against all other players. For your team, we take the average of comparing you against players not on your team and divide that by the average of comparing you against other players on your team. So if your team average compared to you is 0.5 (implying that your teammates are a lower rank than you) and the averages of players not on your team compared to you is 1.5 (implying they're a higher rank than you), you'll get 1.5 / 0.5 = 3.
  • To make up for mismatched team sizes, if one team has less players than any other team, they get an added bonus of 0.25 * team size difference. For example, if there's game of 3 on 1, the player who is on the solo team gets a bonus of 0.25 * 2 = 0.5 added to his score multiplier.
  • And of course, most importantly, winning doubles your score multiplier. Losing halves it. So all else equal, winners get 4 times the points that losers get. Big benefit for winning, but not too bad for losers. To increase the dependence on the multipliers and game score, this difference could be increased.

Example game with this scoring:

PlayerRankTeamGame score
Alice2110,000
Bob3112,000
Carol4220,000
AI (0.5 multiplier)N/A2Doesn't matter

Assume that Carol beat Alice and Bob. Assume there is 10 ranks.

Carol's score: Since Carol has an AI on her team, her score is divided by the AI multiplier + 1. So her score multiplier is now 0.66 (1/ (0.5 multiplier + 1)). The difference in her score from Alice is (2 - 4) / 10 + 1 = 0.8 and the difference in her score from Bob is (2 - 3) / 10 + 1 = 0.9. Average of this is 0.85. So now her cumulative score multiplier is 0.66 * 0.85 = 0.56. She won, so her multiplier is doubled, making it 1.12. She gets 1.12 * 20,000 = 22,400 rank points.

Alice's score: The difference in Alice's score from Bob is (3 - 2) / 10 + 1 = 1.1. The difference from Carol's score is (4 - 2) / 10 + 1 = 1.2. The average of players on her team is obviously 1.1 and the obvious of players not on her team is 1.2. We then divide the players not on her team by those on her team, 1.2 / 1.1 = 1.09. Alice's team doesn't have an AI. The AI penalty of the only other team was 0.66, so this team gets a multiplier of 1.66 making the cumulative score multiplier 1.09 * 1.66 = 1.81. Alice lost, so her multiplier is halved to 0.91. She gets 0.91 * 10,000 = 9,100 rank points.

Bob's calculation is similar, so won't be shown here.

Points to ponder
  • Good thing about a system like this is that fair games will result in getting the same number of rank points as the number of game points. Multipliers only come into play when the game is unbalanced (or when we play against the CPU, since the CPU is so brain dead).
  • Lots of potential for cool features such as achievements, where performing certain tasks gets more points (pre-multiplier). This is very difficult because achievements feel like something that should be moddable, yet we'd need to be able to approve achievements to prevent people from creating mods that have easy to obtain achievements that give a ton of points. Alternatively, achievements would be mod-neutral and be dependent on things like killing multiple enemies in a short period of time, killing enemies with a variety of different attacks (ie, using a variance of attacks), or killing enemies with an effective attack type for the target's armor type.
  • Rank size and number of points required to reach is is going to depend heavily on the kinds of scores players easily get. Eyeballing past games, it looks like around 20,000 points is common for winners of medium length games. Something like 20,000 * 1.5rank + 1 creates a nice curve for 10 ranks. That creates an achievable first rank for new players. First rank needs 60,000, which is only 2 wins for a good player in medium length games (recall that wins get double points), but more for a novice -- new players will probably have multipliers due to their low rank, though. Achieving the top rank (rank 10) needs 1,729,951 points (about 45 wins at 20,000 game points per win).
  • However, having such small ranks would inflate the rank difference multipliers. Perhaps better to have fewer large ranks. Perhaps also increase the loss penalty so that you have to win to rank up (and thus must be a good player to get a higher rank).
  • Perhaps size difference should use a multiplier and not add a percentage to our running multiplier.
  • Penalty/bonus from having AI teammates seems too severe.
« Last Edit: 6 November 2014, 06:53:27 by Omega »
Edit the MegaGlest wiki: http://docs.megaglest.org/

My personal projects: http://github.com/KatrinaHoffert

filux

  • MegaGlest Team
  • Draco Rider
  • ********
  • Posts: 310
  • was OpenSuse x64, is Debian testing x64
    • View Profile
Re: The idea Going to change history MG
« Reply #3 on: 7 November 2014, 01:34:59 »
...We can allow unregistered players to also play in a similar fashion, and treat them as players of the lowest rank when creating the scores for other registered players. Alternatively, we could force players to register (more enticing for competitive players who want to be able to maximize their score by playing against similarly ranked players). I don't see any reason that anyone would want to avoid registering besides the very small registration time (there's no required personal information being stored)...

How force? If the method like "registration, or fuck off" then I strongly disagree.
Always has to be method to "see/try without registration" otherwise for many people is created effect of very bad first impression.

Generally, if someone is looking for ideas on how to do something in similar cases (registration/lobby/chat/updating/downloading mods/choosing game/choosing game version/setting game/etc.), then my advice is: please see how works "spring-lobby" and do this conversely, because this is a great example of how to discourage potential players from good games.

Omega

  • MegaGlest Team
  • Dragon
  • ********
  • Posts: 6,167
  • Professional bug writer
    • View Profile
    • Personal site
Re: The idea Going to change history MG
« Reply #4 on: 7 November 2014, 05:24:24 »
How force? If the method like "registration, or fuck off" then I strongly disagree.
By force, I mean that when they try and play multiplayer on a master server (and just that) they'll encounter a screen asking for them to either login or register.

So they can easily try the game without registering at all. And the actual registration would be super straightforward and hassle free. Pick a username. Enter a password. Confirm the password. Done. Optionally can enter an email to allow account recovery. That's like the system Reddit uses. Except we wouldn't even need a captcha (since registration is in-game only and is really just to play the game).

Of course, we could also just allow skipping the registration stage. The part you're quoting is an alternative (which *might* entice people into playing more competitively -- or do the exact opposite; I don't know). In which case we'd just ask users for a temporary name (not stored anywhere, but presumably should be used by a player) and treat them like rank 1. Optionally, we could offer the ability to create an account after their first game (and allow carrying over the score from said game).
Edit the MegaGlest wiki: http://docs.megaglest.org/

My personal projects: http://github.com/KatrinaHoffert

John.d.h

  • Moderator
  • Airship
  • ********
  • Posts: 3,757
  • I have to go now. My planet needs me.
    • View Profile
Re: The idea Going to change history MG
« Reply #5 on: 7 November 2014, 17:03:18 »
In general, I'm against forcing people to register for anything unless absolutely necessary.  The fewer accounts (on the internet or in meatspace) a person has to have, the better.  I'd say let them play competitively without registering, but obviously only record their game stats if they are signed in.  The complication here is, if a registered user plays against a guest, how should the registered user's score be tabulated if it's based on opponent skill?

Omega

  • MegaGlest Team
  • Dragon
  • ********
  • Posts: 6,167
  • Professional bug writer
    • View Profile
    • Personal site
Re: The idea Going to change history MG
« Reply #6 on: 9 November 2014, 23:44:09 »
The complication here is, if a registered user plays against a guest, how should the registered user's score be tabulated if it's based on opponent skill?
The simplest thing to do is treat unregistered accounts as rank 1.

The more interesting thing to do is to make a rank based on relative scores and the ranks of other players. For example, if you get about the same score as a rank 5 player, then we'd treat you like you were rank 5. Do better and you're treated like a higher rank and vice versa.
Edit the MegaGlest wiki: http://docs.megaglest.org/

My personal projects: http://github.com/KatrinaHoffert

Coldfusionstorm

  • Golem
  • ******
  • Posts: 868
    • View Profile
Re: The idea Going to change history MG
« Reply #7 on: 10 November 2014, 19:38:03 »
The main difficulty comes from cheat prevention. It's very difficult because someone can modify the source code to cheat.

With that said, cheating is an issue for even large closed source games. I think it's reasonable to simply ignore the cheating (there's already systems in place that would prevent the easiest methods of cheating) and simply remove any cheating accounts that might show up.

So in summary, we'd need to
  • Create ranking server that stores rankings online and provides the means to communicate with this server to authorized master servers.
  • Master server must have some private key to show that it is trustworthy.
  • After completion of games, master server sends the score change for all registered players. Alternatively, master server sends the data it already sends but with account information and the play.mg site calculates scoring and ranking.
  • Change in scoring depends on factors such as game configuration and other player's ranks. Ranks are simply obtained by getting certain scores (like how the ranks on this forum depend on posts).

The security of this is important to keep in mind, since if the system gets easily and uncontrollably gamed, then the entire ranking system becomes worthless.

Sample scoring system
  • Use score from games (and the game's scoring system can/should be adjusted to better reflect skill). I implicitly refer to this score from now on.
  • Games against AI where there are no humans on the AI's team are divided by 2h where h is the number of humans played against the AI and multiplied by the number of AI and the multiplier of the AI. So 2 humans versus 2 AIs with a 1.5 multiplier (CPU-ultra) is a score multiplier of (2 AI * 1.5 multiplier) / 22 humans = 0.75.
  • Games where the human has AI on their team are further divided by the multiplier of that AI plus one. The plus one is to prevent increasing the score when humans have weaker AI on their team. So stronger AI teammate = score penalty. This effect stacks. For example, if you have a two normal AIs on your team (1.0 multiplier), your score is divided by 2 twice, resulting in a score multiplier of 0.25.
  • Teams get the average AI-on-your-team score penalty of all other teams + 1. So if the above example of a team with two normal AIs was playing against a different team with no AIs, then the team with no AIs gets the 0.25 plus 1 = 1.25.
  • Games against humans are ultimately going to depend on how hard it is to get ranks, but something like multiplying by the difference in your ranks divided by the number of ranks plus one seems like a quick approach. Thus, it's beneficial to play against higher ranked players and worse to play against lower ranked players. For example, if a rank 2 player plays against a rank 5 player and there are 10 ranks, that player gets a score multiplier of (5 - 2) / 10 + 1 = 1.3. On the other hand, the rank 5 player gets (2 - 5) / 10 + 1 = 0.7.
  • To handle the case of teams of humans versus teams of humans, we use the algorithm from the above point and apply it against all other players. For your team, we take the average of comparing you against players not on your team and divide that by the average of comparing you against other players on your team. So if your team average compared to you is 0.5 (implying that your teammates are a lower rank than you) and the averages of players not on your team compared to you is 1.5 (implying they're a higher rank than you), you'll get 1.5 / 0.5 = 3.
  • To make up for mismatched team sizes, if one team has less players than any other team, they get an added bonus of 0.25 * team size difference. For example, if there's game of 3 on 1, the player who is on the solo team gets a bonus of 0.25 * 2 = 0.5 added to his score multiplier.
  • And of course, most importantly, winning doubles your score multiplier. Losing halves it. So all else equal, winners get 4 times the points that losers get. Big benefit for winning, but not too bad for losers. To increase the dependence on the multipliers and game score, this difference could be increased.

Example game with this scoring:

PlayerRankTeamGame score
Alice2110,000
Bob3112,000
Carol4220,000
AI (0.5 multiplier)N/A2Doesn't matter

Assume that Carol beat Alice and Bob. Assume there is 10 ranks.

Carol's score: Since Carol has an AI on her team, her score is divided by the AI multiplier + 1. So her score multiplier is now 0.66 (1/ (0.5 multiplier + 1)). The difference in her score from Alice is (2 - 4) / 10 + 1 = 0.8 and the difference in her score from Bob is (2 - 3) / 10 + 1 = 0.9. Average of this is 0.85. So now her cumulative score multiplier is 0.66 * 0.85 = 0.56. She won, so her multiplier is doubled, making it 1.12. She gets 1.12 * 20,000 = 22,400 rank points.

Alice's score: The difference in Alice's score from Bob is (3 - 2) / 10 + 1 = 1.1. The difference from Carol's score is (4 - 2) / 10 + 1 = 1.2. The average of players on her team is obviously 1.1 and the obvious of players not on her team is 1.2. We then divide the players not on her team by those on her team, 1.2 / 1.1 = 1.09. Alice's team doesn't have an AI. The AI penalty of the only other team was 0.66, so this team gets a multiplier of 1.66 making the cumulative score multiplier 1.09 * 1.66 = 1.81. Alice lost, so her multiplier is halved to 0.91. She gets 0.91 * 10,000 = 9,100 rank points.

Bob's calculation is similar, so won't be shown here.

Points to ponder
  • Good thing about a system like this is that fair games will result in getting the same number of rank points as the number of game points. Multipliers only come into play when the game is unbalanced (or when we play against the CPU, since the CPU is so brain dead).
  • Lots of potential for cool features such as achievements, where performing certain tasks gets more points (pre-multiplier). This is very difficult because achievements feel like something that should be moddable, yet we'd need to be able to approve achievements to prevent people from creating mods that have easy to obtain achievements that give a ton of points. Alternatively, achievements would be mod-neutral and be dependent on things like killing multiple enemies in a short period of time, killing enemies with a variety of different attacks (ie, using a variance of attacks), or killing enemies with an effective attack type for the target's armor type.
  • Rank size and number of points required to reach is is going to depend heavily on the kinds of scores players easily get. Eyeballing past games, it looks like around 20,000 points is common for winners of medium length games. Something like 20,000 * 1.5rank + 1 creates a nice curve for 10 ranks. That creates an achievable first rank for new players. First rank needs 60,000, which is only 2 wins for a good player in medium length games (recall that wins get double points), but more for a novice -- new players will probably have multipliers due to their low rank, though. Achieving the top rank (rank 10) needs 1,729,951 points (about 45 wins at 20,000 game points per win).
  • However, having such small ranks would inflate the rank difference multipliers. Perhaps better to have fewer large ranks. Perhaps also increase the loss penalty so that you have to win to rank up (and thus must be a good player to get a higher rank).
  • Perhaps size difference should use a multiplier and not add a percentage to our running multiplier.
  • Penalty/bonus from having AI teammates seems too severe.

For anti cheating only accept a mastersever hardcoded value (fx latest stable CRC code (defined in The master server).

Since registering and stats regristation only happens when you logged in this solves the cheating problem. (also record what tech tree was played).

Also since Archivement would be saved on the master server you would need to set uo your own master server to define archivements.. Not a unfair requirement imo.
WiP Game developer.
I do danish translations.
"i break stuff"