#Screeps Sandbox

5380 messages · Page 6 of 6 (latest)

scarlet fossil
#

fair~

#

Managed to build it

arctic pendant
#

there's a lot of unused code in there, things I was working on, or stopped using but didn't delete. a lot of tinkering.

scarlet fossil
#

and… running

scarlet fossil
arctic pendant
#

ooooh

#

memory limit is a different problem

#

something could be allocating infinitely instead of stack overflowing?

scarlet fossil
#

yeah, that's straight from IVM

#

though not sure if it's related to stack size or not

#

Actually scratch that, server was stuck in always reset mode

#

tick speed 1ms

#

it's zoomin'

arctic pendant
#

lol

#

maybe I should spin up a local server for faster experimenting

sullen condor
#

1ms?? Lol

arctic pendant
#

I'm guessing it's a tiny shard

#

3x3 rooms? one player. 1ms ticks seem plausible

scarlet fossil
#

Yeah, it's just one sector

past ice
#

Maybe it's the docker server being much better than steam local server, I couldnt get ticks under like 500ms with the local server one

scarlet fossil
#

It's actually limited by how fast the client socket can pump out events

sullen condor
#

I hope devs to improve steam client

#

At least memory leak

past ice
#

I dont know whats going on with the steam client but it's gone from working fine to just being unusably laggy even through restarts of the client and pc, I have it open now to push code and otherwise just use the browser

scarlet fossil
#

Damn, the moment it reached RCL3 it started crashing 😭

#

@arctic pendant It's complaining about structureRCLPositions being undefined

#

Also, if you wanna join on the pserver fun…

arctic pendant
#

yeah, the room planner never ran for you

#

I've been manually enabling and running it

#

sorry that the codebase isn't in a grab-and-go state 🙁

scarlet fossil
#

Then run the server as you would

#

localhost:7777 is gonna be a webpage with all the isolates and a link to the DevTools remote inspection link to it

#

I had to nudge Chrome a bit by opening a node --inspect first, then trying to connect to that

#

Then the IVM link worked

arctic pendant
#

I think I have it running, but now I need to figure out how to access the admin utils if I want to change tick rate

scarlet fossil
#

oh, it's docker compose exec screeps cli

#

also, note that pushing anything while you have the inspector open just hangs the runner completely

#

Yeah, I don't think I'm gonna be able to help much there. The more I dig and try to fix it, the more weird errors I get from stuff not looking like it's been initialized

#

(from the plan, I mean)

arctic pendant
#

sorry

#

thanks for trying

verbal moth
#

fairly sure this isnt strictly private servers being unable to while MMO is, fairly sure i've seen stack errors on private servers as well. in general it seems that screeps seems to (very randomly) sometimes not be able to output error traces, or they end up really strange. no clue as to what may cause them, whether it's a server- or player-side issue, etc.

arctic pendant
#

oh, sure, but this isn't random. a trivial example of infinite recursion always gives a useful error on World, and always crashes the runner on Sandbox

verbal moth
#

well, i was fairly sure i saw stack traces of infinite recursion on private server, but maybe i'm just imagining things

arctic pendant
#

which server? maybe someone knows somethign we don't about server config

verbal moth
#

that would be my local one then, which uses alina's screeps launcher. not sure if there is a difference in behaviour with jomik's there

sullen condor
#

@haughty cloak Are you unclaiming for gcl?

haughty cloak
sullen condor
#

lol

haughty cloak
#

I uploaded a copy of my MMO bot and it still had you as Ally, which contributed maybe

sullen condor
#

I saw your bot is raising 2-3 low rcls so was curious why

#

Yeah. I have configs that are different for different server(shard)

haughty cloak
#

Also in the defense are wasteful mode of MMO so no walls

#

I haven't checked on it in a couple of days (traveling for family) so not entirely sure what it's up to

haughty cloak
#

From your message a couple weeks back, should I be setting something in the "stats prefix" field of grafana config? It was blank. And "stats path" was also blank, pulling 4500 metrics. I replaced "stats path" with "stats" (my super-basic stats are in Memory.stats) and now it pulls 4 stats.

scarlet fossil
#

Yep, that's good

haughty cloak
#

(plus presumably the stuff Admin utils pulls down.) That gives me a series like

data

jayseegames_com

shard

adminUtilsStats

users

gcl

scarlet fossil
#

