Fake structures is actually why black hole is now worth negative food in the cost-benefit calculation
Too easy for ants to construct fake structures (or even if real: places the bh-queen won't ever be). And even when vampire WAS finding the true BH, it was too easy for BH's workers to steal food away from Vampire
The 14 Feb tournament is still running and has that version of Glider at the top, still in joint place with Lightspeed but making a valiant effort to pull ahead (13.69 against 13.68 after 11,878 games). The improvements to Glider were seeing it in first place, but that tournament was lost to disqualifications. The tournament started today has Sliding Miners, Windmill, Lightspeed, and Glider in joint 1st place, but it's too soon to divide more finely than that (they're all swapping places)
In the past, use of console.log has resulted in automated disqualification, since access to console.log is only given to the new challenger player. However, Sliding Miners accidentally left a console.log in the code and the browser was displaying the output in the console, and no disqualification happened. I have no idea why.
As a temporary fix for new challenger not being able to use console.log, I have simply disabled caching for the new challenger. Longer term I'd like new challenger to be cached, but have its console output cached too, so the console can display identically to without caching
@Alion I'm sorry for the delay in fixing this. Although it's not how I want it to be yet, you should now be able to use console.log for the new challenger. Let me know if there are still problems with it.
@trichoplax It's not a massive problem anymore, and not having caching at all is more disastrous than not having console.log. You can circumvent the second by inserting console.log into code whenever it's needed - it clears the cache, so no problems there. I'd prefer having a way to enable/disable caching for the NEW CHALLENGER.
O_O my new Sliding Miners I made yesterday got 1st place with 14.1 score (above Glider & LS with 13.5). It won 27 / 35 games where it participated. An average of 421 food
@Alion I see. What do you think of the idea of having caching permanently on but allowing the logging to work despite it (so the log looks like it would without caching)?
@dzaima I'm 307 games into a tournament with last night's player versions and it currently has Sliding Miners at 14.09 followed by Glider at 13.75 (not resolved into a unique 1st place, but looking strong so far)
@dzaima I'm curious to see whether Vampire will be able to attack a player that leaves fake rails scattered all over the arena :P
@dzaima The worrying thing is that the controller didn't pick up the error. I really want it to reject logging players immediately so tournaments can be run quickly. I'm not sure why it has stopped throwing errors for console.log
@Alion You don't have a spare worker type to send out for that purpose...?
@trichoplax I do, but since my late game is "cover entire map", a main rail is fairly suicidal anywhere on the map. I could build a 90 deg rotated side rail, though...
@trichoplax the new one should be even better though, as it has shafts going out from both sides and if there's a rail near one side it'll still have the other mostly working still
@Alion I was considering using a return value rather than directly console logging. For example return {cell:4, log:'hi'}, which would probably be easier to work around the cache. Would this cause any problem with your usage of console.log (or anyone else's)?
I could then just always deny direct access to console.log
@trichoplax what I like about your controllers debugging tools is that you can explore the objects in the console, so I'd like an option to use the regular console logging rather than stringifying
I don't want to make this unusable for people who haven't had this conversation though. Do you think this could be explained intuitively so people are aware they can return arbitrarily many objects?
@Alion Agreed - this makes @dzaima's suggestion much more suitable
Player code should be able to be pasted into any controller and have the same effect
Provided I can override the behaviour of console.log, this will be fine. Unfortunately, Sliding Miners managed to access the real console.log, without any trickery, so presumably all players can access it. I'll experiment and see if defining an overriding console.log works better than just not defining anything
also it turns out that ants would get easily tricked into thinking they're by the rail even if they matched only 2/3 colors, resulting in green trails in the correct place equalling a rail. Rerunning that game, hoping for score 15 :D
Does it make a big difference to build mine shafts on both sides? Can the workers tell which side is already built on and use the other side, or do they just randomly pick a side?
Why didn't I think of that? So I guess that means they gather more of the short journey food early on and get significantly more food before others find it
@dzaima Does that still apply after wrapping when the rail catches up with its start and goes out of phase?
@dzaima Hmm. So will a worker who left before the rail wrapped, and finds no food, build their mine shaft straight through the wrapped rail and ignore it?
@dzaima Ah - is that why there are gaps in the screenshot, where Ziggurat's colours show through?
@Alion Yes I was just wondering about the chance of interpreting the real rail as fake if it wrapped while you were building a mine shaft, so it looks out of phase by the time you get back to it. Won't apply with the new version though
The starting phase sometimes goes horribly wrong? Or well? I'm not sure. I found a game where it already had 110 workers before the rail got finished.
By frame 15k, it already had >50% of the map under control...
Oh god. @trichoplax Games with Highway are terrible. If something breaks, usually it just spams workers anyway. So if it's doing good, it's slow. If it's getting rekt, it's slower.
Oh, and currently, Sliding Miners are getting their asses handed to 'em. I don't know how much that will change after @dzaima's update, though.
also I think I struck gold with the worker spawning rule for the new SlM - for the first couple thousands of moves it gets absolutely no food but then, suddenly, after ~100 workers, it gets food quite quickly
oh, it's currently set to mostly not spawn workers after the 1st loop around. Not sure whether that would be worth changing though
I've just remembered that I should make the ants unable to match being above the rail anywhere else other than their shaft starts/ends, that should make the 1/8 fake rail bad chance active. Currently it's either 1/1 or 1/2 :/
I'm wondering if at some specific food count it'd be worth it leaving the queen in a bunker so noone steals food from it
That does seem to be entirely vampire proof. I've been wondering if anyone would use that with an access mechanism to allow returning laden workers in.
@trichoplax what I plan to do for vampire proofing is keep a worker on every queens corner, so a vampire couldn't (easily) have enough places to put workers to gain food
@trichoplax I mean, yeah, sure, I won't just abandon the project right here, but even in collection rates Highway got beat, and that was the only thing that it leaned on...
Wait, actually, advanced pattern matching isn't as hard in my framework as I feared it would be. I might be able to slap on a quick fix and worry about cleaner stuff later.
Thinking long term, and for people with limited RAM, I'm considering making caching per game. Most of the benefit seems to be realised within a single game. This would avoid excessive memory use as more players arrive, without having to limit the amount of memory available to an individual player's cache during a game
I may also be motivated by wanting to avoid investigating the elusive slow down problem with long term cache...
Which somehow seems to have disappeared, which makes it even harder to investigate, while still having the potential to return later, so I can't just pretend it never happened
The problem with the Wildfire-like start is that it creates a really thick part of the Highway, while ignoring the another. This makes a part of the Highway very fragile in the early-game.
Though the faster start is probably worth it anyway.
I accidentally discovered a formation of workers that stops LS from moving - 3 in a line if hit from an unfortunate direction. Got drained because of that...
What?! I just found the most insanely unlucky game for Highway. Not only did it not find the first piece of food for 3000 moves (which is a 0.05% chance, by the way), it also flew straight into Monorail territory, losing its Partner due to mis-ID of the main rail, it then traveled into Medusa territory, and mis-ID that too. Everything went wrong!!
And it was a freelo game, too. No Windmill, SlM, Zig, nothing.
Oh yeah, and it also didn't find any food along the main rail it built (0.05% as well).
That game had a less than 0.000025% to go as wrong as it did.
^ That's some naive calculation, now that I think about it, but it's in the ballpark.
Okay, Highway finished with an average of 12.6 score (and highest # of wins). There's still a bunch I can improve, but I think it's ready enough for main.
Highway
All of my answers will contain similar low-level logic in the form of the Formic Functions Framework. "HIGH-LEVEL LOGIC STARTS HERE" marks the end of the Framework's code.
// FORMIC FRAMEWORK //
// Version 5.1.2 //
// Constants
const WHITE = 1;
const QUEEN = 5;
const CENTER = 4;
co...
Alright, I'm gonna take a pseudo-break from this challenge for a day or two. After yesterday's marathon, I'm absolutely spent. I'll participate in some light chatting on here, though. And I'm open to observations/suggestions.
Just watched Highway on an empty arena - once with a vertical highway and once with a horizontal. Over 1700 food with a vertical, and over 1900 with a horizontal. The horizontal filled the entire arena, consuming all of the food as far as I could see, and left a join that snaked like a meandering river over geological time, threatening to join into itself and form ox bow lakes...
Over 500 workers, and all delivered their food back to the queen except 1...
(total food delivered to the queen, including those used to make workers: 2499/2500)
Doesn't quite cover the whole arena with a vertical rail, despite creating a similar number of workers. I guess because of the longer return trip for the workers
@trichoplax Yea, on an empty map it's about as insane as it can be. You can change the lines marked by // Tuning: Hill and // Tuning: Empty map towards what you want to tune the hoarding mechanism (if I remember correctly).
One has to be commented away, though. And I'm fairly sure the Empty map tuning is out of date. Meh, whatever.
Just watching it in a crowded arena now. Glider crashed into the bow wave and left a big hole in it. Beautiful to see the hole just heal up seamlessly, like it had never been there
I really liked Medusa - the random approach in particular, which allowed its workers to escape from loops. But it never scored well. And it does even worse with all that today's arena throws at it...
@trichoplax Yeah, my only solution to trail-eraser is throw workers at it...
Speaking of which - I just discovered a funny bug in my logic. If there are enemies nearby, I don't paint anything as a Queen. Mistake. I just got a game where the Queen flew off to Hawaii after meeting a trail-eraser, ditching her current way of life. Recovered, by promptly got rekt because of the late start.
Looks like Highway could shake up the order of the rest of the leaderboard. Being able to survive having your entire world concreted over is becoming a deciding factor...
..and finally I encountered something I was hoping would never happen - an ant in front of the queen. Currently the queen never steps off the middle of the rail.
Watching old Sliding Miners take the long route when they could continue their mine shaft forwards until they hit the rail again has me wondering. Could they use multiple colours in their mine shafts to encode how far they've travelled and whether it's better to go back or continue forward once laden? Difficult because the distance varies with vertical or horizontal mine shafts, but it got me thinking
@trichoplax Laden workers are already doing a lot of repair work. The problem is that they can't repair anything towards the main rail, because it would be possible for them to miss the main rail (because it got broken/erased/repainted) and, as a result, start a new one when they meet the other side of the Highway.
@trichoplax No, that hole healing you saw is caused by unladen workers tracing the edge. If the traced edge turns out to be going towards the main rail, they'll go there.
@trichoplax They will build correctly if they're more convinced that they're on the wrong side (and will run towards the correct side), but all bets are off when they connect back to the other side not through the main rail.
Though, wait. They're tracing the edge, for Pete's sake. How could they miss the main rail...?
They can't detect the "handedness" of the pattern they are repairing somehow?
Interesting that laden workers race along the main rail until they come to a hole, and then just wait. Then when more laden workers arrive behind them they paint the main rail pattern back and race along again
Somehow Highway has covered the entire arena only 22000 moves in, in a full arena
@trichoplax I said that they can and will detect the "handedness" of the pattern, though how they connect to it is based on chance. I mean, let's say that a worker just somehow missed the main rail, and is on the wrong side. I can't guarantee how they connect to the wrong side when territory is well painted again.
@trichoplax Oh, I thought that only happens in solo games. How many workers? If more than 600, I'm not surprised.
The strongest weren't in that one - did make a big difference. Gained another 3 food before the end, despite there being no more arena to explore. The sheer numbers of workers might have meant a few accidentally stole from other queens, or maybe there were laden workers that got detained for a while and eventually found their way back
....."Highway" seems to be a bit of a euphemism. The dominant life form is now rampant green slime. ;) (whistles "Ghost Busters" title theme, tips hat to @Alion)
Top I've seen so far: 1536 food (in a normally crowded arena) from 219+237+1 workers; many of the workers must still have been laden at the end and hardly any food in existence had not yet been picked up.
(It can take a laden worker more than a thousand steps to meet the queen again if she's halfway around the torus.) - On a normal game against 15 others.
I've also seen a couple of accidents... ultimately, it'll be the accident rates that will determine the new leaderboard rankings. (Have run only a dozen random games so far since reloading players from PPCG.)
I haven't really thought about it, but yeah - Highway completely shuts down most entries that aren't well-prepared for mass tampering (if they didn't have it hard enough already).
I've just pushed a change to make the cache per game only. In Chromium this limits the RAM use to around half a GB, for not too much loss of speed. In Firefox it still seems to eat RAM, so I might have to look into forcing garbage collection
Lots of edited answers. Time to start a new parallel tournament...
I don't expect the current version of Highway to win, by the way. It would easily snatch the win if it was average food, but it's not. It's still too tamper-prone in the early stages.
Yes it's surprising how much the order can change long term. My controller tries to indicate this with its joint places until it's fairly sure the order won't change. After 12,344 games, Glider and Lightspeed are still showing joint 1st (based on the versions from 14 Feb)
Also the official tournament excludes disqualified players (currently Steamroller and HalfThere), which can affect the order and also speeds up convergence as the other players can appear in more of the games
I think the others have all been fixed. Sliding Miners would be in theory due to the accidental console.log but I just made a one character fix instead (still haven't worked out why the controller didn't automatically disqualify, but I'm not looking into that as next on my list is overriding the behaviour of console.log anyway)
Any that are disqualified will have a comment from me on the answer, and I only delete it once they are edited to fix
I said I'd take a pseudo-break from this challenge, but really all I'm not doing is any programming. I'm still investigating and writing down issues, so I can fix them later. I can't get enough of this thing. This is addicting.
Designing the saboteur routine is fun, but I need to get back to the marching part of my submission at some point
I'm thinking of an alternative recovery procedure where the gatherer itself, after gathering the last bit of food, loops back around and assists the end in straightening itself out
Currently on the backburner is a way for a saboteur to avoid retracing patterns it's already sabotaged by detecting its own characteristic splotchy pattern
that's actually a crash scenario, the Highway queen isn't next to Vampire, so she's being leeched (and spending food on new workers) and Vampire isn't moving either
but the first encounter was near the center
where you can see some random vampire workers
But it took a large portion of the game for that to happen
@eaglgenes101 Before, the miners had to run further to get back to the queen. Now she stays just ahead of them, moving along as new mine shafts are built, so they have shorter journeys and can gather more food