Remove the hard reset system

  • Its a little ridiculous to lose a battle because of a server-side bug resulting in a hard reset in the middle of the battle. My attack team could have survived a 1 tick delay, but then the devs decide to shut down my script for 5 ticks instead, giving the enemy towers the opportunity to kill off my defenseless creeps. The devs MUST remove this because of the horrible effects it has on game balance.

  • At minimum I would like logging to become asynchronous so that I don't lose my diagnostic information when my process is hard reset.

    I feel that if that is resolved then players will have all the tools we need to triage these problems and make a more robust combat AI. From my perspective CPU-based attacks on your opponent are an important facet of this game's strategy.

  • I disagree. I don't think removing the hard reset system would be a good idea.

    It is there to "minimize" the number of hard resets that happen by blocking of the most likely cause.

    The better approach would be if they could isolate the run thread of each individual AI script. Then they could specifically identify offenders and hopefully also minimize the impact for others.

    From what I understand from their recent twitter post, this is actually the development intention. We'll have to wait and see.

  • I'm sure it's a tricky balance.

    I disagree with removing it entirely, as ultimately we need a way to discourage bad code because too much of that will impact everyone (longer ticks, higher server costs ...)

    I do believe we need improvements to the way it's reported to the player and perhaps also its fairness (now, it's sometimes caused by things outside of our control. this is very demotivating) but I understand they're working on this. It should have a higher priority then developing new features.


  • I ran into this issue in a game i was developing with spidermonkey as the users scripting back end. there isnt a good way to handle misbehaving scripts, all you can do with the API is set a hard limit of time until the script is killed. screeps is maiking the best they can with it by setting up a softlimit and bucket system. But inless the backend changes to allow interruptions and resumes, what can they do?


    if the hard reset is removed, then a single while loop could block the entire system until someone pulls the power