Stats prefix is something you can hardcode into the grafana stats path thing. Stats path is a Memory subkey to limit what's being fetched

haughty cloak
#

(is stats prefix pre-pended onto my Memory.stats keys?)

scarlet fossil
#

You'll have to update your dashboard to remove the extra stats (from the new "stats path") but that's about it

#

It's appended

#

You should get… data.$server.$shard.$optionalPrefix, then whatever is getting pulled

haughty cloak
#

I'm a bit lost as to what you meant by "data.$server.$shard.*"

scarlet fossil
#

So, here's an example from my config:

haughty cloak
#

Oh, I see. The data in grafana gets data.$server.$shard as the first part, then $optionalPrefix is the "stats prefix" of the config, then .whatever from the actual Memory.stats block?

scarlet fossil
#

Pandascreeps is hardcoded to provide the first 3 segments. Traxus is my Stats prefix. colonies is one of the keys of my Memory.stats object

#

yep, exactly

haughty cloak
#

Thanks, updated to include Kalgen as "stats prefix" and will wait for it to populate. Much appreciate the help!

scarlet fossil
#

I'm being bullied again 😭

sullen condor
#

😮

haughty cloak
#

Me too! Harassers in the remotes!!

sullen condor
#

It seems that there is an annoying player in the sandbox🤔

kind trench
#

@scarlet fossil it looks like server is unhappy about something, 3.5s ticks

scarlet fossil
#

oh, it crashing again :/

#

paused

sonic marsh
#

Sandbox still paused or am I being dumb somehow

slender compass
#

i think its just paused sadly, i would love to get some debugging on the long term stuff for my rewrite

scarlet fossil
#

oh yeah, I never looked at that lol

haughty cloak
#

Could always nuke and restart if figuring out how it's broken is too hard.

scarlet fossil
#

I guess, yeah. I mean, it's not hard, it's just… a hassle, as I have to grab the list of everyone active, suspend everyone, then slowly reactivate each player, letting the server tick a few times, then hope I catch the one that's causing the crash

#

I think with a bit of elbow grease, there's a possibility to script all of it, but it feels like such a niche, especially since that talk with o4 about that where he showed me the vanilla pserver doesn't crash like that

#

so it turns into an even deeper why does that happen on the community servers and not the vanilla one

haughty cloak
#

I meant if the hassle is too much, delete the DB and wipe. I get that's a hassle too, and doesn't prevent it from happening again, tho.

sullen condor
#

Yeah. Always welcome entire reset

slender compass
#

I'd much prefer a reset over no ticks

scarlet fossil
#

It's ticking again!

#

Do note that it's running 4.2.21, so console.logUnsafe is there

sullen condor
#

Yay

polar path
#

🎉

slender compass
scarlet fossil
#

@storm hazel You're having bucket issues here btw

storm hazel
#

5-10 mins and i'll take a look

scarlet fossil
storm hazel
#

btw, it's good to hear that sandbox is running again, kind of fixed bucket issue

#

And thanks for notifying

polar path
#

So it's continuing from before?

#

Am I still spawned in?

scarlet fossil
#

and I think so? I didn't exactly check, tbh, I just wanted to see if it would survive being moved from musl to glibc, and it did

#

except for the history mod, which I needed to reinstall because it has a binary sqlite installed

ebon palm
#

can an admin help me please? I signed up to the server with username & email and its not sending me the join up email. So I then tried to re-register using steam oauth, and now im getting "username & email already exists" :/

scarlet fossil
#

so make sense you'd get nothing

ebon palm
scarlet fossil
#

yeah, let me just have a little fight with mongo

scarlet fossil
ebon palm
#

It's a bloody jasper graveyard round here 🤣

scarlet fossil
#

yeah, right~

sullen condor
#

Who killed him at the east?

#

And I found something strange

scarlet fossil
#

nah, I think that's normal

#

the pserver's idea of stats is just…not actually there

#

actually, it's more of a client problem in that case, but it's a bit of a hassle to fix up, and doesn't really bring much

#

Kalgen with the shard1.clear() signature lol

haughty cloak
#

meh, didn't bother to customize it. also launched the bot with mmo ally list which was "fun" when Harabi's bot did not. 🙂

scarlet fossil
#

Uhh, @slender compass, why would you be on the server twice? You have two users in there…

#

