#Screeps Sandbox

1 messages · Page 4 of 1

kind trench
#

ok now your defender bugged again

sullen condor
#

Hmm. Can you at least not make a hole?

#

A hole will cause all stop

kind trench
#

ok started moving

sullen condor
#

I''ll be at home in 15 minutes

kind trench
#

i think it might be related to when you spawn a defender

#

when new one popped out, they started to move i think

sullen condor
#

Oh

kind trench
#

yup, looks like it's that

sullen condor
#

Oh yeah. Seems like spawning is problem

#

Hmm. Don't have energy now

kind trench
#

rcl7 is sitting on 100k

#

also no worries

sullen condor
#

Wonder why that room don't be funneled

#

I think I found the bug for spawning

#

Now time to debug funnel

#

Hmm... It will be better to send energy that room in this situation? That can make my bot completely drained(if this situation was real)

#

Past me coded like, "help other rooms if you have enough"

#

And 100k is not enough for rcl7

kind trench
#

i'd send if not on safe-mode cooldown

#

or if you can outrepair attackers

sullen condor
#

Is your quad movement auto? Or flagged

#

Now defender is working even when it's spawning something

kind trench
#

flagged

#

surprised you send miners/haulers while sieged

sullen condor
#

I'm surprised too

#

I thought I blocked them

kind trench
#

ye, so only if it's near hostile i guess

sullen condor
#

No I completely blocked...

#

in my head

#

lol

kind trench
#

that's how it looks from my side

#

blue-path being one to wipe spawn

sullen condor
#

I got it

#

My bot just let miners and haulers to keep mining/hauling things, just do not spawn new ones if they die

sullen condor
#

Ah path of texts

#

Who's your anchor?

#

Bottom left?

kind trench
#

top-right

sullen condor
#

Will your bot prefer blue over purple?

kind trench
#

yes

sullen condor
#

How?

kind trench
#

that's what pathfinder outputs

#

let me move quad back there

sullen condor
kind trench
#

now a bit less optimal

sullen condor
#

Two path has same costs

kind trench
#

ye, but more ramparts to go through

sullen condor
#

OK. I just wonder if there is some nice way to consider that

#

I wrote code to consider that which uses 30.0 + CPU for one pathFinding

#

😅

#

So I gave up

#

Looks like my room drained again

kind trench
#

i mean i dont know why it would do the bottom-right to make a V

sullen condor
#

Hmm It was just theoratical example

sullen condor
kind trench
#

not much

#

anchor is top-right, so no additional ramparts need to be destroye

#

so just the diagonal would need to be improved, but since it repaths every tick it'll self-fix after breaching

sullen condor
#

I experienced some edge cases like this

#

Blue square is ramparts, red square is quad. Sry for bad drawing

#

Which cannot be fixed after destroying left-bottom 2 ramparts

kind trench
#

hm

#

btw not sure what happened in E9N6 because in theory my bot should not go anywhere beyond flag

#

and i see some stuff got destroyed inside

#

yup, not my creeps did that i think

#

also, labs are doing boost in it

sullen condor
#

Your creeps did not destory ramparts?

kind trench
#

they did

#

but they stayed on their position

#

(as in at-flag)

sullen condor
#

Yeah. Not sure how I wrote code for that situation

#

Maybe... "I am screwed. Whatever!"?

kind trench
#

like "wreck own structuresby own creeps" thing ?

sullen condor
#

Is it attacking its own structures?

kind trench
#

no defenders so idk

sullen condor
#

hmm yeah

#

honestly didn't think nor write any code for after break

#

except for activating safemode

#

Building ramparts again would be helpful I guess

kind trench
#

i still have quad parked there

#

also room rebuild logic is not best

#

E11N4 still struggling after wipe 12h ago

#

not sending rebuilders/helpers from other room ?

sullen condor
#

Yeah I saw that and fixed it. Since there was link around source, that bot thought it doesn't need hauler😅

#

It should be rebuilding rn

kind trench
#

what's happening in E13N5 with combat creeps ?

sullen condor
#

Wdym?

#

Hmm. Err code tells me that my Memory has circular structure

#

Hmm weird. Can't understand what happened.

kind trench
#

rcl7 bit early for tackling t5 stronghold, and dunno where else this combat creeps would go

sullen condor
#

Maybe just for invaders in SK rooms?

kind trench
#

just hanging around in own room then :p

sullen condor
#

I guess they completed their job and there's nothing left to do

kind trench
#

nope, SK defenders are there :p

#

also quite some things seems to be bricked (some miners in rcl6 rooms not mining despite source having energy etc)

sullen condor
kind trench
#

btw can you not upgrade controller in E9N6 ?

#

testing against rcl6 is cheaper than against rcl7 :p

sullen condor
kind trench
#

it will still spawn creeps big enough to outheal

#

also point is to test your defense

sullen condor
#

Hmm I see. I'll try to block that when I get up

kind trench
#

how do you decide which rampart to repair ?
blue-highlighted is lowest one

sullen condor
kind trench
#

1st repairer went to the one on screenshot, 2nd directly to blue one

#

my quad was attacking the 1st one few ticks earlier though

sullen condor
kind trench
#

ok should be 3 quads soon coming to E9N6

kind trench
#

oh god, wtf

[17:49:20]
Siege for E9N2 active
[17:49:20]
E8N4-8581 spawning [4/4] creep {"tough":0,"heal":1,"move":10,"ranged":39,"boosts":["XLHO2","XZHO2","XKHO2"],"attack":0,"work":0} 
kind trench
#

@sullen condor~~ something strange happening in E9N6~~ nvm that are not defenders but Name: a_-y9ck53

#

could reuse them though

sullen condor
kind trench
#

took me a while to block off exits too close to ramparts

sullen condor
kind trench
#

Yes, to big risk (for my code at the moment at least) to bump into active defender

#

Also escaping from such area is tricky, since it causes quad to traverse room edge thus opening it to towers due to half-heal every-other tick

sullen condor
#

That's true. My quads die a lot there. If that room gets rcl6 and mine some minerals, I'll be able to make some boosts. Are my defenders boosted?

kind trench
#

They were in other rooms i attacked few days ago

kind trench
#

i think you overcommit on repairers

#

for quad {"tough":0,"heal":7,"move":3,"ranged":5,"boosts":["XLHO2","XZHO2","XKHO2"],"attack":0,"work":0} you pop-out 9 8W17C13M repairers

#

that's 7.2k repair/tick

kind trench
#

and your defenders have bit problem of priority / multi targets

#

oki they split, after quite-some ticks, just to come back again to focus on 1 quad

pallid totem
#

It's been a while since I've seen this server, how's your bot doing @sullen condor

sullen condor
pallid totem
#

Nice!

#

I think mine is just, existing

sullen condor
#

I think my bot will be able to spawn boosted quad in few days

#

I'm on the travel now for 2 weeks

sullen condor
sullen condor
kind trench
#

hard to say, because my step-off logic broke somewhere along changes so 2-quad situation was not that long to validate it

#

i think when there are 2 defenders 1 will bounce between quads before 3rd one is spawned

cerulean wadi
#

cries in not even having working duo code at the moment

kind trench
#

quads work even good, but half the time they got stuck in my own room when trying to form a snake 🙈

scarlet fossil
#

@sullen condor tf are you doing there 🤣

sullen condor
#

Raising a new room 🙂

scarlet fossil
#

Yeah, I can see that

#

In the middle of the swarm, you madman

sullen condor
#

tbh, I couldn't expect my bot would claim that room

scarlet fossil
sullen condor
#

I thought you talking about this

scarlet fossil
#

Oh yeah, I've just seen it

sullen condor
#

lol

#

It seems that my bot loves you

scarlet fossil
#

Was like "what in the… is that remote" and it's not actually a remote

sullen condor
#

We were... good, you know

scarlet fossil
#

I feel stepped on

sullen condor
#

I feel like I should work on my bot's room selection logic

scarlet fossil
#

And baffled that it's still throwing silly creeps at it, and not even tried to claim it back

sullen condor
#

It's really really bad

scarlet fossil
#

A bit aggressive, I'd say 🤣

sullen condor
#

Tbh, I manually picked every room in season 7

#

And picking rooms myself at mmo too

#

Just didn't care much about sandbox... and look what my stupid bot did

scarlet fossil
#

That tower placement tho

#

I should get Grafana going on that one, just so I can see if that has any effect on the global health…

#

Doesn't look like it really made a dent in energy stores, but I'm not exactly tracking the numbers

#

I realize I don't even have a working counter-siege directive for that :/

polar path
scarlet fossil
#

uwu!

#

Such a mess…

sullen condor
#

LOL

scarlet fossil
#

Still, I broke the quad code so much I spawned like… 30 fully boosted quad, but couldn't assemble them. Now I'm just waving around the biggest blob of boosted stuff like a monkey to make them actually work

sullen condor
#

Wonder how my bot would react to them - I have no idea

scarlet fossil
#

I don't think it really had a chance to do much

#

That's like 24 creeps stampeding in the room at once

sullen condor
#

It will be better to give up but I'm not sure they will

scarlet fossil
#

I found bugs in the controller attack code, so I didn't follow really closely the 🔥

