1:24 AM
@trichoplax No problem! And hope you get the initialization working faster :)

1:40 AM
if an ant is adjacent to two queens, what happens? — Destructible Lemon 20 mins ago

3 hours later…
4:30 AM
@trichoplax how does this work ^

@DestructibleLemon It depends on which ant (worker or queen) is processed first. If a queen has its turn and is then adjacent to a worker that also has another queen neighbour, the queen that has just moved will interact with the worker (gaining or losing food accordingly). If a worker has its turn and is then adjacent to more than one queen, then if the worker is laden it will give to its own queen, or if the worker is unladen it will take from an enemy queen at random.

ok then

A worker willl never take from one queen and give to another in a single turn (in either order)

and it works with more queens as well?
also what if a queen has 0 food and is adjacent to a laden ally ant and an unladen enemy ant

@DestructibleLemon Yes the same applies for arbitrarily many queens. If in doubt for a specific circumstance, the relevant function is `passFood(ant)`

4:42 AM
also... the live tester takes too long and I am impatient

@DestructibleLemon If a laden worker is next to its queen at the end of its turn, it passes its food to its queen. If an unladen worker is next to an enemy queen at the end of its turn, it steals from the queen if she has food. If a queen is next to a laden friend worker and an unladen enemy worker at the end of her turn, she will give to one piece each to any enemy workers in random order until she runs out of food, and only then take from her own workers.

This means food from her own workers will not pass directly to enemy workers in a single one of her turns, but will wait until after the enemy worker has moved if the queen was not already holding food.
@DestructibleLemon Is it too slow for watching move by move, or do you just want to run a tournament at high speed without seeing the individual moves?

@trichoplax the latter

1. Try pressing "No display".
2. Try a different browser (I find Chrome or Chromium fastest for no display runs).

4:54 AM
oh i missed that button ecks dee
ooh some new bots

I know the interface is quite cluttered with options - I've tried to keep just the display-relevant ones around the arena, with the others kept out of the way lower down the page

steamroller seems quite effective!

Time to run a new leaderboard tournament... :)

yes
I am going to make a predatory ant species
if i figure out js o~o
well I mean it looks like roman ants just make too many workers or something
wow trail eraser has zero points

@DestructibleLemon If you have any problems writing your player, feel free to ask in here. That way we can see if it's a problem with the controller or just something to learn about JavaScript (questions very welcome either way).

5:05 AM
ok
forensic ants have taken the lead!

5:51 AM
Is there any way to alter the map size?

@Mathmagician There isn't an option for that in the interface as it's a bit cluttered with options already, but the arenaWidth and arenaHeight can be modified in the code and should then get picked up by all the relevant parts of the code, if you wanted to see what happens on a different size arena.
If that's something enough people feel would be useful in testing new players (rather than just out of interest) then I'll consider adding arena size options to the interface.

seems like steamroller ants start off well but then lose to the forensics

6:16 AM
Yes it lacks a solution for when it eventually wraps round and starts covering the same ground, so it pulls ahead in score until about 5000 moves in, then stagnates and others can overtake. I wasn't sure about increasing the game length from my original idea of 10000 moves to the 30000 I eventually went with. This makes me glad I did though.

No new leaderboard yet as answers keep coming in so I keep restarting the tournament... :)

the extended time will be good for me
because it means I can steal heaps of food

Yes that was a big part of my decision - I wanted the game to last long enough for food to run low and for ants to find their rivals...

6:58 AM
I'm disappointed in Black Hole. It doesn't quite collect as much food as all 6 other players combined...

7:50 AM
@trichoplax is there any way to test my ant? like, in a controller only I would use or something?

@EriktheOutgolfer yes
on the running thing, you can use the new challenger at the bottom to test

uh so invisible...thanks

?
@EriktheOutgolfer ?

so far to the bottom...for a moment I thought scrolling ended much before that

8:18 AM
@EriktheOutgolfer You can also remove the ticks from the checkboxes in the leaderboard if you want to test your player without any competitors, or just against a few selected competitors.
If you don't want to scroll as far, "NEW CHALLENGER" is a link to the text area for entering your code...