that's what breaking the profile page, since it appears you're using the later one, but the page fetches the earlier one

#

I just deleted the other one

slender compass
sullen condor
#

Despawned from sandbox so there is lots of free space!

sonic marsh
ebon palm
#

4 srcs, 2 controllers

scarlet fossil
#

…yeah, that's… uhh

#

not sure what happened there

sonic marsh
#

"If your bot can figure it out, it's earned the bonus sources" lmao

#

Oh god would it require twice the upgrading though

scarlet fossil
#

it got signed, somehow

#

one of them at least

sullen condor
#

How can you grab the second controller

#

room.controller will give you one...

#

find(FIND_STRUCTURES).filter

sonic marsh
#

Maybe you've invented the concept of a future season. Multiple controllers that double/triple the room sources

sonic marsh
scarlet fossil
#

whooop

#

all done

#

I'm guessing… race condition when recklessly regenerating the same room over and over?

sonic marsh
#

That seems like a silly thing not to guard against, but certainly possible given how....quirky I know private servers are

scarlet fossil
#

like, I ended up clickety-clicking a bit too much on that room, and it got stuck with the object half of the last room not deleted while it added the terrain + objs of the next one

polar path
#

Wild

ebon palm
#

is it possible to reset your password, for code upload, without knowing it? i can log in with steam and access the server, but im on a new pc and cant remember my old password

verbal moth
#

iirc if you're logged in you dont need to enter your old password

polar path
kind trench
scarlet fossil
#

Oh no, Harabi is back 😨

#

Also, I might be able to reset a password manually. I'm not sure it's possible to do a password reset like that, even with Steam auth giving it a go

kind trench
#

authmod works exactly like that and i'm quite sure i did it a few times

scarlet fossil
#

…wait, isn't there supposed to be a setPassword CLI command?
found it, it's not in the usual "namespaced" stuff, just setPassword(username, pass)

scarlet fossil
scarlet fossil
kind trench
#

at least not in steam client

scarlet fossil
#

oh, steam client. yeah that might do some Steam Auth magic

ebon palm
#

Yeah I assumed you needed to know your old password

#

As it had a field for it

ebon palm
polar path
ebon palm
polar path
#

Yeah, my credentials don't get saved in mine either. It defaulted to that and I never changed it. I always carry a USB with me that has my V1 bot's code and config files on it though. 😂

ebon palm
#

Yeah that's cool. Generally GitHub is very secure. I just need to start using a password manager so I can have my credentials where ever I need them

polar path
#

I do use a password manager, but I never really thought of putting my screeps code credentials in it. I probably should.

#

For my own private server all the credentials are so basic that I can easily remember them. My API key for pushing to official servers is much more important and secure though.

kind trench
#

keepass with db file on pendrive + dropbox/drive works perfectly for me

scarlet fossil
#

I tattoo them on my arm

polar path
#

I use Keepass as well.

scarlet fossil
#

I'm running out of arm tho. also, it's costly

polar path
#

I host the keepass db on my web host.

polar path
scarlet fossil
#

Had to have a skin graft to clear the ones that were leaked

#

I shut up Monday 🤣

#

I'm teaching the Jomik image to take a JSON object of Screeps components to git URLs to be able to install random branches instead of waiting for an update to land

sullen condor
#

What's the pros and cons of jomik compared to original launcher?

scarlet fossil
#

if you mean the actual, dev sanctioned setup, the issue is the old Node 10 version and requiring python2

sullen condor
#

I meant screepers-screeps-launcher?

scarlet fossil
#

if you mean Alina's launcher, then it's a bit more… muddy. The main difference between both lies in how they build their images. From a purely… ideological standpoint, a Docker image is supposed to be static. You build it, it has all the pieces backed in, so when you run it the server's ready to go. Alina's launcher doesn't do that, it has to perform the whole server install each time you run it, while Jomik's image has the server pre-setup

#

It has a big impact in the startup times, mostly.

sullen condor
#

I see... so you think jomik's is better? I should try to migrate

scarlet fossil
#

On the other hand, Alina's image, while a bit more… brittle (because of the "inline install" setup) has more belts and whistles, like an integrated backup tool. Also, most of it is written in Go.

#

Brittle because if anything ever changes in the npm package dependency list and breaks, then the image is broken. Jomik's, having the whole setup baked into the image, would just keep running, until a new image was published (which would honestly never happen, but still)

