Rework room deterioration



  • With the new - much appreciated - introduction of the CLAIM body part I think a rework of how rooms decay is necessary.

    In my opinion a room *containing a spawn* should never downgrade to level 0, so that the owner is not able to produce creeps anymore.

    I would like to see the following changes:

    Either completely remove controller deterioration - OR -

    Remove controller decay as long as a spawn is present - OR -

    As long as a spawn is present, a room controller should stop at level 2, and also the decay of the ramparts should stop at the rooms max (300k ~ which is no real challenge for a decent attack force, if somebody really wanted to harm you). This takes away the frustrating experience for new players, that an error in the code and being absent for some time completely ruins your colony and you have to respawn.



  • Making the game easier for newbies is desirable. However I don't think we should remove deterioration from controllers because we remove the survival part of defending a room if someone moves to starve a room or other more nuanced tactics.

    My vote would be option 3 but stop a controller at 1 tick from death at level 1 and I wouldn't save ramparts from decaying at all. If I did I'd only allow 1hp left to stop decay.

     

    Some of the recent bugs server side have been inexcusable but if the bug is purely client side I don't think we should be completely coddling them.



  • The survival part is not really a good argument for me. Having a creep upgrade the controller once every 50000 ticks is not really decisive in a siege scenario. From a technical POV i guess option 2 would be pretty easy to accomplish, which for me is also the most compelling option.



  • I haven't illustrated my point well, let me try again. Screeps has a heavy theme of deterioration within it. All Creeps die over time (to be changed with power creeps), valuable structures die over time (ramparts, acting as gates), as well as your controller which claims the room as well as your source of points within the game.

    Removing the deterioration of more of these weakens this theme to the point where it's just another programming niche game with not much to set it apart.  If more features were fleshed out this might be less of a problem.

    I enjoy games with a passive force against me, in Screeps this surfaces in count down timers instead of invading AI or equivalent but it works the same way.

    I don't think there is a right or wrong answer with this one and it's more of a preferential play-style. If we had quantifiable data on which the community liked more that would be the obvious choice.



  • Downgrading controllers was introduced in order that the players who left the game for good would not occupy a place in the game world. If downgrading controllers in inactive rooms is disabled, very soon there won’t be any rooms for new players.



  • The only change to deterioration I'd ask for is freshly created Ramparts: they start with just 1 HP and then after 100 ticks, they decay and are gone. As a newbie this was very frustrating to figure out because it is quite challenging at first to coordinate building and repair of the rampart before it is gone again, especially since with the switch from Construction Site to Structure, the UID of the to-be-created Rampart changes, and it's hard to keep track of it. 

    At first I only had builder creeps that would build construction sites, and repair creeps that would repair anything thats below a certain threshold. However, the builders built the Rampart, but it would often take more than those 100 ticks for a repair creep to get materials and reach the rampart site, and so again and again, my ramparts just decayed before a repair-creep reached it. 

    Took me a long, defense-less while to get my creeps to remember not only the ID of whatever it should build but also the position, and after finishing the building part, to check if at that position something needs repairs as well - and even that went wrong at first because it'd randomly repair the road beneath the rampart first instead of the rampart. All that was a good lesson and nice challenge, but imho one that shouldn't be necessary to even build basic defenses, but should rather come from the will to improve efficiency.

    However, I think the deterioration actually is alright, all that would need to be done is to increase the hits the rampart is created with to 1000 (that'd give us 400 ticks to start repairing a freshly created Rampart instead of just 100) - or, if that isn't possible for some reason, maybe set the initial decay timer higher, just for the first decay.


  • Culture

    @Amadox - I'd personally agree that ramparts should start a little higher if they are going to decay so quickly, but its also not too hard to prioritize repairing ramparts with less than 1000 hits over other things, if you're building a new rampart there isn't really a reason you need to repair anything else first. I use something like this: 

    var upgradeTarget = creep.pos.findClosestByRange(FIND_STRUCTURES, {
     filter: function(object) {
       return object.structureType == STRUCTURE_RAMPART && object.hits < 1000;
     }
    });

    Granted with a lot of structures in a room this can be somewhat CPU intensive so I only search for them when a flag is set in the room to indicate that new ramparts or walls have been built and I remove the flag when the search comes up with nothing left. I also have the same creep building and repairing so there isn't downtime between the built rampart and the repairing of it. Unless I'm building 100 new ramparts.. maybe one day soon. I'm sure there's probably better ways to do it.