Changelog 2018-03-05


  • Dev Team



  • Game.market.orders appears to be broken under iso-vm

    for (i in Game.market.orders)console.log (JSON.stringify(i))

    [13:32:36] [shard1] "[object Object]"

    and only contains one of my orders

    More info, I currently have 45 orders across all 3 shard, mixture of BUY / SELL, active / inactive and different resources.



  • @stevetrov said in Changelog 2018-03-05:

    Game.market.orders appears to be broken under iso-vm

    for (i in Game.market.orders)console.log (JSON.stringify(i))

    [13:32:36] [shard1] "[object Object]"

    and only contains one of my orders

    More info, I currently have 45 orders across all 3 shard, mixture of BUY / SELL, active / inactive and different resources.

    Also experiencing issue with Game.market.orders. I currently have 27 orders only on shard 1. New orders created in the iso-vm work fine, but all other orders can't be accessed. Switching back to shared-vm fixes the problem.


  • YP

    Tombstones don't render in the old SVG renderer



  • Amazing update. Haven't played in a while but reading that makes me itch for it again 🙂

    Creep.name and StructureSpawn.name properties can now be accessed by other players.

    I'm curious what the reasoning behind this change is. any insight?



  • I switched to IVM this morning, and I get an error after the tick completes. My creeps still run, and my grafana still shows stats, so my tick processing and the Memory stringify is complete. Below is the error:

    Error: Could not find an object with ID 5a9d6d80fdab382d1d4952e9
        at data (:36351:19)
        at Object.get [as my] (eval at exports.defineGameObjectProperties (:1121:9), :6:56)
        at Object.exports.defineGameObjectProperties.obj.toJSON (:1140:29)
        at JSON.stringify ()
        at global._init.global._start (:29412:45)
        at ()
        at make (/opt/engine/dist/core/runtime/make.js:243:31)
    

  • Dev Team

    @SteveTrov @Kenji Game.market.orders should be fixed now, thanks for reporting.

    @Subodai SVG renderer is considered legacy and not supported anymore.

    @Amadox It's always nice to see some familiar faces again! Names are now public for the sake of consistency, see here: https://screeps.com/forum/topic/48/major-client-side-information-leakage

    @SemperRabbit Do you have any clues what that object with ID 5a9d6d80fdab382d1d4952e9 is about?



  • The default object serializer that use to return something like [Object object] is now printing undefined, which is very confusing.


  • Dev Team

    @warinternal Yes, it's a known issue, Marcel is working on it. One possible workaround is to use ""+myObject in the console instead of myObject.



  • @artch i have no clue what that ID went to. Whenever I tried a Game.getObjectById() for it, it returned undefined instead of null, but it seems to have resolved itself. whatever yall did, thank you 🙂



  • @warinternal said in Changelog 2018-03-05:

    The default object serializer that use to return something like [Object object] is now printing undefined, which is very confusing.

    a hack around that would be defining Object.prototype.toString = ()=>"[Object object]";. Just one option to get it working again if your code was expecting that...


  • Dev Team

    Update:

    • Fixed an issue with undefined console output.

    • "Reset storms" now shouldn't affect isolated-vm users in any way, neither by resetting their VMs nor by giving bonus CPU.

    • Heap memory limit now varies depending on the shard's terrain shared buffer size:

      • shard0 - 355 MB
      • shard1 - 292 MB
      • shard2 - 292 MB

    New npm packages published: 2.13.0 and 3.0.0-beta.5.

    ðŸĪ˜ðŸĪŠ


  • @artch said in Changelog 2018-03-05:

    @SteveTrov @Kenji Game.market.orders should be fixed now, thanks for reporting.

    I can confirm this issue appears to be fixed for me.



  • This may help some folks. Seems to be a common question on Slack asking how to figure out actual usage.

    if (typeof Game.cpu.getHeapStatistics === "function") {
    	let heapStats = Game.cpu.getHeapStatistics();
    	let heapPercent = Math.round(((heapStats.total_heap_size + heapStats.externally_allocated_size) / heapStats.heap_size_limit) * 100);
    	console.log("heap usage:",Math.round((heapStats.total_heap_size)/1048576),"MB +",Math.round((heapStats.externally_allocated_size)/1048576),"MB of",Math.round(heapStats.heap_size_limit/1048576),"MB (",heapPercent,"% )");
    }
    👍


  • I think I have found a few bugs relating to tombstones and caravans

    • The creep lost stats now seem to include a lot of creeps that have died of natural causes. IIRC these stats used to show creeps lost in combat. From looking at replays for the last hour I have confirmed that the stats include some creeps that timed out.
    • The caravan haulers now drop tombstones instead of containers and those tombstones have a much shorter TTL than the containers did. Was this intended?
    • Caravans are still getting stuck https://screeps.com/a/#!/history/shard1/E0S20?t=6618000

    And one Iso-vm bug

    • At 30 minutes past the hour or just after I get Script execution timed out ungracefully, restarting virtual machine errors nearly every hour I am on ISO-vm.

    Despite these issues, the new release is looking really good.



  • Update about caravans and tombstones.

    https://screeps.com/a/#!/history/shard1/W10S19?t=6637767

    Caravans drop containers when damaged, but when the creeps are destroyed their loot goes into a tombstone that has ttl of 250 opposed to the containers 5000 ticks.



  • Game.market.orders-limits seem to be broken. There are much too much active orders. Dont know if you already fixed the boundary, I haven`t tried it myself. But currently Im looking at: Object.keys(Game.market.getAllOrders({roomName:"E9S69"})).length => 142 on Shard0 (and that is not the only broken limit)

    No wonder Game.market.getAllOrders based trading code has become so slow.

    Edit: just one hour later: Object.keys(Game.market.getAllOrders()).length dropped from 4800 to 771 (on Shard0).. what gives a much better trading performance.. this gives a much better trading code performance.. 🙂



  • So it turns out I had 4027 open orders on shard0, which seems to have been the primary contributor to slow getAllOrders performance. I've deleted them all and things seem to have returned to normal. There must've been a period of about 600 ticks where Game.market.orders was empty for both my code and the server, which both prompted and allowed me to create so many orders.

    ðŸ˜ĩ

  • YP

    just wanted to thank you guys for work on the ivm 🙂 it's really working great and a huge lift of the experience.

    alt text

    I was (particulary since the node 8 update) literally getting hundrets of hard reset mails every day... and they are all gone now. I only had a very small percentage of those high cpu ticks, and they are all gone with ivm.

    alt text

    I switched to lvm this morning... and cpu usage looks really smooth now... I hope it also has a nice advantage on backend site for you guys.

    alt text


  • Culture

    I also want to say: Thank you! CPU usage is much more stable and predictable, hopefully this is also helping server side too. Looking forward to being able to push it up to S+ once it leaves beta 😄

    👍