scarlet fossil
#

I find Jomik's easier to hack on because of the non-Go-ness.

sullen condor
#

I see. I used screepers because of the backup / restore functionality, but I felt those are too unstable...

#

Sometimes entire setup just broke

scarlet fossil
#

Yeah, I don't have any experience on that front, since I just wipe it all clean and recreate any time I need a test server

sullen condor
#

Yeah. Seems that that's safe option

scarlet fossil
#

Would you guys be okay with dogfooding some of the server changes I have scheduled to make sure they're all nice and proper? Now that I have the ability to load up any random server component into the image, we could try and see if the isActive fix, or the extended notifyWhenAttacked stuff actually functions (though the latter would need emails to be set up, I guess…)

slender compass
#

I'd be fine with it

sullen condor
scarlet fossil
verbal moth
scarlet fossil
#

oh? well then, maybe that has changed at some point. last I remember it was doing the whole isolate-vm compilation while starting up

past ice
#

A not so fun suprise 😄 Few days ago: one room, today: quarter of the map is yellow again

scarlet fossil
#

yeaaaah

verbal moth
scarlet fossil
#

Hi! Today's doomsday. I'm gonna upgrade the server to the beta version to see how it reacts to being on Node 24, if there's any breakage and stuff

sullen condor
#

Cool!

scarlet fossil
#

we'll see how it goes

#

I'm gonna take notes about what and how to back up

#

maybe at some point I'll write the Jomik support for that 😅

#
$ node -v
v24.14.0
#

🫡

#

ah, right, the broken cli access

#

@teal sapphire did you happen to have a look at that by chance?

#

I mean, I can work around it using netcat, just wondering if you were able to confirm if it's a beta problem or something else

#

4208169 was the first Node 24 tick

#

hmm, so it's up, it's ticking, but web socket room subscription appear to be broken, so room view doesn't work

#

oh hell nah

#

Harabiiiii! ✊

#

jokes aside, it's something I broke in Steamless. v1.17.0 works fine

past ice
#

Nice to know I'm not the weakest target around Harabi 😄

scarlet fossil
#

oh far from it, yeah

sullen condor
scarlet fossil
#

I really haven't spent enough time trying to bring OM's combat capability up to something worth

past ice
#

My RCL 7's did get the treatment just as they were about to promote

sullen condor
#

Somehow my loves your bot than others

scarlet fossil
#

Love? I'm being bullied in there

sullen condor
#

I always feel like my bot has special feeling toward your bot and gadjung's

past ice
#

I can send you energy if that helps 😄

scarlet fossil
#

not sure it might

sullen condor
#

I can stop it... but when I get home

scarlet fossil
#

nah, it's okay

past ice
#

I'll send some as an experiment

scarlet fossil
#

I mean, you're still spreading a bit too much for my comfort, but

#

you know I could just… cheat anything I want in, right?

sullen condor
#

Haha

scarlet fossil
#

I could blink those quads out of existence

sullen condor
#

Can you reset my gcl too?

scarlet fossil
#

yeah

sullen condor
#

Can I?

scarlet fossil
#

get a gcl reset? yeah

sullen condor
#

How? Couldn't find delete id or so

scarlet fossil
#

it's a property on the user

past ice
#

From watching sandbox I think it's clear I need to write automated expansion code, I just haven't figured out how to score rooms the best

scarlet fossil
#
  money: 21394760354.993164,
  gcl: 888671402,
#

oddly enough, you somehow have fractional monies in there

scarlet fossil
sullen condor
past ice
#

Yeah, I think I have a vague understanding of what I'm looking for personally but it's hard to quantify

sullen condor
#

Start is half of the work

#

Once you start, it will look easier

scarlet fossil
#

I'm doing what feels like it would be a convolution of sorts? Mostly it's:

  • for a given room:
    • grab all rooms range 5 of it, if any of them is owned by an enemy, stop
    • grab all rooms range 3 (or 2), if any of them is owned by me, stop
    • if the room has no controller, stop
    • otherwise, get all rooms range 2, check if we have source intel on those.
      • if we don't, stop
      • calculate pathing distance from each source to the bunker's assumed storage location (means you'd have to actually planned the room at some point)
      • sum it all up with magic math
      • give a small boost if the room's mineral would balance out the empire's current mineral availability
      • etc.
