https://www.youtube.com/watch?v=eZBR_Nwn2S4 just pretend that says Traxus
#Screeps Sandbox
1 messages · Page 2 of 1
Funnily, it means you could give yourself 500 CPU and still have the rest of the players go through the GCL-to-CPU ruleset by setting your active to anything else than 0 or 10000
very silly
very very silly
is this a mod or a server thing?
oh, sounds like admin utils
Yeah, that's part of adminutils, but it checks for that specific 10000 value the game set by default when updating the CPU calc (what caused sleep's CPU to reset, since that happens every 10 ticks)
understood
Lots of weird things I haven't tried, like what happens if you block out a room you're running in (like o4 does when there's a player under investigation)
set it to -1
Wouldn't work either
Time for someone to add utils.banUser() to admin-utils
Yeah, was thinking about that lol
Then we can make it an instant process that deletes all their objects, memory, disables user account, etc. Yeet
utils.yeet()
/**
* utils.yeetUser() - Ban/disable/perform unholy acts on a misbehaving user account
…
* nukePiñata: set to true to spawn a nuke that will land instantly on all their structures.
* Pass a number to have them land in this many ticks.
*/
In the meantime, this seems to stop the server from executing the user's code: @rotund olive
storage.db.users.update({ username: 'USERNAME' },{ $set: { active: 0 } })
(the normal value is active: 10000)
I'm aware, thanks
My bad, I should read
🍿
Are they doing well? I hope so
well this is kinda scary👀
you shoulda seen my quad hit 1 of your rooms and popped a safemode
I decided to join 😉
(That was fully automatic BTW)
Now all we need is someone to take E5N3 and we have a nice square
IIRC this is HK's original room, so its going to be hard to move in here lol
Well my autoexpand does not factor in other players😅
Same here lol
next expansion will also be close to HKquiet. lets see if my defencecode gets tested sometime soon
well im kinda peaceful so i guess you wont get your defensecode tested lol
unless there's some pathfinding bugs in my squad's code💀
rip trump
Didn't even build a wall shakes head
Historically accurate :p
tried to send a quad there. failed 😦
ah finally decided to implement safe ramparts and some tower placement
i didn't want to use my time on it before
but now i do so
because of fear💀
oops *was at 40ms
damn, i'm really missing having a working grafana instance
i take it within that creep logic most is intent cost?
should be
also @rotund olive @radiant lily looks like server got hiccup just steam doing update
trafficManager + logic is ~6.5 + 6.3, intents are ~11.4cpu
@wild delta It seems that we're getting remote conflict!
Weird, because my code for this server is a single file of 3.5k JS I wrote a couple of months ago. I think it'll just spawn up to 5 RA or M dudes lol
Yeah, you're causing Friendlies to spawn
Meanwhile you have an RCL3-tier quad 😂
My bot blindly reserves all its adjacent rooms, so it will fight for E2S14 forever Harabi
Yeah. It's cool since I want to improve my field combat
Not quad. Just some creeps that work together. I worked hard on them last week. And it seems working quite well
Creeps that work together in a 2x2 square? 😉
frend?
Sounds like you want me to improve my combat code😇
getting quite cozy here
should not
it is unknown
I'd say less. Pretty sure MMO runs on a whole cluster of machines. This is only one, for like… 10 of us on an 8x8 map
that's not the question here
it's more about computing power
if 1cpu on commieland server is more or less than 1cpu on mmo
Still less. It's one machine vs. a (admittedly unknown) bunch of them
that's not how it works
Are you finding higher or lower CPU than mmo
Bc my bot is running out of CPU lol
Cannot compare with mmo since I'm running different bots. But cpu usage is strangely low. I expect my bot to use about 0.3 for each creep. But not it's about 0.2~0.25 for each creep. Curious if server is faster, or some of my creeps are doing nothing
huh i didnt launch an attack on you
btw have a look at http://localhost:8080/(http://jayseegames.com:21025)/#!/history/shard0/E3N5?t=962371
seems like your roomAttacker has attracted by those creeps on edge
causing your creep stuck into a loop (although the attack was successed eventually XoX
i guess you might want this replay if you want to improve your combat code?
nah dont join plz lol im gonna die instantly under attack of you guys☠️
Hmm I did not do anything manual there...Thx for the link. Need to look at it after work. But i dont think an automatic roomattack should have triggert already.. is my adjacent room already rcl6? If not then there is a Bug with my attackrange. Should only be range 2 of rcl 6 rooms.
well from my observation, those roomAttacker was sent from this room
and attacked two rooms that i don't think it's range 2 on map..?
Good to know im in range
Once you are rcl 5 you are safe.
unfortunate
i have this much territory and average around 80-90 CPU
5 rooms, with much remotes. That's not bad. Is it your bot?
yeah, i added a couple CPU saving features, and made rooms have a couple extra remotes, but it still runs out of CPU sometimes
How many creeps?
idk doing screeps arena rn
will check later
maybe 90-100 at best?
Am I the only one bothered by the market being 💩?
You use the market?
A little bit. I had it forcibly disabled, but then reenabled it because I don't have an energy sink otherwise
But I don't see the point of having… that enabled. You have the NPC terminals completely distorting whatever sort of market forces you could have
To be fair I think it's only @normal tendon, @haughty cloak and me doing market stuff. Haven't seen much of anyone else, but most of what's available is being traded, for some reason or another
Yeah, for sure it's a small market. 🙇
I think I just don't like the static market mod. It's just… not interesting as a market
Somehow my v3 is much better than v2 bot cpuwise
0.27 CPU/creep...
🤯 🤯 🤯
This is v2 in MMO
Maybe because it's not doing Power bank mining, Deposit mining, Harassing.
But fighting around some remotes and doing some mineral minings from SK/center rooms
It might not be apples-to-apples on different server environments.
Yeah. I guess jaysee is faster than MMO
Oh, right! There are some good numbers about CPU having a 1.3x multiplier on MMO... would need some digging to find that...
actually can't rn 😦 mass error ruined all my colonies
so you say an optimized state was reached
He's talking about e=mc2, too much energy was converted into mass and now thing's aren't working quite right
no, error with outpost memory. randomly removed from one of the rooms, so the entire bot broke
i fixed it now, i'll give it a day and then count creep count
Creep count should be fine after 1,500 ticks ish ?
error = multiple creeps ^ 2 ?
?
no, pioneers are spawned because of the eco situation, so it will take longer for regular creeps to be spawned
5 CPU
The Jaysee market is weird. Most stuff has NPC orders, except energy does not. And not many players placing them either. My bot handles MMO market, and disabled market, but not very well this partial market. Currently sinking energy by building ramparts with towers, but will need to add a backup to the backup in the form of spawning large claim creeps to go off and suicide or something
could just send() the excess as a gift to a random lucky person with a terminal 😉
people are using the jaysee market?
Hmm maybe if I add some terminals it will work better
i wish someone put buying orders up
I think I found the Bug. Now it should only antagonize players that are too close (Linear Distance of 2). Even if i faceclaimed them😅
I have 221 creeps and I was using 90 CPU constantly
My remote intents are expensive, and my hauler count needs a bit of balancing
base management etc uses more CPU
@pallid totem do you want me to test your defense
What RCL is it at
i got new quad code to test
8, 6, 6, 5, 4
I respawned
I have only one room?
oh
Oof, not good
It should be at least 6
That's brutal, how much energy is in storage?
i cant handle twice the amount of towers
i had to edit the message
anyways i think your room could survive
you do have auto safe mode, right?
oh
How much energy is in my rooms storage?
do you want a quad in your room?
lemme check
234K
@pallid totem you are dealing with a quad that has Heal 624/T Ranged attack 420/T
Ant it's not RCL 6
Tf
Oh, my bots having issues with upgrader spawniong again
i think you won
yeah they dead
thanks for wasting 24K of my energy
that doesn't seem right
screeps body calculator is wrong
He told you no, lol
Oh, the invader killed them
yeah
please delay upgrading until the invader core disappears
4895 ticks of delay
lmao
Im fixing the bug now lol
thanks for that
if you want, i will give you a const
You could test a quad on my room if it's in range, it served its purpose. Won't be much of a test either, though. :P
const controllerDelay = 4895
its RCL 7 though
3 towers 😦
It has really dumb towers and you're RCL8, you should definitely be able to kill it. Also there's no ramparts even. XD
unboosted
Just boost then 4head
no market...
and no boosting logic
actually there is some
Dude cant even make boosts with an OS bot 😆
no as in the actual quad getting the boost
and mineral haulers are being dumb so no minerals
Is boosting not a simple funciton call?
You have dedicated mineral haulers?
yeah
You dont have normal haulers do it?
no?
every bot has dedicated mineral haulers?
No
I have seen like, 3 bots with mineral haulers
Most people just have it built into their hauler network by default
4 now
Not every bot, lol.
No
Well, in Ourobot V1 SK minerals have dedicated haulers. Not in-room minerals, though. And in Ourobot V2, SK minerals will be mission haulers, not specifically SK mineral haulers.
oh poaching rooms
kasamibot handles poaching rooms (SK mineral rooms) by making dedicated units for it
miners, haulers and guards (obviously)
I just plan to make my miners and haulers check if its in a SK room, then add some logic, but otherwise it should be easy to do
I might do SK mining soon
SK mining is on my list to prepare for the season.
My list currently is:
- Improved spawning (tweaks)
- Improved upgrading (more tweaks, oh boy)
- Base planning (Kill me)
- Few other things
Speaking of, I just love bugs
Found a bug where my hauler priority was insane, because I was checking the count of the wrong role lol
my list is: -dynamic remote stuff (not doing)
- Improved upgrading (also me)
- field combat (quading updates aswell)
- better expansion code
Mine is currently:
Damn, I forgot about terminals
thank kasami that terminal things exist
hey @polar path Want to team up this season?
+distribution with terminals
can i join in
lol, infinity moved right on in with me
Generally it's frowned upon to have pre-formed alliances in seasons. Alliances that advantage both parties within the season are fair game, though.
im certain no-one would bat an eye at a truce though
well if us 3 team up, we could do what (i think last season) viking and tigga shared resources 1:1 by opening ramparts
(kalgen and tigga)
v1king wasn't in last season. Maybe in Season 5 there was something like that.
5 i think
my bot sells excess minerals to the npc market, and struggled initially with this market since there was little volume. i had to hard code some of the prices. i have effectively been able to turn 1 mineral into 5 units of energy through my trading with Kalgen. your bot really doesn't want to sell mine energy at .001 haha
@scarlet fossil would you mind if I use your bot in sandbox as quad test opponent?
Sure, though I'd have to be looking over its shoulder a bit
It's possible that it will just fall over and let itself be destroyed if it looks too powerful
Would give me an incentive to poke at the combat/defense code
I don't want to destroy. I'll stop the fight when it happenss
I think I will be able to spawn some quads this weekend, or sooner
Great. Any attack will be welcome. Just let me know when it happens
I'll notice you when I start some attack.
Sounds good
I'm hyped, actually. I have a lot of little issues that's gonna cause I'm going to have to fix
Cool. Let's be stronger^^
huh, now im wondering if my defence code is even awake
It eepy
Are you close to me? I'm willing to help you
we are at opposite ends of the map

whats going on over here
up and harv, slaving away in the mines
every time they die they get brought back to life
its a new quad target practice underway
good for them, seeing how much of a lazy ass up is smh
I'm getting harassed, and oddly enough that made it pop a safemode. I really need to have a look at defense code
Just reworked a bit of the harassing code, but I'm not sure it's gonna run anything close to satisfying
Harass me plz
I finally got around to implementing energy relaying
I haven't changed my hauler bodies or anything to optimize it yet but I at least have the feature working
I had a bit of an ah-ha moment yesterday thinking about it
Can you share it
Yeah, the idea I had was to use floodfill algo and create a map of the room with the Storage (or whatever the hauler target is) as the starting point. And then every position in the room is marked on a CM is a distance to that position
Remote rooms create a similar map, but they use the travel path intersecting an exit back home as the starting point for the floodfill
Same exact floodfill that I use for base planning. I guess it has more applications than I had considered
Another idea was to sort haulers before running them, so that all of the haulers with energy in Delivering state will run first. By having all the other haulers that are in PickupEnergy state run secondly, it makes sure they move correctly in opposing directions after doing a relay handoff
my cr should be fixed @placid idol
I should also mention that my haulers don't use the same cache paths as remote roads. I want to add that eventually but right now haulers do their own pathfinding and then cache their own path. However, if the haulers follow the cached road paths back and forth, the relaying system could probably use path positions instead of the floodfill. Either way I'm happy to have something working for now
That sounds very different from my implementation. I do it as a step in my movement code, effectively.
Basically, if empty and full haulers would collide during movement - relay instead.
That sounds nice and minimal. I had tried some simpler implementations previously but always hit snags with haulers stuck dancing and passing the energy back and forth like a sad game of hot potato
Its one of those things that if done incorrectly it's just better to not do it at all 🙈
Yeah, you gotta track a decent number of things (and accurately) to make sure they don't try to do invalid things.
Like, if a hauler already did an transfer intent or it just got the energy this tick or the receiving one just got emptied this tick, you don't want them to try relaying.
My implementation does miss some potential relaying opportunities, but it gets most of them and I think the CPU cost is quite minimal.
Of course, the CPU cost of scaling down haulers for it is high, but that can be controlled based on CPU so they're scaled back up if CPU is short.
That's the part I want to add next. Spawning more small haulers based on available CPU
One thing to keep in mind when doing that is that you also need them to be big enough that your throughput is okay.
If they're too small you just get a traffic jam
W8S8, right?
I have the evacuation directive dropped lol
…which somehow didn't exactly result in emptying the stuff :/
Why ramparts so low?
Oh, this is you. Yeah, I noticed but didn't see it happen, was in the process of making harass-mode actually work. It's been active since yesterday, but unless you tell me you saw one, I'm pretty sure it's not working properly
…good question, tbh, let me have a look
Ah, right, I made power-processing priority on MMO, and that's not exactly right here
So can you build up some ramparts?
Cool. So it's similar with flow field I guess
oh, i think i may have seen two actually
saw 2 blinkies travel across the highway in my direction. probably went into my RCL 8 room. likely insta-killed though
Quick, spot the bug ```ts
Object.defineProperty(Room.prototype, "barriers", {
get(this: Room) {
if (!this._barriers) {
const barriers = [] as (StructureRampart | StructureWall)[];
barriers.concat(this.ramparts, this.constructedWalls);
this._barriers = barriers;
}
return this._barriers;
},
configurable: true,
});
I can't believe I messed that up
Suddenly, 8 workers requested
I guess that's a nice way to sink excess energy
aw ffs i need to tweak my upgrade logic still
i just took some fork of traveler and proceeded to gradually butcher it ever since (all i know is that it has gained 300 loc, half is probably commented out logging/visual functions)

on a side note, worker convoy op
how much CPU do those visuals cost
virtually nothing
because same data is used by logic on-tick and just stored in heap
the paths sometimes get pricy for remotes, but that's other debug level
Okay, ramparts are building up, so taking out one of my room shouldn't be so simple anymore. I hope it'll have time to grow a bit more, the cap at RCL8 is 21M
@scarlet fossil your harassars are working
you got one of my RCL 6 rooms to spawn 3 rampart defenders and with a couple more of them destroyed the room 😛
but now my destruction manager is gonna catch onto you
I destroyed a room?
Oh, I got a bit scared there. The plan was only to check what the heck is OM's harrasing code about, since that's pretty much manual. And… I'm sort-of reacting to your own creeps popping up my own miners
i dont think so
harass manager sent harassars to your remotes
because of the threat you had acquired
Did I? Weird, 'cause nothing in OM is overtly hostile, it's all pretty much manual still
idk
maybe a scout or such gained enough threat for harassers to come to you
then your harasser response allowed more harassers to come to you
Good ol' escalation, I guess
it also seems scouts are surveying your rooms/remotes alot more than usual rooms
likely because of destruction manager/harass manager
I don't even have threat management, nor even any sort of "where do I go to find $player" system
oh lol
Look at me, doing damage lol
random harasser ruined my remotes
woah
loads of harassars are coming into my remotes
Tbh I don't even know what the low-level harassing code does. I only fixed the remote-detection system to properly detect your rooms as remotes
So it might be spawning a lot? I haven't poked at that code yet
oh, sometimes they come and attack my rooms
it is, definetly
every remote you harass adds quite alot to the player threat
Oh, hey, there's one currently in. First time I see one actually come to the selected room
the one in W2N3 soon to be W3N3?
It's targeting W4N1
oh
So most likely doing rounds. I have no idea what makes it switch targets, but that feels… broken
Since a lot of the time, the creep doesn't even get close to the target before it switches
just remember, the destruction manager will catch onto your shenanigans eventually
Again, only fixed the code to not be a CPU hog, to use observers to gather intel and use the fact that there's a WORK-bearing creep next to sources instead of room reservation, which most of your remotes didn't seem to have when I worked on that
?
they all get reservers
Switched again, W2N3 :/
weird
I might be misremembering. I just wanted a bit more than "is it reserved" as a check, and checking for miners sounded like good enough
AFAIK the only issue it has right now is that knowing which remote belongs to which room is… pretty messy, so I'm just doing a depth-3 room exit search and tickClock ing until I looked at all candidates
And ded. I got caught up by your defense force
yeah, they will respond quite quick
if you had a larger force it would take around 100-200 ticks more to get the other 2 defenders to attack you
Yeah, I was wondering how you did that. Do you have a few of them handy and make them patrol or something else?
Just wondering. OM's code pretty much very reactive only, the "idle creep" system is pretty much broken, so generally any sort of hostility will result in a whole spawn cycle delay, hoping there's not something more important to spawn first (though I think defense is pretty high)
oh ok
i can tell
i dont think this was the case, but an outpost defender may have been spawned to an invader in another remote, then the code got that defender to attack yours once it finished with the invader
Possible? I honestly missed the issue, I just came back to two outpost defense directives being active, with one currently tracking an hostile, which was a single creep of yours
but anyways with large remote harassing/unknown attack force in the remote, the code will get the intensity of the attack, and respond as follows
are you talking about your harasser or my harasser? because i dont think you had any active defenders.
No, IIRC your creep just died of old age after bashing one miner
I should have noted the tick, I'd have no luck trying to find it back into the history :/
But yeah, improving OM's combat tracking has been something I wanted to look at. Heck, even combat ability itself. I taught it a few tricks already, trying to estimate the strenght required to take out a stronghold, but that's the most I did with it
what attacking force do you have?
I'm more economy-oriented in general, and there's been a lot to fix in that domain already 😅
or is it just harassers?
Depends on what I ask it to do. Harassing just spawns a couple ranged/melee in a trickle
you manually send them?
No, I drop a colored flag, since there's nothing to automate that in OM, being an OS bot
I mean, maybe Muon had code like that, but I'm tempted to say no
oh
i though OM used flags for nearly everything?
It does
then how come its manual?
But in a lot of cases it automatically drops the correct flag itself and let its processing handle the low-level details
oh
But there's nothing about being hostile
So I could send quads over to you, but that would have either be me manually dropping the flag, or having dropped so much more code to have it automatically do it
😲
escalation then
Because again, my intel's not great, I have no idea how hostile you'd be relative to anyone else. OM pretty much sees anything that's not an ally as a menace
i will nuke you + send quads + call all attack creeps to a room
Woopsie~
I removed the harass directive, not sure I wanna get into a all out-war with you, I feel like it's not gonna go well for me
Sure, if you want, let me find the correct flag color
yeah, lets not war 🙂
Then we'll bask into the glory of OM's combat code
unless though...
i didn't know it had quads though
is that obfuscated code? (as in it was obfuscated with the full OS version)
Nope, but it's not the simplest thing
Check Swarm.ts in the repo, if you wanna see the low-level the managment code
ok
i dont read ts very well 😦
Ah, what's obfuscated is the Overmind.ts/Assimilation.ts — the high-level processing, ie, what defines the run phases, intel managment to enforce the detectability as an Overmind, and the assimilation (which is pretty much dead code at that point)
oh ok
is it this?
Yeah, that's the one I just dropped
yeah
The combat-related directives pick out any (compatible) colony in range to ask for creeps
Oh, it's gonna work, the SKs will keep the directive actine until they're gone
cool
hope thats not placed on me then
zerglings and… healers. Transfusers
oh
Broodlings are the outpost defense creeps. Like, actual "this is a player" defense. Otherwise it's just zerglings
You have… lurkers for bunker defense
Never saw those spawn, tbf
??
the overmind NPC we are fighting doesn't spawn lurkers
or did you make them
I mean, the role is there, but I don't think it's wired in a way that's useful
Anything combat-related is generally a mine-field of TODOs, broken, or unoptimized code
is it a melee or ranged attack creep?
ah
W3S2 is making the quad creeps
maxParts: { work: 30, tough: 10, ranged_attack: 10, heal: 2 },
Maybe that's not lurkers, actually
thats werid
Lurkers might be the dismantlers
repairer/defender
makes more sense
Ravagers maxParts: { attack: 50, tough: 10, heal: 2 },
move though?
that makes more sense
It's just autogenerated
oh
The creep setup system will just adapt the move parts to a set move speed you want
set move speed?
interesting
Here's the blueprint: https://github.com/tiennou/Overmind/blob/master/src/creepSetups/CombatCreepSetup.ts#L971
OM things
oh
The fallback point was in the colony room. They assembled there, and once assembled pretty much stay that way
i might send a quad to W4S4 myself
oh
so they don't go to the target room?
useless
They're trying, but now that they're pathing as a 2x2, well… they fat
what if its not wide enough for them to go through?
manually tasked the leader to go to W4S3
oh
I guess that goes into the TODO list 😅
That path should have been pathable, too
They dancing, it's so pretty
Entering W4S4
Lol, they're obeying the SK area
Sighs it never ends
shifting?
I don't know, they did a weird shuffle to reassemble
They're still doing one right now, but different
Okay, found the SK toggle. And now they're stuck healing…
Frustration increases
my quad will come hopefully
although they might target your quad.
my quad have no mercy
so they can attack allies aswell
will your quad move at all?
It's just gonna die out
I have no idea why it's just… stuck. Problem in the pathing code somewhere :/
It's going "oh hey, I should approach that target, let's do nothing"
New quad coming, set to assemble at the bottom of W4S3
So yeah, you're not exactly in danger 😅
Still need to add more debug statements to understand the lack of moving around
I love Muon's commit messages. big commit with lots of changes and a descriptive message
Yeah, no
Whoops, it passed through W3S2, with the expected results. Sorry about that 😅
I usually use shorter messages than that in those cases. Although not necessarily more descriptive. XD
@scarlet fossil W7S11 spawning quad for W8S8
It must be better than before!
Launched!
Yep, it's coming~
too much firepower needed to fight: {"attackCount":1,"rangedCount":17,"healerCount":12}
😅
This test is for not dying
That was enough to make it nope out lol
"Guess I'll die" - Overmind
No defense?
Took it waaay to long to notice
It dropped the defense directive you were already banging on that wall
4 hostiles detected!
Potential creep damage: 0
Maximum tower damage: 3240
Enemy healing power: 1200
Targets:
not the correct ones
My number feels way too low
How about change to melee defender
Oh, mock attack killed my creep
blocked by normal creep
I have no idea what happened there…
Yeah I have to improve retreat logic
4 hostiles detected!
Potential creep damage: 950
Maximum tower damage: 3240
Enemy healing power: 1188
Targets: [creep q_cup9k8ff],[creep q_cup9k8hz]
Something caused a drop in the "healing power", and it went "wait I take take that out" and 💥
When calculating retreat path, I should consider possible dangers
And yet two ticks later ```
3 hostiles detected!
Potential creep damage: 950
Maximum tower damage: 3060
Enemy healing power: 1280
Targets:
At this very moment, my quad should have retreated to the south, but it chose west
And this creep blocked the path, So heal potential got significantly low
Stalemate, I guess. There's no way I'll be able to over-damage you, and the silly defense fleet pushed you too far away for the towers to do anything
Ahah, silly miner getting in the way saved muh walls
No. That's not because your defense creeps. My quad knows where it cannot step
Red alarm emojis shows that
Ah, that's what those mean
You're still sucking that whole damage output, I'm impressed
hrmmm
At this moment, quad should have retreated to the straight south, while it chose bad red path
Yeah, it might have liked the nicely paved road
retreat pathing sucks now
I'm also pretty sure you could do a bunch of damage if you fired back?
I skipped lines of code v2 bot had while rewriting. It's the consequence
Again, I can see the bad pathing
retreat pathing to your defense creeps
This test was so valuable
Most likely to happen, yeah
It's nice seeing all the silly things this code does
They're now all going to head to keep the controller warm, for some reason
Well, I'll have a hot controller waiting for ya then 😅
Not sure if I'm gonna be able to fix the defense that quickly…
TODO record baddies needs to be redone in a more systemic fashion. But here for the :popcorn:
Nice comment
discovers a bare-bones system to track creep expenditure
What I want to recommend
- Use melee defenders unless you can spawn big boosted ranged defender
- Use repairers
- Need to calculate enemy healing better. Considering nearbys
- There is my blog post about making melee defender😉
Yeah, the melee defenders are there, but locked by a condcheck for melee being present
That should be changed, because adjacent RMA does much more damage than pushed-back ranged creeps can do.
What I want to recommend for me
- Consider enemy creeps and incoming damage while pathing retreat path
- Implement smarter RA/RMA
- Respect v2 bot code
I mean… // If serious bunker busting attempt, spawn lurkers
That's pretty much wrong, and I realized that watching the fight
Also, that comment is why I'm getting the lurker role wrong, I think
Now quad is working
Correctly, it seems
NOOO
Swamp lol
Ok, this is chanllenging and fun
#screepsplus message Please ping me immediately if this happens on SS
@scarlet fossil Test quad launched (again)
I hacked around the bunker defense, so a ravager is gonna pop out that middle spawn
No idea wtf it's doing tho, it's idle most of the ticks
What's a ravager?
Super smart, huh?
In screeps, I mean. XD
But that was enough to convince the turret code that there was enough power to fire at you consistently
So… yay I guess?
The red one bottom of the bunker: http://jayseegames.localhost:8080/(http://jayseegames.com:21025)/#!/room/shard0/W8S8
Melee defender
It's OM's melee bunker defender
Not sure you'd get to see it normally, the activation condition for that was… weird…
it knows it will die if it move close to ravager
Especially for a road-only creep
Found a few bugs in the combat code where there would be a few ATTACK_POWER multiples
That RMA only really hurts the quad when it's kited back like that
Yeah. I didn't implemented attack code. Just RMAing
If it can keep my quad one tile away, that's pretty enough defense
I need to look at what I could do to handle emergency repairs. Not sure anyone picked up on that rampart being eaten
I pushed my latest code to jayseegames as well so my room should be a bit less dead now. Still no remote defense yet though
It seems that my quad is pretty good at surviving now
soonTM
Mhm, it does seem so, yeah
I'll write a post about it
I think it's just a mismatch. IMO the comment named them lurkers, but then the actual role is ravager. And I feel like it should be the reverse…
And yeah, that's a chonky boi with a tad too much MOVE
Problem is it's using tons of CPU
Lurker would make much more sense.
I'm under 2000 now
And a 2:1 ratio in favor of more attack than move.
The problem is
- usually my bot cache path through your spawns/towers/etc, considering rampart hits
- your bot making my quad run awway, So I can't use the cached result
- pathing through ramparts eats tons of cpu
Maybe I should use something like flowField
So many small issues I see…
I think I can do that
So, it's pretty good test for both of us
Yeah, definitely ^^
I see big ones too.
I think I'm done with my logic. cpu efficiency should be improved though. Tell me anytime you want to test your defense
That was for that hydralisk kiting forward, getting bonked hard, and fleeing into a swamp, which it didn't have the move power to get out of
Like, the fact that hydralisks are used for that at all. It's a huge expense for not much effect
Yeah, I need better skirmish tracking for that, I think
I mean, I could switch those to something else… Not sure what else OM has in its setup toolkit
Probably polishing up those lurkers and making it use those plus repair would be a good step.
But honestly, the issue right now is the missing tracking. So apart from that one ravager that spawned late, it's gonna estimate the number of ranged defender on its own, not accounting for what the other overlords might also request. So I end up with like 15 hydralisks requested for 4 creeps
Ah, that's a big issue as well
I mean, what would be the true strat in that case? Just plop out a few melee, have them track closely, and tank the shots by repairing?
Yeah
I guess that makes sense. No need to have a flurry of things that would just get sniped and die, especially such a fleet of them
Melee + repair is generally the defense meta. It keeps the defense cost down.
Thanks to bunker (high tower damage) It will be enough to have 1~2 melee defender.
I'll switch to doing that then, see how it goes
Why not having both? I'm pretty certain most of quads would have been died for that defense
5~6 hydralisks would be enough
Praise the controller!
Try hydra first. If enemy is smart enough, go for lurker
Yeah, but I'd want to add some tracking of that sort of skirmish, like "at tick n, this and this and this creep showed up. I spawned that and that, and I'm holding off. At tick m, another batch showed up, and I can't sustain that, so I'm gonna ask for help around for a squad of 5 these"
That sort of thing
I would rather first assume the enemy is competent and defend accordingly, and only after that try lower percentage plays.
which I could also use to track the resource expenditure and just give up if it's hopeless
That's not wrong, tbh. But not having any idea of the resource sink, I don't like that
You should see the mess one stronghold can do to OM 😅. Took me a bit of work to wire up suspension so it would just stop ticking a room until the thing vanishes somehow
I have seen, that, actually.
Witnessed it in one of the OMs I fought on s0
Yep, back then it was obvious on my Grafana charts that it was happening
Now it's a bit less, the only issue that remains is the transporters not canceling tasks when that happens, so they bunch up at the exits and get sniped out
So loss of economy throughput until they die off and the suspension actually kicks in, and loss of resources because sometimes there's like 6 of them dancing around and getting killed
the issue being that the locations are filtered when they get picked, and once they're set it's a succeed or die situation
The retirement train has started
If you do overhaul overmind's defense it would be interesting to see what it looks like to have an overmind bunker be competently defended. XD
I think the base design has some inherent flaws either way, but it could certainly do much better if there was better defense code.
@scarlet fossil Improved cpu efficiency. Spawned a quad to test!
Optimization worked pretty well. Now it's using around 2 CPU(not retreating) and around 5~8 CPU (while retreating)
Ah, I missed it 😭. I was still in the process of trying to switch defense style, but I need a bit more time
There is history!
Tell me when you need me
.>
He even has a villain name to match. :P
- It seems that your bot do not spawn defenders until ramparts get damaged? Which I don't think optimal
- There are some traffic issues about your defenders. (haulers block defenders, melee defenders get blocked by ranged ones)
- Ranged defenders get out of ramparts when it cannot kill enemy
- No repairers
These are what I saw
hrmm, almost 300 creeps on 85 cpu
I hate that your giving performance reviews from a new bot
That really is scary
Why scary? It's a rewrite, not from scratch!
Much easier than first time. It took several months for me, writing code about quads
ussually rewrite is used to mean from scratch
it's hard to tell how much you transfered over, or if you're just refactoring?
You have experience, all the ideas
yeah, divine beings tend to have that
You are NOTTT a devine being
- I used leader based system, now I don't. It made my quad to move much smoother
- Using new pathFinding system to find bulldozing path(Not using PathFinder.search inside of enemy room)
- Using another new pathFinding system to find retreating path
- healing logic is almost the same
so like, did you create a new folder and such for your "rewrite"? or did you change stuff in the existing bot's folder
Is it rewrite or refactoring? I don't know. It's middle of them
No. Whole new folder
Logic is similar, code is much different since I don't use prototyping anymore
V2 bot was all about prototyping
Cannot copy-paste since structure has been changed so much
But it's possible to copy-paste the idea, not actual code
gotcha
It seems that server is hiccuping?
Oh, nice, thanks! Sorry, didn't get to look at that earlier.
- I'd have to have a closer look, but it's likely the delay between entering the room, detecting an attack and dropping the defense directive (which sadly can't be seen on the replay). I didn't look at that part at all, but yeah, it feels a bit slow… On the other hand, if I make it faster, then it's gonna make a mess of potentially useless creeps if it's just a bait 🤔
- yeah, traffic can be wonky in OM. Not sure how easily I can fix that though. Those poor workers are getting scared of the quad even though they're safe under ramparts :/
- actually, I still haven't pushed the code with the changes I was working on: trying to have 4 melee hugging the rampart and tracking, and only add ranged on some condition I haven't thought about yet. Right now it's mostly if it's a lot of damage, also add those to the pile.
- yep, haven't had the time to look at that. I think I'd want to reuse the workers for that, but (as per point 2), they're just freaking out, and as soon as the room's defcon level raises, anything civilian is stopped so spawning focuses on defending quickly. Again, more thought (and code-writing) required.
I didn't actually expect it to hold up that well though (for some definition of "well" where I have infinite resources, 'cause the creep count is definitely impressive). But I'll need to make changes to have a better system, since right now, I'm planning 4 melee creeps + a bunch of ranged defender, and I have no place to track the complete defense force (only the ranged defender overlord does that)
Maybe beefier melee creeps as well, those are just not boosted because the blueprint is static, and there's nothing to make it dynamic yet
Yeah. It will be good for you if you can calculate how much defender you need to actually block enemy from come close
RMA is range 2, right?
RMA has a range of 3 doing 10/4/1 damage
Range 1 is actually sort-of working, I think, if the single melee creep I had is close, your quad was staying out of that
Yeah. Keeping them at range 2 is enough most of the times
Make them stay away + repairers
No movement, just shots flying
But yeah, the pathing is definitely… something else
I have no idea what the melee creep is thinking during that
That one is rampart-locked (to the point I'm positive I'd have a problem with the pre-bunker defenses). Not the ranged ones. I need more data lol
I'd willing to do more tests. So ping me freely
I'm pretty happy with current movement & healing logic
OM's defense is not effective(use too much resource), but certainly hard to attack against(because it uses much resource!)
@scarlet fossil can you consider changing your sign on Screeps Sandbox to explain that you are a heavily modified Overmind?
there is an unmodified Overmind that spawned into the server a bit ago. Do you want to use it as target practice? Otherwise I will remove it
Voldemort
er wait, he who shall not be named
Nah. I can test with Traxus
nom nom
uh oh
rich
Will do, yeah. That sounds like a good idea given the circumstances
wait is it possible for me to bully voldemort?
i added a costmatrix to my quad, need to test
No they are banned
can you give the bot like 30 cpu and move them closer to me?
i want a pet OM to punch

ah yes, i love it
oh for fuck sakes
op expansion
quad time
that is adjacent to an rcl8
i will write quad+boosting code, i havent yet because lazyness but i will
want help?
honestly, its more of a case of i dont want to write an entire module to support it
especially when i have somehow gotten this far with just manual all out remote harassment
i really abused trep with it back in s6
manual?!
flag based or console based
hardcode based

its probably still sitting around the room control module commented out

you remind me of one of my OG screeps buddies
` /if (Game.rooms['E43S56'].terminal.store['GH'] > 100){
Game.rooms['E43S56'].terminal.send('GH', Game.rooms['E43S56'].terminal.store['GH'] - 100, 'E42S55');
}/
/*if (Game.rooms['E43S56'].terminal.store[RESOURCE_ENERGY] > 20000 && Game.rooms['E42S55'].terminal.store[RESOURCE_ENERGY] < 100000){
Game.rooms['E43S56'].terminal.send(RESOURCE_ENERGY, Game.rooms['E43S56'].terminal.store[RESOURCE_ENERGY] - 20000, 'E42S55');
}
if (Game.rooms['E43S53'].terminal.store[RESOURCE_ENERGY] > 20000 && Game.rooms['E42S55'].terminal.store[RESOURCE_ENERGY] < 100000){
Game.rooms['E43S53'].terminal.send(RESOURCE_ENERGY, Game.rooms['E43S53'].terminal.store[RESOURCE_ENERGY] - 20000, 'E42S55');
}
if (Game.rooms['E46S57'].terminal.store[RESOURCE_ENERGY] > 20000 && Game.rooms['E42S55'].terminal.store[RESOURCE_ENERGY] < 100000){
Game.rooms['E46S57'].terminal.send(RESOURCE_ENERGY, Game.rooms['E46S57'].terminal.store[RESOURCE_ENERGY] - 20000, 'E42S55');
}*/` some of their code
ah, lovely
for the record, the combat creep is designed to defend a remote against invaders

you manually assign it
💀
well, normally the remotes spawn it as needed, i just manually spawn it to go somewere else
somehow it works
oh
core attackers to attack a remote
although making quads for harassing is a bit useless
you can send 1 blinky instead
because it hits part cap on the first and decides to make a completely new creep to use up/overuse the unused parts
atleast i think
i find it funny so it has stayed
so you can have a fully ranged attack/heal creep, and a full move creep?
even worse
💀
@scarlet fossil Why not remove the <<overmind>> entirely?
Also, I didnt know OM was capable of PCs
Mine is, though it's pretty basic at the moment. Mostly factory processing
'cause I still have the security enabled, and it's gonna freak out if I take it out
Why not overwrite the controller sign prototype?
I guess I could disable it though, but at that point, meh
Oh, it's part of the obfuscated code in Overmind. It checks that the name appears, otherwise will run 1 out of 3 ticks
Free trial version of Overmind
Funny. That's how overmind forces its user to not change the sign
Its practically microsoft adding adds in the start menu
Ben is secretly a microsoft exec
no shot you haven't removed the obfuscated overmind code
would probably be fun to do like <<Supermind>> or something, Implying that it has surpassed overmind or whatever
if you read it you'll see it sounds like he might still have the obfuscated code
Over-OverMind
Ik, thats what I meant
I guess I COULD disable it though [the obfuscated code], but at that point, meh [Im too lazy to get off my ass and do it, but hey, it works]
this
you're right sorry, I'm tired and not giving this full focus
lol its all good
Wait do you not all do this, whenever I change logic it's a push
whats a push
Code push
I have a deobsfuscated version 👀
I deobfuscated it and that's the version that's running, but the code's still there
alright, time to abuse infdev
my scout appears to be boxed in...
being bullied
I prefer to view as a bunch of fans wanting their signature 😄
@heady oracle This remote denial is brutal
True, the free energy is great
Why not take advantage of this bug?
protester time
because i dont have siege code to take advantage of it yet
im just playing with resurrecting my S6 suppression code atm
send a bunch of MOVE, CARRY creeps to the room, and get them to dump all the energy
om nom nom
Free energy
if anything, i should now be doing less of that
I imagine harassing that much costs you a fair bit of energy lol
if I had actually decent logic for remote defense, this would be no biggie
i have no idea what this costs tbh
But these are changes that will be made in season
realistically though, ankle biters cost far less than any remote creep
until defense comes...
What room is this
i do believe they just stay out of range of ranged attack creeps
W18N12
they have been getting stuck on the scout creep for the past day
Oh, yeah
thats because your right where my cached path goes through
And its annoying as fuck

For some reason though, my bot doesnt think of you as hostile...
I need to fix that
i wonder what remotes are getting the actual combat creeps
None so far
My bot isnt setting any remote defense goals due to this issue
Yeah
No hostiles
oops
oh, theres one of the actual creeps
should slowly be fixing itself now
is that creep the variety pack?
yup
need a claim part too
yeah
My creeps died eventually😂
Yeah. Not sure what that defense response was, but ugh
I'm sad that I don't have better logging for that stuff… I won't be able to read all the logging I do, how many defender it estimated that sort of stuff
I see
OM needs so much work combat-side. I'm glad it did somehow manage to take those out though
That looks like kiting mode with about… 10 hydralisks and a bunch of random melee? I wonder if it estimated properly, that's one of the things I improved
But yeah, easily abusable. Just stay at the edge, snipe the civilian creeps that are stuck in a "needs to path there/oh crap an hostile/flee to the colony" loop. Towers behind are gonna dump energy on repairs, etc.
It seems that my attackers need lots of work. They looks pretty dumb
your harassmanager or whatever got angry
It's remote defense!
@placid idol It seems that your bot dropped E4S11. Can you tell your bot to not give up that remote? I want to test combat there and you are a great opponent
Petition to rename the server Harabi's Sandbox 😅
oh
Everything about this servers motd makes me laugh.
thanks for the chuckle
lol what did I write that's so funny?
< 3
up and harv power couple
taking on the world
literal sisyphean task
did you at least fix up to use its carry properly?
Nope!
@heady oracle My room is doing better than I thought
Even through your harassment
Well, two of them are
im certain that its not even working/sending right
Transporters, right?
Yeah. Btw, nice work with boosted melee!
Yeah, I debugged something in transporters and reenabled the gale-shapley stuff, which does that for some reason :/
Thanks! I haven't really worked on bunker defense since our last few skirmishes, just swapped the order so the melee defender spawn first
Main issue is that I'd need to make a pool of "those are the defenders that are gonna handle the conflict", so that I can properly scale the dynamic hydralisk count, otherwise it's just gonna not see the 5 melee and make another pile of 15 hydras
Server's freaking out, no?
For me, yes
Shit, will check it out
Maybe @pallid totem ?
xD
Pushing fixes now
He's an actual menace XD
I'm getting the dreaded ```
SyntaxError: Unexpected token u in JSON at position 0
at Object.parse ()
at global._init.global._start (:16017:61)
at ()
at make (/screeps/node_modules/@screeps/driver/lib/runtime/make.js:160:34)
on tick start, and I'm just bleeding CPU all over
I think that means your RawMemory got set to undefined
My bot is claiming there's a global reset every couple ticks. If it's not bugging out, could be due to that
Oh lookit lmao
Servers are like petulant children. This is why all mine are managed, no bare metal
Which, I suppose Jaysee made the same choice. XD
Okay I'm stable again
I'm still seeing a global reset every 2 ticks
Welp, I needed to add a fallback for this anyway since it's probably going to happen in the season at some point.
😅 not sure what I can do
I don't know what's happening, it broke again. Last time I tried a combination of Game.cpu.halt() and that somehow stopped the reset every 2 ticks problem, but it's back
It's also very weird… I get one tick, then one one second later, and a big pause, over and over
Have you tried restarting the server @rotund olive? I'm wondering if there's something broken with the runners…
I haven't touched it at all since we last talked about restarting it
this sounds quite similar to a bug we had on newbieland
that time it was caused by a recursive import though. Probably not related
Not sure, but I know a few of the pservers I ran for myself failed a bit like that. Just… ticking oddly and throwing that error
this game...
very little community support, and the community server provided is not good
Mhm. Also, not sure about the RawMemory state. I can correctly get at the stringified version of my mem here, so I'm not sure where it's pulling the undefined from
Mine's ```
Profiling memory...
Time elapsed: 13.552723999999984
ROOT.TOTAL: 436009
@sonic marsh@pallid totem @sullen condor @haughty cloak @polar path @heady oracle @wild delta @bitter lava
please check your memory for anything weird going on, and check your console for errors and please share if something is weird 🙂
I'm at work right now, it'll be a few hours before I could check it.
Memory seems fine for me, also haven't seen the JSON error crop up again. Just the global resets.
I wonder what the server logs says. Something about runners exiting -1? I think that's how I had that at one point…
I'm getting Unexpected token u in JSON but intermittently, e.g. not every tick. Also global resets every 3-5 ticks
Fixed now
Never mind, dead again
It just went through 10-15 ticks in a row before returning to the "reset every other tick" issue
And stuck. Last tick was 2103840 It started again, but back into the constant resets
My bot is experiencing global reset constamtly
Fixed again ¯_(ツ)_/¯
Normally you chop down a tree
I'll chop your tree
Is that a euphemism?
I'd like to file a complaint with HR
yes
I am HR
Fwiw, still resetting every few ticks
docker compose logs screeps -tf
Yeah, it's even deader than yesterday. I'm seeing upward of 5 minutes downtime between ticks, and a lot of the u errors
Actually, I don't know. I see TTLs going down (about one tick/6 seconds), but no ticks in console
So I guess everyone's gonna die out 😭
That's one way to do a server wipe
Ah, might have been me. I think it's struggling so hard with the reset I'm just constantly hoovering whatever bucket I have saved up, so much that the runner just goes "yeah, not you, you're just hoarding it"
A switch out to a "do nothing" branch and back let it tick a little, so I'm back at ~600, but even with the refill bucket system running, it's still decreasing (and that's a big "if that is set and bucket not full, just do nothing at all" check)
Nope
Crap, I think I broke myself pretty hard. Accidentally deleted my Memory :/
Hah
It's possible it's gonna fix itself, but given it ticks erratically I'd really prefer to have something… dependable before I start pushing things
Anyways, I think that undef issue comes from something about accessible rooms:
- Point at which the exception is thrown is here: https://github.com/screeps/driver/blob/e691bd3ee843cb12ac4bedc68397b2b92709f622/lib/runtime/runtime.js#L55
- That
data.accessibleRoomsis set here: https://github.com/screeps/driver/blob/master/lib/runtime/data.js#L211, actually generated a few dozen lines up, here: https://github.com/screeps/driver/blob/master/lib/runtime/data.js#L137 - Hence, the return value of the function there: https://github.com/screeps/driver/blob/master/lib/runtime/data.js#L77 which reads through the env (so a
storage.env.getof that would be nice to see) - And that env key is actually set from here: https://github.com/screeps/driver/blob/master/lib/index.js#L488, called from the engine's main loop here: https://github.com/screeps/engine/blob/97c9d12385fed686655c13b09f5f2457dd83a2bf/src/main.js#L80
So either the key is dead within the runner, which would point to redis somehow losing that value, and given the engine appears to auto-regenerate it every 20 ticks, that's why I'm seeing a burst of "everything is fine" ticks until it breaks again.
Or engine is going completely bonkers and just leaves the key unset, leading to a crash in the runners
ok
It's just this forever and forever and forever
Yeah, I had a hunch. That's not exactly good 😟
Could you maybe check if there's more info in the log files inside the container for that runner?
Ghaa, I'd need to hack the server code to get more info about what's happening :/
@rotund olive Can you maybe check those log files? I'm 78% sure they all should show up in the docker log, but… maybe not?
haha how would I do that?
sorry
docker compose exec screeps /bin/sh
You should end up in /screeps, in the container
Check the logs directory for a error_runner.log or something
/screeps/logs $ ls
backend.log engine_processor4.log.2
backend.log.1 engine_processor4.log.3
engine_main.log engine_processor5.log
engine_main.log.1 engine_processor5.log.1
engine_processor1.log engine_processor5.log.2
engine_processor1.log.1 engine_processor5.log.3
engine_processor1.log.2 engine_processor6.log
engine_processor1.log.3 engine_processor6.log.1
engine_processor10.log engine_processor6.log.2
engine_processor10.log.1 engine_processor6.log.3
engine_processor10.log.2 engine_processor7.log
engine_processor10.log.3 engine_processor7.log.1
engine_processor11.log engine_processor7.log.2
engine_processor11.log.1 engine_processor7.log.3
engine_processor11.log.2 engine_processor8.log
engine_processor11.log.3 engine_processor8.log.1
engine_processor12.log engine_processor8.log.2
engine_processor12.log.1 engine_processor8.log.3
engine_processor12.log.2 engine_processor9.log
engine_processor12.log.3 engine_processor9.log.1
engine_processor2.log engine_processor9.log.2
engine_processor2.log.1 engine_processor9.log.3
engine_processor2.log.2 engine_runner1.log
engine_processor2.log.3 engine_runner1.log.1
engine_processor3.log engine_runner1.log.2
engine_processor3.log.1 engine_runner1.log.3
engine_processor3.log.2 engine_runner1.log.4
engine_processor3.log.3 engine_runner1.log.5
engine_processor4.log storage.log
engine_processor4.log.1 storage.log.1
quite a few options
Yeah, the engine_runner ones
so I post each one?
Maybe not each one, but… one where there ought to be something interesting in them
got it
I'm not sure if there's anything to be found, to be honest, but hopefully there's an explanation as to why main is restarting the runner in a loop?
yeah makes sense
'cause I'm pretty sure if the process aborts, it doesn't even get to log that, and the main process doesn't actually log a signal being the reason for the exit
that's the second (missing) argument there: https://github.com/screeps/launcher/blob/master/lib/start.js#L140
The 'exit' event is emitted after the child process ends. If the process exited, code is the final exit code of the process, otherwise null. If the process terminated due to receipt of a signal, signal is the string name of the signal, otherwise null. One of the two will always be non-null.
So it's likely eating a signal in the face
I mean, that whole function looks odd to me… you have a restartInterval that some of the processes default from the configuration, but once something happens, this function will just blindly restart with no interval set, ignoring the config altogether
It'll also clobber itself if there's already a process with that name running, so you "leak" a process if that happens
how much of your CPU is intents vs other things?