@trichoplax I ran the ongoing tournament and "NEW CHALLENGER" seems to be disqualified?
oh wait it's because I didn't write anything in that yet lol

Yes it needs to return something or it will be instantly disqualified :)
If it gets disqualified for any other reason it should tell you roughly why in the disqualified table that appears

actually it took some 3k-something moves to be disqualified
@trichoplax I got a TypeError... stuff

If any of the messages are not meaningful let me know and I'll look at improving them

> TypeError: Cannot read property 'call' of undefined
so that's what I get for writing nothing

8:23 AM
I get `TypeError: antFunction is undefined` in Firefox

I'm using chrome

Ah yes - I see the same error as you in Chrome

well, you should fix it
> You wrote nothing why should you be qualified to play?
:p

The Chrome message is not as meaningful so I'm no longer happy with leaving the default error message for that. I'll work on something better - probably more polite than that though :P

yeah definitely more polite :p

8:29 AM
As expected, posting to main is throwing up more extra tasks than testing on meta did...

> Your ant doesn't seem to return anything. Have you written any code yet?

@trichoplax yeah that happens

@EriktheOutgolfer Possibly too polite :P

of course the sandbox is a bit inactive...as well as the
@trichoplax yeah I tried to
of course that kind of message may not be really apparent at first
like, what if somebody hasn't seen there's a "new challenger" thingy at all yet?
they'd be wondering like "wat?"
so maybe this one would be better
> Your ant doesn't seem to return anything. Have you written any code in the "New challenger" field yet? Don't forget to update!
@trichoplax yeah, this seems better
and maybe not too polite anymore

8:59 AM
@trichoplax yay made ant which is able to move straight

@trichoplax these entries are so amazing i'm willing to lose to any one of them XD

@trichoplax also what does `friend` mean?

9:17 AM
@FrenzyLi Yes I'm amazed at what has come in less than 12 hours into the contest...
@EriktheOutgolfer `friend` is true if the ant is the same player, false if any other player

you mean for example worker meeting another worker by the same queen or queen meeting one of her own workers?

yes exactly
Each player has a unique id (the answer id, or zero for the new challenger). If the ant whose turn it is sees another ant, `friend` is true for that ant if the id matches
An ant cannot access the id directly, so it cannot tell which player a rival ant is from, only whether they are their own player or not

@trichoplax well otherwise it'd have encouraged discrimination :p

They are allowed to target a specific rival and disrupt their strategy, but they can only do it by recognising the colors/behaviour of that rival, not by directly looking at the id
So parasitic or predatory strategies are possible

Trail eraser is a really evil submission... It erases my art :p
And it can sometimes single handedly kill black hole by disrupting the boundary

9:28 AM
what does food look like in a game in trichoplax.github.io/formic-functions?

@FrenzyLi I only just realised you fixed Trail-eraser - I'll restart the leaderboard tournament and see how that affects things.

@Cowsquack oh, the black squares are food

the rotated black square dots
to be more precise

black diamonds

no diamonds have unequal pairs of equal opposite angles

9:39 AM
@Cowsquack In the main area, food and ants both show as black pixels (or smaller). In the zoomed area when you move the mouse over the arena, ants show as 2x2 coloured squares, coloured arena cells are full coloured squares, and food is black diamonds (squares rotated 45 degrees). Workers look slightly smaller than queens but the same colour scheme, and when a worker picks up food the food is still visible as a black diamond until passed to the queen.
Technically a square is a special case of rhombus, so calling them diamonds will probably do. Saying both will hopefully avoid any ambiguity.

blackhole is not doing very well in my running of the game >_>
meanie trail eraser is sabotaging them

if blackhole doesn't cross path with the eraser then it can rack up 100 food

my bot will be there to steal it >:) when i make it anyway

I ran 7 games and Black Hole won all of them convincingly, then I added in Trail-eraser and it ate away most of the hole leaving the Black Hole workers wasting their time building inside where there's no food. They seem to have recovered and got back to collecting food now though, so I'll need to run another series of games to see whether Trail-eraser affects the leaderboard order.