#

"magic math" is because I can't remember what it's actually doing. It's definitely doing something about walk distance to sources, skipping those that are further than a set number of steps

past ice
#

Hmm. For me the hardest step would be ensuring I have scouted every room in range 5 of the room

#

My only deterministic scouting is observers

#

Maybe I build scouting code first

scarlet fossil
#

yeah, that's kinda the point I'm at, trying to make the scouting passably more useful so it autocollects the intel it needs

sonic marsh
scarlet fossil
#

oh yeah, put that under an aggressiveness knob~

past ice
#

The "Jasper factor"

sonic marsh
#

Appearing out of the 4th dimension to set up camp on your lawn

past ice
#

I had cleared this room and the next day Jasper was already rcl 3 in there

sonic marsh
#

Checks out

scarlet fossil
#

"It's my lawn now" 👴

sullen condor
#

@past ice Testing suppression toward your bot in sandbox. It might be a good test case for you too

sullen condor
#

(Remote suppression)

past ice
#

My bot on sandbox is a bit out of date, it seems to have old code for remotes and likely their defences judging from the roads not being rebuilt

#

Clever going around, I dont think my bot can respond to a roaming threat like that

scarlet fossil
#

I find it funny nobody's having any issues with Node 24. That's a good sign

#

anyone tried switching their bot's transpiling target to that?

slender compass
# scarlet fossil anyone tried switching their bot's transpiling target to that?

working great with my rust bot atleast! no MVP wasm or sign-ext lowering needed anymore 😄

.. definitely good reminder to fix my resource allocation issues tho, haven't taken a look in a while to how my bot is doing in sandbox
just for some ideas, how does everyone here handle space allocation? some hardcoded limit per room or possibly a dynamic global limit?
currently im trying to go for something akin to "2% of all storage space is used for this resource type" but that feels a bit wasteful, allocating space for resources i won't even have for a long time

past ice
scarlet fossil
#

I think I found the stack overflow 😅 ```ts
remove(force?: boolean): OK | ERR_BUSY {
const ret = this.remove(force);
if (ret === OK) {
Overmind.combatIntel.unregisterThreat(this);
}
return ret;
}

#

funnily enough that didn't even murder my CPU. Bot kept trucking around at 9999 bucket

#

aww, Harabi's coming for me again 😭

slender compass
#

is there some claim/gcl limiting in sandbox going on?
been fixing lots of bugs today in my bot and stumbled upon my bot constantly trying to auto-expand but never succeeding
it think it has 22 GCL, 21 rooms claimed which lines up with what i see in my profile and sends a claimer & colonisation squad but always gets the ERR_GCL_NOT_ENOUGH result

http://jayseegames.localhost:8080/(http://jayseegames.com:21025)/#!/history/shard0/E12N8?t=4936909
i really don't see anything that could be wrong in my code that could cause this, controller is freshly gotten a couple lines above

match creep.creep.claim_controller(&controller) {
    Err(ErrorCode::NotOwner | ErrorCode::InvalidTarget) => {
        creep.creep.attack_controller(&controller).should_be_ok_dbg((creep, controller), "claimer attack controller because fail to claim");
    },
    Err(ErrorCode::GclNotEnough) => {
        let _ = creep.creep.say("no gcl! D:", true);
        self.claimer_waiting_for_gcl = true;
    },
    e => {
        if e.should_be_ok_dbg(creep, "claimer claim controller") {
            rdm.force_update_next_tick(controller_pos.room_name());
        }
    }
};
#

ohh, i figured it out

#

for some reason the game thinks i've claimed E13S5 when i haven't

#

so in the claimController check it sees 22 rooms (all my rooms + E13S5) so it thinks i've reached my cap

scarlet fossil
#

lemme check…

slender compass
#

this room definitely isn't right

#

apparently there is a invader core there

scarlet fossil
#

…right, broken CLI on Node 24

#

that's gonna be fun

#

that's your list of rooms: ```
rooms: [
'E3N12', 'E4N1', 'E5S2',
'E13S8', 'E12S5', 'E11N12',
'E16S8', 'E15N19', 'E9N6',
'E4N2', 'W19N11', 'E11N19',
'W19N8', 'E13S5', 'W17N14',
'E7S14', 'W15N2', 'W4N19',
'W1N18', 'E9N15', 'E7N2',
'E1S8'
],

