Deliberate failure and why we need it in studio

As a Roblox developer, it is currently too hard to deliberately test failures which could cause serious problems. If datastores fail, how do you know how your code will handle it? A sudden increase in users? Abnormal deliberate input?

It’s hard as a developer to really test the unexpected.

If Roblox is able to address this issue, it would improve my development experience because I can test my game for failure in a deeper way than before. It gives me confidence in my work to know that in the event of a failure, I know I’ve dealt with it in the testing stages and I’ve planned for that to occur.


Edit: Idea came from seeing this on HackerNews https://twitter.com/cperciva/status/1292260921893457920?s=19

25 Likes

This used to be a feature, with Diabolical Mode Studio Network Simulator, but it got replaced with a proxying option instead. Then, they disabled the proxying option without providing an alternative to the original use case. If HTTP proxying gets reenabled, I could see that being a reasonable alternative to this feature.

6 Likes

There are two ways to achieve this:

  1. Roblox re-adds support for HTTP proxying so you can set up a tampering proxy that artificially makes requests fail. This is something we want to do but is quite technically complicated so we have not done it yet
  2. Developers write their own Data Store libraries that act as a wrapper but induce artificial failures. This’d be the option as I recommend as you can do this today without waiting on us to ship new features :stuck_out_tongue:
6 Likes

Number one seems the better option. Datastore is the main example I can think about.

The idea is not limited to datastore, I would want to be able to disaster test such a wide range of issues. Something where I can throw my game at edge cases or downtime and get see it occurring live.

Two ofc exists and can be used but I’d like to see it be more wide ranging and something all devs can do.

3 Likes

:slightly_smiling_face:

See MockDataStoreConstants.SIMULATE_ERROR_RATE

3 Likes

It’s frustrating when a perfectly functional feature is removed with no alternatives

This isn’t limited to Datastore but all calls that can fail due to network failure

Now I can’t even test to see what would fail which makes it impossible for me to prevent errors

4 Likes