
Moderators: Nexuiz Moderators, Moderators
merlijn wrote:I've been giving this idea some thought, and I feel that a global achievements setup is a somewhat weird setup. Most importantly because servers with modified settings will be discarded. Most of the servers run slight tweaks to make the game more interesting for certain players, and some of them do make it easier or even impossible to get a certain achievement. Also a lot of achievements only make sense for a certain game type.
Since I also host a couple of servers with odd settings (nexball/nexrun/lasersumo), it would be nice to have the ability to code your own achievements that only make sense on that particular server. Also the idea of sending my logs (with possibly privacy sensitive information) to a third party host doesn't appeal much to me, it wastes bandwidth and doesn't really provide that much protection.
Instead I would like to propose a concept where achievements are acquired on a per-server basis. Using some concepts of cryptography it is easy to secure this and store the information client side. The server would need a longterm keyphrase used to sign a certain achievement, and when it pushes the achievement to the client it sends this following data:
- Code: Select all
achievementname, time, nickname, MD4SUM
The MD4SUM is already supported in DP and would be the sum of the concatenation of achievementname, time, nickname and the keyphrase. Clients could store this in a file and send to the server when they reconnect, if they messed with the file in between - the server can detect it and revoke the achievement. If it notices that the achievement is used by multiple people (they copied the files), it may also permanently revoke the achievement by means of the time field.
This system could easily be adapted and make it possible to add achievement detection in both the QC code and as a rcon2irc plugin. Also it can be adapted to the standards on a server, if you got all the stars for CTF/DM - that doesn't mean that you're any good at nexball.
As for displaying this client side, the best way would probably be to add another button in the serverlist where people can view their achievements for that particular server, and this can all be done locally without querying a server out on the internet.
Also I believe that this would be a LOT less work to create, as it needs less security for untrustworthy servers - their achievements only affect their server anyway. I could probably get the backend coded in a couple nights, just need to find the time for it.
merlijn wrote:Also the idea of sending my logs (with possibly privacy sensitive information) to a third party host doesn't appeal much to me, it wastes bandwidth and doesn't really provide that much protection
Samual wrote:merlijn wrote:...
If you code the backend, i'll make it pretty... Heh.--
Basically, the whole reason for using a master server with this information would be to have net statistics (A web page where you can see your score) - A web parser (With sanity checks, to prevent servers from cheating the system), and global statistics. Also, what if a server goes down? You can never access your statistics for that server again. What if the server changes? (Different balance settings or different addons). The point is, I think it would be much cleaner and much more solid to have a master server. With your method, I can't think of a good way to display _all_ statistics at once. (Can you?... Please?) I mean, I don't want to see my frags on each server. I want to see the total. I want to see how many airshots I got, total. Etc etc. How would this be done without querying MANY servers? To address the other part, how would we check to see if the server has changed balance? If it has changed, what should happen? Should the old stats be disregarded? Should they be kept even if the entire balance changed?........
Samual wrote:With my system, it wasn't that the stats are simply discarded for a server with modifications. However, it simply excludes certain achievements under certain circumstances. (To be honest, I might not exclude A LOT of things when I think about it. I discovered it really ISN'T easier to get an airshot with jetpack or etc (It's actually harder).. So I think... It might not exclude things anyway.)
Samual wrote:merlijn wrote:...
Well I see your point there, but you misunderstand just how much information would be sent. All the master server would want is the actually useful information, and it wouldn't take the server log itself. It would take gameplay only. Basically, it would account for every hit/kill/situation in a small log, and then send that to the master server to be parsed at the end of a match. Then, while showing the scoreboard, it would retrieve the parsed information from the master server and display the achievements you completed.
To end, I would be glad to ditch my system if you can provide a way to display all statistics of all servers at once. That I would be fine with. BTW, forgive me if my post is a bit messy. - I'm pretty tired atm.
Anyway i'll talk to you about this on IRC I guess. Heh.
merlijn wrote:I'm guessing you're referring to a subset of the sv_eventlog output, which makes sense. In general these do contain IP information, and players might not like it to be shared. Anyway, eventlogs are easy to parse and thus easy to fake. Sure you can do some sanity checks that would prevent the easiest hacks, but the system is basically flawed by design.
Samual wrote:Yes, I am mixing statistics and achievements together. As they should be... I want to see all of that information, and my system allows that. Your system still doesn't allow the ability to see everything at once (I really want this feature, and I will code it.)
Samual wrote:merlijn wrote:...
No, I would not use that. I would code an additional logging method like Darkwar uses.
Users browsing this forum: No registered users and 1 guest