Moving the boosting mechanic into the spawning mechanic

  • Nontheless, we've had a breaking change with RoomPosition before. So a nonbreaking change would be, that a spawn can boost creeps and labs also can boost creeps.

  • The majority of the difficulty in Screeps is the logistics. Structures that store materials in any quantities cannot beam resources to other structures that perform work with those resources. You must manage that with a network of interstitial elements (creeps) that have carry, movement, and CPU cost limitations. This also introduces the concept of managing an asynchronous system, you must move the creep to the source, load the creep, move the creep to the destination, unload the creep as individual atoms of code that cannot operate as consecutive calls in a single function. .

    Conversely, throwing a store on the spawns with enough capacity to store enough boosts to be effective will also trivialize the learning curve as the spawn would just become a level 1 storage. This would also trivialize the body size constraints creeps face with low level rooms.

    Boosting, in my opinion, needs some help, but that has nothing to do with spawns. The wall of difficulty that is labs + terminal + market all at once needs some help, but that has nothing to do with spawns either.


  • I do not intend to throw a "secondary" store on the spawn/extensions, it has to share available space with the energy like the CARRY part.
    And I think this makes logistic much more complex at lower RCL.

  • @xenofix I had 1.6 MB of code when the RoomPosition change came, and i didn´t need to change one line because of it. All worked as before. I would not call that a breaking change. So switching boosting to Spawn would be a different thing, I totally agree with @Smokeman that changing boosting with labs would only make screeps "more boring" by making the logistics simpler.

  • it was a breaking change because it now validates the values you put into the x/y coordinates, whereas before it would accept anything. Code that worked before no longer works. Thus breaking change.

    You can argue that you should never put an invalid value into a RoomPosition, nonetheless, some people have been doing this for various reasons (e.g. find the space to the left of the current space by reducing pos.x by 1, then check afterwards if it's < 0).

    It's broken several people's code.

  • Doing Things not intended can break Code ofc. Like that memory hack for not destringify memory that i use, too. But i would not call a change breaking, cause its clear its not the documented use case.

  • Ok, I agree that boosting by spawns would make the game more simple. I just wanted to take away the "breaking change" argument against MrFauls idea.

    The memory hack is different. If something is changed there, then it's ok to break code, because RawMemory._parsed is not documented.

    But RoomPosition was documented and everyone works with it. It was expected to be an intermediate class to work with, with simple fields, not checked properties. Such an object should not be packed, cpu is more important here. So this change was very unexpected.

    The point is, this was just an example that breaking changes seem to be acceptable if not all players will be affected. And again, if labs are still working, then MrFauls idea wouldn't be a breaking change.

    The argument of Smokeman was, that logistics is difficult and boosting would be too simple with this change. And while I kind of agree with this, I'm not sure if boosting should be so difficult. Yes, everyone who masters logistics doesn't want to loose their advantage, but the difficulty for new players is already raising with power creeps and regional resources. Maybe we should consider some ideas to decrease this difficulty.

  • CoPS

    Leaving aside the comments on breaking changes, I disagree on the concept of this idea.

    A player can use 3 labs from RCL 6, which means with the simplest of manual market interaction, a player can be making and applying T1 boosts as they also gain access to the extractor at this RCL.

    If the spawn applied boosts, how would it work? Does the player need to remove the boost they have made from a lab, and move it into a spawn? The spawning method then gains a new parameter stating how much boost should be used? This sounds like more complexity, not less.


    • What interaction would this have with renewing creeps? How would I be able to spawn (say) an attack force, have them all renew to the same TTL, and then boost?
    • This will add more complexity regarding spawn locations, as a creep will need to be spawned in a spawn that has the correct boosts.
    • How many boosts, and how much of each can a spawn store? A creep can be using many types of boost at once, after all.

    Even if I agreed with your idea, it is insufficiently detailed.

  • As mentioned my idea means shared storage space, not different "containers" for each one, this makes balancing your spawn storage much more engaging.
    But I agree it may be a good idea to leave boosting to be a separate function with the benefit of boosting all available minerals with one operation.

    Also I really dislike the term "breaking change" it is normal for games to reevaluate its rules to adapt to new situations.(And so should its players)
    I really don't get the fuss about API changes it shows only that the game is cared for.

    The mineral mechanic was introduced as "higher lvl" experience but that isn't so much important now with the rise of PCs
    The entire intention behind this change is to make the game more consistent (aka: Spawn handles all Creep related stuff, Lab does stuff with minerals)
    and accessible for new and upcoming players.
    Simplifying a bit the rules also makes things more complex there is a reason why Go took a cutting edge AI.

  • Dev Team

    Hello, the strange German dude,

    Of course, implementing what you're talking about in Screeps is not an option. This change would decrease the number of tactics and use-cases of spawning and boosting mechanics (the example is, you can spawn 6-9-12 50parts creeps, renew them to have the same ttl using the spawner, then boost with labs), increasing logistics difficulty at the same time. This is exactly opposite to what we're trying to achieve in game design.

    Regardless of that, I thank you for wording your idea here on the forum. While it can't be directly applied to the game, it still can be the source of inspiration in some other activities.