#

I lost 2 fully boosted zerglings and 2 healers to a source keeper facepalm

scarlet fossil
#

Oddly, it's ignoring all that tasty energy, too

#

Not focusing on the spawn as well

sullen condor
#

Yeah, my bootstrap code is... meh

scarlet fossil
#

Not that my attack code is doing any better

#

I have no idea why it decided that this miner, all the way on the other side, was the first creep that shall die

#

Hello? There's a blinky to take out, boys

#

@kind trench Poor reserver 🥲

#

Now it's stacking units in the highway, waiting for its time. I like that, that's scary~

scarlet fossil
sullen condor
#

Lol

#

How it went

scarlet fossil
#

They attacked!

#

Took them sooo long

#

Sooo bad at combat facepalm

#

I keep noticing small mistakes. Creep low on hitpoint, heals, but doesn't step out onto an exit tile nearby, dies on it next tick

#

Creep tries to kite north. Into a wall, three ticks in a row. Gets blasted, and dies

sullen condor
#

I want to revisit my claim logic

#

It's hard to test something in sandbox since it doesn't have history though

scarlet fossil
#

I could try reenabling the mod, but I'm afraid it might break again

sullen condor
#

Cause is unknown?

scarlet fossil
#

I think, since it's collecting about 200-300 ticks worth of room events, then dumping them to storage every 100 ticks, that causes the server heap usage to balloon up until the GC freaks out and dies

#

That's my theory at the moment, I haven't exactly looked any closer, but given disabling it made the crash go away, and there's more and more rooms active across the map, that's what brought it to its knees

#

It fled for some reason 🤔

#

I think it's the boosted pair I sent?

#

@sullen condor What does 🎧 mean?

sullen condor
#

Yea right

#

That means they lost their job and chilling

#

It will give up the room in 6k tick I guess

#

Hmm. I guess I should put more fail check

scarlet fossil
#

Got it

sullen condor
#

I made a change so my bot will think it failed if a room is unclaimed

bitter lava
# sullen condor

for this one event you need a specialised creep just to take that energy

kind trench
scarlet fossil
kind trench
#

hum i love pathing creativity

sullen condor
#

Maybe your quad wanted to clear my remotes before siege

kind trench
#

nah

#

at least i know that repath works correctly 🤣

scarlet fossil
#

Opinions on providing infinite-CPU-as-a-Service to people who wanna run the profiler on their big empire? The plan would be that if someone asks, I give them like 10000 CPU, they can run with the profiler active for a few 10/100/1000s ticks, then I set them back to the default value and the get to have pretty flamegraph of what their bot is doing.

#

(mostly because I'm at 8 colonies, 218 creeps, and I consistently eat 100 CPU)

#

But I'm thinking it'd be really useful for sandbox purposes, too

polar path
#

I think that idea fits well with being a sandbox server for testing stuff.

scarlet fossil
#

I think it does. That's how I generally look at stuff. My main worry is that I'm not sure how the server reacts to a 10000 CPU player when there's more than one around (also, the server itself).

kind trench
#

the fixed 100cpu serves as a limit for how big a player can grow

#

players can still do the 500 cpu burst for debugging/running their planner/running really cpu-hungry code

#

so imo temporarily enhancing bucket to idk 100k would be better

scarlet fossil
#

Hmm… Not sure I can change the bucket size like that tho. Especially not accurately. I suspect it's a constant somewhere, and updating it would just change everyone's

kind trench
#

because just allowing for Xcpu more will make ppl to just "do-more" without improving their code to account for CPU limits

#

and most ppl cpu-bound already knows what their bot is burning cpu-wise :p

#

and giving them more cpu wont change much

scarlet fossil
#

Well the idea is to give me a time: "I want to profile for… say 30 minutes". It's definitely supposed to be temporary, for debugging purposes

kind trench
#

why need for extra cpu then 🤔 ?

#

i profile 24/7

scarlet fossil
#

Because the profiler itself is a lot of overhead (At least the screeps-profiler one)

kind trench
#

not on my machine in my bot

polar path
#

Depends how extensive the profiler is.

scarlet fossil
#

I'll let that simmer a bit, see what people think then

#

It's likely the server is gonna go through a bunch of pauses/reboots. I'm gonna re-enable the history mod and try to make it not crash

#

Eeep. A 6Gb SQLite database

kind trench
#

ye, i'm aware that ppl have the "big" one that counts all functions calls and their timings

scarlet fossil
#

@bitter lava You're crash-looping, for some reason

bitter lava
#

??

#

everything seems fine

#

except for the occasional tick skip

scarlet fossil
#

Really? Hmm…

#

Oh, yeah, it's not every tick

#

But it's… really often

kind trench
#

reset or something broke

#

?

scarlet fossil
#

I'm re-enabling history

kind trench
#

ah ok, because i'm getting anxious when i push code and server stops doing stuff in similar timeframe

scarlet fossil
#

Is going again

#

…and crash :/

kind trench
#

works on my steamless-client though

scarlet fossil
#

[historyWorker] Saved 735 rooms

#

Lowered it to 20 per chunk, and it sneaked through

#

[backend] invalid room

#

Filed under "Weird stuff the server whispers to you"

#

Seems to be going though

scarlet fossil
#

Just added batteries to the market 'cause I forgot to set a price on those

scarlet fossil
#

@slender compass Why the face claim?

#

You really want me to look at OM's combat code, is that it? 😅

slender compass
#

uhh, it seems my auto expansion is underweighting being close to other claims, gotta take a look at that, my bad!

scarlet fossil
slender compass
#

oh wow, i just saw the room
how did it ever think that was a good idea

scarlet fossil
#

¯_(ツ)_/¯

#

I mean… I had absolutely 0 reaction to that

#

Which is like… something, I guess

#

…not even sure why that's a changeling there :/

sullen condor
#

My bot did the same thing to gadjung

scarlet fossil
sullen condor
#

Bit over-reacted

sullen condor
slender compass
scarlet fossil
#

yeah, I'm searching for the safemore reason

#

Pretty sure an invader crops up

#

And then that's taken as an aggression

sullen condor
#

It's very good to have history in sandbox

#

Great Thanks

scarlet fossil
slender compass
scarlet fossil
scarlet fossil
#

Possibly interpreted as a blocked source, and decided to take it out, but IIRC it's just doing a path back to the colony and dismantling anything that's in the way, and that's isn't really in the way

#

Love how the energy pile keeps growing lol. 4.2K

slender compass
#

and my bot doesn't know how to pick it up either..

#

im really surprised at how peaceful it has been

scarlet fossil
#

yeah, it's like 7551974 - 7507326 => 44648 ticks of haulers just chugging along in the middle of an "hostile" room

#

Not sure why it's still sending in drones though. They can't harvest, that should have triggered suspension of both of them

slender compass
#

the whole extension thing caused a tower to never be built at RCL 3
and that probably makes this a pretty safe room to travel through

scarlet fossil
#

Safemode goes down

#

So I'm guessing invaders popped up in the next room over

#

That's like… crazy

#

A safemode because of a heal 🤣

#

Maybe not, actually. I have a damaged drone that just wandered really close to the controller

sullen condor
#

But timing is weird.

#

Maybe drone(which can dismantle your spawn) get in range 3 to his spawn?

slender compass
scarlet fossil
#

I guess

#

Though it's damaged, so it can't really do much

sullen condor
#

Yeah. But that's fair enough safemode pop up situation

#

No defender, no tower, dismantler close to spawn

scarlet fossil
#

On top of my creep 🤣

slender compass
#

that is a very unique sight
this whole room/scenario is a mess

scarlet fossil
#

That was a fun watch indeed

slender compass
#

very much so

#

does it break pathing for the hauler because of the extension?

scarlet fossil
#

looks like it?

#

Not sure if it's a bug on my end or a creep is actually stuck when that happens…

slender compass
#

it just doesn't know what to do

scarlet fossil
#

lol, it got pushed

#

I'm gonna have such a hard time getting that room back lol

slender compass
#

i doubt it, my tower code is very dumb and there is no active defence
a single boosted blinky could probably take it back

#

i feel like there hasn't been a single time lately where i look at my bot and i do not find more bugs to fix...

scarlet fossil
#

Yeah, that's a pretty common occurrence here as well. I just try and take notes when I notice something really silly

#

Now I now I'm missing some detection check for that sort of thing happening

#

Like, a peaceful takeover

scarlet fossil
#

Tower up. I'm lucky it didn't start blasting at my useless drones

slender compass
#

it might once safe mode runs out, i forgot what condition i gave it to attack non-combat creeps

scarlet fossil
#

Oh, true, forgot about the safemode facepalm

#

Taught it to drop mines when the outpost is gone

#

Though I'm not sure how I feel about that cut-out room now…

#

An interesting conundrum 😅

slender compass
#

indeed

cerulean wadi
#

All these steamless links, I really need to figure out why I can't get my container to run

kind trench
#

dont need container for steamless

#

just clone repo and do node .\dist\clientApp.js (after npm install and whatever the build command is ofc)

scarlet fossil
#

or npx screepers-steamless-client

cerulean wadi
#

Ya but docker just makes it so much cleaner 🫠

scarlet fossil
#

dunno, that feels like a lot of things unnecessarily involved 😅

scarlet fossil
#

Okay, taught it to drop remotes if for some reason they end up disconnected

cerulean wadi
#

welp finally mining power again on sandbox.. didn't realize I had completely removed storing power bank info in my intel cache refactor

scarlet fossil
#

I think it's trying to path to the creeps bottom left, but that takes it out of the room and it's not supposed to do that facepalm

#

Just takes it

#

lol, it only died because the next generation came through, and that one then freaked out on the edge

#

And then fails to unclaim, so a colonize gets dropped facepalm

#

Manually cancelled that, then fixed a bug I just created when I added code to enforce there's no non-mine room blocking outpost reachability (that room to the right was dropped because of that)

slender compass
scarlet fossil
#

That is a bit odd, but tbh, I had my fair share of odd things to look at from that little kerfuffle

slender compass
#

Was definitely great for some bug hunting, alot of things broke or where just behaving weirdly

#

I should totally tell it to face claim again and find more bugs 🙃

slender compass
scarlet fossil
bitter lava
#

likely cause is it cannot get enough energy

scarlet fossil
#

okay then ^^

slender compass
# scarlet fossil Taught it to drop mines when the outpost is gone

well, im now having the exact same issue on MMO and its breaking the entire room!
since now all source paths go through a hostile room, therefore no sources can be mined..
i should have learned from your bugs and not make the same mistakes!

time to go fix it aswell...

scarlet fossil
#

Hmm, that is an odd case of karma…

scarlet fossil
#

Like, every time it "rebuilds" (happens every 20 ticks, IIRC, or on request), it'll compare the list of outposts a colony has with the list it had (from memory). If there are any that are "lost", it'll run that structure check, pathing from the main room over to all outposts, with a findRoute callback that fails if the room it's pathing in is blocked, or if it's straying too far from an outpost. And outpost managers themselves will deactivate and clean up if they're in a room that doesn't appear in their colony's outpost list (now updated)

slender compass
#

i fixed it now by adjusting the distance map calculating to assume hostile remotes/claims are fully walled off
now it just wants to walk across the edge, but thats totally fineee, i needed to fix edges anyway

slender compass
scarlet fossil
#

Ah, yeah, if you have hard-cached paths that would be a bit different. I do soft-caching, the nuance being that it's never explicit; any pathing request gets cached, and reused if someone else pathes from the same A to B (hard-caching would be saving the path somewhere and just handing it out as needed).

The moment the outpost drops, anything in it will stop processing anyway, so there's no pathing happening anymore (maybe haulers, if they were on the way, but then the manager requesting pick up is gone anyway so I'd lose a couple)

