Screeps World Review: May 2016

More than 200 players last month were setting up their AI and polishing their JavaScript skills. Some were mastering new features, while others tried to learn the basics. Meanwhile, we've got exciting news for all of you about everything worthy your attention!

Hernanduer[29] again tops the Power Rank with 27M+ power points. This is 46% of all the power harvested in the world! The competition in power mining is still low which allows more dexterous players to claim cream of the top. Here is the rating of all the power harvested and collected in accounts for all the time:

The rating also includes players with paused subscriptions. But if they resume playing, all the power processed, as well as their GCL, will be saved and can be put to use for planned superpowers of power creeps. Just to remind: each unit of processed power not only gives you a rank position today, but also “experience points” for your power creeps tomorrow.

AzuraStar[30] keeps in the lead in the Expansion Rank. NhanHo[29], on the other hand, fell to his lowest position ever: 4th place, and he’s even close to the 5th in the current season.

We should especially highlight such a GCL/CPU titan as Dissi[21]. He’s the most active at the moment in terms of expansion: changing locations and boosting his upgraders make his chart twist:

The current chart link: https://www.cs.cmu.edu/~dannyz/screeps.png

danny[20], the author of this activity chart, was in coma for 10 days and revived at the last moment, when his controllers were down to level 1-2. It’s naturally because of the deprecated methods that were removed on May 12 (changelog). That said, he managed to quickly restore his RCL in his rooms due to the new downgrade timers mechanics. As for Avicenna[10] with a similar situation, once the “master” of the sector W15N15, he perished ultimately.

In a newly-matured sector W5S25 there has been no definite monopoly so far, but the most advanced here is YuraZ[6] who luckily managed to occupy a landscape of natural walls: 11 rooms with only 4 exits.

A yesterday’s young larva, Zergling[11] hatched out of his novice egg and quickly justified his name by spreading across all the sector W15S25. He is now only second to Skorp[12], a novice who started just recently and now in the Top 10 by expansion. Congrats!

Let’s see who has the greatest total RCL weight in their sectors:

A group photo, smile!

The most powerful weapon so far has emerged recently: Nuker. The first to push the red button was Dissi. Look forward for more details about nukes in our next review.

Apart from the launch of 7 nukes, Dissi nicely dealt with 7 rooms of Hatyr[9] by more antique methods. So he’s the director of our featured battle today:

Changelog 2016-05-16

  • Introduced StructureNuker.
  • Added Nuke object prototype.
  • Added FIND_NUKES constant.
  • Added STRUCTURE_NUKER constant.
  • Added constants for Room.look* methods:
    • LOOK_CREEPS
    • LOOK_ENERGY
    • LOOK_RESOURCES
    • LOOK_SOURCES
    • LOOK_MINERALS
    • LOOK_STRUCTURES
    • LOOK_FLAGS
    • LOOK_CONSTRUCTION_SITES
    • LOOK_NUKES
    • LOOK_TERRAIN

Changelog 2016-05-12

You can read more about some of the breaking changes in this announcement.

  • Breaking change: Removed Flag.id property.
  • Breaking change: Removed deprecated methods:
    • Creep.transferEnergy (use Creep.transfer instead)
    • Creep.dropEnergy (use Creep.drop instead)
    • Creep.unclaimController (use StructureController.unclaim instead)
    • Game.getUsedCpu (use Game.cpu.getUsed instead)
    • Flag.roomName (use Flag.pos.roomName instead)
    • RoomPosition.findClosest (use either RoomPosition.findClosestByRange or RoomPosition.findClosestByPath instead)
  • Added new prototypes: RoomObject, OwnedStructure, StructureExtension, StructureExtractor, StructureKeeperLair, StructureLab, StructureLink, StructureObserver, StructurePowerBank, StructurePowerSpawn, StructureRampart, StructureStorage, StructureTerminal, StructureTower, StructureContainer, StructureRoad, StructureWall.
  • Structure.transferEnergy method is moved to the corresponding specific structure prototypes (if applicable).
  • All boosted creeps, including NPC invaders, now drop up to 20% (depending on their life time) of the resources spent on their boost when killed.
  • Added new method StructureSpawn.recycleCreep that allows to return up to 100% (depending on life time) of all resources spent on that creep’s spawning and boosting.
  • Energy sources in Source Keeper rooms now have 4,500 energy capacity.
  • Increased terminals capacity from 100,000 to 300,000.
  • Reduced terminal send fee from 0.2 to 0.1 energy unit per resource unit per room.
  • Room.findPath method now has the default maxOps=20000 value in case when origin and target positions are in different rooms.
  • Increased towers count available on different room levels:
    • RCL3: 1 tower
    • RCL5: 2 towers
    • RCL7: 3 towers
    • RCL8: 6 towers
  • Introduced new Creep.attackController method. This is now the way to decrease downgrade or reservation time instead of Creep.claimController. In addition, attacking a controller now prevents it from being upgraded for the next 1,000 ticks.
  • Added StructureController.upgradeBlocked property.

