I would write code to harvest these, but it is impossible to test in a reasonable time frame, so I never will.
Posts made by shedletsky
RE: PTR Changelog 2018-08-28
Having a 70% return for energy and 100% return for boosts seems really inelegant to me and is another weird edge case/bit of artifice I need to internalize into my code. Yuck.
Issacar's critique is on the money. You are patching the problem in the wrong place. The real problem is that CARRY is so inefficient.
It would be better to just remove recycling entirely than to introduce magic thresholds for when certain things happen, which is a design crutch. Recycling is already an edge case strategy that, if you are not transporting energy via HEAL parts, really has no use and is it even worth the CPU it costs to invoke.
Capping per part is an even grosser solution. What problem are you even trying to solve? This is only a problem because of the other design kludge introduced when you made RCL 8 rooms cap out on GCL production so the game now has this weird mechanic of temple rooms.
I think we should leave this alone and focus on shipping power creeps instead.
If it really needs to be addressed, the stupid answer is to make HEAL parts cheaper so that CARRY parts are better for transporting energy. The cost of HEAL has no impact on the game at all and could literally be anything.
RE: Draft: Power Creeps API
If power creeps work in rooms without controllers, please consider adding a isPowerEnabled property on the room instead of on the controller.
Also please consider making a better way for me to tell if one of my rooms is being attacked with a power apart from periodically cycling through every single roomObject in every single room I own to check if there is an entry in .effects that I don't expect to be there. For hostile effects, it would be amazing if you told me which player owns the effect.
For instance, maybe there could be a Room.activeEffects property that is an array of all the effects active in a room. Even better would be if it were a hashmap to a list of effects indexed by owner. So Room.activeEffects['shedletsky'] will give me an array of all my active effects.
RE: Power Creeps update
I think the optimal case is that I have a pair of rooms with at least 3 sources total that are adjacent with every source within 100 ticks walking distance to each other (so a level 5 EXTEND_SOURCE PC can make a loop around boosting the sources every 100 ticks when EXTEND_SOURCE is on cooldown)
Instead of mining 1500 * 3 (4500) energy every 300 ticks, I now get 6500 * 3 (19500) energy every 300 ticks from these mines. Let's assume miners/carriers/links/whatever are free and this is pure profit.
That does sound pretty good. This power seems to be worth 50 energy/tick, or (at current rates), .45 credits/tick. If you are displacing remote miners for the same energy, it's definitely more CPU efficient since there is less hauling.
Basically I'm getting ~5 rooms of energy for free.
Now that I have thought some more about it, that seems pretty good. I suspect that most of the other powers do not rise to the .45 credits/tick value threshold.
RE: Power Creeps update
@artch Hmm. What are the benefits of focusing on power level instead of GCL?
GCL has a lot of passive benefits:
- I control more rooms so I get more resources
- I am bigger and harder to wipe out
- I have a lot of control over my spawn density (I can go build closely together in contested areas and spread out more in uncontested areas)
Since a Power-focused empire is harder to manage (since it relies on actively using powers instead of just being large), it seems to me that there should be some kind of payoff if you actually manage to make it work. Also, some of the powers need to help you secure/farm/process power banks, possibly fighting with larger neighbors. It seems like the obvious missing power in this design is OPERATE_POWERSPAWN that makes processing power not require a huge amount of energy that you need high GCL to collect.
It's possible power empires will make more sense once the commander/executor comes out (the one that makes raiding profitable? I forget which it is).
RE: Power Creeps update
Here's my hot take:
DISRUPT_SPAWN - Seems weak, but I say that with low confidence. Probably you have to get level 4 or 5 on this or not bother at all.
DISRUPT_TERMINAL - Obviously powerful
EXTEND_SOURCE - Gives me free energy. Do I need that? I don't understand why it has a high level cap. Seems weak. Possibly cheaper to just sell the ops for credits and buy energy (especially if you consider CPU).
OPERATE_MINERAL - Underwhelming. I'm not tying up a level 23 creep to double the mineral output of one source. Ever. Even at level 5. Economically more efficient to generate ops and sell them with a bunch of smaller PCs.
OPERATE_LAB - Seems pointless. I will never use this. For it to be good, the effect would need to last for enough ticks that I could boost several lab clusters with the same PC. Even then, I do not think the effect would be worth the CPU required to move that PC around to each cluster.
SHIELD - Probably some good tricks you can do with this. Jury is out.
OPERATE_STORAGE - I was pretty excited about this one, mostly for temple rooms. Unlike OPERATE_LAB the effect lasts long enough that I can buff several rooms with the same PC, so it can't be too bad.
OPERATE_SPAWN - Seems weak, especially at low levels. I could see there being some edge case uses around bringing up RCL6 rooms to RCL7 faster. I find that I am almost never spawn-rate limited in Screeps, so this is a solution to a problem I don't have. If the effect lasted longer it would be more useful.
DISRUPT_SOURCE - Utterly pointless. Only useful on attack. Only useful when attacking someone who only has 2-3 rooms (will not effect bigger players who can terminal in resources). Only useful when attacking someone with no credits. Basically it's only useful .00001% of the time and even then it does not unlock any new capability, since I can crush that person anyways. For this to be good, you need to increase the radius of effect to be 3x3 rooms at level 2-3 and 5x5 rooms at level 4-5.
OPERATE_TOWER - Not sure about this one. If I can always scout enough to make sure my operate_tower PC is in whatever room is being attacked, then it seems like it could be good. I think probably most players don't get attacked enough to take this skill over one that provides constant benefit (as opposed to situational). I think if I take the situational skill, it needs to really pay off in that situation. Not sure this rises to that bar.
DISRUPT_TOWER - If it lets me clear RCL8 rooms with unboosted creeps, then this might be worth it. Haven't done the math, so I'm not sure. Otherwise I'd rather generate ops, sell the ops, and buy the T3 boosts I need to crack the room instead, which is a lot less situational. The problem with this is I need to be attacking all the time to get value. In general, I'm not.
OPERATE_OBSERVER - Would like to understand the use case for this. If it would let me scan other shards, then that might be a weird useful edge case. It sounds useless to me and I don't know that I will ever take this. I think it would be more useful if it upgraded my ability to get event-based intel. I.e. my observer raises events when NPCs, invaders, or other players enter my zone of control. This would be a CPU improvement over active scanning. Then I might take it. As designed, I don't think anyone will ever get levels 2-5 in this skill.
OPERATE_EXTENSION - Maybe useful with OPERATE_SPAWN? Otherwise I'm never limited by how fast I can refill my extensions. It's not an exciting skill. For this to be exciting, a single low-level PC would have to be able to replace all of my extension refillers. Then maybe I could save some CPU if I had a bunch of these PCs in a bunch of rooms. Basically, if this is only useful when I'm being attacked, then it's a bad skill. As it is, it's probably more CPU efficient to sell ops, buy energy, and turn off some remote mines if what I want to get is CPU.
OPERATE_TERMINAL - A skill that saves a little energy. That's what no one needs. Even if this made transfers free across any distance, I probably wouldn't take it, although it would at least be useful to some players if that was the case. To take advantage of this skill, I now need to queue up all my future transfers in a way that lets one PC do a circuit around a bunch of cities that want to send materials. Even just the CPU cost of running that PC around doing that is not worth the energy I'm saving, and that is assuming that those transfers exist often enough to get a good duty cycle.
I'm probably only going to use powers that:
- Unlock new capabilities for my empire (i.e. DISRUPT_TERMINAL)
- Can create efficiency constantly (OPERATE_STORAGE?)
I'm probably never going to use powers that:
- Provide marginal or sporadic benefit (ex marginal: OPERATE_LAB. ex sporadic: OPERATE_TOWER)
- On the attack are situational but not significantly superior to regular T3 boosted creeps (lol at DISRUPT_SOURCE)
RE: 10+ second page loads of world map on Shard0
I mean the total amount of time inbetween when I press "reload" on the world map until the point where things like roads and power banks render.
I've played around with it a little bit more, and I think the problem might be that recently I upgraded my monitor to 4K, so I now see 27 x 14 (378 total) rooms on the world map, whereas before I was running at 2560x1600. If I increase my brower's zoom level to 200%, so that less rooms need to load, I get almost instant map loads. This leads me to believe there is a concurrent request throttle happening for room tiles.
RE: Document Pathfinding
Wouldn't hurt if someone wanted to document Game.map.findRoute a bit more though.
Does it always return a path if one exists?
It would also be cool if PathFinder.search had an option to use findRoute first for broadphase, since the 16 max room limit is low for some searches.
Also it would be helpful if PathFinder.search gave me a reason why my path find fails when it returns an incomplete path. Did it hit maxRooms? maxOps? Are there other reasons it can fail?
It doesn't really help that all the information I need to know to successfully path from any A to any B is strewn across 4 different places:
- Game.map.findRoute (seems to always find the room route from A to B )
- PathFinder.search (works for 98% of A to Bs, but that last 2% is a pain and no help in the docs for that)
- CostMatrix (sometimes breaks the above if you don't know what the defaults are)
- Room.findPath (seems to have 98% overlap with PathFinder.search with some extra options. Is it a functional superset of PathFinder.search? Can't tell. Does it matter which room instance I use? Seems like this wants to be a static method like PathFinder.search, since it's not I'm left wondering how that is going to effect my code)
It seems like all this stuff really wants to be in the same place.
RE: Document Pathfinding
Never mind. Found it here.
RE: Document FIND_DROPPED_RESOURCES
I don't understand how this cache works just by looking at it, do you? I don't even understand what "this" is in this context.
@artch Dissi posted a while ago asking about things that are hard when you are starting out playing Screeps. The .find() function is key to doing literally everything and this is the sum total of all the documentation about it:
Yes, I can figure it out for myself with enough time, but if I have to get too into the weeds it starts to feel more like work and less like I'm playing a game. Even just adding some hyperlinks to those FIND_* constants and the possible return types I'm sure would help a lot of people who are trying to get started.
RE: Document FIND_DROPPED_RESOURCES
Yes, that link goes to the lodash examples for filter, which I have to consult constantly when I'm coding screeps, partly because the 3 provided examples in the wiki don't cover every case.
Having a polymorphic .find() that returns a different type depending on a constant you pass in is very odd (if you program in other languages). It's worse because it does no validation on the input and doesn't give helpful errors when you invoke it incorrectly (it fails silently, which, if you program in other languages is also odd). The article in the wiki doesn't even link to the return types that it can spit out (for example, the Resource object in the case of FIND_DROPPED_RESOURCES). Boo urns.
On top of that, it is fairly opaque to me what, if any, caching .find does and the docs don't talk at all about that. Is it worth putting my own cache in front of it? I have no idea. What kind of .finds are cached or fast? Which ones are slow? I have to imagine that depending on the FIND_CONST you pass in, it is very different.