brandon

[0.47.5] Mutators and Training/Race

8 posts in this topic

When playing training or race, there currently is no way to differentiate between regular times and times achieved using mutators on the leaderboards. I can for example use the low gravity mutator to achieve faster times on certain maps. The leaderboards are missing a value/flag to check if any mutators/weapons were used during a run. As of now anyone looking to achieve a top time playing regularly will be ranked behind anyone who got a faster time using the above methods.
 
Also, race times are only saved at the end of the match. If a player gets a time, and decides to leave instead of waiting until the entire duration of the match is over, their time won't be saved.

Share this post


Link to post
Share on other sites

Oh I missed this post, thanks to bej for pointing it out :)

I have heard of your leaderboard widget, I need to check it out :) 

You have discovered part of the reason why race leaderboards haven't been implemented yet :) I think it makes sense to get rid of the several results per race per player stored in the gamestate, and just use the leaderboard system instead. What do you think?

And yes, you are correct in pointing out that it'd need to be updated after every lap, not just end of game.

Also mutators were added which affects things. I guess the best thing to do would be to store which mutators are used when a run is recorded. I'd probably just flag these as red (like the training results if you have a modified map) in the UI. However you could do whatever you like in the widget, allowing you to have low grav maps etc.

Knee deep in MM atm, this really does need cleaning up though, i'll try plan something <3

slobo^-, bej and Jaguar like this

Share this post


Link to post
Share on other sites

If the times were saved immediately that would be great and storing the mutators is a good idea and would allow for filtering certain ones in/out. 

My main concern at the moment is the hash values for the maps. I understand that they were the solution to stopping people from editing maps and cheating, but in practice they do not work well. One problem that comes up is, when a creator makes any update to their map, the hash value is updated as well. As a result of this, any times that do not match up with the latest hash value are obsolete and the leaderboards are in a way... "wiped". This stops any cheaters, but also any legitimate times are now old and will get overwritten. There have also been some instances where the hash value of a map would change for no reason. Sometimes the hash values for maps are different if you play on a local server, and on one occasion the hash value changed after I played a full game and the next game began. 

A better solution to this would be to have a permanent unique identifier for each map on the workshop that the times are tied to instead of the hash. This permanent identifier can be the workshop id of the map.This way, any little updates from the creator will not make times register as "old" and get overwritten. There will be only one way to play and get times on the map, and that is off the workshop. To handle cheaters, you can stop times from being submitted if someone enters edit mode during their session, and if they try to save the map and play it locally it won't register since it's not the actual workshop map anymore. If a mapper wants to make a big change that will cause slower/faster times (fixing a shortcut for example),  they should make a new version of the map on the workshop -> myracemap_fix. This follows the same strategy other racing style games use for their leaderboards. 

I hope I have been clear enough and thank you for the reply.

bej and slobo^- like this

Share this post


Link to post
Share on other sites

Thanks for your reply,

I'm open to another solution to the hashes, yes i agree it's a bit annoying that every save will wipe the leaderboard (on the plus side though, it's good it's automated)

The problem with the solution suggested is, workshop items are cached to disk. There is nothing from stopping somebody changing the .map file in the cached workshop folder, then loading the map. For example my Fusion workshop map is cached to D:\Steam\steamapps\workshop\content\328070\595954580\595954580.map - I can change this and Steam (and therefore Reflex) doesn't know, it simply loads the map up normal.

Let me know if that doesn't make sense :)

 

bej and slobo^- like this

Share this post


Link to post
Share on other sites

You bring up a good point with the cached maps.

I guess the best solution would be to keep the hash values to deal with the cheaters, but times should not be tied to a hash value. Instead, the hash value should be used as a requirement for submitting times. What I mean by this is, in order to have a time submitted, the hash must match the latest hash on the workshop. This way, any bad times are completely avoided, and since times will no longer be tied to a hash value, they should not be overwritten after a map update, and instead should only be updated if you get a faster time.

bej and slobo^- like this

Share this post


Link to post
Share on other sites

What about having times tied to hash values like they are currently, but when a map author releases an update they can check a box that says something like "visuals only update" which will then allow race times from both versions of the map. Then if the map author needs to break the leaderboard times (maybe theres a bug in the map which allows shortcut times) they can leave the check box empty and the leaderboards will mark older times as done on an old version of the map.

bej and slobo^- like this

Share this post


Link to post
Share on other sites
5 hours ago, brandon said:

You bring up a good point with the cached maps.

I guess the best solution would be to keep the hash values to deal with the cheaters, but times should not be tied to a hash value. Instead, the hash value should be used as a requirement for submitting times. What I mean by this is, in order to have a time submitted, the hash must match the latest hash on the workshop. This way, any bad times are completely avoided, and since times will no longer be tied to a hash value, they should not be overwritten after a map update, and instead should only be updated if you get a faster time.

The issue is, how do you calculate the "hash of a map on the workshop"? The steps are:
1. download it via steam (puts on disk in cache)
2. load file
3. hash it

Just as before, someone can intervene between steps 1&2 (it might not download if steam thinks it already has the latest version on disk), and then the "hash of the map from the workshop" is whatever is on disk.

I just the way is to calculate the hash when the map is published, and store it inside the workshop item itself (i.e. in the metadata of the workshop item), then compare to the calculated hash that when submitting a score. Bit more messing around but that'd do it. :) I'm not sure if dedicated servers have the ability to query workshop metadata, I'll have to look in to that.

bej and slobo^- like this

Share this post


Link to post
Share on other sites
6 hours ago, shooter said:

The issue is, how do you calculate the "hash of a map on the workshop"? The steps are:
1. download it via steam (puts on disk in cache)
2. load file
3. hash it

I was just thinking that wherever you store the times, you would also store the latest hash from the publisher, and use that to do the comparison with the calculated hash being sent.

bej likes this

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now