Important change: game objects prototypes

On May 12 an update will be deployed that will introduce some changes to the API which can require adjustments in your script. The changes affect two fields:

  1. The underlying data structure in which flags data is stored on the server was revised for optimization purposes, and now the Flag prototype does not have the id property. If you have worked only with properties name, color/secondaryColor, and memory, you have nothing to worry about. Otherwise please change your logic in order not to use the id property. Besides, the constants COLOR_* now represent integer values rather than strings, so if you used their values directly, please make sure to use names of variables from now on.

  2. We are considerably expanding the list of prototypes of game objects. Now all the prototypes will be arranged into a hierarchy and inherited in a chain. Here is the tree of prototypes:

       
Room
RoomPosition
RoomObject  (room, pos)
ConstructionSite
Creep
Flag
Mineral
Resource
Source
Structure (structureType, hits, hitsMax, destroy, notifyWhenAttacked, isActive)
  OwnedStructure (my, owner)
  StructureController
  StructureExtension
  StructureExtractor
  StructureKeeperLair
  StructureLab
  StructureLink
  StructureNuker
  StructureObserver
  StructurePowerBank
  StructurePowerSpawn
  StructureRampart
  StructureSpawn (aliased as Spawn for backward compatibility)
  StructureStorage
  StructureTerminal
  StructureTower
  StructureContainer
  StructureRoad
  StructureWall

You are free to use these prototypes in your scripts:

Game.rooms.W0N0.storage instanceof StructureStorage // true
Game.rooms.W0N0.storage instanceof OwnedStructure // true
Game.rooms.W0N0.storage instanceof Structure // true
Game.rooms.W0N0.storage instanceof RoomObject // true

So, because of this, if you have overrided some properties or methods, you have to check that you are doing this in the right place of the tree.

These changes have already been deployed on the Public Test Realm, so we recommend to go there and check if your script works correctly before the update goes live on the main server.

Indiegogo campaign results

The campaign is over!

Here are the results:

  • 310 backers contributed.
  • $11,493 raised.
  • 144% of the original goal achieved.
  • Valve has approved the release of the game for Steam, and we’ve already started preparing necessary documents. 

Thanks for your support!

All the rewards have been sent out to backers except for codes for accessing Steam and the server. If you haven’t received our email yet (which could happen if you had sent money but had not chosen your perk), please email us at contact@screeps.com.

As for the Steam client and the open-source game engine, their development is under way and we hope to share the first results very soon. Here is the plan:

  1. First, we’ll release the game on Steam in the Early Access mode. It will be a fully functional client for the online MMO mode with support for scripts in local files, but without the hosted server.
  2. The second step is a private release of the server engine and launching a test version on Steam with its support. Only 310 backers of our crowdfunding campaign will gain access to it.
  3. After a month from that, if everything goes smoothly, we will publicly release the game on Steam and the server on npmjs.com (the server source will be available on GitHub).

Follow the news!

Screeps World Review: April 2016

In the past season, players have mined and used minerals with much more confidence, especially since minerals are mined as easily as energy, unlike power. Processing minerals is more interesting though, and we’ll touch on that later. As for now, here are the leaders in expansion and power:

AzuraStar and NhanHo have reached GCL 28+ thus getting the maximum CPU 300. Perhaps it cooled down their drive to overpump controllers, so they are now building up the walls extensively. Hernanduer[27] and DarkTrooper7[26] are close to the high level, while the rest have not reached GCL 10 yet. We congratulate Skorp[11] who started only in January but is already in the TOP-10. Let’s have a look at the expansion graph from danny:

