Screeps IDE alpha release

This is an early alpha release of our new open source project: Screeps IDE. It’s a package for Atom editor which will become our officially recommended way to code for Screeps in the future.

In this first iteration we’re going to reimplement the same basic functionality from the in-game client IDE:

  • Code editor with game API autocomplete;
  • Console;
  • Memory viewer/editor;
  • Local project files synchronization.

During further development we will be adding more features to it, for example official TypeScript and folders support.

How to get started:

  1. Install Atom.
  2. Install screeps-ide package.
  3. Configure your IDE according to the instructions at the Welcome screen.

Since this is still an early unstable alpha, the UI is not fully polished and many bugs are expected. Please report any issues and give feedback on the project page on GitHub.

Power Era has begun!

This is it. It’s happening. Power Creeps are here. A whole new Power Era in Screeps!

It’s been a long road indeed. The Power resource was introduced to the game in December 2015. The plans for development of the new Power Creeps concept were announced at the same time. Since then, we’ve heard numerous opinions, deeply analyzed all comments, suggestions and concerns of our community. The concept was changed, readjusted and reworked several times. This wasn’t the only reason of the delay of the release: since 2016 we’ve been focusing on other areas of the project that have more to do with optimization and reworking of the game engine than the game content itself. This was because the release of the game on Steam in 2016 resulted in the influx of players we weren’t ready for. However, a great deal of game content has been developed too: minerals, NPC invaders, market system, nukes, room visuals, world shards, tombstones, tunnels, events log. All these things were developed after we had announced Power Creeps, and we believe we didn’t spend time in vain but managed to improve the game in many aspects.

But now we are excited to announce the final release of the Power Creeps system in the game! We started its public beta on February 1, 2019 on the Public Test Realm, and after 1.5 months we can say it’s polished enough to go live.

What is power?

Power is an end-game mechanic opening a whole new trek in the development of your colony: towards increasing its effectiveness rather than the size of colonized territory. This is how its contents look like:
  • You mine a special resource called “power.”
  • Mined resource is processed in 8-level rooms and increase your account Global Power Level (GPL).
  • GPL allows for creation of Power Creeps — special hero units — and development their levels and skills (so called “powers”).
Read more about power mechanics in the documentation.

For now, the first (and likely the main) class has been developed and launched – Operator. All its superpowers are functional and ready to use. All but one (OPERATE_FACTORY) – we’ll leave a small intrigue to elaborate on later on our forum. Stay tuned!

Want to try it but don’t have sufficient power level? We have a surprise for you: you can instantly upgrade your Global Power Level to 3 right now! The only condition is having at least one Power Spawn in the game. The promo is active 30 days after the release, so Jump into Power Era now!

API changes

  • Introduced new object prototype PowerCreep and static method PowerCreep.create.

  • Added global properties Game.powerCreeps and Game.gpl.

  • Added property RoomObject.effects.

  • Added property StructureController.isPowerEnabled.

  • Increased code limit size to 5 MB for IVM users, since the Power Creeps feature introduces a new major coding challenge. Legacy shared VM limit remains at 2 MB.

  • Introduced new global object InterShardMemory. It supersedes RawMemory.interShardSegment which is now considered deprecated.

  • Some more optimizations of native PathFinder (driver#34 by laverdet).

  • Improvements in private server launcher, new configuration options log_console, log_rotate_keep, storage_disabled, restart_interval (launcher#6, launcher#4 by ags131).

  • POSSIBLY BREAKING CHANGE: optimized RoomPosition internal representation from an object with two numbers and a string to a 32-bit number (engine#87 by laverdet). List of known breaking changes:

    • Object.create(RoomPosition.prototype, ...) - please use new RoomPosition
    • Object.assign({}, rp) - properties on RoomPosition are no longer “own properties” so they won’t be picked up by functions that filter on own properties
    • rp.x = -1; rp.y = 50 - invalid values are no longer supported on RoomPosition
    • rp.roomName = 'e1s1' - lowercase room names will be converted to uppercase

This update is supported in private server version 3.3.0.


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

Changelog 2018-12-14


New design

We’d like to introduce the results of what our frontend team (designer Roman and developer Dmitriy) has been doing during last two months. We have revamped the entire visual style of the game, and today we’re starting to deploy it gradually to various parts of the game UI.

First of all, Screeps now has new logo!

It is much more visually clear, sends more obvious message of coding, and has “creeps” part highlighted and animated. Fun!

Some game screens have been redesigned. This is how they look in the game:

Read More

Non-Subscription Shard Launched

We were all looking forward for shard3 to open. In this post, we are pleased to announce its launch along with some more great news.

First, we’re happy to announce that the free non-subscription CPU limit is raised from 10 to 20. Yay!

And now is the most interesting part. Shard3 becomes our first CPU-limited shard. It limits CPU of all players to 20. Even if you have an active subscription and assigned more CPU to this shard, only 20 CPU will be active there. This means this shard is mostly designed for non-subscription players. They can now compete with all their neighbors on equal terms (CPU-wise), whether they are subscribed or not.

In all other aspects, shard3 is a regular shard with Novice and Respawn Areas and portals from shard2 (temporary closed for 60 days). You can freely travel there, but your CPU will be capped, so having a subscription will force you to learn how to optimize your creeps in the same way as non-subscribed players do.

And the last thing: since you get twice as much CPU now when you buy Screeps on Steam, the free 30-day subscription trial is discontinued. We recommend new players to start on shard3 and buy a subscription if they want to expand to other shards.


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

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

Open source graphics engine

We’re happy to announce that our graphics engine is now released on GitHub as an open source project! It is based on PixiJS and contains the same renderer code and images we use in our official game client. You can use it in your own projects of two major types: custom graphics for private servers, and third-party GUI utilities.

Custom graphics for private servers

The ptr branch of the private server npm package (starting from 3.1.0-beta.4) contains new functionality which you can use to provide your own graphics for any game object types: both standard game types and new custom types. It allows you to create your own game objects with custom graphics like this:

The library supports vector graphics, raster textures and sprites, animations, transforms, visual effects, etc. We’re going to use its potential in full in the future, and we’re also looking forward to seeing what you can come up with too.

We’ve prepared some mods examples for you to get started with the custom graphics. Use npm install screeps@ptr in order to install the supported server branch.

Third-party GUI utilities

You can integrate the renderer library to your own application which would display Screeps game objects in the same way as in the official game client. For example, you can develop a standalone room history viewer, a third-party game client, etc. You can add samples from real game object data and visualize it exactly as they are shown in the game.

The project repository contains a demo app which is a good reference of how to integrate the renderer on a web page in your own project. Also, please refer to the documentation and the API reference.


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

Power Creeps update

The turning point of the Power Creeps development is just around the corner. This post will show how this mechanics will look in the game and also update our design document. A lot of things have already been described in the previous post, but the mechanics sparked hot debate, and we took a time-out to polish the idea and switch to other important tasks. This process gave us fresh ideas on what to change, and now we are confident the final concept can be viable.

TL;DR Brief summary of the adjustments

  • Only one class will be launched initially—Operator.
  • Any power creep can use its powers (skills) only in power-enabled rooms. Activation requires that any power creep approach the room controller and run PowerCreep.enableRoom(controller). This action is performed once by any player (not limiting to the room owner) and can be undone only by unclaim.
  • The operator will use a new resource called ops that it can either generate itself or buy in NPC terminals.
  • See an interactive skills planner below.

    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.