Optimizations roadmap

  • Culture

    I personally don't have any opposition to a "shattering" (which, as a bonus, already has a really cool name) but I also am entirely in a single quadrant.

    If there was a special testing setup for people to have time testing across multiple shards and coordinate the "shattering" event then I think active players who are in multiple quadrants would actually have an advantage over the fact that they would already be spread out. That being said I can also many reasons why people would not be a fan of this, so I would definitely recommend getting more community feedback before really considering it.

  • Culture

    Another option, rather than a shattering, do a gradual depreciation of the world, disable respawning into it and /or encourage users to spawn in the newer shard(s) instead, then in the future it may be empty enough you could shrink the current world or disable it entirely

    On the other hand, if a shattering occurred, (say, on the double highways to make 4 shards), it would be interesting having the one room on one shard while all the other rooms are on a different one, would be a nice opporunity to work on multi-shard code and cross-shard travelling.

  • SUN

    A 'shattering' event would be awesome. 

    But if it isn't 'opt in' somehow (even if it is just everyone in a sector/sector group agreeing to shatter that section) I can see players getting frustrated. This is since it has the potential to completely destroy any hard-coded configuration (but if you have an empire of a decent size you probably have relatively little of it (or at the very least it is easily managed etc.))

    Now that isn't to say that the players in the sector(s) who want to shatter can't just boot out the nonconformists via force (or vice versa).


    Plus I want to get out the popcorn and watch entire areas of the map go dark.

  • int_max

    A shattering event sounds cool, but I think just creating a new shard and "blacklisting" some sectors so people can't move into them would probably work.

  • AYCE

    I'm no game designer, so these ideas may be terrible, or interesting.

    One thing I think Screeps is missing is some variety on the map. There is little in the way of strategic areas. As long as you have space, you are happy. There isn't much of, oh hey look so and so's space is better than mine, I should take that. Or, I need that space for some strategic reason.

    Someone had mentioned a while back about Z index on the shards. What if the shards were vertical from each other, and the portals between them went vertically? Meaning my room at W1N1 would in some way be able to portal to shard above and below me at the same room. This would add some strategic reasoning to position between shards, and connect them in a physical meaningful way.

    Additionally I'd love to see special areas of some kind appear on the map such that we could fight over them.

  • int_max

    @Timendainum you mean have them be less of a portal and more of a ladder?

  • > What if the shards were vertical from each other, and the portals between them went vertically?

    This is a truly great idea! It would make shards (probably called "levels" then) feel more like an intrinsic concept of the game world and less like a workaround for database performance bottleneck. (I still would prefer solving that problem by switching databases, however.)

  • int_max

    I agree with @tynstar

  • Dev Team

    The concept of "vertical" persistent portals is a core idea of this world sharding system. I've probably not expressed it clear enough in the blog post, but this is really what we've meant originally. Sharded worlds will have different sizes, so one-to-one position match can't be done, but their portals will link them in the same vertical positions like elevators.

  • Being forced to defend from attack across multiple shards is more apparent when it's described as a ladder / elevator / floor / Z axis

  • Dev Team

    Shard portals will be placed only in neutral highway rooms. And you cannot build portals yourself. There is nothing special in defending from such attacks, it is like any other attack from the highways.

  • Culture

    It’s still an open question whether the number of established players willing to respawn on the new shard is enough to reduce the load of the old one. In order to significantly improve performance they need to not only create colonies, but to respawn completely. Your reasons are fine, but they may not convince many established players to do so.

    I would happily move to a new shard. When you got a lot of GCL it’s a lot of fun to play around in a new area and expand rapidly! I think this might also be a motivation for other players as well. Instead of fighting over territory you just move to a new shard.

  • So excited that WebGL is coming. I stopped myself opening the game many times because of the horrible battery performance.

  • Dev Team

    We're now testing Apache Cassandra on the PTR, see this post: 

  •  Jo I know I may gain some hatred for that but screw node.js.

    Switch to Open Resty (nginx + lua application server) and rebuild the server in Lua.

    Lua is very similar but way faster and offers native sandboxing*.

    If you then add multitasking(requires external lib) in organised coroutines it should give you a enormous performance boost.

    Once that is done spreading it to multiple server clusters should be easy.

    If you want to evaluate Lua read "Programming in Lua, fourth edition" or the first edition online <- aimed at Lua 5.0 and is still largely relevant.


    *There is a bit of work to do, to do it proper.

  • Culture

    > Switch to Open Resty

    You do realize that everyone in the screeps world will have to rewrite their entire script library? And it still won't solve the performance issues as they're database & disk I/O related.

  • Na just add a internal preprocessor js->lua and besides node is still relevant for the client.

    Open resty ist still nginx so node.js could be used in conjunction.

    I don't have a DB solution yet but I know some big data guys maybe they have a viable solution.

    In theory you could pass lua dumps between servers so leveraging that you could fragment the database and add a good GC

  • SUN

    I know you made mention of an 'arena' area previously. From the description this would be well suited as a separate shard.

    I say this because it brings to mind the idea of different environmental conditions on shards. These shards would have their dangers and rewards adjusted accordingly.

    Examples include:


    • Disabled player spawning (must send a claim creep to colonize)
    • Disabled creep spawning (must maintain code to maintain population on both sides of the memory fence)
    • Increased/Decreased creep Lifetimes/Damage/Healing/Health etc.
    • Lava (that moves! this would be a particularly fun challenge to solve)
    • NPC forts
    • Temporary Shards/Monthly Challenges where players compete (or cooperate against a shared challenge) for prestige/practice.
    • The best defense is a good offence (No towers (or walls?)).
    • Roaming (shard entry points (or even rooms) move)
    • Not for babies (no safe mode. even on first spawn. This would be a 'softer' version to the first one too.)


    These basically write themselves. The rewards do not even have to be entirely tangible; They could be as simple as minor GCL rewards or a scoreboard.


    Monthly challenges in particular would be good for long term player retention.

  • int_max

    • Temporary Shards/Monthly Challenges where players compete (or cooperate against a shared challenge) for prestige/practice.


    ooh, and maybe allow us to get early access to a new shard before it opens up if we want to have to jump through the temporary shard.