9:55 AM
trail eraser is a meanie
the only thing it is good at is messing up other bots

@trichoplax so...trail eraser owns the game? lol

@EriktheOutgolfer It might if it didn't use up all its food on making workers - that leaves it with a score of zero from what I've seen

hmm...
that means that trail eraser generally spams the game for no reason or something?

I've added a comment - hopefully it's just an oversight.

yeah that might be a problem with the game? idk

10:04 AM
> Provided each answer is working solely towards its own victory, you are permitted to tailor your strategy to take advantage of weaknesses in specific other strategies, including changing the color of the cells to confuse or manipulate them.
I put that in the spec to prevent people adding 2 answers - one to win and the other to mess with the other players without trying to win. I'll consider enforcing that rule even for a lone strategy if it is making no attempt to win though.
I really want to see the strategies that exploit weaknesses in other players and spread confusion, but only if they are aiming to win - not to finish on zero.

isn't it a little tiny bit unfair to use the fact that they posted first to your advantage because you know how to use their trails?

Starts with 0 food.

10:29 AM
@trichoplax the New Challenger code editor is not monospaced
so : make it monospaced

@Cowsquack It is on all the browsers I tested. Which browser and operating system are you using?

Chrome on macOS

11:23 AM
@trichoplax Another feature request: a button that highlights all ants. It's really hard to find them on the full size map.
(Maybe there is one already and I'm just blind)

11:41 AM
@Zgarb There isn't currently a way to find the ant locations graphically, but you're not the first to ask. There's a comment on the question linking to a fork that includes markers for the ants, but I think I need to consider adding something to my own controller too.
You can tick "Logging to console" to see the locations of all of the ants (queen and workers) of the new challenger player, but coordinates are not as useful and being able to see indications on the arena.
I might need to consider it as two separate tasks:
1. General indicator that highlights every ant in the arena so you can easily zoom in and see them.
2. Player-specific indicator for showing up just the queen and workers of a chosen player.
I could possibly make it a tick box in the leaderboard for whether a given player should be highlighted, which could cover both requirements if you can then tick all boxes to highlight all players
Then I suppose there's also:
3. Indicator when zoomed that labels each ant with its stats (queen/worker type, food, player)

11:59 AM
@trichoplax player is already covered isn't it?
I mean, the color pattern
also queen/worker is already covered too
worker type isn't

Yes but they aren't very easy to distinguish when they are moving around. I don't know how much information it is reasonable to try and make easily visible, but I feel there could be at least some more
I tried to make as much as possible detectable without needing explicit labels hovering over the arena, but perhaps having some optional labels would be better

12:43 PM
Black hole was actually an unanticipated test of trail eraser, who was intended to work with ants that leave actual trails (somewhat like itself). But since it sees this mess of colors, let it run and destroy them all

12:58 PM
When it hits Black Hole right, it's devastating. I can no longer guess which player is going to be top from one game to the next.
@DestructibleLemon There's no rule against editing, or posting further players that take advantage of the one taking advantage of you...

3 hours later…
3:58 PM
@trichoplax I'm unable to test my code. When I paste it to the code box, the button above it changes to "Code changed - click to use this new version", but clicking it does nothing. If I run a game, it complains "antFunction not defined". If I write `return {cell:4};` and click the button, it accepts the program and it runs fine.
I'm running Firefox on Linux, if that makes a difference.

2 hours later…
6:17 PM
@Zgarb Thanks for letting me know. I'll be in Firefox on Linux (Fedora) in a couple of hours, and will have a look at this.

1 hour later…
7:26 PM
@Zgarb are there any errors in your code? The button does that when it is invalid JS.

7:46 PM
@PhiNotPi That's very likely, considering I haven't used JS before. :P

Maybe you could type an extra space after pasting, to see if that makes it accept it. If not, it may be a mismatched brace/bracket somewhere. Otherwise, I'll have a look when I'm at the computer. Last time it went wrong was when the final line ended in a comment, which led to the closing brace being automatically added in a comment. That's fixed, but I can't rule out having overlooked something similar.

8:20 PM
@trichoplax Alright, I'll try that tomorrow if I get the chance. I should probably try pasting the program in parts to see where it breaks.

8:52 PM
@Zgarb If you don't mind posting your code block in here, I'm happy to check it. That way I can hopefully identify whether it's the code or the controller. Even if it's the code it will be useful to see why it was rejected so I can work on making more meaningful disqualification reasons.

9:39 PM
Wait, I'm not seeing trail eraser beat black hole ... in my game, one of its workers got in and is wasting his time drawing clever art inside the hole, not effecting the workers on the outside
Sometimes, it seems like one eraser can essentially occupy one black hole worker, but can't the black hole workers grow and not the erasers?

10:05 PM
@trichoplax how do I know how many turns have passed?

@Christopher In the Ant QotH?

@trichoplax y

It says just above the game table (just below the arena image if you have display showing)

@trichoplax nononoo I mean in my codez

The code only has access to the 3x3 block of cells around the ant. Unless you can change the colours of the cells to encode the number of moves that have passed, your ants have no idea. They also have no idea where they are, where they came from, how long they've been going, or where any of the other ants are (even their own team). The aim of the game is to work with this severely limited information.

10:09 PM
@trichoplax ahh ok

If you have a look through the other players, there are a wide variety of different approaches, with some really ingenious ways of getting around the lack of information.
And some devious ways of disrupting the other approaches by changing their colours...

@trichoplax lol

10 messages moved from The Nineteenth Byte

@trichoplax ohh smart idea :P

In case other people have the same question later...

10:12 PM
for(var i = 0; i<9; i++)
{
if(view[i].food==1)
{
return({cell:i})
}
if(i==8&&view[i].food)
{
return({cell:1})
}
}
That is the basic start
Idk what to return since my return is undefined
@trichoplax

@ppperry I've seen the Black Hole filled with a large number of Trail-erasers, so that they eat right out to the boundary and prevent the Black Hole growing, but if a smaller number get in it seems able to recover and leave them stranded in the interior. Not sure where the cut off is.

What am I doing wrong?
I am trying to have my queen walk randomly picking food as she goes

@ppperry I don't have a conclusive leaderboard yet - it needs more games to be statistically significant - but Black Hole is at the top so far, and Trail-eraser has scored zero. It collects food but never enough to gain score (which requires having more food than others).
@Christopher The first and second if blocks seem to be equivalent
So it will never reach the second if

opps
```for(var i = 0; i<8; i++)
{
if(view[i].food==1)
{
return({cell:i})
}
if(i==8&&view[i].food!=1)
{
return({cell:1})
}
}```

In English, it says "if one of the cells contains food, move to it"

10:18 PM
Yeah
otherwise move to cell 1
that is the first part

Ah I see. That should work
Have you tried it in the controller?

Yeah
I am getting DQ'd

With what reason?

Response undefined.

You don't need parentheses around the returned objects, by the way

10:19 PM
found out why
for statement was wrong

Oh yeah...
Sorry I missed that

Lol
How do i find my ants?
on the handler
I wanna see the location

The closest at the moment is to tick the Logging for debugging checkbox, then the coordinates will show in the console, which will tell you where to zoom in and look
A better way of tracking where ants are is on my list of things to improve

ahh

In the meantime there is a fork of the controller linked from a comment on the question, that has ant tracking

10:27 PM
I'm having trouble testing my bot. I've pasted it into the text box on the site, but it doesn't seem to be running.

Click the include button on where you select ants

my bot doesn't seem to be doing anything, here's my code:
```if(view[4].color != 8){
return {cell: 4, color: 8};
}
for(let i = 0; i < 9; i++){
if(view[i].food == 1){
return {cell: i};
}
}
for(let j = 0; j < 9; j++){
if(view[j].ant == null){
return {cell: j};
}
}```
Nevermind, there it goes

Did you work out what was holding it up? Is it anything that could be made more clear for future?

I just went back to the tab, and there it was running. I don't have any other bots selected to include though, just mine at the moment

@trichoplax everything is broken (ok not rly) but update code button is borked
```if(view[4].color != 8){
return {cell: 4, color: 8};
}
if(view[4].ant.type==5&&view[4].food>1)
{
for(var i = 0; i<9)
{
if(view[i].ant==null)
{
return{cell:i,1};
}
}
}
for(var i = 0; i<9; i++)
{
if(view[i].food==1)
{
return({cell:i})
}
if(i==8&&view[i].food!=1)
{
return({cell:1})
}

}```
that borks it

10:36 PM
Huh. I've been disqualified:
TypeError: Unable to get property 'call' of undefined or null reference

@Christopher The first for is missing a final clause
@BaldBantha I need to optimise the initialisation before each game - it can take a few seconds. I've only optimised gameplay and overlooked that.

@trichoplax what? I don't js much

@BaldBantha I also need to work on more meaningful error messages, but I don't yet know how all of them are caused. That one sounds like it was unable to make a valid function from the code you pasted in, resulting in creating an undefined function. I can't see anything obviously wrong with the code though. Is it the same as what you pasted above?
@Christopher Compare your first and second fors

@trichoplax I need a catch all?

```if (veiw[4].color !== 8) {
return { cell: 4, color: 8 };
}
for (let i = 0; i < 9; i++) {
if (view[i].food == 1) {
return { cell: i };
}
}
for (let j = 0; j < 9; j++) {
if (view[j].ant == null && view[j].color != 8) {
return { cell: j };
}
}```
It's that now ^
Oh I spelled view wrong
3

10:42 PM
@Christopher You don't have an i++ in the first one

I finally got around to working on an ant, I'm just polishing some stuff up and then I'll submit it. It's not particularly good, but uses a couple novel tactics.

@trichoplax I am just a dumb person

@PhiNotPi Looking forward to seeing it. And starting the leaderboard tournament again... There hasn't been a long enough gap for the leaderboard to settle on a statistically significant winner since about 24 hours ago. Not a complaint, of course - I couldn't be happier :)

