The Karma System is a proposed player reputation system. At present the "Karma" portion of the system is unimplemented.
The "Karma" system is a proposed player reputation tracking system put forward by Tim Riker. It's goal is to provide information to users about the behaviors and past actions of other players. Good and helpful players would receive positive "Karma" points, while poor or disruptive players would receive negative points. Servers would have the option of limiting the actions, or outright blocking of players who did not meet some minimum Karma point total.
There are two main objectives of the system:
- prevent misuse of callsigns
- solve cheating issues on the social level
 Player Database
The player database keeps entries for registered players. Each entry must at least contain the player's callsign, email address and some data to allow for authentication. This data must be accessible by public BZFS servers so that these can screen joining players. Any changes require private key signed updates.
 Karma System
With the karma system, a rating the so-called karma is assigned to each registered player in the database. This value should represent the player's reputation within the community, i.e. well-known and nice players should have a high karma value whereas known cheaters will hopefully get a low value.
BZFlag servers can access this information and for example prevent people with too bad karma from joining the server. Players must have some means to rate other players, thus modifying their karma. It is important that the karma system is balanced and robust against abuse.
 karma system
- A new player starts with a neutral karma value, I guess 0 is a natural starting point :-). Karma might be an integer of a floating point value.
- Each BZFlag server can be configured to require a minimum karma value for each player. When a player does not meet this criterion, he will be rejected. Hopefully, this reduced cheating on these 'high quality' servers. Of course there should also be some servers which are open to everyone, otherwise new players could never play and increase their karma. Server admins should balance reasons for specifying a low karma threshold, and thus allowing everyone to play on their server or requiring very high karma and possible improve the quality of people playing, but at the cost of ruling out many players and possibly having a very empty server.
- the server could also be configured with a minimum admin karma. Players that meet the criteria would be able to change server options, kick players etc. We may want multiple levels of admin access.
- There must be a convenient way for a player to rate another player. I guess it's best to be able to do this in-game. Should rating just be done by using +/- resp. up/down? Or by giving a value from -5 to 5? For this to be easy, the player to be rated must be selected in some way. How? A player should be able to see the rank he has given other players easily. Perhaps even on the scoreboard.
- When doing ratings in-game, either the client or the server must send messages to the list server. It's probably best if the client sends a signed update to the server and the server forwards it (with game updates as well) to the list server and then updates the rated player info if the list server verifies the signed update packet. The signature is required so that the list server can verify the source of the ranking. Servers might otherwise fake ratings.
- Should karma value and/or individual ratings be publicly visible / visible to the player himself? Tim thinks so. Players should be able to see who has ranked them, but not what rank they have been given. They should be able to see all the players they have ranked at what rank they have given them. They should also be able to see any player's rank including their own.
- The karma value of a player must be calculated as a function of all individual ratings from other players. This must be done in a 'fair' way that is robust against misuse. A possible misuse would be a player A registering a lot of identities and giving a low rating to player B with all of his identities. So, ratings must be weighted by karma and player age. This must be designed very carefully, so I suggest stealing this from somewhere. It will be necessary to store the resulting karma value for each player as well as every rating given.
- Do we want or need some privileged players whose ratings have more weight? This might be needed to get the system started.
 Basic rules for karma adjustment
- A user can only have one karma value per other player. This can be changed at any point
- Impact is determined by these factors:
- Current rating
- Assignment tendency (neutral = more impact, all good or all bad = less impact) [keep in mind that some users will ONLY rate players whom they like]
- Player age - long-time players will have more influence
- Playing time - people who spend their lives in BZFlag should have more power
 Possible implementation
David Trowbridge submitted the following proposal:
Store the entire karma network as a weighted directed graph. Weights along the edges should go from -5 to 5 or some other range specifying the karma adjustment from one player to another. Each node would also have a weight, calculated from the other factors listed above (age, time, etc). When a karma adjustment is made, a walk of the graph is done, computing everbody's new karma (if someone near the root gets modded up, it could have repercussions through the entire tree, strengthening the adjustments they themselves have made). Nodes furthest from the root (note: the 'root' would be someone completely trusted, like the Project Administrators) have the lowest karma.
With this scheme, bad accounts could be deleted by the same type of algorithm as used for Advogato's trust metric, setting up a supersink and cutting away all bad nodes, thus preventing abuse.
 Other database items
The karma system would use a central server (or servers) to store the data. Tim Riker imagines that this system would include other useful bits like player ladder ranks, league membership, league ranks, map ranks, etc. It may contain gpg signatures, ssh public keys, or perhaps the karma server is a certificate authority for ssl keys and server keys and player keys are authenticated there. The player keys could actually be presented to the users's browser and use that information to log in to the karma website.
 Karma Web Site
The website would show overall ranks for players on the trust scale and probably also ladder ranks, live servers, server stats, player stats, etc. A player would need to authenticate to edit settings. This page would show everyone this player has ranked and the rank they currently have. These would be highlighted to show if those players have ranked this player too. There would be a separate list of people that have ranked this player colored to show if this player has also ranked them. The actual ranks are not shown to encourage fair ranking.
The Karma System was the original impetus for the the Global Registration System that is in use today. The user management and database for this system was chosen to be the user database used by the BZFlag Forums. This is seen as a limitation by some developers, as modification and extension of the PHPBB that the forums are based on has proved to be difficult. Current development ideas revolve around moving the List Server to a more distributed system and separating it from the forum system, as well as incorporating a karma or other reputation system.
The lack of development work on the proposed karma system for such a long time, has led it to be somewhat of an 'in joke' with the development community, representing desired features that have gone dormant or do not seem likely to be completed.