I think the Dev's are targeting a tick duration of 5 seconds. So 11 was quite bad, likely a something went wrong. I think the devs are kinda best effort on fixing these. They'll usually poke / restart or whatever during their workday but otherwise a server might remain quite bad for a day or more on a weekend.
deft-code
@deft-code
Posts made by deft-code
-
RE: Shard3 avg tick duration increased in a sudden.
-
RE: An intersting gamemode idea...
Here is my off the cuff design of how to add market data into Sim.
- Use #client-abuse to inject javascript into the browser client.
- The user screeps code creates two functions:
abuseclientmarket
andingestmarket
. - The human loads their screeps script up in the Sim and executes
abuseclientmarket
in the web client console. - The injected javascript "borrows" the browser's credentials of the browser to query to the market REST api.
- The injected script then creates a web client console command to
ingestmarket
with the JSON data from the market. ingestmarket
uses the JSON data to create an api compatible fake of the realGame.market
api.- The fake market updates / removes orders etc as the user interacts with the fake api.
This could also be done offline without #client-abuse. Scrape the market REST api into a JSON string. Then paste that string into your screeps code. Then whenever you want to play with the market call
injestmarket
. The market data will be as stale as your last scrape.A key limitation is that there is no way for the Sim to affect the real Screeps World market in any way. The Sim is just getting a local copy.
-
RE: How to get ghodium?
Use your labs to combine
Z
,K
,U
, andL
. The result is Ghodium. https://docs.screeps.com/resources.html#Creep-boosts -
RE: An intersting gamemode idea...
Ask in the #client-abuse channels. I think there is a shared repo somewhere.
The high level idea is that
console.log
logs directly into the DOM. So if you log a<script>alert("hello world")</script>
your browser will pop up an alert. From there #client-abuse has figured out how to get the browser and your screeps code to communicate back an forth. -
RE: An intersting gamemode idea...
The browser only driver is not opensource. I don't think the dev's want to opensource it either. But there nothing stopping anyone from writing an in browser driver.
That driver would then need to connect to the actual market apis and download the info needed to "sync" with Screeps-World. There have been similar-ish efforts in the past to create sim that could be pointed at an existing room and copy everything there.
If you're willing to go a little more crazy, there might be a way use the existing in-browser sim with #client-abuse and slurp the needed market in. But #client-abuse is inherently fragile, I wouldn't recommend it long term.
-
RE: Healer not finding creeps?
@key2130 Yeah that's the correct error code I got it wrong. (updating the original).
-
RE: Healer not finding creeps?
Game.MY_CREEPS
looks like a bug.Further you need to check if the creep to heal is in range.
var ret = creep.heal(damagedCreeps[0]); if(ret === ERR_NOT_IN_RANGE) { creep.moveTo(damagedCreeps[0]); } else if( ret !== OK) { console.log("failed to heal:", damagedCreeps[0], ret); }
-
RE: An intersting gamemode idea...
I think you can do much of that now with a private server on your local machine. The process could be streamlined (at least it was clunky last time I set one up).
Contributing to the GPL, GCL, or trades from ScreepsWorld is a no-go (too easy to cheat). Copying the Screeps-World market info into a private server could be interesting, though.
My final thought about about free players on shard 3. I thought the only limit was 20 CPU, and rooms and power creeps was only matter of grinding up your GCL and GPL?
-
What if mineral compounds had effects when they evaporated.
The idea is straightforward. When a dropped compound evaporates each tick it emits different effects based on its effects as a boost.
UH
Attack all targets within range 1 equivalent to N * ATTACK_POWER / 8UH20
Attack all targets in range equivalent to 2 * N * ATTACK_POWER / 8XUH2O
Attack all targets in range equivalent to 3 * N * ATTACK_POWER / 8 WhereN
is the amount of dropped resources (before evaporating) and / 8 is because the attack is spread around the squircle rather than against a single target.
The other boost chains are similar:
LH
N / 2 * REPAIR_POWER to all structures or N / 2 progress for all constructionSites within range 3LO
N * Heal / 8 within range 1ZH
N * DISMANTLE_POWER / 8 to all structures within range 1.ZO
1 fatigue removed from all creeps within range N.KO
N * rangedMassAttack.UO
N extra harvest power to all creeps.GH
0.3 * N upgradeController.GO
0.3 reduced damage for all creeps in range N.
The next are more subjective
KH
prevents all resources and base compounds from evaporating within range N.KH2O
prevents 1 compounds and below within range N.XKH2O
prevents tier 2 compounds and below within range N.G
All resources in range N evaporate 1 extra.OH
nothing ... yet.ZK
nothing ... yet.UL
nothing ... yet.
Why? Because it would be fun to walk a carry creep full of a careful mixture of resources up to a wall to drop a bomb. Even better it adds variety to creep layouts as CARRY could be useful in offensive situations, e.g. carry some
ZO
to allow a fatigued attacking army to arrive more quickly. Or a healer creep carryingGO
to protect their patient from more damage. I also think it might add to peoples enjoyment as the production of compounds in the lab become a little more perilous (with hilarious failure modes).Some fun numbers for a sense of the impact this would have in battles. 50 WORK parts boosted with
XGH2O
that died at with 1000 life left would drop 200XGH2O
in their tombstone. Assuming that tombstone was not cleaned up that would deal lots of damage to a wall; 200 resources does 200 * 3 * DISMANTLE_POWER / 8 = 375 damage to adjacent buildings each tick. If the compound remains unpicked up it'll do 20100 * 3 dismantles = 376875 damage in total. Against a 3x1 flat wall 1,130,625. Against a corner 1,884,375.A 50 CARRY creep full of
XGH2O
could drop 2500 for 46,8753 dismantle damage per tick or 58,617,187 total. ImpressiveCompare that with the output of the creep had it remained alive; 4 * 50 * 50 * 1000 = 10,000,000.
Some perspective however, is the massive damage is dealt over more than a creeps lifetime and would be trivial pick up and disarm.
Even large pile of
XUH2O
can be disarmed by a carry creep picking it up. The creep might die from theXUH2O
radiation but the resources would then be safely stored in the tombstone.The
KH
boosts functions as a hard counter forG
boosting, whileKH2O
is a hard counter for the lower tier compounds. Tier 3 compounds are uncounterable by either side.A final thought on balance, adding a mechanic where resources can be attacked to decrease the amount without evaporation would also make sense to prevent a defender from being overwhelmed with a flood of tier3 compounds (allowing the attacker to win by purchasing the victory).
-
An interesting idea to use portals instead of terminals.
TL;DR:
Add a new pocket dimension of rooms in each shard. The world is mapped onto terrain layout of those rooms with one shard room per pocket squircle. Regular creep actions are used to conduct trades or terminal transfers. The center portal in each chunk is now permanently connected to portal squircle in the portal rooms. Using the portals is allows predictable long distance travel.
What:
Create a pocket dimension in each shard. The central portals would connect to the pocket dimension instead of each other. Each room in the pocket dimension maps to a full 10x10 chunk in the shard. The terrain walls are placed to mirror which rooms are connected to each other. Each room in the shard maps down to one squircle. Claimed rooms have a rampart placed over them. Rooms with a Terminal have an ephemeral terminal under the rampart preventing access to other players with the usual public / private mode.
Creeps would get new intents to buy or sell from terminals within range. A buy intent is limited to the capacity a creep has and the credits available to the player. The credits are deducted and the resources are withdrawn from the terminal and transferred to the buying creep. Similarly for a sell intent from a creep.
To make getting the central portal in each chunk would raise the bar for terminal and market use. So Terminal can used as a one way warp to the portal room.
Why:
-
Local Combat
It's been long argued that local combat is more fun. It's gotten to the point that the devs are revising the API for the terminal to limit the transfer rate. With the portal dimension blockades are feasible for both terminal transfers and market orders. Further the blockade is dynamic thing where a single lapse on the attacker doesn't completely open Terminal to a flood of resources. Further busting or blitzing a blockade are now options. -
Market piracy
There is very little incentive to get local players to cooperate with resources. It's easier to just use the magic global market. Yet another level of play is to intercept a player market caravans and plunder some resources. -
Performance
The market and terminal are currently global intents and must use the global processor. Avoiding the global processor increases the parallelism and remove once source of slow ticks. -
Long distance hauling
Long distance resource movement is hard and expensive and Terminal beaming is too easy and too efficient. Now players would be able implement long distance hauling as part of using their terminals to share resource between their rooms. Looting the corpse of fallen enemy and just get the resource into the portal dimension and get within range of you your terminals to drop it off.
The 10 rooms is near the maximum influence players will usually allow creeps to wander. 5 is much more typical with 15 being absolute 1500 lifetime limit. Using portal rooms hop in then out extends the range to about 100 rooms. -
Chunk differentiation: Many of the chunks are very uniform. The central chunks are slightly preferred for commoditiy access. The local market effect could also differentiate the chunks, with some having more diverse markets or proximity to pirates or tiggabot.
-
Chunk defense
Players with higher GCL and rooms to spare can use their rooms to secure their local chuck to prevent intruders from portalling in. The ramparts over each claimed room can be used to deny access to chunk portal squircle.
Newer players may also get in on the portal defense as their rampart are indestructible giving them a dominant defense
Random boring details
The portal room doesn't completely solve to the cross room coupling that the global apis cause. However, It does effectively chop it up into many pieces. This can be further improved by making all Terminal intents duplicate into their portal room as well as the players room (duplicated in the runner not the processor). The duplicate intents ensure the view of resources in consistent between the portal terminal and the room terminal with out needing to use the global processor
The pocket dimension should be be "in" the shard. Drawing them in the world is interesting, but they could just as easily be drawn like shard in the UI.
If the pocket dimension stuff works well, it might be an interesting way to update the intershard portals with a pocket shard.
I have not considered whether the environment should be agro or not. I kinda think npc creeps would fit with the rest of the screeps theme. Maybe another incentive to wipe or cores is to keep your portal room clean.
The shards are 20 x 20 chunks so the portal rooms would require 400 new rooms, so 4 chunks worth. I don't know how tight the cpu budget is for a shard but hopefully 400 chunk shard can handle 4 extra chunks. Alternatively it should be possible to fit 4 chunks into one room.
Brief estimate of work to pull this off. This reuses a lot of existing systems, but new stuff will of course be needed.
- new creep buy / sell intent
- new Terminal warp intent (reuse existing portal code so they appear randomly in portal room?)
- new ephemeral terminal structure (reuse graphics)
- vet dual intent idea to avoid the global processor
- implement dual intents for terminal intents.
- script to create a room terrain based off of the chuck.
- double check that rooms with owned structures owned by different users is ok (this doesn't occur anywhere else).
-