Cool my bot now random walks. Now to fix paint
@trichoplax you should answer my challenge

@Christopher I've been having a think about it. Does it have a chat room...?

10:46 PM
@trichoplax Nope

(hint...)

@trichoplax I took the hint, can't find the spot to make it

Go to site rooms and scroll to the bottom

All i see is show frozen rooms
allow debug mode in that you can set food amounts

In the arena or in your ants?

11:05 PM
@trichoplax in the ants

Since most ants have an initial food gathering phase, followed by their main strategy, that does sound useful. I'll add that to my list of potential improvements.

11:37 PM
```if(view[4].color != 8){
return {cell: 4, color: 8};
}
if(view[4].ant.type==5&&view[4].food>1)
{
for(var i = 0; i<9; i++)
{
if(view[i].ant==null)
{
return{cell:i,type: 1};
}
}
}
for(var i = 0; i<9; i++)
{
if(view[i].food==1)
{
return({cell:i})
}

}
for(var i = 0; i<9; i++)
{
if(view[i].color==0)
{
return {cell:i};
}
}
for(var i = 0; i<9; i++)
{
if(view[i].ant==null)
{
return {cell:i};
}```
It keeps backtracking. I don't want it to walk on stuff it already walked on

Colors are 1 to 8

oh
i dumb

Looks like it should work apart from that...

Yeah it works now

Uses all its food though?

11:42 PM
all but one
it is a starter

2 messages moved to Trash

What is going on?

> Off topic discussion will be deleted to keep things readable.

Trail eraser vs Black hole
so cooool
At least I think that's what's going on

dudde

11:51 PM
Yes it is. Sometimes it tears the whole Black Hole to shreds if enough destructive workers are created
Other times the Black Hole can recover and reform and go on to win the game...

Cool
That is crazy :P

Trail eraser should honestly be called like cancer from now on
it keeps losing but it takes everything with it