Navigation

    forum

    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Users
    • Groups
    1. Home
    2. tynstar
    3. Posts
    • Flag Profile
    • block_user
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Groups
    • Blog

    Posts made by tynstar

    • RE: Player badges are broken in world view (Firefox 59)

      Thanks a lot, @artch!

      I simplified the code a bit more and filed bug 1446634.

      posted in Technical Issues and Bugs
      tynstar
    • RE: Player badges are broken in world view (Firefox 59)

      I would report it to Mozilla, but I can't create an isolated test case for it - as the JS code is minified I cannot simply copy the drawing code, and I couldn't find the result in the DOM either (it's probably drawn on a <canvas> or something). And I can't simply link the page because one would need a Screeps account to view it.

      Any chance you could create a simple, public page that draws a badge the same way (with the black border), @artch? I would use the LOAN badge service, but the error does not appear there.

      posted in Technical Issues and Bugs
      tynstar
    • Player badges are broken in world view (Firefox 59)

      Since I upgraded to Firefox 59 yesterday, the player badges in the world view are rendered incorrectly:

      screenshot showing several player badges with parts of the pattern "bleeding" outside the circle

      As you can see, parts of the badge pattern "bleed" outside the circle.

      This does not happen on other pages such as profile page or account management. It also does not happen in Chrome.

      posted in Technical Issues and Bugs
      tynstar
    • RE: Screeps Discord?

      For me, not having chat archives in Slack is a killer issue. It's really annoying that I can't see what I wrote to someone a few months ago.

      Yes, there is the archive bot, but you can't use it for private channels or direct messages.

      So I vote for Discord.

      Note on invite-only channels: In the Discord model, a group (e.g. an alliance) that previously used a Slack invite-only channel would probably simply create their own server. It's free and - unlike separate slack instances - uses the same user accounts, so you can't mix up people.

      posted in General Discussion
      tynstar
    • Cannot destroy() hostile spawn

      After I respawned on my private server, my old spawns were changed to the owner Screeps. When my code claimed one of these room again and then tried to destroy() the old spawn, I got ERR_NOT_OWNER - however, when I clicked "Destroy this structure" in the UI, the spawn was destroyed. This looks like a bug to me.

      posted in Technical Issues and Bugs
      tynstar
    • RE: Possible issue with getUniqueName

      Same for me.

      posted in Technical Issues and Bugs
      tynstar
    • Attack notifications for NPC invaders are no longer suppressed
      • Which shard is affected?
        • shard0
      • What happened?
        • For the past few weeks, I have repeatedly received notification emails with the following texts:
          • Your rampart #593883b283f4af662b8c7b1b in room E5N83 is under attack!.
          • Your rampart #593943a9ec6b20792b881d30 in room E5N83 is under attack!.
          • Your rampart #5938840921e7fe834c004fee in room E5N83 is under attack!.
        • The replay shows that the attackers are NPC invaders, which previously did not trigger any notifications. IIRC, there even was some changelog or docs entry that said this is intentional.
      • What should have happened?
        • No notification should have been sent as the attackers are NPC invaders.
      • How can we reproduce this?
        • Spawn some invaders and log which notifications are being sent.

      Note that when I uncheck the "Notify me when attacked" option for the rampart in question, I no longer get the notifications.

      posted in Technical Issues and Bugs
      tynstar
    • RE: Optimizations roadmap

      > What if the shards were vertical from each other, and the portals between them went vertically?

      This is a truly great idea! It would make shards (probably called "levels" then) feel more like an intrinsic concept of the game world and less like a workaround for database performance bottleneck. (I still would prefer solving that problem by switching databases, however.)

      posted in News & Announcements
      tynstar
    • RE: Optimizations roadmap

      > This looks pretty much close to how Redis Cluster works. And as far as I understand, Cassandra doesn't have secondary indexes support as well. Does it provide any benefits over Redis then?

      Cassandra does have support for secondary indexes, but using them has a drawback: as secondary indexes are local, queries always have to involve all nodes (see https://pantheon.io/blog/cassandra-scale-problem-secondary-indexes for background), whereas for regular tables (and even materialized views) queries are directed to only a part of your cluster nodes. To my developers and customers, as an alternative I usually recommend using materialized views and/or specialized "lookup tables" which redundantly store data with primary keys optimized for the respective queries. This approach yields best performance for load profiles where data is read more often than it is written (which I guess may be the case for you).

      I'm not too familiar with Redis Cluster. But from what I read (http://bigdataconsultants.blogspot.de/2013/12/difference-between-cassandra-and-redis.html and https://www.quora.com/Which-is-better-Redis-cluster-or-Cassandra) Redis uses a master slave architecture, whereas Cassandra nodes are all equal. I find the latter approach superior as it allows spreading not only read loads, but also writes.

      posted in News & Announcements
      tynstar
    • RE: Optimizations roadmap

      > It looks like Cassandra is a better fit than MongoDB for big data set cases, not for higher read/write throughput.

      Well, but read/write throughput in Cassandra scales linearly if you add more machines. So you don't have the problem of "overhead due to replication" killing the performance benefit of scaling horizontally.

      Without going too much into details, the way Cassandra achieves this is because the partition key allows calculating which node(s) are responsible for the given query, and the driver will only ask these nodes. As a simple example (without duplicating data across nodes for fault tolerance), if I have 5 nodes, each of them will contain one fifth of the data, so only one fifth of queries will be handled by it. Thus, throughput load is spread evenly, and adding more nodes helps improving performance.

      posted in News & Announcements
      tynstar
    • RE: Optimizations roadmap

       

      > Very interesting, have not considered it yet. We’ll make some benchmarks on our dataset and workload profile using it, thanks for the tip.

      You may have to model your data differently than what you're used to to really reap the benefits of Cassandra. Look closely at the way partition keys work. I'm willing to answer questions and give advice on data modelling, no strings attached, NDA is okay if needed.

      posted in News & Announcements
      tynstar
    • RE: Optimizations roadmap

      @Dissi/Artem: have you considered switching to Apache Cassandra? We use it at my company, and I can say this is a database that is built for horizontal scalability from the ground up. Originating at Facebook, it is now used at other very large companies. Citing their homepage:

      Some of the largest production deployments include Apple's, with over 75,000 nodes storing over 10 PB of data, Netflix (2,500 nodes, 420 TB, over 1 trillion requests per day), Chinese search engine Easou (270 nodes, 300 TB, over 800 million requests per day), and eBay (over 100 nodes, 250 TB).

      I can't believe that Cassandra would really have any performance problems with handling all Screeps world data in a single database cluster.

      posted in News & Announcements
      tynstar
    • RE: Move API documentation to Github

      For the record: the new site docs.screeps.com went live today.

      posted in Feature Requests
      tynstar
    • RE: Show Controller Level in room overview
      E68S57 - Lvl6 189K / 3.64M

      Yeah, I would love this! I often visit the Screeps web site just to get these two pieces of information (level and progress).

      posted in Feature Requests
      tynstar
    • Console input length limit

      There seems to be a limit to the length of a line entered in the console. If the line has more than 142* characters, no response of any kind is given.

      This limit makes it hard to enter some data (e.g. lists of allied players) into memory. I realize I could include them in my code or add them at compile time, but I prefer to keep data outside of code.

      I would expect either a larger limit (e.g. 1000 characters) or at least some error message on the console when you hit the limit.

      What's interesting: this only happens in the browser version (Firefox 52.0 on macOS 10.12.3), not in the steam client.

      * the exact number seems to vary depending on the structure of the command, 142 may be off-by-one. You can test values with the code below (equals 142), which will output its total length:

      "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".length+12
      posted in Technical Issues and Bugs
      tynstar
    • RE: Ramparts do not protect structure against dismantle()

      I repeated my test and could not reproduce the issue. Obviously I must have mixed up things the first time 😞

      Thanks for the answer.

      posted in Technical Issues and Bugs
      tynstar
    • RE: Ramparts do not protect structure against dismantle()

      No, I used the simulation to create a tower and a rampart for Player 2, then switched back to myself, created a creep and issued a dismantle() command.

      posted in Technical Issues and Bugs
      tynstar
    • Rampart with 1 hit point absorbs any single attack

      When I have a rampart with 1 hit point and a structure on the same tile, attacking the structure will deal the full amount of damage to the rampart, and no damage to the structure.

      Is this intentional? I would have expected the extra damage to be dealt to the structure instead of being absorbed.

      Essentially, this means that I invest 1 energy to build an extra "shield" that absorbs one hit with 30 to several hundred points of damage (depending on attacker body and boosts). This is very, very cheap, and players finding out about this will probably add such a 1-hitpoint-rampart to each and every structure (towers, spawns, extensions, ...). This may not be cheating, but it's so non-obvious that I consider it bad game design.

      posted in Technical Issues and Bugs
      tynstar
    • Ramparts do not protect structure against dismantle()

      [Update: I mixed up things, everything works as expected. See comments.]

      The docs say that a rampart "defends your creeps and structures on the same tile". So a creep cannot attack() a structure placed on a rampart, but automatically attacks the rampart instead. However, creep.dismantle(structure) does not have that restriction, which is surprising when compared to the sentence quoted above.

      I think this should work the same way: ramparts need to protect structures from dismantling, and dismantle() should automatically target a rampart instead of the targeted structure.

      At the very least, if this difference is kept, it needs to be documented.

      posted in Technical Issues and Bugs
      tynstar
    • RE: During safe mode, Creep.attack() returns ERR_NO_BODYPART

      I haven't tested other harmful methods, but I suspect they all behave the same and should be fixed together with Creep.attack().

      posted in Technical Issues and Bugs
      tynstar