Global Conflicts Overview, Summer 2017

Contributed by o4kapuk

The second global conflict in the world of Screeps spans across multiple alliances in multiple regions with battles in many theatres, just like the first one did. However, this time it is different: instead of a single worldwide battlefield, we saw a number of local conflicts between alliances, each one pursuing their own interests. Though the world was engulfed in flames of war, that set of conflicts was never officially recognized as a World War.

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.

Optimizations roadmap

Game performance in all aspects is an important area of our work. It was not left unnoticed by us that game simulation performance (tick rate) noticeably decreased lately due to the increase of the number of objects and growing complexity of players’ scripts. We understand it can lead to negative sentiment on the subscription-based model, and we won’t tolerate this situation. So in this post, we’ll talk about the three directions we plan to move so as to radically optimize performance.

Read More

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.

Meet our Community Manager

We’d like to introduce a new team member who will be responsible for communication between the
community and the Screeps Team as a Community Manager & Advocate:

Hey everyone, let me introduce myself. My name is Mark Bertels but most of you probably know me as Dissi. I’m 27 years old and I live in The Netherlands. I have been programming for more than 12 years now. I’ve made my hobby into my profession.

I’ve been an active Screeps player for nearly 2 years now and saw that the Screeps team needed a community manager. As I really love the game and community as a whole I did what any member in the community would do; I applied for the position. Today I can tell you that I will be helping the team as a community manager! I will be helping them out in consolidating different opinions in the community on changes. I will also be tracking down bugs and helping with the requests.

As a community manager I also will be voicing your worries and ideas back to the development team.

I’m practically always online on the slack channel, you can ping me there with @dissi if you require my attention or just want to chat a bit!

Hope to see you in-game!
Regards,
Dissi


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

Fleetster uses Screeps to hire developers

Going to another technical interview and want to show your Screeps skills as a proof? Fleetster startup uses Screeps as a key part of their recruitment process. Anna Baumeister explains how Screeps is useful for their business:

We started using Screeps as a means of technical evaluation end of last year. Since then, our business has been thriving and our use of Screeps as a test has become more visible.

In order to understand why we chose your game as a key part of our recruitment process, it’s important to understand a little bit about fleetster. We are a small startup in Munich, Germany, working with the latest JS tech - Node, Ember, React, React-native, TypeScript etc. Our business is lean and our process is agile which means specifications are changing all the time.

Screeps is useful because it throws candidates into an unknown environment where the number of “right” solutions are very numerous. They have to get their bearings and make a pl an of action whilst dealing with unexpected outside interference (other players). We hope you won’t mind our presence in the main game world, but we find the huge scope of the main world helps to further intimidate candidates. We need people who can take on complex challenges head on and realize that most often the solutions are simple and accessible.

— Anna Baumeister, Management Assistant at fleetster

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.