Changelogs

Changelog 2017-09-28

  • All credits amounts now work with 0.001 precision, including order prices, credits balance and transactions history. User credits balance and order prices are stored in the database as thousandths in integer format which prevents rounding errors. In order to update your private server data, an automatic database upgrade will be performed, see this commit.
  • Added new StructureSpawn.spawnCreep method. createCreep and canCreateCreep are now considered deprecated, but still will be available for backwards compatibility. See discussion in this pull request for details.
  • When you click “Respawn”, all structures now don’t vanish, but change their owner to SYSTEM_USERNAME, so that other players are able to withdraw resources from them.

These changes are supported in private server v2.10.0.


Have comments or feedback? You can discuss this post here.

Changelog 2017-09-19

Shards API

GCL is shared between shards and doesn’t need to be assigned to a specific shard.

Controller downgrading changes

  • attackController applies 1000 ticks of upgradeBlocked and decreases the ticksToDowngrade by 300 * <CLAIM_parts> ticks. The claimer creep will only need 1 tick to do this amount of damage. The creep will not be able to do another attack until upgradeBlocked is back to 0.
  • upgradeController restores 100 ticks of ticksToDowngrade rather then resets it immediately.
  • While the controller is downgrading, new level cannot be triggered even when the controller has enough progress (progress is not lost but accumulated).
  • Safe mode activation is not possible when the controller is downgraded for 5000 or more ticks.

These changes are supported in private server v2.9.0.


Have comments or feedback? You can discuss this post here.

World Shards Launched!

We are excited to announce we just launched the sharding system for the Screeps world! The second plane called shard1 already works with faster tick rate and waits for its first settlers! If you wanted to start playing but disliked long 5-second ticks, now is the time!

TL;DR World shards are isolated from each other and run your code separately. Your creeps can travel between them using special portals. The original world becomes shard0. Portals will be closed during 60 days grace period, but you are free to (re)spawn on either shard0 or shard1.

Read More

Changelog 2017-07-05

  • Updated runtime Node.js version to 8.1.3 (with V8 5.8).

    UPD: Rolled back to 6.11.0 LTS. It doesn’t seem to be stable enough. We’ll get back to it when some fixes appear, and/or 8.x branch becomes the next LTS.


Have comments or feedback? You can discuss this post here.

Changelog 2017-06-26

  • Refactored creep damage and heal apply logic in a more consistent fashion. The main part of its logic can be found here:
    1. All incoming damage and heal is counted first, but not applied.
    2. Total heal and damage are applied to the creep's hits.
    3. hits <= 0 and hits > maxHits checks are made.
    4. The creep’s body is recalculated, including CARRY capacity.
  • Market order prices now can be set with 0.001 precision. However, all real credits transactions still work with 0.01 precision, i.e. when you execute a deal, the resulting transaction (amount * price) is rounded up. You cannot execute a deal for a total amount less than 0.01 credits, the Game.market.deal method will return ERR_INVALID_ARGS.

    This means you can sell/buy energy for 0.001 per unit, but with amounts not less than 10 energy units per transaction.

These changes are supported in private server v2.7.1.


Have comments or feedback? You can discuss this post here.

Changelog 2017-05-26: public memory segments

Introduced new public memory segments feature. Now you can mark some of your memory segments as public, and other players will have read-only access to them using RawMemory API.

These changes are supported in private server v2.7.0.


Have comments or feedback? You can discuss this post here.

Changelog 2017-05-18: hard resets fix

A Node.js contributor and Screeps player Marcel Laverdet managed to track down a bug in the built-in Node.js vm module that caused a race condition when sandboxed code timed out. It was the primary reason of so called “hard resets” of player code execution in Screeps. A fix for this bug is manually patched into Node.js on Screeps runtime servers, and the number of hard resets is greatly reduced now. This change takes effect starting from now.

The patch is proposed to Node.js upstream repo. If you want it to be included to your own Node.js instance running your private Screeps server, you can give it a thumb up on GitHub. Well done Marcel!

There are still some other reasons that cause hard resets occasionally. We’re working on tracking them down right now.


Have comments or feedback? You can discuss this post here.

Changelog 2017-05-11

  • Updated runtime Node.js version to 7.10.0 (with V8 5.5).

  • Changed terminal transfer energy cost formula:

    energy_cost = resources_amount * (1 - Math.exp(-range / 30))
    

  • Introduced new StructureTerminal.cooldown feature. It is triggered on both StructureTerminal.send and Game.market.deal methods and is equal to 10 ticks regardless of the transaction size and range. Methods will return ERR_TIRED code if the cooldown is active. New TERMINAL_COOLDOWN constant is added.

  • Removed non-intuitive behavior of auto-attacking objects on Creep.move. This fixes an exploit of doing attack and heal simultaneously which is prohibited.

  • Runtime virtual machine now uses breakOnSigint feature. CPU limit reached error messages have three types now:

    • Script execution timed out - when the soft timeout is fired
    • Script execution has been interrupted - when SIGINT signal received
    • Script execution has been interrupted with a hard reset - when SIGKILL signal received (runtime process restart).

    These differences are mostly for informational purposes and don’t affect anything currently.

  • Changed boost effects of UO, UHO2, XUHO2 according to the documentation.

These changes are supported in private server v2.6.0.


Have comments or feedback? You can discuss this post here.

Changelog 2017-03-09

Introduced new kind of world map zones: Respawn Areas.

  • Respawn Areas are highlighted with blue color on the world map.
  • They are isolated from the rest of the world with a wall. The wall has a timer similar to Novice Areas. Any player can place the first spawn in this area, but nobody can come here from the outside world while the timer is up.
  • The only restriction in Respawn Area is nukes usage - a nuke cannot be launched from or to a room in a Respawn Area.
  • Players with GCL 4 or higher are no longer able to start playing in Novice Areas. They have to either respawn in a regular room or in a room within a Respawn Area that will keep them safe for a while and allow to claim as many rooms as their GCL allows.

Other changes

  • When a Novice or Respawn Area is being planned in an inner sector, all free rooms in this sector will be signed by the game with the following message:

  • Added new constants SYSTEM_USERNAME, SIGN_NOVICE_AREA, SIGN_RESPAWN_AREA. You can use them to programmatically check the signs in the rooms that are important to you and reserve them if such a message detected.

These features are supported in private servers v2.5.0.