Some people love to change badges frequently, now even custom ones, while others have stuck to one badge from the very beginning. Here is how players' domains look like with their respective badges:

Don’t forget that the map has many viewing modes apart from the “Owner control level,” for example “Minerals” which is very important nowadays, it helps quickly assess mineral logistics.

After the initial placement of minerals across the map, some players have managed to grab lucky new rooms with mineral-rich neighboring rooms:

PlayerGCL
AzuraStar 29 9 7 3 1 5 2 0
NhanHo 28 11 2 1 2 5 3 1
Hernanduer 27 5 8 2 3 4 2 1
DarkTrooper7 26 7 11 1 1 1 2 2
Sargeth 19 3 4 6 1 0 3 0
danny 18 4 4 3 4 1 2 0
TooAngel 18 1 2 0 2 1 1 0
Dissi 17 4 3 1 2 2 3 1
ThyReaper 16 1 6 1 0 1 3 0
Mototroller 15 5 3 1 1 3 1 1
Pascow 12 5 0 0 1 1 3 0
Rumatah 12 1 4 1 0 1 1 1
chris 11 3 2 1 0 1 1 1
atomicinf 11 0 4 0 2 0 1 0
Skorp 10 3 1 2 1 1 0 1

As we can see from the table, the top three players have more Utrium. A half don’t have Catalyst at all. A third of the table has a serious disproportion in Oxygen/Hydrogen. The following players have the most even combinations: Hernanduer, Dissi[18], and Mototroller[16].

From a practical viewpoint, distance between rooms play an important role, but since the terminal allows transferring minerals at any distance, you can gain advantage by collecting the full stack of minerals. While the automatic market system is under development, and neighbors may be slow at times, players have to rely on themselves and create self-sustaining mineral usage cycles.

Let’s look at the reactions going on in labs with minerals in storages and terminals. This will give us an understanding of where players focus on, whether it’s security, attack, mining, progress, versatility… The following diagram shows compounds converted into corresponding effects:

The diagrams show thousands of ticks that players needed to build a compound. For example, – 1 tick, – 3, – 4.

Dissi has the most versatile stock. However, the best in class is again Hernanduer who also used various boosts to the full: mining energy and power, attack (see video attached), and the most popular effect among players, upgradeController.

You need labs for all this. Unlike other objects, they need to be placed within a 2 square range in order for a reaction to work. It’s interesting to see how players tackle this issue. Here are basic configurations for each player:

The most popular lab configuration is increasingly an “eight”: Hernanduer, Dissi, and Skorp[11] have this architecture in all their rooms and it’s similar to the “tunnel” extension layout. Similarly, DarkTrooper7, Rumatah[12], and chris[11] tend to favor “grid” layouts in both their extensions and labs. Mototroller prefers densely-grouped extensions, so he usually packs his labs with the maximum density, in squares. AzuraStar has handily arranged his lab worker surrounded by labs in a feng shui manner, and he even managed to have a raw source nearby. This is similar to his spawns layout.

Therefore, we can guess which layout will be used by those who haven’t utilized minerals yet: eight, greed, square. Even before we looked at E24N12 we could guess that NhanHo would use “rails.” So, if you’re still pondering how to place your labs, just look at your extensions.

The featured battle of the season shows 10 rooms of TooAngel wiped in a flash. This video again shows how important it is to place towers as close to the borders as possible in order not to lose their effectiveness due to a great range, and that you shouldn't rely on them alone, but keep spawning proper defending creeps when under siege. It’s popcorn time:

Changelog 2016-04-13

Gameplay changes

  • Deployed NPC Invader Raids system.
  • Increased containers decay time from 100 ticks to 500 ticks if the room is owned.
  • Decreased dismantling power from 100 hits to 50 hits returning 0.25 energy units per tick per WORK body part.

API changes

  • Important: the new PathFinder is now activated by default. Call PathFinder.use(false) in the beginning of your script to revert to the old pathfinding.
  • PathFinder.search changes: 
    • If you return false from the roomCallback, the requested room will not be searched, and it won’t count against maxRooms.
    • heuristicWeight option is set to 1.2 by default.
  • Game.map.findRoute method has been completely rewritten. There is now the routeCallback option which can be used to control rooms pathfinding costs (thanks to The_General).
  • Creep.upgradeController now can be used within range of 3 tiles.
  • Added new signature to the RoomPosition.inRangeTo method: inRangeTo(x,y,range).
  • Structure.transfer now can be used even for hostile structures, i.e. you can “steal” resources this way. The ERR_NOT_OWNER code will only be returned if you are not the owner of the target creep, or there is a hostile rampart on top of the structure.
  • Updated runtime script servers to Node.js 5.10.1.

