Lots of errors saving solution

Error saving solution: "{"non_field_errors": ["Declared duration does not match simulated duration! Elapsed was 67200.0 and declared was 66949"]}"

I’m beginning to see this error. The longer a solution takes, the more likely I am to see it (which makes it pretty annoying).

And also this: Error saving solution: "{"non_field_errors": ["Solution is invalid."]}" I’m starting to see hitches that are clearly advancing game state incorrectly.

Do you have any reproducible “invalid solution” issues? Do they tend to happen on certain systems, or are they totally intermittent?

Are the hitches consistently causing some incorrect situation, like packets passing through nodes instead of colliding?

Are these happening at all replay speeds?

The next time you get an “invalid solution” issue, are you able to save the POST URI and JSON payload? Getting those would be a huge help, as we don’t currently log failed solutions (maybe we should)!

The problem is that I was solving them without the network tab open in the inspector, otherwise I would have already had that for you.

I’ve only reproduced this at quarter speed in Firefox. For solution-saving problems the only thing I’ve noticed for correlation is that the longer it takes to solve a system the more likely it is to error. For packet travel issues, it seems to be correlated to strings of repeater nodes.

Trying to capture a failing network request, and a failing video now.

Video of weirdness: https://www.dropbox.com/s/wr2o4wpcw9x4264/Exploit.mov?dl=0

(Firefox 34.0.5, OS X 10.9.5, 13" rMBP)

Here is a failing solution, same system (I believe that this also includes the data from the video as well):

{"data":"4:2.10|3:2.50|1:3.00|0:3.25|2:3.45|4:6.40|3:6.60|0:6.85|4:38.75|3:38.95|0:39.15|4:53.15|3:53.50|0:53.90|4:57.80|3:58.05|0:58.35|4:61.00|3:61.15|0:61.55|4:63.60|3:63.75|0:64.05|2:65.20|4:66.90|3:67.20|0:67.45|4:70.70|3:71.00|0:71.25|4:74.30|3:74.60|0:74.85|4:99.30|3:99.40|0:99.65|4:102.25|3:102.40|0:102.65|4:105.10|3:105.25|0:105.45|5:995.60|6:995.85|4:996.50|3:997.65|0:998.35|0:1005.95|4:1006.20|3:1006.40|2:1007.55|4:1010.00|3:1010.35|0:1010.95","is_canon":false,"duration":1012749,"solver":14,"system":16}

{"non_field_errors": ["Declared duration does not match simulated duration! Elapsed was 1012900.0 and declared was 1012749"]}

We’ve definitely got some time drift in there, it looks like; I’ve identified a place that we’re not properly using a framerate-independent time variable.

I’ve entered this issue into our tracker. Hopefully we can improve the visual performance and the reported solution time issue with the same fix.

This was a tricky one! It should be improved in our next release. There were a bunch of issues that turned up:

  • As I mentioned, we weren’t properly using a framerate-independent timer for the client-side simulation.
  • We had minor floating-point issues that were resolved by switching from seconds to milliseconds for units.
  • There were some subtle differences between how the client and server were doing simulation timing.
  • The server-side packet collection was being added to as we were traversing it, creating the issues with splitter nodes that you noticed.

We’ll be packaging these fixes up with other stuff and hopefully doing an update this week.

1 Like

All known “invalid solution” issues where a solution that works on the client doesn’t work on the server have been fixed. Please make a new topic if you encounter an issue in the current version.