Apr 6, 2018
Screeps: World - artch


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 THE BLOG POST
Apr 6, 2018
Screeps: World - artch


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 THE BLOG POST
Mar 5, 2018
Screeps: World - artch

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

  • IMPORTANT: Lab reaction cooldown now varies depending on a reaction according to this table (also see the new REACTION_TIME constant).
  • Added new option directions to StructureSpawn.spawnCreep and new StructureSpawn.Spawning class which allows to set directions during spawning or cancel it immediately. (#61, #68 by sparr).
  • Added new parameter name to Room.createConstructionSite and RoomPosition.createConstructionSite (#50 by tedivm).
  • Creep .name and StructureSpawn .name properties can now be accessed by other players.
  • Added options plainCost and swampCost to Room.findPath (#62 by tedivm).
  • Increased CLAIM creeps life time from 500 to 600.
  • Creep.attackController on reserved controllers decreases reservation timer by 1 tick per CLAIM body part.
  • Other fixes:


These changes are supported in private server v2.13.0.

Read this post in the official blog
Mar 5, 2018
Screeps: World - artch

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

  • IMPORTANT: Lab reaction cooldown now varies depending on a reaction according to this table (also see the new REACTION_TIME constant).
  • Added new option directions to StructureSpawn.spawnCreep and new StructureSpawn.Spawning class which allows to set directions during spawning or cancel it immediately. (#61, #68 by sparr).
  • Added new parameter name to Room.createConstructionSite and RoomPosition.createConstructionSite (#50 by tedivm).
  • Creep .name and StructureSpawn .name properties can now be accessed by other players.
  • Added options plainCost and swampCost to Room.findPath (#62 by tedivm).
  • Increased CLAIM creeps life time from 500 to 600.
  • Creep.attackController on reserved controllers decreases reservation timer by 1 tick per CLAIM body part.
  • Other fixes:


These changes are supported in private server v2.13.0.

Read this post in the official blog
Dec 29, 2017
Screeps: World - artch


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.
Dec 29, 2017
Screeps: World - artch


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.
Dec 14, 2017
Screeps: World - artch
  • 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.
Dec 14, 2017
Screeps: World - artch
  • 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.
Oct 20, 2017
Screeps: World - artch


We have always put little attention to graphics in Screeps, since this is a rather niche game for programming nerds. In terms of technology, the game engine has been a simple set of SVG objects moving across the web page. It allowed for rapid development without distracting on complex visual components, but it ruled out any appealing visual effects (like lightning). Besides, this approach suffered from subpar performance when a lot of objects were on screen. So it's time to change that!

In this update, we are excited to reveal a full-blown graphic engine for Screeps based on WebGL and PixiJS. It will allow you to:
  • Leverage your machine's GPU even in the browser to significantly boost performance without any lags when scrolling.
  • Save your laptop's battery juice since GPU is much more energy-efficient for this task than CPU.
  • Add new visual effects to enrich the game atmosphere and yet retain our usual relaxing, abstract style.
In the picture above, you can see some samples of how the new renderer transforms the game when activated. The new feature is beta so far, so to activate it, opt in using the checkbox in the Display Options section of the right panel. Not all features have been 100% migrated to the new renderer yet, and bugs are possible, but you can get a whole new impression of the game right away!

Please inform us about any issues you encounter in comments.
Oct 20, 2017
Screeps: World - artch


We have always put little attention to graphics in Screeps, since this is a rather niche game for programming nerds. In terms of technology, the game engine has been a simple set of SVG objects moving across the web page. It allowed for rapid development without distracting on complex visual components, but it ruled out any appealing visual effects (like lightning). Besides, this approach suffered from subpar performance when a lot of objects were on screen. So it's time to change that!

In this update, we are excited to reveal a full-blown graphic engine for Screeps based on WebGL and PixiJS. It will allow you to:
  • Leverage your machine's GPU even in the browser to significantly boost performance without any lags when scrolling.
  • Save your laptop's battery juice since GPU is much more energy-efficient for this task than CPU.
  • Add new visual effects to enrich the game atmosphere and yet retain our usual relaxing, abstract style.
In the picture above, you can see some samples of how the new renderer transforms the game when activated. The new feature is beta so far, so to activate it, opt in using the checkbox in the Display Options section of the right panel. Not all features have been 100% migrated to the new renderer yet, and bugs are possible, but you can get a whole new impression of the game right away!

Please inform us about any issues you encounter in comments.
...