scarlet fossil
slender compass
#

i guess that was just a client bug and nothing related to the room list being weird

#

unlucky timing

slender compass
#

i wonder how that happened

scarlet fossil
#

I mean… there's a spawn there

slender compass
#

do spawns just count??

scarlet fossil
#

no, but I mean… you have to have owned the room at one point for a spawn to get placed

#

some infra from the nearby room

slender compass
#

ah, yep

#

its been there since forever i guess

#

seems like the rooms i own is a list that just gets incrementally updated whenever controller ownership changes & doesn't check the game state
i guess there is a path that somehow avoids the removeRoomFromUser call and still removes my ownership of the controller

scarlet fossil
#

oddly enough, anything before that is a 500 in the console, but the server still serves an empty JSON for it

slender compass
#

heh, history doesn't stop behaving oddly i guess

scarlet fossil
#

Maybe… I mean… it might make sense to return a 500 to make the client not bother trying to make sense of an empty chunk

#

still, no idea what's the story behind that extra spawn, and why the game didn't fix that up when you lost control of that room

slender compass
#

structures don't get removed when you unclaim tho?

#

i guess my bot abandoned the room at some point

scarlet fossil
#

so… 21 owned rooms at the moment, right?

slender compass
#

yep

scarlet fossil
#
[
  'W4N19', 'E9N15',  'W17N14',
  'E3N12', 'W19N11', 'W19N8',
  'E9N6',  'W15N2',  'E7N2',
  'E5S2',  'E12S5',  'E1S8',
  'E7S14', 'E15N19', 'E11N19',
  'W1N18', 'E11N12', 'E4N2',
  'E4N1',  'E13S8',  'E16S8'
]
#

gah, not having readline caps is a pain

slender compass
#

even if its an empty array it should just add all rooms i own the next tick to it

scarlet fossil
#

I mean… we can test that 😅

slender compass
#

worst case scenario i will get 43 rooms!
sounds like a great deal to me 😄

scarlet fossil
#

hmm, it rewrote the rooms array

slender compass
#

mh?

scarlet fossil
#
rooms: [
      'E15N19', 'E5S2',   'E7N2',
      'W19N8',  'E11N19', 'W15N2',
      'E16S8',  'W17N14', 'E7S14',
      'W19N11', 'W1N18',  'E4N2',
      'E11N12', 'E1S8',   'E9N15',
      'E13S8',  'E4N1',   'E9N6',
      'E3N12',  'E12S5',  'W4N19',
      'W5S7'
    ],
slender compass
#

ahh

scarlet fossil
#

ah, right, it claimed and recalculated that, with W5S7 as the last one

slender compass
#

thank you very much for the quick fix! 😄

#

now to.. fix that bug.. 0% chance of surviving

scarlet fossil
#

yeah, that's… an interesting situation you got there

#

Not sure what happened. Both the claim intent and the controller tick intent have calls to addRoomToUser/removeRoomFromUser

#

so that should definitely not have stayed in the list

slender compass
#

yeah, i've got no clue how it got into that broken state

scarlet fossil
#

@teal sapphire sorry for the ping, but… given this is odd, maybe you'd like to know?

#

this is on Node 24

slender compass
#

mostly the question of does it include W15N2?

scarlet fossil
#
rooms: [
      'E15N19', 'E5S2',   'E7N2',
      'W19N8',  'E11N19', 'E16S8',
      'W17N14', 'E7S14',  'W19N11',
      'W1N18',  'E4N2',   'E11N12',
      'E1S8',   'E9N15',  'E13S8',
      'E4N1',   'E9N6',   'E3N12',
      'E12S5',  'W4N19',  'W5S7'
    ],
#

it doesn't

slender compass
#

okay, thats good

scarlet fossil
#

not exactly sure, since I don't have the history of what happened

#