NPC Invader Raids

We have expanded the NPC Invaders system. Now, when the threat counter in a room runs out, there is a 10% chance that you will get not only a lone Invader but a whole company of them, from 2 to 5. Each Invader has its own role: melee attacker, ranged attacker, or healer. Ranged attackers are different from melee ones in their behavior: they try to stay at a distance from your creeps. The function of healers is evidently to heal other raid members. Also, some creeps may be boosted with , , , or . Sometimes the total healing effectiveness of such a raid will surpass the damage from several towers, so defense will prove to be very interesting.

These creeps will stop using rangedMassAttack, so in the majority of cases they won’t pose any threat to your buildings except ramparts and walls. The worst result for you would be the death of all your creeps in a room. Certainly, you should try to avoid this to keep your economy stable.

  RCL < 4 RCL ≥ 4
Melee
Ranged
Healer

 

Screeps World Review: March 2016

Another season is over, and it was full of all things new. Which means you had plenty of room for various interesting strategies, logistics, and CPU optimizing.

In February, the Expansion Rank leader was Hernanduer[25] who set a new world record: 556.6M points per season! It was helped by the fast server ticks, but still an important milestone. But Hernandeur shifted his focus to GCL and lost his Power Rank leadership to AzuraStar[27].

As usual, danny[17] offers us a handy look at ER dynamics to motivate us to improve our parameters:

Currently, players have opened the ¾ of the map generated at this moment. Here is how players’ badges are distributed across the map:

Have a look at how new blood has reinvigorated the map. Usually, beginners have hard time surviving in the center of the map near vetaran players. Well, now you may easily notice that some players spawned in the last season (see map20160212 imageW3N2 and W5N1), namely Regenuluz[7] and avacore[6] not only reached GCL 6 but also used it to the full and now perfectly co-exist in the close proximity of AzuraStar. For example, there is a crossing point in W5N2, while W3S1 is adjacent to “the Pepsiman”.

The novice area W15S5 has been opened and liberated neomatrix[12] who languished there. His total number of rooms (5) makes him the owner not just of this sector but also of the neighboring W15N5 which is also enclosed by 5 rooms. This is also the youngest (by GCL) Page Rank Top member who displays excellent results and keeps progressing with each season.

Have a look at an interesting monotonous scheme of extensions in his rooms. Viewing from the profile, it looks like a caterpillar sits in each room:

In a newly-opened large novice sector E15S15 there are three sure leaders. Skorp[8], eric[6], and fezeral[6] have divided the sector into roughly equal parts after a series of clashes: Skorp ousted eric from the South-East of the sector, while eric transferred a part of his domain to the North and displayed his power on fezeral by completely cleansing his rooms. The latter decided to recover in the same sector and regained control in some of his former rooms.

In the sector W15S25 we must note Zergling[6] who managed to gain complete gain control over a small novice area of 15 rooms.

Dissi[15] keeps practicing his military prowess. He completely destroyed ProbabilityFairy[5] in W7N8 and then crushed half of Rumatah’s[11] rooms. There must have been other attacks too. His thrust against NickDP[3] still lives in our replay memory: screeps.com/s/5fB7eL, screeps.com/s/1G9epa.

The past season may definitely be called the epoch of invaders. Previously in the “Creeps lost” map mode you could see only single incidents, but now the whole map is peppered with casualties. Let’s see how it happens and how players protect themselves:

The emergence of minerals has introduced a major shift into the game. Many players have only recently started mining and collecting them, but some have already mounted serious lab chains working 24/7. For example, W5S17 with Hernanduer or W3S5 with AzuraStar. And Dissi runs terminals with all possible combinations:

In the next review, we will analyze players’ successes in mineral processing and creep boosting. It will also be interesting to watch the general vector of the expansion. Though previously players based their decisions mostly on the arrangement of energy sources, now it makes sense to look for rooms with complete mineral reserves. This can be achieved by harvesting or mutually beneficial exchange with partners.