Changelogs

Changelog 2018-09-22

This is a big game update containing many features:


Tunnels

It is now allowed to build roads on top of natural terrain walls. Such “tunnels” open some interesting tactical opportunities in rooms with complex landscape. Construction and maintenance cost is 150x higher than a normal road on plain land (see documentation):

Cost: 45,000
Hits: 750,000
Decay: Loses 15,000 hits every 1,000 ticks

Roads cannot be built on edge tiles, i.e. you cannot create additional room exits using roads. Other usual rules apply: you can build roads in neutral rooms, but any construction in hostile owned rooms is prohibited.

Read More

Changelog 2018-03-05

It’s been a while since you’ve heard from us, but all in good reason. We’ve been working hard on some exciting new features that we’re now happy to announce.

Isolated virtual machine

The chances are that this major improvement will become historical. Nobody did that in the Node.js world before, we’re proud to be pioneers here. Marcel Laverdet, our open-source contributor, has implemented an excellent isolated-vm native module that finally brings full-featured VM isolation to Node.js. With the integration of this library, Screeps can now provide truly separated sandboxes to players that don’t affect each other in any way. It is highly recommended to try now, since it will be our default VM in a few months.

  • You can opt-in for an isolated VM in the new account settings UI called Runtime. This will move the execution of your script to another pool of server nodes with this experimental feature enabled.

  • The isolated VM takes you to your very own JavaScript environment, including heap memory and garbage collector.

  • Since isolated VMs can be transferred between threads within the same Node.js process, it is no longer neccessary to maintain multiple global instances, and you always have one single global. Moreover, your global environment is very stable and can persist for several days without resets (unless you reset it with your own actions).

  • You can use the new API method Game.cpu.getHeapStatistics() to know how much heap memory you’re using in runtime. The maximum effective limit is 256 MB for each player. If you exceed this limit, your VM may be reset.

Although this feature is still considered experimental, it is well tested on our PTR server and shows good results.

Private server support

An isolated VM is also available for private servers in our beta branch that you can install this way:

npm install screeps@beta

It is recommended to set runners_cnt to 1 in your .screepsrc file, since otherwise it will create multiple global environments for each player. There is a new option runner_threads instead which should be set to the number of your CPU cores.

Also, you may want to launch Node.js with --harmony_sharedarraybuffer flag in order to enable some memory optimizations.

Tombstones

Introduced new major feature: creep Tombstones. When your creep dies for any reason, there is now a special object left that contains information about the deceased creep and any resources it carried. Tombstones slowly decay over time, the decay period depends on the creep body size. After it is decayed, all resources contained are dropped on the ground. A tombstone provides room visibility to its owner.

  • New Tombstone global prototype.
  • New constants FIND_TOMBSTONES, LOOK_TOMBSTONES, TOMBSTONE_DECAY_PER_PART.

Thanks to davaned for this idea (see discussion on forum) and ags131 for implementation (PR #74).

Other changes

These changes are supported in private server v2.13.0.


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

Auth Tokens

We’re glad to announce that Screeps now has user-generated authentication tokens support. You can use these persistent tokens to authenticate to our undocumented Web API endpoints without using the sign-in process. Use your Account / Auth Tokens section to generate such a token:

Please note that the usual sign-in process will start using Google Invisible reCAPTCHA effective February 1, 2018.

If you have an external tool which uses https://screeps.com/api/auth/signin endpoint automatically, please change it to use Auth Tokens before February 1, 2018! Otherwise it will stop working.

Doing this is trivial: you need to drop using auth/signin endpoint and set X-Token header in all your requests to the persistent token generated from your account settings.

Learn more about this feature in the documentation.


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

Changelog 2017-12-14

  • Runtime servers upgraded to Node.js 8.9.3 (LTS). It ships with V8 5.8, a significant update to the JavaScript runtime that includes major improvements in performance. This enables many modern ES6 language features, such as WebAssembly support. Since it’s a major release, it may have different performance profile depending on language features you use.
  • Added binary modules support to the in-game IDE and require mechanics. Learn more in the documentation.

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

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.