slender compass
#

hard-cached / soft-cached? whats the difference?

#

soft-cached being timed and hard cached being an event that invalidates it?

scarlet fossil
#

Some people put the path on… say the source itself and use that anytime they need to go to/from it

#

(I'm just coming up with those names)

scarlet fossil
slender compass
#

ahh, i see, makes sense!
currently im only building roads on the planned paths and using it for harvester spawning and hauler assignment
actual movement is still based of path finding and its eating its fair share of cpu that i should really fix sometime soon...

scarlet fossil
#

…actually, I'm wrong. I don't cache paths. I cache distances. There's a few commented leftovers of a time where OM did actual path-caching, but I've been meaning to check out what has gone missing and maybe bring that back.

slender compass
#

so pathing back to the storage involves doing some lookups in a distance map for example?

scarlet fossil
#

Not even. It's just using the pathing library, which doesn't cache those. But if you ask for a distance that will get computed (generating a path) and then cached for a while.

slender compass
#

interesting!

scarlet fossil
#

That .findPath call is the main one, and that doesn't cache.

slender compass
#

wow, i see

#

is that distance function used all over the place?

scarlet fossil
#

Almost. I have a few places that need a few different distances (with or without terrain, with or without accounting for a creep's carry/fatigue)

#

Think knowing when a deposit miner should head back so it has some hope at not dying on the way back

#

But that gets cached into the deposit manager

slender compass
#

probabilistic clearing.. thats new for me
is it just randomly clearing a couple cached values every now and then based on the bucket?

scarlet fossil
#

I was a bit baffled by that, but I guess I can live with it 😅

slender compass
scarlet fossil
#

There's the commented full path version just below

slender compass
#

thats pretty cool, i already know quite a few places in my code that could benefit from something like this

scarlet fossil
#

Movement, Pathing and MatrixLib are files I spent quite some time in, fixing a few oddball issues

#

Mostly around portal handling, IIRC, but a couple of cleanups as well

#

(IIRC that's a heavily modified Traveler)

slender compass
#

recently i've been working on my own pathfinder, still gotta figure out better heuristics in a practical way to optimize it even more
#pathfinding message

for portal pathing i've already got everything pretty much covered, even doing crazy intershard shard0 fast travel 😄 (although that mess of code definitely needs some much needed optimizations and cleanup)

scarlet fossil
#

I haven't finished my intersharding code. I stole some idea from someone else in the fork network who had some basic stuff, but integrated it so that it's generic given OM's management system.

#

Got stuck on how to properly handle InterShardMemory exchange tho, and last time I enabled it, it filled up its memory and broke

slender compass
#

what is the InterShardMemory exchange supposed to do?

#

intershard code was for me one of the most fun things to work on, very similar challenges to making peer to peer applications imo

scarlet fossil
#

Looks like that at the moment: ```ts

const enum InterShardPacketType {
HEARTBEAT = "hb",
CREEP_MEMORY = "cm",
PUBLISH_DIRECTIVE = "pd",
UNPUBLISH_DIRECTIVE = "ud",
CREEP_REPORT = "cr",
}

/* snip the actual packets */

interface InterShardMemory {
[peer: string]: InterShardMemoryContents;
}

interface InterShardMemoryContents {
packets: InterShardPacket[];
acks: { [packetId: string]: number };
time?: number;
}

#

(with a bunch of different "packet" types)

slender compass
#

ahhh, packets!

#

one simplification i made for packet handling is that the ack can simply be "i received all packets send before tick X from shard Y"

#

even handles acks of acks nicely if you wanna go crazy (:

scarlet fossil
#

Yeah, I considered doing that, but then I'd have stalls because of the creep memory being out of sync

slender compass
#

mhh?

scarlet fossil
#

Like, I can't ack those before the creep has showed up on the other side

slender compass
#

ohh, thats a interesting one

#

i've never had to deal with that since i store a creeps memory in their name (don't really recommend it tbh)

scarlet fossil
#

added my packet types ☝️

#

How it works is that I'd drop, say a colonize directive on top of a shard portal, with a special syntax indicating the target room on the other side. Pioneers start going out, cross the portal, and on the other side the true colonize directive gets placed, and then pings back the "creep report" (role, current, needed), so that the other side knows it can stop sending whatever the directive needed.

#

I've only tested it with colonization, but technically I could place down whatever

slender compass
#

the whole creep report thing im pretty sure ive majorly overcomplicated in my implementation, sounds like a smart way to do it

scarlet fossil
#

It's derived from how OM handles its spawning, so that was easy

#

I guess I could make spawn groups work with that as well, but I've just thought about it 😅

slender compass
# slender compass the whole creep report thing im pretty sure ive majorly overcomplicated in my im...

for my implementation:
each creep (or spawn, or queued spawn) would promise what that its gonna do something, and aslong as something is promising that the room gets build (or anything else it was gonna do) its won't ask again to do that task
the promises that are being handled on the current shard are then broadcast too all other shards, so all shards know whats being done

for example:
shard0 wants asks shard1 to promise that its gonna claim room X on shard0, then shard0 promises that its gonna do that
from then shard0 won't ask any other shard to claim room X as something is promising to claim room X already

scarlet fossil
#

Sounds like a nice alternative

slender compass
#

this nicely handles a claimer spawning from shard3 going to shard0, 5 portals, then hopping to shard1 and back to shard0 then more portals into shard2 for a claim on the other side of shard2...
but it really feels overcomplicated for what it does

scarlet fossil
#

I mean, if it handles it, all the better 😅

#

I just expected to have shard-to-shard working, at least. Nothing more complicated than that

#

Also, it starts to get messy if I need to share portals coordinates across shards…

slender compass
#

mhhh?

#

that was the "can't be easier" part for me, what was the issue?

#

maybe the rust API has some magic that makes it relatively painless to share coordinates

#

oh wait, portal coordinates, i misread, oh no

#

that is a very big mess yes...

scarlet fossil
#

Yeah. I'm pretty much handing out one directive and a bunch of creep to another OM, and that's where I stopped

#

Mainline OM's not exactly aware of portals. That's one part I had to write intel management code for

slender compass
#

makes sense, i don't think you get that much more value out of it if you already have "simple" 1 hop intershard code

scarlet fossil
#

I mean, to be fair, given how frequent those are, I could just shove them in the intershard memory as static data and let the others see all of it…

slender compass
#

thats what i did, and its still a mess

scarlet fossil
#

I bet. You'd need to have the terrain data around. That's the point where I just stopped 😅

slender compass
#

im just assuming all rooms are plain open for portal pathing, the "good enough" approach

#

i've toyed with the idea of requesting other shards to do pathfinding from 1 portal to another though

scarlet fossil
#

Heh. Robalian stole the room I was planning to colonize back then

slender compass
#

random side question: do you hardcode the available shard names?

scarlet fossil
slender compass
#

i tried to make it dynamic but it was a massive pain and just hardcoded it now, good decision 😛

scarlet fossil
#

I guess that's something else that could go live in the intershard memory; have each of them drop their Game.map.shard name or whatever it is. But you don't run if there's no creep. I guess I could use the portal destinations I see and stash that as well…

#

…I should finish my portals mod. I'd love to toy with those on pservers, at least the normal ones

slender compass
cerulean wadi
#

I don't know why they have ptr up at all tbh.. if there's a constant balancing act of server resources to keep world shards at acceptable tick rates why are they wasting any resources on a PTR server that isn't actually being used to test any game changes when private servers exist.

slender compass
#

there is no way for me to properly test intershard code without PTR though, i really appriciate that its working every now and then

scarlet fossil
#

Intershard is pretty much the only exception. Market code, too. That's what I found the PTR most useful for

cerulean wadi
#

If it at all takes away resources from world, not worth it imo

scarlet fossil
#

Actually, scrap the market code, that's not true ('cause everyone but you is frozen on there)

scarlet fossil
cerulean wadi
#

changed my badge so my old man eyes can actually see my reserved rooms now 👴

scarlet fossil
#

Logging in, logging in~

cerulean wadi
#

I suppose it's time to finally re-enable my sk mining code

scarlet fossil
#

Ah, clearly more visible now

cerulean wadi
#

it.. wasn't great before 😂

scarlet fossil
#

I think that just leaves Harabi

#

Also, are the terrain tiles broken just for me or…

#

On sandbox?

slender compass
#

seems fine for me

scarlet fossil
#

Nevermind. I moved the map and they loaded 🤔

#

The history worries me a bit…

#
-rw-r--r--    1 node     node       32.0G Jan 26 19:29 history.db
#

I feel like that's a bit much

#

I mean, it was 6Gb when I looked at restarting it. Slashed the chunking size from 100 to 20, so like *5

#

Sounds about right

cerulean wadi
#

wonder if the history mod could be changed to only log history in rooms with a specific flag rather than any room with a creep. I don't need history in 95% of my rooms.

scarlet fossil
#

I guess? I'd much prefer fixing the heap leak tho

cerulean wadi
#

I mean that works too 😂 . Having a flag only mode would help with overhead for servers that want history but don't want to spend the resources for full history.

scarlet fossil
#

IIRC it's saving any rooms that are active at the moment

#

(Trying to see if I can mount the docker data volume back on the host so I can poke at that database)

#

Oh, I'm a Docker n00b. Of course it's just already there facepalm

#

(storing that for later 501500)

kind trench
#

could store just last 20k ticks

#

or 86,4k ticks which are supposedly 24h

scarlet fossil
#
24350602|W18S5|5053800||2024-12-03 15:35:39.116 +00:00|2024-12-03 15:35:39.116 +00:00
#

It's storing quite a few more than that 🤣

kind trench
#

ye, i'd say a day-max-two would be good enough

scarlet fossil
#

Deleted all of 2024

#

Pretty sure some of those are from the previous server

#
sqlite> SELECT COUNT(*), MIN(createdAt), MAX(createdAt) FROM histories;
8014163|2025-01-17 19:39:21.805 +00:00|2025-01-26 20:03:31.811 +00:00
#

I'm just impressed at how many rows there are…

#

That's one per room per 20 ticks, but still

polar path
kind trench
#

PTR allows for testing stuff like memory / layout migration

#

which you usually cannot replicate well on private/community server

scarlet fossil
#

…cannot replicate? Just do that in prod, and then write the code to revert if you don't like the results 🤣

sullen condor
scarlet fossil
sullen condor
#

Sneaking

#

Changed

sullen condor
#

@scarlet fossil How much aggressive your bot is at power harvesting?

scarlet fossil
#

depends what you mean by aggressive. It's not gonna defend

sullen condor
#

Good. I want to test power harvesting

sullen condor
#

Are you willing to turn on / write code to make them aggressive later?

scarlet fossil
#

😈

#

You're looking specifically at that?

sullen condor
#

My power duos are nonviolent now

scarlet fossil
#

Yeah, just like mine

sullen condor
#

Cool

scarlet fossil
#

I can drop a guard directive, if you want some bumps

sullen condor
#

But later I want to test highway conflict

#

That's cool

scarlet fossil
#

Actually, that would also give me some data about my skeletal skirmish tracking stuff…

#

Not sure if I want to use the drills to defend power banks… There's this in in: ```ts

private getHostileDrill(powerBank: StructurePowerBank) {
    return (
        powerBank.hits < powerBank.hitsMax &&
        powerBank.pos.findInRange(FIND_HOSTILE_CREEPS, 2)[0]
    );
}

private handleHostileDrill(
    hostileDrill: Creep,
    powerBank: StructurePowerBank
) {
    Game.notify(
        `${hostileDrill.owner.username} power harvesting ${powerBank.room.name}, competing for same power bank.`
    );
    // this.directive.remove();
}
#

Not called from anywhere

scarlet fossil
#

It's currently recovering its bucket, but there should be 2 broodlings hanging out there pretty soon

sullen condor
#

At W5N0?

#

Do you want to test some highway conflict or field combat?

scarlet fossil
#

highway, I guess?

sullen condor
#

In that case I guess we can make W0N0 as hill and play some king of the hill game?

scarlet fossil
#

Sure, sounds good

sullen condor
#

Cool. I'll drop the occupy mission on that room, which will try to keep the control over that room (used in season7 to get control over score collector, but never seriously used)

scarlet fossil
#

Okay, 2 broodlings headed to W0N0

sullen condor
#

For me, it's one 1m1r creep lol

scarlet fossil
#

Had to fix a couple of bugs. OM doesn't really like its directives forcibly moved like I just did 😅

#

But "energybath" incoming 👀

scarlet fossil
sullen condor
#

With observer?

scarlet fossil
#

Mhm

#

I have a dumb system that goes through all observers and scans a 10x10 around each, and that's about it. I have a manual "over there" thing for special cases, and that's about it

#

insert cowboy face-off music

sullen condor
#

I guess my little creeps will be quite scared

scarlet fossil
#

Such positioning, much wow

sullen condor
#

They are waiting for... bigger ones

#

And at the same time first power mining is going on

scarlet fossil
#

I'm resetting bucket again 😅

#

That's gonna be a interesting fight

#

I'm getting too much pathing failures in the SK rooms, and that causes the bucket to sometime drop hard

sullen condor
#

Yeah. That's kinda annoying

#

Did quite a debugging last week and it's hard to find pathing issue now

scarlet fossil
#

@sullen condor It's on!

sullen condor
#

Cool

scarlet fossil
#

Aaaand they ded

sullen condor
#

Yeah. Your bot keeps sending creeps?

scarlet fossil
#

CPU: used: 129.487, bucket: 2407 (delta: -33, est: 371, avg: -30), tick limit: 500

#

Yup

#

But my bucket isn't exactly happy

sullen condor
#

Not adjusting size/number with enemy creeps?

scarlet fossil
#

Nope, that's the dumb invader-only directive

#

I mean, that's on me, I picked the first one I could think of 😅

#

CPU: used: 132.435, bucket: 1288 (delta: -30, est: 368, avg: -9), tick limit: 500

#

What a bunch of pathfinding work can do to your bucket average 🤩

#

…not that it's exactly better, but still

scarlet fossil
#
[koth!>outpostDefense]     enemy potentials: {"attack":55.00000000000001,"ranged":26,"heal":18,"dismantle":0}
    allies potentials: {"attack":46,"ranged":19,"heal":10,"dismantle":0}
    unit: {"attack":23,"ranged":19,"heal":33,"dismantle":0}
    counts: {"attackCount":3,"rangedCount":2,"healerCount":1}
[koth!>outpostDefense] wishlisting 2 hydralisk to [koth!>outpostDefense:SG]: {"reassignIdle":true}
[koth!>outpostDefense] requesting 2 hydralisk@250, current: 1, to spawn: 1
[koth!>outpostDefense] wishlisting 1 transfuser to [koth!>outpostDefense:SG]: {"reassignIdle":true}
[koth!>outpostDefense] requesting 1 transfuser@250, current: 0, to spawn: 1
[koth!>outpostDefense] wishlisting 3 zergling to [koth!>outpostDefense:SG]: {"reassignIdle":true}
[koth!>outpostDefense] requesting 3 zergling@250, current: 2, to spawn: 1
sullen condor
#

Cool

scarlet fossil
#

That's a bit more people

sullen condor
#

So it would be fight => A win -> B spawn bigger -> B win -> A spawn bigger

scarlet fossil
#

It should

#

Except I have no tracking of the evolution of a given fight

sullen condor
#

Wdym by tracking

scarlet fossil
#

It's only based on the strength of what's currently in the room

sullen condor
#

I see

sullen condor
#

@scarlet fossil lol my bot decided to spawn T3 boosted creeps... it's a bit too fast

scarlet fossil
#

I mean… I tickled it wrong ^^

#
[koth!>outpostDefense]     enemy potentials: {"attack":127.60000000000001,"ranged":88.4,"heal":108,"dismantle":0}
    allies potentials: {"attack":138,"ranged":76,"heal":61,"dismantle":0}
    unit: {"attack":23,"ranged":19,"heal":33,"dismantle":0}
    counts: {"attackCount":6,"rangedCount":5,"healerCount":4}
[koth!>outpostDefense] wishlisting 5 hydralisk to [koth!>outpostDefense:SG]: {"reassignIdle":true}
[koth!>outpostDefense] requesting 5 hydralisk@250, current: 4, to spawn: 1
[koth!>outpostDefense] wishlisting 4 transfuser to [koth!>outpostDefense:SG]: {"reassignIdle":true}
[koth!>outpostDefense] requesting 4 transfuser@250, current: 1, to spawn: 3
#

I don't have anything set up to push it to boost tho

#

Has it been 6 fights?

scarlet fossil
#

The big bump in enemy potential looks to me like it did account for them

scarlet fossil
#

I'm at 6, but I might have missed the first one (I compressed my skirmish memory keys, so I lost the data that was already there)

scarlet fossil
#

I'm confused how I have visibility of that room sometimes, even when I have no more creep in it…

kind trench
#

because tombstone

scarlet fossil
#

Heh, it just clicked

#

Sounds weird that a dead creep would do that

#

I mean… free intel for me, I'm not gonna complain~

polar path
#

Tombstones give vision so you can see what killed your creeps, I think. Since you need vision to get the event log.

#

Technically they only need one tick of vision for that.

scarlet fossil
#

That room is pure chaos at the moment

scarlet fossil
#

@sullen condor You won!

too much firepower needed to fight: {"attackCount":1,"rangedCount":10,"healerCount":9}
sullen condor
#

Lol

#

Should see that when I get home

sullen condor
#

Lol seems that it's not end?

#

For Aiur!

#

I will end mission

scarlet fossil
#

Oh, I've kept it running

#

It got scared by the T3s at one point, but once those stopped coming it went right back in

sullen condor
#

I would have been more interesting if I disabled boosts

scarlet fossil
#

I've worked a lot on combat intel, that was nice having the data around

sullen condor
#

Cool

scarlet fossil
#

Still trying to find a good serialization format for creep data though

sullen condor
#

Tell me if you want

#

anytime

#

I'm pretty happy with how this went

scarlet fossil
#

Yeah, you fought really well

#

Or I fought really badly 😅

#

Would have loved to have actual kill tracking, but I wasn't looking at that

sullen condor
#

Yeah, I think zerglings has very bad body composition. You should put attack first to chase enemy. And since you can't heal and attack at the same time, it's better to attach healers to them. I think that's the biggest difference. Plus, your creeps don't heal each others?

#

Plus, hydralisks only heal after they got hurt. It'll be better if they preheal

scarlet fossil
#

Noted~ The creep bodies are old, so a lot of the meta has stabilized since those were implemented

sullen condor
#

Yeah I see

scarlet fossil
#

Finally got around to wiring PandaScreeps and it's not pretty 😟

cerulean wadi
#

😅 I would not want to see my bucket on a graph for sandbox. I have a bunch of CPU issues I need to fix before I can finally start working on my combat code (not to mention my sudden inability to stockpile energy)

#

But.. my sk mining code is mostly working so, that's something

#

Power mining is a bit more of an issue, they're out there attacking the deposits but I don't think I've successfully cracked one in time yet 🫠

scarlet fossil
#

I get the feeling of not wanting to see that. What's funny to me is that I get the exact opposite on MMO; That big upward vertical yellow line is the bucket rebuilding itself via the whole bot suspending its main loop. MMO has it the other way; there's a big downward vertical line indicating a pixel being generated

#

To be fair, I just suspended a colony, for the sake of stopping the bleeding, and that seems to have at least stabilized it

cerulean wadi
#

I don't know if kaldri is in discord, but I accidentally put your broken room out of its misery 😅

bitter lava
#

@cerulean wadi badge buddies?

cerulean wadi
cerulean wadi
#

server appears down

#

nvm back up

scarlet fossil
#
[00:45:17]INFO    7872261 Terminal network activity: 
                ‣ W4N8   ⟶ 3000 ZH ⟶ W12N5  
[00:45:21]INFO    7872263 Terminal network activity: 
                ‣ W2N8   ⟶ 3000 ZH ⟶ W4N8   
[00:45:26]INFO    7872265 Terminal network activity: 
                ‣ W7N2   ⟶ 3000 ZH ⟶ W2N8   
[00:45:28]INFO    7872266 Terminal network activity: 
                ‣ W3N5   ⟶ 3000 ZH ⟶ W7N2   
[00:45:30]INFO    7872267 Terminal network activity: 
                ‣ W8N5   ⟶ 3000 ZH ⟶ W3N5   
[00:45:32]INFO    7872268 Terminal network activity: 
                ‣ W6N7   ⟶ 3000 ZH ⟶ W8N5   
[00:45:34]INFO    7872269 Terminal network activity: 
                ‣ W12N5  ⟶ 3000 ZH ⟶ W6N7   
[00:45:39]INFO    7872271 Terminal network activity: 
                ‣ W4N8   ⟶ 3000 ZH ⟶ W12N5  

Watch the ZH go round n' round, round n' round, round n' round 🎶

cerulean wadi
#

Ha I don't have that.. I do have a lot of "Factory decides to make this!", "Factory isn't making this anymore!", "Factory decides to make this!", "Factory isn't making this anymore!", "Factory decides to make this!", "Factory isn't making this anymore!", "Factory decides to make this!", "Factory isn't making this anymore!"

scarlet fossil
#

Oh, I got those. "Factory has been waiting for 50 ticks for biomass. Resetting…"

#

I just fixed an issue where the Terminal Network wasn't pulling resources from storage to terminal (forgot active providers), and now it's going on a loop because I suspect it's sending the recipent above the threshold, so they each become an active provider in turn

scarlet fossil
#

Suspending server for a bit. I wanna know if I can somehow manage to get the history database to be a little less bloated

scarlet fossil
#

Server running again. Not really a success, I'm afraid

scarlet fossil
#

Gonna do a bit of brain surgery to try and hopefully collect some data on those broken history chunks, so server is gonna do a few restarts (hopefully ones I cause and not random crashes 😅)

sullen condor
#

@kind trench Can you siege me for a while? I think there is some severe bug in my defense code

kind trench
#

quad on the way but tick duration is quite loong

sullen condor
#

@kind trench Big Thanks

kind trench
#

quad in E8N3

cerulean wadi
#

This server is doing a good job of reminding me that my CPU usage when at my GCL cap is atrocious 🫠

scarlet fossil
#

And that's after I made pathing failures forcibly sleep the responsible creep for a few ticks

cerulean wadi
#

I need to ramp down my rcl8's more. They don't need to each be having 25 creeps and remotes

radiant lily
#

Eyy glad you are all enjoying this so much still 🙂

scarlet fossil
sullen condor
#

@kind trench Defenders are not working

kind trench
#

at least rampart has 40m, gives me some time to debug

sullen condor
#

Yeah

kind trench
#

ah ok, i'm not takingaccount of tough when calculating

kind trench
#

fixed @sullen condor

sullen condor
#

Cool

kind trench
#

now to somewhow make your quads more miserable than my room

sullen condor
#

What are they doing😂

kind trench
#

working well

#

for some reason, my defenders are not attacking on tick that they both can but are notin position

sullen condor
#

wdym? They don't attack when they can?

kind trench
#

they dont attack on this tick

#

because they are not in position "yet"

sullen condor
#

I see

kind trench
#

hm so my one defender is blocking 2 of your quads

#

according to my math, it's not strong enough to do anything to them

#

as-in though + outheal is bigger than what it would deal with towers

sullen condor
#

Effect of ra is more than double at point blank

#

That situation doesn't look good... maybe I should make them to change target if it's been too long to shoot watergun

kind trench
#

what's the "cost" for quad to path around

#

because that's few M of walls to go through

sullen condor
#

This might be better in this case

#

Why others idling?

kind trench
#

becuase this one gets job done

#

🙈

sullen condor
#

Fair

#

But why that top-left one rmaing

kind trench
#

all of them are

#

or should be

#

because of lazy-code

sullen condor
#

I see

#

Others are not rma-ing?

kind trench
#

a right, they are boosting (or should be)

sullen condor
#

I see

#

Melee?

kind trench
#

nope RA

#

for meager 2 T3 RA-boosts i seem to save 30 T1 Attack ones

#

whooping 80dmg at range 1

sullen condor
#

Lol yeah

kind trench
#

got some data finally from event log, and seems i heavily underestimated dmg 🙈

[11:41:16]Siege Data: 💥9240💥 🛠️3000🛠️

kind trench
#

ok now it ramps properly
Siege Data: 💥8700💥 🛠️8500🛠️ 🛡️17769🛡️

sullen condor
#

What that numbers mean?

kind trench
#

attacker dmg, my repair, ticks-to-breach

#

(as of previous tick)

#

and all debug data 🙈

sullen condor
#

I see lol

kind trench
#

funnily enough, it's fairly cheap

#

like 1cpu for getting all dmg/repair of all attacked ramparts here

kind trench
#

if You intend to do some more testing,i'd be nice to get some energy ;D

sullen condor
kind trench
#

9

#

because most of them does not have remotes

#

because of cpu throttle and because of you :p

scarlet fossil
#

I have become Harabi, Destroyer of energy stockpiles

kind trench
#

also also, quads did ~100m of rampart damage despite repair

#

and few bugs somehow happening in other rooms

kind trench
#

ok can stably outrepair your dmg as long as i have enough energy

kind trench
#

how the siege stats / outlook is your side @sullen condor ?

sullen condor
kind trench
#

yes

#

or progress if you have any metric on that

#

also,is it like "send quads till room is down" type of attack ?

sullen condor
#

Not tracking spent resources

kind trench
#

also, the _disallowedCoords from your traffic library seems to not work "i think"

#
private keepToRamparts(c: ActiveRepairerCreep): void {
        const onRampart = c.pos.lookFor(LOOK_STRUCTURES).find((s) => s.structureType === STRUCTURE_RAMPART);
        if (!onRampart) {
            return;
        }

        const nonRampartedArea = sUtils
            .getPositionsAroundRoomObject(c)
            .filter(
                (p) => !Game.rooms[c.pos.roomName].lookForAt(LOOK_STRUCTURES, p.x, p.y).find((s) => s.structureType === STRUCTURE_RAMPART),
            );
        c.setWorkingArea(c.pos, 1, nonRampartedArea);
    }

despite this code they still get pushed into your quads i think, will need to recheck if they are really pushed into quad or just walk into it

sullen condor
#

I use that feature in my own defense and I thought they work as intended

#

You should use costs and threshold instead of setWorkingArea

kind trench
#

should be also

#

hence "i think" ;p

#

god, i see i pass "avoidSpots" into my pathfinder but it's completely unused 🙈

#

hum definitely got pushed 🤔

#

and definitely walked into quad also 🙈

kind trench
#

managed to catch your quad once

kind trench
#

so i guess a stalemate

sullen condor
#

I think I should improve logic to find position to get formed

kind trench
#

for now it seems that there's a stalemate

#

as in ramparts breach time is not falling down

#

(not to say that i do not bleed energy)

kind trench
#

hum ok, took you 2 days but you've chewed through

sullen condor
#

Oh. I didn't expect my bot to afford that

kind trench
sullen condor
#

Cann't see that now. Can you explain?

kind trench
#

i survived 4 days of having 2 quads attacking room 24/7

#

while having energy issues

#

and the logic did not horribly break when you finally dug through to open another ramparts for quads

sullen condor
#

Yeah. Nice defense

sullen condor
#

@severe sun Did you spawn in sandbox?

sullen condor
#

I pushed auto-harassment code into sandbox

#

And it's using all of my cpu 😂

kind trench
#

quite some harassing party lol

#

210 bodyparts, 3 full size creeps

kind trench
sullen condor
# kind trench

There was a bad loop...

  1. Spawn remote defender for W7N4, which both traxusBot and my bot think as its own remote
  2. After killing invaders, they join the cool harasser club
  3. Traxus sends another invader
  4. Go back to 1
#

Will it be better to keep them as remote defenders for like, one hundred ticks?

#

Let them be harassers after that

kind trench
#

i'd calculate time by distance to closest "owned hostile room"

#

can be (linear + 1) * 50

#

maybe with some buffer extra depending on body-size

sullen condor
#

Isn't it better to wait longer when enemy room is closer?

#

Since there is higher chance of revenge

kind trench
#

no, because then the time that enemy shows up is shorter

sullen condor
#

I see the point

kind trench
#

so i.e 50 (for hostile-room adjecent remote) + idk 120 (since defender was 40bodyparts, we assume same-one-ish would be sent) + idk. 50 on-top since spawn could be busy doing something else

sullen condor
#

So, wait and see if enemy sends back combatants, and change them to be harassers after that?

kind trench
#

yes

sullen condor
#

How about send them to one of the enemy remotes that's not mine?
Enemy can be busy handling them, so cannot send combatants to the contested remotes. Maybe I can harvest contested remotes while doing that

scarlet fossil
#

But yeah, it's a complete bloodbath, and that pretty much drained me because OM stoopid

sullen condor
#

You are the zerg. Zergs are invaders!

scarlet fossil
#

shrieks in zergling noises

#

Sadly I'm not planning to try and fix any of that, so I guess it's just gonna keep sending fodder

sullen condor
#

It seems that it's more of my problem

#

Now in MMO :

scarlet fossil
#

Yeah, I'm sorry, but that's definitely zerg-like behavior 🤣

sullen condor
#

Oh, It seems that I said wrong. I mean, it's my bot that is problematic

sullen condor
scarlet fossil
#

I mean, it's a bit of mine. The issues I see:

  • the idling creeps are just dead as soon as the directive gets removed (which happens once there hasn't been any hostile around for a few hundred ticks. A new one will get placed when it detects you, but at the moment the whole "idle" pool is just completely ignored. Hence, they dead.
  • I won't stop; there's nothing in OM to abandon a conflicted remote like that. The only case where that will happen is for the case I added where someone pops in the middle of my "remote territory" and cuts out part of it in a way it can't easily be reached.
  • I'm not tracking the resource expense of shoveling creeps in there to just stop when it gets too bloodbath-y
  • There's no escalation; you will always get the same set of creeps, in a loop. Only the amount of it will change depending on how much is being detected
sullen condor
#

So, in terms of bloodbath-y, my bot is better at going crazy 🤣

polar path
kind trench
#

with max creeps cap

#

so i.e max cap of 300bodyparts , to be capped at idk. 5-10cpu max

#

and then you just generate missions like room-x-harass needs 25bp so a single creep with 1cpu, room-y costs 200bp so 5 creeps 5 cpu and other rooms need 120bp+/3+cpu so dont get harass mission

sullen condor
#

@polar path I added you as ally in sandbox and your creeps are killing mine 🥲

polar path
#

Oh, I will add you

#

Not sure how it will handle remote overlap tbh

#

My ally code is untested

sullen condor
#

Better test here than thunderdrone!

polar path
#

Fair. I probably won't be supervising it as closesly on sandbox though. XD

scarlet fossil
#

Vote for a reset?

cerulean wadi
scarlet fossil
#

Server reset, I'm making a map right now

#

6x6, except I'm gonna punch a hole in the middle 'cause I feel fancy

polar path
#

Nice

#

Cool idea

scarlet fossil
#

I should have generated the 6x6 on the server. Maptool is a bit slow for so many rooms

scarlet fossil
#

Server's ticking if you wanna make some sand castles

cerulean wadi
#

Portals? Aspect I wanted to work on after seeing them this td

polar path
#

Portals from the inner edge of the ring to the outer edge of the same section to make it a donut. :P

scarlet fossil
#

I could? It's just that doing it manually is a bit of a slog

#

…hence why I wanted to make a mod out of those

sonic marsh
#

I also second portals, even just a couple.

scarlet fossil
#

I'm working on the mod. I'm just done with the core "make me a portal pair from here to there" function

#

Oddly enough, I can't get the client to show the neat "unstable portal" message

#

…not sure what the rules on that are, tbh

#

Oh. It only shows the "portal is stable yet" on shard portals

#

Well that explains it

cerulean wadi
#

Ya no rush on them, just whenever the mods done ADD THEM OR I WILL RIOT grabyourpitchfork

scarlet fossil
#

I'm gonna dogfood my shiny new mod a bit, so server's gonna be taken down for a bit

#

Portals are in

#

The current rules are: they're all stable for one day, then will go through a PORTAL_DECAY-ticks long decay before vanishing

#

I think 30000 ticks?

#

They work like they do on MMO. Core rooms have those, crossroads have those

#

Things I have not yet finished: sliders mode, where it could make a one-way portal only. And stray mode, where it might drop a portal into a non-core/crossroads

sonic marsh
#

Imagine one dropping onto a hauling route for a bot that doesn't have portal code

#

Tragedy

scarlet fossil
#

Yeah, the reason I didn't finish that is how brutal it could be

#

"Portal pops up behind your ramparts"

#

I think if I do something like that, I'll make it skip owned/reserved rooms

#

Do tell if you see them doing weird things. I've reused a lot of the server's helpers for things like finding empty spaces so hopefully it's not gonna jam them into walls, but you never know

scarlet fossil
#

Heh. My bot actually did a spawn move and I didn't even realize

sullen condor
#

Ohh that was risky

#

Oh seems that not many spawned in sandbox. Maybe because of thunderdrone?

sonic marsh
#

Oh I didn't realize it was live yet lol

scarlet fossil
# sullen condor Ohh that was risky

Yeah, I misplaced my first spawn, then went on doing the portal mod. I wrote that code a while back and I think it's the first time it runs unsupervised; there's a few other special cases like terminal/storage moving, where I'll force some sort of special conditions to be fulfilled before it'll let the delete happen

#

Generally "make sure we have the energy around" and "make sure we have extra workers spawned in"

#

I've just started untangling the room planner from the colony, so that I can try and wire in a dynamic one in

#

Sadly I broke something and the initialization order is now wrong, so my test branch is a startup crash 😭

polar path
cerulean wadi
#

Is there a grafana page up for sandbox?

scarlet fossil
#

The server stats? Not that I'm aware of

#

You can set up pandascreeps against it tho

sullen condor
polar path
#

Nice!

scarlet fossil
#

Bumped the portal pair limit to 90

#

@cerulean wadi you have a core portal close to you now~

#

And one south of your east highway

cerulean wadi
#

nice, my explorers should take them when they find them (and store the portal info in my intel cache). I just need to figure out how to make my routing account for portals

cerulean wadi
#

Don't know who this person is... but holy tunnels

scarlet fossil
cerulean wadi
#

Don't worry, those csites are more roads

sonic marsh
#

Most people adapt their room plan to the terrain. This guy takes the modern human approach of adapting the terrain to their room plan.

torpid ledge
#

Modern problems require modern solutions

scarlet fossil
#

Saving that for later. It's not yet in the history, but that's the moment the room architect noticed me replanning the room so it wouldn't be squished against the eastern exits

#

Am I the only one getting ```
TypeError: this.calcTransactionCost is not a function
at <runtime>:21583:41
at Object.Game.market.deal (main:2249:22)
at TraderJoe.buyDirect (main:15378:42)
at TraderJoe.buy (main:15501:33)
at TerminalNetwork.handleRequestInstance (main:45761:47)
at TerminalNetwork.handleRequestors (main:45953:38)
at TerminalNetwork.run (main:46003:14)
at try (main:48210:45)
at _Overmind.try (main:48055:17)
at _Overmind.run (main:48210:17)
at Object.main [as loop] (main:49359:16)
at __mainLoop:1:52
at __mainLoop:2:3
at Object.exports.evalCode (<runtime>:15381:76)
at Object.exports.run (<runtime>:20865:24)

on resets?
sonic marsh
#

Getting wild with portals around here

scarlet fossil
#

Oh yeah, it's gonna be a bit random. IIRC the only limitation I've put in right now is that there can't be two different portals to the same room

sonic marsh
#

Like, two from one room that both lead to the same room?

#

I don't mind portals all over the place though. Makes it easier to test

scarlet fossil
#

Tbf I had to set the limit pretty high because I'm not sure I handle detecting those "core" portals really well right now

#

So I think they end up taking 8 spots into the "pair queue"

sonic marsh
#

Oof, makes sense

scarlet fossil
#

Yeah, it's one of the crazier things I have to do; tell a core portal from a non-core portal

#

I am actually detecting those, but not that I'm looking at it, I'm not sure it's actually working like I intended it to 😅

#

    // We make a list of all the portals we know about
    const oneWay = new Set<PortalObject>();
    const pairs = new Map<PortalObject, PortalObject>();
    const portals = (await db['rooms.objects'].find({ type: 'portal' })) as PortalObject[];
    const corePortals = new Set<PortalObject>();
    for (const portal of portals) {
        const pair = portals.find((p) => isSamePos(p, portal.destination));
        const roomPortals = portals.filter((p) => p.room === portal.room);

        // Core portal detection
        if (corePortals.has(portal)) {
            continue;
        }

        const walls = (await db['rooms.objects'].find({ type: 'constructedWall', room: portal.room })) as WallObject[];
        if (walls.length && roomPortals.length) {
            const closePortals = roomPortals.filter((p) => walls.some((w) => isInRangeTo(p, w, 1)));
            if (closePortals.length === 8) {
                closePortals.forEach((p) => corePortals.add(p));
            }
        }

        if (pair) {
            pairs.set(portal, pair);
            pairs.set(pair, portal);
        } else {
            oneWay.add(portal);
        }
    }
scarlet fossil
#

I'm saddened to report that my manual hacking of the auth timeouts doesn't appear to have done anything

#

IIRC I set those to 1h long, and yet it's timing out way earlier than that

polar path
#

lol, Jasper and Neon fighting over trying to sign the whole map with portal-capable scouts.

#

I spawned in near Harabi after making some planner tweaks. I'll probably try to work through some stuff on my to-do list with Sandbox as the test environment.

sullen condor
#

Cool

polar path
#

Huh, looks like we have another Overmind besides Traxus. IDK how modified they are.

scarlet fossil
#

Yeah, I've been told. I should try and see how modified they really are but ugh

scarlet fossil
#

Ok wow, it's old

#

It's neither one of Muon's current versions

#

It's before the rename of the Strategist class

polar path
#

Wow

#

Is it forked and modified from that old version?

scarlet fossil
#

I have no idea, I'd have to grab random commits from Muon, build them, and diff his version against that to find a likely branch point

#

Was already a pain to get their code out into something I could diff against

polar path
#

Fair

scarlet fossil
#

Okay, confirmed it's a 0.5.2.1. I don't see much in terms of actual differences, so looks like it's vanilla

#

I've disabled them after sending a message

polar path
#

Nice portal colonize, @slender compass

polar path
#

My bot is now aware of users and gives them each a numerical ID so I can save the ownership of each room I scout with a single UTF character.

scarlet fossil
#

Oh I like that!

sullen condor
ebon palm
#

what are the details for pushing code? I can connect to game, with steamless client, but pushing code gives me connection refused, when using: "protocol":"https", "hostname":"jayseegames.com", "port":"443",

sullen condor
#

It is not https, just http iirc, and port is 21025

ebon palm
#

hmm, I tried that too. Also port 80 and 8080

#

I've created an account. Set my password under account settings

#

double checked email and password too

sullen condor
#

Hmm I have no idea then. What's the error says?

#
      sandbox: {
        options: {
          token: undefined,
          server: {
            host: "jayseegames.com",
            port: 21025,
            http: true,
          },
        },
        src: ["src/*.js"],
      },
#

This is what I'ma using

#

In grunt

ebon palm
#

ok thanks, I figured it out. Was my push code not being able to handle http.

polar path
#

I could just wipe that list and my temp scout map and restart scouting from scratch if it gets too bloated in the long run.

sonic marsh
#

Oh I can even default the first three to myself, Invaders, and SKs. Which actually cleans up a few things in my code

sonic marsh
polar path
torpid ledge
#

is darklorde a unmodified overmind user? They seem to have some telltales of it

scarlet fossil
#

The ramparts in E28N5 outside the wall do look like a bug I had

#

Yeah, uses walls, has its own fast filler system, I don't think it's one

torpid ledge
#

kk

torpid ledge
#

me and darklorde have been duking it out for this one remote, i've mostly been winning but rn is a contentious moment

polar path
#

Right across the map from the original, lol.

#

I thought his name sounded familiar, he is also a Hivemind NCP on MMO, near me.

scarlet fossil
#

…is messaging broken for you too? Here at least, clicking the Message option in the sidebar results in a JS error

#

User disabled. Not sure how different his code is from Hivemind tho

polar path
#

As far as I could tell, it looked like standard Hivemind, but there may be changes that I missed.

torpid ledge
scarlet fossil
#

I'm not even sure what happen if someone sends you a message… Could someone send me one so I can maybe have a look?

sonic marsh
#

Messaged

#

Also did not break, I clicked on your profile and hit Message

#

Attempting to view messages, either from the sidebar or User profile > message > back button to messages, seems broken

scarlet fossil
#

Yeah, I do get a message ping

#

Sheesh, that's broken pretty bad :/

sonic marsh
#

Well if the ping works, and the individual messaging pages work, then all folks have to do is go click on the user profile > message for everyone until they find the person who sent them something

polar path
#

lol

scarlet fossil
#

Oh wow, it is a mod error

#

I've just been through a bit of a rabbit hole before actually going to check on the server logs, and lo and behold

#
screeps-1  | 2025-03-19T15:37:42.753679131Z [backend] TypeError: _.indexBy is not a function
screeps-1  | 2025-03-19T15:37:42.753700271Z     at db.users.find.then.users (/screeps/mods/node_modules/screepsmod-mongo/lib/backend/api/index.js:42:41)
screeps-1  | 2025-03-19T15:37:42.753712851Z     at _fulfilled (/screeps/mods/node_modules/q/q.js:854:54)
screeps-1  | 2025-03-19T15:37:42.753716771Z     at /screeps/mods/node_modules/q/q.js:883:30
screeps-1  | 2025-03-19T15:37:42.753720461Z     at Promise.promise.promiseDispatch (/screeps/mods/node_modules/q/q.js:816:13)
screeps-1  | 2025-03-19T15:37:42.753724421Z     at /screeps/mods/node_modules/q/q.js:624:44
screeps-1  | 2025-03-19T15:37:42.753728251Z     at runSingle (/screeps/mods/node_modules/q/q.js:137:13)
screeps-1  | 2025-03-19T15:37:42.753732031Z     at flush (/screeps/mods/node_modules/q/q.js:125:13)
screeps-1  | 2025-03-19T15:37:42.753735821Z     at process._tickCallback (internal/process/next_tick.js:61:11)
scarlet fossil
#

aaand there's even a set of authlib monkeypatches in there. You know, the ones with the session expiration timeouts? Now I guess I know why my change to the server didn't do anything facepalm

sonic marsh
#

Gonna laugh when a messaging bug leads to fixing the timeout issue that's been plaguing this for ages lol

scarlet fossil
#

Okay, messaging fixed

#

Oddly enough, someone changed keyBy into indexBy (the lodash v3 version of the name 7 years ago), then lodash was pinned to v4 last year, causing the bug

torpid ledge
#

@scarlet fossil are you able to share the fix to this bug? I noticed newbieland has this problem too and sent a ping over to audite to check this thread

scarlet fossil
#

I filed a few other ones as well, but nothing that's like… obvious

polar path
#

@sullen condor I think your power harvesters are passing through my room on sandbox. At least, there's random attack/heal duos passing through, so I assume they're probably power harvesters.

sullen condor
#

I registered you as ally in sandbox

#

🥲

#

You did not?

#

I did that during test period

polar path
#

Oh, I see. I can mark you as an ally for now as well. I figured we would want to test sparring with each other at some point, but we can turn off the ally status for that later.

sullen condor
#

Yeah. I almost forgot that I registered you as ally, tbh

polar path
#

I added you to my ally list on sandbox

#

I have public ramparts on my to-do list as well so maybe I can implement them soon and see if they work with your creeps passing through.

#

I'm basically just planning to port my V1 bot's behavior for that.

torpid ledge
polar path
#

Yeah, that's going to be a quick item on my to-do list. Although my version of it is a bit fancy.

#

It's basically

  1. Set all ramparts public if there is no enemy in the room and has not been for some time.
  2. If there are enemies in the room, set ramparts in range 2 of the enemies to private.
#

So the ramparts get put up right in front of the enemy.

#

And it can save some intents compared to switching all of them

ebon palm
#

That's going to look pretty cool

#

Like a Tron thing

#

The intent cost is pretty heavy

#

I'm probably going to just allocate a few "entrances" to keep open

polar path
ebon palm
#

Isn't it 0.2 per rampart

polar path
#

Yeah. But the method I use reduces how much switching is required compared to most methods I've seen. Like, probably the worst example I've seen is Trep's ramparts switching completely from public to private and back again every other tick when a creep is bouncing on the exit. Not to pick on him, but he should probably fix that. That's a lot of intents. XD

ebon palm
#

Yeah I see. I'm probably going to switch like 2-4 ramparts. Just enough to provide an "in" and "out"

polar path
#

That relies somewhat on your allies behaving a certain way. If they treat all your ramparts as walkable they may get stuck.

rotund olive
#

I prefer the Saruss thing where you only make public those close to allies and the rest are private

polar path
#

If I do that, though, that requires pathing allies to just trust that the ramparts will open when they get there. Which is the opposite of what they have to assume for Mike's idea. 😂

rotund olive
#

Yeah, just make them trust that. They have to do that anyways since some people do the Saruss thing

polar path
#

I think open by default is preferable for maximum compatibility with ally code. My system could be dangerous if I drop ticks, but that just means I need to avoid dropping ticks. And I think my bot is solid at doing that (except when I am testing in production).

#

If my bot is dropping ticks while under siege I have a problem anyways. just not as big of a problem.

rotund olive
#

Do you not drop ticks for a little after a global reset?

polar path
#

I don't.

#

My bot handles resets pretty well

rotund olive
#

Or your bot isn't using global enough

polar path
#

It does cost extra CPU to reboot some things but it defers those things until it has CPU for them.

#

And it generally operates with bucket to dip in to

rotund olive
#

Hmm I'm suspicious that you aren't peaking 500 CPU after a reset for a few ticks. I guess if you make those rampart stuff giga priority you're basically fine

polar path
#

This is on Sandbox, I was at 10k bucket before and I spend 1k on the reset stuff. But, as I said, that stuff get deferred if it there isn't enough CPU for it. It will just muddle through without those things until there is CPU to do them.

#

If CPU crashes low enough, haulers will skip their job search code before allowing there to be an actual time out error.

rotund olive
#

Do you store creep paths outside of global??

#

That alone would be hundreds of CPU

polar path
#

Paths are on global

rotund olive
#

Huh

polar path
#

Maybe when I get a big empire on MMO I will have to put more measures in place. I would still rather have more things defer execution than have it actually time out. Timing out can cause lots of issues.

polar path
#

I should really add respecting ally remotes. It is on my to-do list, just not done yet. 🙃

cerulean wadi
#

Your remote? Our remote.

polar path
#

After thinking way too hard about potential deposit harvesting methods, I think I've landed back on a relatively simple method that I want to implement. 😂

#

I proceed to immediately rethink that decision again.

sonic marsh
polar path
#

Yeah, the thing is, I'm trying to go for most efficient rather than simplest. XD

sonic marsh
#

Yeah, that involves nonsense like calculating* hauler capacities and arrival times. Hard pass lmao

polar path
#

Some methods I've considered:

  1. Orbs: 49w1c miner, 50m mover, 50c mobile container. When first arriving, there would be a train pulling both the miner and two mobile containers, since empty mobile containers don't have any weight for fatigue. I like this idea pretty well, but my biggest concern is how it would break down on the TTL front. I can't really match the TTLs of the creeps involved, and if their TTLs aren't matched then managing them so they don't die at the wrong time could be very tough. I might be able to do it, though.

  2. Full infrastructure: The room that's harvesting it builds a container at the deposit and a road to it, so I can use a full 50w orb to mine it and drop it in the container, and have regular road haulers pick it up. The problem with that is how to efficiently put up that infrastructure, without energy being provided by the end of the road. I'd have to haul out energy from the base, probably. And, also, I'm not sure if it would be worth the investment. And I would have to haul out more energy and some sort of creep to repair it if the mining operation lasts longer than 5000 ticks.

  3. Moderation?: Instead of trying for an orb, use a 25w25c miner and 25c25m haulers. That way, the miner can be its own living container, and I don't need haulers to idle near the miner. The downside is that it would mine slower than a 49w/50w miner, but maybe that doesn't really matter. This is what I think I will go with.

sonic marsh
polar path
#

From what I've seen, most people (me in my V1 bot included) do something like a 23w23m4c miner, and then have the haulers idle next to them waiting to be filled. That has a couple of clear inefficiencies, though. Move parts on the miner can easily be eliminated since I already have good pulling, and idling haulers like that are basically acting as living containers with extra unneeded move parts. So #3 is basically that strat with those inefficiencies stripped out.

#

If I want faster mining, I could use multiple miners and/or give the miners harvest boosts, as well

sullen condor
#

How about swnding 49w1c + 50m + 50c so 50c creep act like a container and after that sending 25m25c haulers?

polar path
#

I considered that as well. But the issue I see with that is that the 50m creep is mostly wasted (only doing one one-way pull trip).

Then the next thing I considered was using two 25c25m haulers to pull the 49w1c + 50m combo. But then it would potentially break down if the deposit is slow enough that only one hauler is needed. Maybe that could work if I only consider deposits that need two or more haulers to service them as being worth mining.

#

On my V1 bot I think it often mines deposits with only one hauler, though.

#

Maybe using multiple miners or boosts could mitigate that limitation, though.

sullen condor
#

How about that 50m creep round trip to move other miners too

#

As long as there is open space

#

150 path length and 3 round trip is 900 ttl so not bad I guess

polar path
#

Fair enough. I suppose that afterwards, it could try to take pulling jobs that would otherwise be taken by regular haulers, also.

#

Maybe it could be renewed to have enough TTL to do another round of miners and then die shortly afterwards.

#

So the move parts for two rounds are paid for with, like, 1.5 rounds worth of energy/spawn time.

#

It also wouldn't be carrying anything on the return trips, though. 🤔

sullen condor
#

Haulers also carrying nothing when they move to pick something up

#

So I guess that's fair use rate of move parts

polar path
#

True. Which is why I like ideas that reuse those trips.

#

Like, if haulers use the trip out to pull or dedicated pullers use the trip back to pull filled creeps.

polar path
#

It would still be slightly more work parts per spot than standard strats. Just less than if I went all-out on big miners.

sullen condor
#

As cooldown goes high, maybe you can make them has more work parts than carry

polar path
#

Yeah, I could probably be somewhat dynamic with it. Like, for low cooldown I only do one miner with full carry parts, then as the cooldown goes up I do multiple miners (if there are spots) and fewer carry parts. Just enough carry to fill up during a hauler round-trip, probably.

sullen condor
#

That sounds good

cerulean wadi
#

Can you do a stacked pull? Have hauler a pull hauler b which pulls the work creep? Removes the need for a dedicated tow truck

#

I don't know if pull works like that

#

Probably should considering how many 0 move creeps I use

polar path
#

That does work, yes

polar path
#

I'm getting global resets on every tick @scarlet fossil

torpid ledge
#

hey was my code paused?

polar path
#

May be a server issue

torpid ledge
#

my code doesn't seem to be functioning

#

i'm not getting errors either btw

rotund olive
#

Yup big issues happening

#

It may have been me, 50% chance

#

I despawned, we'll see if that stops it