my guess would be (but I'm not sure it makes sense) that an invader popped up right as the room downgraded or something?

teal sapphire
#

Can't perform a deep investigation right now, sadly
Please ping me if you're happen to figure out the reproduction

scarlet fossil
#

sure thing! I'll do some check to see if there are other inconsistencies like that

slender compass
#

i really can't find any leads in the code as to why this could have happened
downgrading either by user or invader manipulate the downgrade timer which gets checked in controller ticking which is sane
can't see anything wrong with unclaiming logic either

best idea i've got so far is maybe 2 people attempted to claim the room in the same tick, both getting addRoomToUser called but only the last person actually getting the claim but im not sure if thats possible
either via 2 .claimController calls or possible someone spawning into that room on the exact same tick

scarlet fossil
#

but Jasper's pretty much the most intense claimer I've seen, sooo…

slender compass
#

hehehehe

#

it was bound to happen to me i guess

scarlet fossil
#

yeah, I don't think it's a bot-side thing, this sounds more like the server getting something mixed up

slender compass
#

absolutely

scarlet fossil
#

I mean, that while loop looked weird to me until I remembered that a room might not tick for a while, and this is just handling progressively downgrading it for all the time it didn't get to tick

#

can't wait to be on the end of that email-storm that causes lol

slender compass
#

i do think there is a race condition between the claimController intent and someone spawning into that exact same room on the same tick, but that would be insanely hard to pull off and i doubt that has happened in this case

#

actually no, nevermind

#

it can do funky stuff but not that

scarlet fossil
#

yeah, I see it's checking the user before doing the whole place-spawn dance

slender compass
#

yep, but its chained with .then() calls which might give the processor time to do the claimController intent, hence why i thought a race condition might be possible

scarlet fossil
#

though it doesn't update said user's room list until the controller ticks

slender compass
#

but in the actual line where it updates the controller it specifically looks for a controller at level 0 to claim, which is a atomic check & update so no race condition

#

im out of threads to pull i guess, imma just chalk it up to magic bitflip or something idk

scarlet fossil
#

ah, right, there's a small window where "place-spawn checks, is green, schedules more stuff, while claim controller swoops in, then gets blasted off by place-spawn finishing"?

slender compass
#

yep

scarlet fossil
#

so, I got everyone's current rooms list, but checking that against the real list given the broken console sounds like my idea of un-fun

#

27 users

slender compass
#

fun fact:
while in this endless auto-expansion broken state my bot has managed to attempt to expand 30+ times to the same room... for 30 different rooms
in total 2985 auto-expansion attempts where made

past ice
#

I pushed an update to my bot that includes rudimentary automation, so if a blue triangle is being a bother let me know

scarlet fossil
#

Heads up that the server is now running custom server components (I'm testing them out 😅).

#

So a bunch of the in-flight fixes against the game's repo are in there, namely:

  • isActive checks should be free-ish
  • creep renewal has a list of extensions to use
  • the attack notifications stuff is there, so there's a spawn flag, an accessor, etc.
  • CostMatrix.clone() fix
  • unspawned powercreeps TTL fix
  • powercreep name limit is 100 everywhere now
  • the weird pull on death bug someone fixed is there too

and I'm testing out a change to how history gets saved (moved it at the start of the tick, before anything, and saving the data for the $tick-1 tick instead of in the middle), that might help with replays looking weird

past ice
#

Is the server down or just me problem? @scarlet fossil

scarlet fossil
#

yeah, it's undergoing some maintenance

#

I'm test-running the Mongo mod update, so everything can be updated to a recent mongo & redis version

#

just hit a couple of snags where it's now consistently wiping the db on start-up, even though the data is there from the restore

past ice
#

Nice, gl with the snags

scarlet fossil
#

Okay, server back. If you spot anything weird, do tell. It's running 4 Mongo versions above what it initially runs

kind trench
#

auch also 4.5-5s ticks here 🙈

scarlet fossil
#

yeah, I rolled it back to Mongo 4 😩

#

thank god my backup script works

#

history might be weird though

scarlet fossil
#

fixed history by just yanking everything after the backup

past ice
#

The terrain seems a bit odd on the world map, deleting cache didn't seem to help

scarlet fossil
past ice
#

That did fix it

scarlet fossil
#

weird… you somehow got the alpha map for something else in there

#

I did do a server side refresh of it all, for the normal map

past ice
#

Hmm. It is on steamless and I only really check mmo and sandbox, I dont think they should be intermingling

scarlet fossil
#

yeah, especially if you have the subdomain thing of steamless

#

what might have happened is that you ended up looking at the server while I was in the middle of the restoration crisis

#

so you saw a random newly generated map

past ice
#

Ah yeah I did load it yesterday when I pinged you

#

It didn't load anything on the UI but might have loaded the map somehow

scarlet fossil
#

yeah, that might have been it then