Fix: Removing construction sites manually is a pain in the ass



  • Can we get a UI mode that lets you delete clicked locations, with a mode to delete construction sites or structures or both? Construction currently functions with select then place on click, removal takes 2x as many clicks and a lot of mouse movement.

    Construction remains one of the harder things to automate, so I think it would be valuable for a large portion of the user base.



  • const sites = Game.rooms[roomName].find(FIND_CONSTRUCTION_SITES);
    for (const site of sites) { site.remove(); }
    

    You can one-line this in the console and have them all removed. Alternatively, you can put it somewhere in your room script so that it runs if you place a flag with a name like removeConstSites which then also removes the flag.



  • Yes, I have the flag one added. But the fact remains that it is a bad and very common user experience. The screeps team has shown at multiple junctures that they care about the ui, even talking about having power creeps solely be accessible via ui. I think it merits pointing out this is particularly frustrating experience, especially for a new player who does a lot of building and modifies things as they learn.



  • At the same time, when they mentioned accessing power creeps solely by UI, the community collectively screamed bloody murder and they changed their minds.

    And i understand why the current way is challenging: the client can only push 1 remove intent per tick, so you have to wait another tick before removing a 2nd cSite, etc. Changing this is possible, but i'd rather they focus more on the server than the client.

    All that being said, adding something that makes it easier to manually control a game specifically designed to be scripted feels like it'd be a regression instead of an improvement. I understand the desire, and it would help noobs in the early phase of the game, but it'd also make it less likely for them to do the more difficult thing of scripting it if it's so easy to do in the UI.

    👆


  • I fall on the other side of manual control argument.

    I do NOT think they need to add to features into the UI, I'd rather the spent dev time elsewhere. However if they enabled a click or viewing api from the console we could answer these request when they come up with a snippet of code to get the player going.

    In other words I don't think screeps is only about automation. I think it should be fine for a player to write a much more manually controlled bot. Taken to the extreme I think it would be awesome if someone built an open source bot that was 100% manually controlled. Like the worlds slowed RTS. It would be a much better open source starting point for an overwhelmed player than a semi-complete autonomous bot.



  • yeah, if the client passed into the server what object was selected or position was highlighted, that'd be amazing for troubleshooting purposes: select a creep, and only get debugging info for it. even if it were only sent when a certain keystroke was pressed to prevent overloading the server, it'd still be great