From CG community
Jump to navigation Jump to search

Javatacos: can you torpedo and trigger same turn?

Javatacos: also when does the game calculate whether the torpedo is within range. before or after move?

Default avatar.png Insta-x: torpedo range is calculated when you shoot, so your range with be different before nd after move

Javatacos: cool thank you

Default avatar.png Insta-x: torpedo and trigger is unrelated, so you can do both command in one turn

metahom: but what happens first if u launch torpedo and move on the same turn?

Zenoscave: depends on which you do first.

Zenoscave: torpedo or move

Zenoscave: they are evaluated in order of commands given

metahom: i see. thanks

Csipcsirip: hm isnt it possible to jump over on visited cells with silence ?


Csipcsirip: i dont know what " (not visiting already visited cells or islands)" means then..

Csipcsirip: ahh okay I understand it now :D

Zenoscave: Csipcsirip no

Csipcsirip: yes I see it know. I had to overcomplicate my whole code to handle that case...

eulerscheZahl: it's the same questions getting asked over and over again

Zenoscave: eulerscheZahl how's your bot

Csipcsirip: maybe the rule statements are not 100% clear :p

Zenoscave: cells in a given direction (not visiting already visited cells or islands)

Zenoscave: clear to me ;)

Csipcsirip: for me... it was not :D

eulerscheZahl: i just started Zenoscave

eulerscheZahl: give me a day or 2

Zenoscave: You just started?

eulerscheZahl: i have some tracking logic

eulerscheZahl: and a stupid if-else to somehow use it

Zenoscave: ok

Zenoscave: That's all I have...

eulerscheZahl: but the brain part of my but is missing completely

accorp: your but has a brain?

accorp: no wonder you're so good

eulerscheZahl: these letters are really close together on the keyboard

Zenoscave: oui

eulerscheZahl: and i never learned proper 10 finger typing

Zenoscave: Neither did Kernighan nor Ritchie

eulerscheZahl: and then they decided to torture those who did with fancy simbols

eulerscheZahl: i always have to look where to find some of them

eulerscheZahl: while i can find the letters blindly at least

Zenoscave: fancy symbols like {} and []?

eulerscheZahl: yes

Zenoscave: C# may be a bit heavy on those

eulerscheZahl: a hell to type on a german keyboard

Zenoscave: I can imagine

eulerscheZahl: and \ for latex

Zenoscave: you do a lot of Latex?

eulerscheZahl: not anymore

eulerscheZahl: we have an AltGr key on the right of the space bar

eulerscheZahl: press that together with 7 and you get {

Zenoscave: I'm aware

eulerscheZahl: ah

Zenoscave: Been (mis)fortunate enough to need a keyboard like that

Zenoscave: Not a fan

eulerscheZahl: and all of that just because of äöüß

Zenoscave: at least you don't have ø

Zenoscave: ¥†®´∑œå∂ƒ©˙∆˚

eulerscheZahl: i guess Illedan has that

Zenoscave: I hate apple keyboards for this

eulerscheZahl: i only have those: @ł€¶ŧ←↓→øþæſðđŋħł|»«¢„“”µ·…–

eulerscheZahl: for some i don't even know what they are good for

Zenoscave: some are old english or saxonish

Zenoscave: a few physics symbols I see as well

Default avatar.png SilentKnightFromAfar_d6e: ...

eulerscheZahl: and that's a linux keyboard thing. i wouldn't find them on windows

Zenoscave: lol windows alt codes make me ill

Zenoscave: think you'll sim this contest?

eulerscheZahl: not completely

eulerscheZahl: uncertainty + high branching

Zenoscave: right

eulerscheZahl: you get somewhat get around the branching with a MC search

Zenoscave: probably just gonna sim combat in close quarters

eulerscheZahl: worked quite well for C4L

Zenoscave: MC search for C4L eh?

eulerscheZahl: but the incomplete information will be a pain

eulerscheZahl: yeah, i'm ranked 3rd in the multi right now with it

Zenoscave: huh

Zenoscave: thanks for the idea. I assume you mean true MC search not MCTS? or am I mistaken


Zenoscave: thanks

dbdr: eulerscheZahl US-international is a good layout for programming I think

dbdr: [] directly, {} with shift, not alt-gr madness :)

eulerscheZahl: but then i have to relearn it and the marks on my keyboard don't find the content

dbdr: yeah

dbdr: or get a US keyboard next time :)

eulerscheZahl: and when i buy a new keyboard, i have to buy another one for my office desk

eulerscheZahl: and the laptop...

dbdr: I can still type accents when needed, but it's secondary for me

eulerscheZahl: i don't even care about öäü that much

dbdr: yeah

eulerscheZahl: but when i use someone elses keyboard, it will get weird

dbdr: german has qwertz ?

eulerscheZahl: yes

JFB: z <-> y on german keyboard :-)

eulerscheZahl: correct

JFB: :-)

dbdr: same for hungarian, probably because of german influence

JFB: In "official" polish keyboard it exactly the same. But nobody use "official" polish keyboard

eulerscheZahl: historically you wanted letters next to each other, that aren't used in normal words directly after each other

eulerscheZahl: from type writer letters getting stuck by fast typing

dbdr: I think that's still true

dbdr: faster to type if you alternate hands

dbdr: maybe

dbdr: I might be wrong

dbdr: close might be good, far but same hand bad

dbdr: or not ;)

eulerscheZahl: just explaining the y-z as german is a different language

eulerscheZahl: English has a lot of y, german doesn't

aCat: eulerscheZahl was there any stream concerning ocean of code?

eulerscheZahl: there's a #stream channel on discord, check there

eulerscheZahl: personally i don't care, so i muted it :D

aCat: great - thanks for reminding me!

aCat: I didn't mute it but as I have thousends of unread stuff on cg discord it "blends in" quite nicely :P

jacek: happy Caturday

Uljahn: meow

Csipcsirip: :angry:

eulerscheZahl: why so angry?

Csipcsirip: becaus of that cat

eulerscheZahl: did i miss anything?

eulerscheZahl: oh, the dog avatar

struct: How many states do you end up until end game usually?

struct: Is the number big?

eulerscheZahl: hard to answer, as it depends on your overall behavior (e.g. SONAR usage)

accorp: lol, a player surfaced and shoot a torpedo in same move, so that I would think he was damaged by it... I can't decide if that's clever or just dirty

eulerscheZahl: you see the SURFACE in his last commands

eulerscheZahl: so your tracker just sucks

struct: what would you say

struct: worst csae

struct: 1 mill+?

eulerscheZahl: for me it's 3-4k maybe but with sonar

accorp: could you not be an as*hole? I know I can see it

struct: what?

accorp: euler

Csipcsirip: do you track possible paths or just possible positions euler ?

eulerscheZahl: both

eulerscheZahl: why the hate, what did i do wrong?

eulerscheZahl: oh, "so your tracker just sucks" now i remember

Uljahn: the chat seems a bit sensitive atm

Zenoscave: maybe you're sensitive Uljahn

Zenoscave: jk jk meow

Zenoscave: happy caturday

Uljahn: pewpew

eulerscheZahl: oh dear i'm the wrong person to keep chatting when others get easily offended

Zenoscave: PEW PEW

AntiSquid: should have used the more common "FIX IT" line

Zenoscave: maybe you should fix it

AntiSquid: ok accorp fix your tracker, eulerscheZahl fix your fix it statement, ok i will try to fix my tracker later Zenoscave

Zenoscave: :+1:

Zenoscave: I fixed something but I'm not sure what

AntiSquid: accidentally squashed a bug ?

Zenoscave: a big one apparently

struct: or created one

Zenoscave: how so?

aCat: You do some normal 'search' in this game or just symething like one-ply deep or rule-based stuff?

Zenoscave: filter popssible positions

Zenoscave: state based right now

Zenoscave: maybe a few top players sim

kovi: nice csipcsirip!

Csipcsirip: ty, I should've made a screenshot :D

dbdr: "your tracker sucks" is not the same as "your suck"

AntiSquid: your ?

AntiSquid: what do you think of the meaning behind those words Automaton2000

Automaton2000: not sure if this is an english chat

struct: lol

Csipcsirip: :joy:

dbdr: :D

dbdr: kovi: perfect equality :D

dbdr: ah no, can't read

dbdr: previously it was already establish I can't calculate

Nicky1812: hi u guys :))

dbdr: in other words I'm useless

dbdr: hi

MadKnight: hihi Nicky1812

dbdr: MadKnight are you doing OOC?

AntiSquid: he doesn't do any contests for a long time now dbdr

dbdr: :(

struct: MadKnight legend or delete

Nicky1812: my fri

Nicky1812: my friend: hey

Nicky1812: me: wut

Nicky1812: friend:you re programmer

Nicky1812: me:yup

Nicky1812: friend: hack this face pls

Nicky1812: me: :(

Nerus: (╯°□°)╯︵ ┻━┻

Nicky1812: sad

**Nerus slaps around a bit with a large fishbot

Nerus: /me

Nicky1812: :v

AntiSquid: hey hey how's it going guys?

eulerscheZahl: hacking a face? sounds more like a job for a violent lumberjack

AntiSquid: join the contest: Nerus Nicky1812

AntiSquid: i thought he refers to a facebook account

AntiSquid: trying to hack some girl ?

kovi: dbdr, we stuck together again at 34.22

kovi: not for long

dbdr: :)

YannT: hey rose up during the night! :)

kovi: dog-island

eulerscheZahl: woof

YannT: I like bots who give their detection in messages

YannT: good for debugging against

kovi: yeah, it helped in the beginning

kovi: now everyone of us have the same bugs :)

struct: your enemy detection is bugged?

eulerscheZahl: not anymore i guess

Tunga: Greetings my lords!

YannT: I don't think I've got detection bugs?

YannT: except the assumption that people won't shoot themselves, because yeah we've all got that one

MSmits: not me

struct: I think you should take that into account

struct: imo

YannT: you can't if you think about it

MSmits: sure you can

MSmits: you know where the explosion happened

MSmits: you know how much damage he got

YannT: your only options are make the assumptions (for now, true almost all the time), or just not deduce if say both players have a torpedo action on the same turn

MSmits: you know where you shot

MSmits: you save that

MSmits: then you take his order

YannT: no you can't because you don't know the split of damage between your torpedo and theirs or if they shot themselves before or after moving

MSmits: add up the damage to a damage map

MSmits: filter possible position

YannT: so you don't know how to decude that properly

MSmits: sure you know that

MSmits: you know the order of the opponent orders

MSmits: so you know if he moved first or not

YannT: it could be your torperdo hitting, or theirs, and theirs could be before or after move

MSmits: so allow both options

MSmits: you use the damage as a position filter

YannT: and between 1 or 2 damages, it could be any combination of possibilities

MSmits: not any, just very few

YannT: yeah you could allow all of them, but that's equal to not decuding :)

MSmits: you simply consider them all

MSmits: no it;s not

YannT: meaning, you don't actually deduce

MSmits: you allow all *possible* combinations

YannT: which is your entire space to begin with!

MSmits: so you fully deduce it as far as is possible

MSmits: no it's not

MSmits: you know where the explosions happened

MSmits: so why would it be the entire space

YannT: it hit or it didn't = no deducing from that

struct: cant you deduce if you dont hit aswell?

YannT: you just do the fire position deduction

YannT: but nothing from damage taken

YannT: so back to what I said, you can either make the assumption, or not deduce if both players fired/triggered on the same turn

YannT: (unless they didn't lose any live)

MSmits: YannT you seem to say that since there are multiple positions on the map where he could take 1 damage, you can't deduce anything, but surely you can deduce he isn't anywhere else but those positions?

MSmits: isnt that a good thing?

MSmits: I don't see the problem

MSmits: I do allow for the possibility he will shoot himself and that will simply mean a few more possible positions

MSmits: not that many

MSmits: the alternative is making a wrong assumption and completely messing up your tracking when he *does* shoot himself

MSmits: thats way way worse

YannT: I'm saying in a case when the opponent lost life, and fired a torpedo, and they fired a torpedo, if you don't wanna assume that they won't shoot themselves, you cannot deduce position from the damage taken, because it could be your torpedo or their torpedo hitting, and because they could have fired their torpedo before or after moving, allowing for all the poissibilities ends up not trimming anything

MSmits: thats not true, it still trims a lot

MSmits: it's a 15 by 15 map

YannT: decuding from the firing position does yeah, damage doesn't

MSmits: it's only a 3 by 3 blast

MSmits: the blast is less than 5% of the map

MSmits: who cares that instead of 5% of the map you get 7-8% of the map

YannT: you don't have all of the map as possibilities typically when firing torpedoes

MSmits: of course not, but you will be removing all the remote locations

MSmits: the way i do it i dont even think about all those possible combinations and options

MSmits: i just create a damage map, compare with opponent damage and filter cells

MSmits: the only annoying part is moving the map with the opponent orders (shifting the damage map_

wlesavo: MSmits seems to be the only correct way

jacek: smitsisonar

wlesavo: smitsishootin

MSmits: I'm not saying there isn't some value in assuming the opponent doesnt shoot himself, there is a good chance it's correct and then you filter more. The alternative is just annoying, ending up with an empty map of possible positions, not knowing how to continue

wlesavo: stands for exposing yourself in 3 shoots :slight_smile:

MSmits: yeah :P

MSmits: blasterpoard convinced me to try and make a silence pruning function today

kovi: smitsilence then

MSmits: lol no... I just felt stupid watching illedans bot kill me by chain silence

MSmits: even after I shot him 3 times and was at full life

MSmits: even vs bronze boss:

kovi: yeah, some days it was fun getting to top10 basicly by silence only

MSmits: I get 2385 paths

MSmits: to 6 positions at the end

YannT: "i just create a damage map, compare with opponent damage and filter cells" I do the same :)

wlesavo: there were a couple of such bots in bronze, dunno if it is gonna be relevant later, but some one can still abuse it against you

MSmits: Yeah, you need a state-filter regardless

MSmits: they can also explode your state-space with mines


YannT: I actually have half a mind to make a tricky thing where I intentionally shoot myself on the turn I get torpedoes and it doesn't do any damage to empty their positions list and screw them over :)

MSmits: well that one won't work on me :P

YannT: I think most if not all of the current bots would be screwed by that :D

YannT: you can tell anyway by the numbers in the comments of the bots who do that that they all make the assumption

MSmits: nice

eulerscheZahl: you would actually help my bot detecting you by shooting yourself

kovi: tha is also on my list

AntiSquid: even my bot checks who shot the torpedo and what caused the damage

kovi: trigger a mine

kovi: but you can tell

kovi: cant

YannT: you would do this only when your list of possible positions is small to empty it

MSmits: if you trigger a mine you can still tell which positions give 1 or 2 damage and filter appropriately

YannT: I know that would screw me over

MSmits: you know where both mine and torpedo exploded

AntiSquid: 1 or 8 cells

MSmits: but sure, with bad assumptions you could be screwed

YannT: 90% of bots in that case assume their torpedo or mine did the damage, not yours :)

AntiSquid: then they need to FIX IT

MSmits: yeah, I'm sure it works, but it's better to try to compete with the best bots I think

YannT: they might have a safeguard against empty lists tho, so you would need to do it when there's like 10-20 possibilities remaining so it seems legit and they will work off a screwed up list for many turns

accorp: MSmits, what if you shoot and trigger a mine, and the op takes 2 dmg?

MSmits: then there will be several positions where he took 2 damage

AntiSquid: mines don't get triggered by torpedo anymore do they?

MSmits: and you only consider those positions to be possible

accorp: oh, just 3 positions

YannT: never did

eulerscheZahl: they never got AntiSquid

MSmits: do mines trigger eachother?

YannT: nope

AntiSquid: no?

eulerscheZahl: no

MSmits: ok, never done mines yet

MSmits: so was wondering

MSmits: good... that makes it possible to do a perfect damage filter

AntiSquid: accorp you need to change that part in your code


YannT: my next TODO is a probabilistic mine location filter of some sort so avoid moving where there's likely mines

YannT: that's gonna be a subtle balance to strike

MSmits: thats far down my list, so many other things to do :)

eulerscheZahl: like onitama :D

YannT: between not going into likely mines, updating mine possibilities after triggers, and also not going into islands trying to avoid mines :o

MSmits: no, i meant my ooc list :(

MSmits: I wanted to do onitama though

wlesavo: YannT actually did just that yeasterday, minimizing possible damage from mines

MSmits: and suddenly I got uttt ideas too, so i did some of that the last few days :P

YannT: it's my last feature TODO, after that the next one literally say "simulate stuff"

struct: meanwhile you lost rank 1 on yavalath

MSmits: are you kidding me

struct: yes :)

wlesavo: :grinning:

MSmits: giving me a :heart: attack

AntiSquid: :broken_heart:

MSmits: lol

eulerscheZahl: then i know the right puzzle for you

MSmits: solved it

wlesavo: so you safe against the heart attacks

YannT: yavalath sounds like MCTS city no?

eulerscheZahl: yes

struct: yes and no

jacek: ohboy

YannT: you could take your UTTT, rework the data structure and have a thing :D

struct: vanilla mcts wont do well

MSmits: a thing?

YannT: a bot that works

jacek: vanilla?

MSmits: plain mcts on Yavalath is super weak yes

YannT: why so?

struct: traps

MSmits: your bot will try to avoid killing itself by randoming 3 in a row

MSmits: not traps

MSmits: at first it's just gonna be putting hexes on edges

MSmits: because those have the least chance to make 3 in a row

MSmits: and kill yourself

YannT: ahh I see

jacek: i thought vanilla would include 1-ply check in the sim :?

MSmits: well depends on your definition of vanilla

MSmits: most wont start with a 1-ply check

MSmits: especially coming from uttt

MSmits: uttt is just, random everything, get good performance -> legend

struct: I forgot I cant update yavalath

struct: and add boss

MSmits: did you want another league?

MSmits: get lvl 30

struct: Yes, but still not many players

eulerscheZahl: even i can update yavalath :D

struct: was 96 players last time I checked

YannT: 1-ply check = check if you can set up a win in two moves with a 2+1 ?

MSmits: no, check if your bot suicides on that particular random move

MSmits: and pick a different random move

MSmits: so filter all loss locations

MSmits: in the random sim

jacek: make a winning move if can, avoid losing move

MSmits: yeah do the wins too

MSmits: gradually making the sim heavier makes your bot a lot better

emh: I lost my motivation for Ocean of Code.. and we're only in second week. maybe I should rewrite in an obscure language

YannT: I don't understand why the bot would make a random 3 line as that would be a lost anyway in the MCTS results

jacek: in a sim

YannT: ahhh

MSmits: if you're going to do random moves and check for win, you're often going to suicide

YannT: okay got it

MSmits: way more than actually winning

YannT: so the random sims don't end in silly ways

jacek: itll be slower, ut smarter

MSmits: so 95% of losses will not be because someone made 4 in a row, but because the other guy made 3

YannT: got it, make the random sims more relevant :)

MSmits: yea

MSmits: taking a break before trying to write some state-pruning code

YannT: I need to do mine probabilities :o

MSmits: go go :)

YannT: and move away from probable mines without going into islands

ToshiTuringMachine: any easy way to create an hamiltonian path?

accorp: YannT, if you take the move that reveals you the least, wouldn't that be achieved naturally?

YannT: it's NP-complete so no

YannT: reveals the last != avoiding going where there's maybe mines

accorp: I mean the island thing

YannT: I mean if you avoid the mines too hard, you might screw your pathing or force a surface

YannT: there's a balance there

eulerscheZahl: why do you even want a hamlitonian path ToshiTuringMachine?

eulerscheZahl: will make it easier for the opponent to track you

ToshiTuringMachine: so if you see someone doing half hamiltonian path you predict him to continue the same way?

YannT: long straight lines are bad for detection

YannT: be the snail

ToshiTuringMachine: yeah the snail is an hamilt path

wlesavo: to catch a snail you need to think like a snail


YannT: :snail:

AntiSquid: wow

AntiSquid: what if some druggie drives him over ... you never know.

kovi: if im lucky to avoid pb4, i definitely perform better

AntiSquid: nice

AntiSquid: maybe you'll drop mchl next? :p

YannT: I have a 65% winrate against you kovi, plz push more :D

JFB: what is it "hamiltonian path" in OoC?

kovi: yannt: that was my worst for this run (as this time i avoided pb4 totally). sure, if i go high enough i can avoid you too :)

YannT: finding a path to fill all possible tiles of the map

YannT: which isn't necessarily a good objective to have actually

JFB: Thanks YannT :-)

Default avatar.png HelmiAkermi: :upside_down:

Tunga: I havent join any competitive bot programming battle like any, should i just dive it or i keep practising in practice tab first ?

YannT: just join and have fun

Kukiss: There must be your 1st time someday. Why not today? ;)

Tunga: Let me give you all some points, then :D

pb4: kovi : I have a good w/r vs you ?

pb4: any idea why ?

kovi: hmm, not any more

kovi: yesterday it was consistent 35%-

pb4: Let me pull yesterday's version then :D

kovi: :rage:

AntiSquid: Turnga you should definitely at least try to do a bot even if you get stuck in a lower league, don't worry too much about it. Also you could watch streams, these could guide you through the process

Default avatar.png JBM: you ought to give it a go

Default avatar.png JBM: wait

Default avatar.png JBM: scrollback, nevermind

eulerscheZahl: or even give it a MOVE

dbdr: let the chat be your TRIGGER

AntiSquid: trigger to reach #1 Tunga

Tunga: I cant be #1, yet. We ll see

Tunga: Being in a competitive environment is helpful to everyone

Tunga: AntiSquid your link doesnt work on me?

AntiSquid: did you register on discord?

AntiSquid: Tunga

Tunga: Yes, I login with my account and nothing opens

Tunga: mad_king_#9956 this is my account

Default avatar.png Insta-x: what is hamiltonian path?


Default avatar.png Insta-x: thx

dbdr: :)

Default avatar.png Insta-x: :v

Nixerrr: :scream_cat:

Tunga: AntiSquad :(

Tunga: Yes, I login with my account and nothing opens mad_king_#9956 this is my account

MSmits: yay, chain-silence pruning works and I fixed a bug that allowed the opponent to silence off the map :P

Tunga: AntiSquid :(

AntiSquid: can you see the yellow button at the top of this chat "JOIN US ON DISCORD" ?

AntiSquid: click on it

AntiSquid: Tunga

Tunga: Yes

Tunga: I am in the channel

AntiSquid: so what's the issue?

AntiSquid: can see the twitch and youtube lings in the stream channel?

Tunga: Yes, it is done. Thanks !

Astrobytes: "youtube lings" - tiny baby youtubes

AntiSquid: idk why i typed that, feeling a bit sleepy

Quidome: If you move with silence 4 place in a direction are all the cells in that direction for that distance marked as already visited after that?

MSmits: yexs

MSmits: -x

Quidome: aha, thnxs

MSmits: hmm my bot has been trying to charge a torpedo when surfacing

MSmits: is that even possible? I don't get any errors

MSmits: can you only charge after a move action?

Uljahn: ofc

wlesavo: MSmits you can surface and then move

MSmits: I knew that

AntiSquid: you can combine all moves

MSmits: I am just wondering why my bot wouldnt crash when trying to charge a torpedo after surface

MSmits: AddOrder("SURFACE " + to_string(x) + " " + to_string(y) + " TORPEDO");

MSmits: apparently the game just ignores that

AntiSquid: you can't surface at specific spot ? :p

wlesavo: sure it does

Uljahn: illegal commands are substituted by surface?

AntiSquid: ah yes lol

wlesavo: "SURFACE|MOVE " + to_string(x) + " " + to_string(y) + " TORPEDO"

AntiSquid: the x y shouldn't be there anyway

MSmits: why not?

MSmits: Surface

By using surface you will reset your path of visited cells so that you can freely move to a cell that you have previously visited. But surfacing has a major impact: your opponent will know in which sector you are surfacing and you lose 1 hit point.

AntiSquid: because you don't surface x y

MSmits: you do

wlesavo: just SURFACE

AntiSquid: where does it say you teleport to x y ?

Uljahn: If you fail to output a valid action, you will SURFACE in that turn.

wlesavo: everything else done by refere

MSmits: wait, surface is completely random?

AntiSquid: MSmits your output is wrong

AntiSquid: no

MSmits: well random from visited cells ofc

MSmits: but still random

RoboStac: no, its where you are

wlesavo: MSmits sectors mean 1..9

MSmits: I know this, I am not talking about opponent surface

MSmits: I am talking about my own surface

RoboStac: you just surface without changing position

MSmits: do i have any control over where I surface?

Uljahn: no

MSmits: ohhhhh

wlesavo: what do you mean random

AntiSquid: and also you can't MOVE x y

MSmits: I completely misread the text

Default avatar.png Insta-x: yes, i you intentionally surface

MSmits: By using surface you will reset your path of visited cells so that you can freely move to a cell that you have previously visited.

MSmits: I thought it said you teleported to a cell you've previously visited

Uljahn: ahh

wlesavo: lol

YannT: ohh

Default avatar.png Insta-x: lol

MSmits: it can be read that way

YannT: that would be handy ahah

AntiSquid: no it just clears your path

wlesavo: spece ocean

ToshiTuringMachine: propose it as a legend league added rule

Default avatar.png Insta-x: that would make the game longer lol

MSmits: well that makes things simpler I suppose

wlesavo: sure

AntiSquid: that would make silence look far less outrageous than it is i guess

Default avatar.png Insta-x: yes lol

MSmits: ok, so subs cant teleport all over the map, got it!

Default avatar.png Insta-x: everytime your enemy surface, you will have to track him again from zero

wlesavo: smitsiLence

AntiSquid: Insta-x no, you get the sector

MSmits: yeah I got that

Default avatar.png Insta-x: no, its if what MSmits said true

MSmits: I knew it from the opponent point of view. I just misread the text saying it would allow you to teleport

MSmits: I thought you could teleport and then the opponent would know which sector you picked

Default avatar.png Insta-x: we know, we are just playing what if, i think

MSmits: this is going to make my todo list a lot shorter :P

MSmits: I had "find good spots to surface at" in there

AntiSquid: but you got more issues in there MSmits AddOrder("SURFACE " + to_string(x) + " " + to_string(y) + " TORPEDO"); why is there x and y ?

MSmits: i just explained

MSmits: I thought it was a teleport to specific cell previously visited

MSmits: so I was trying to teleport

AntiSquid: ah but you don't use that for MOVE do you ?

MSmits: no

MSmits: string dir = GetDirection(posX, posY, x, y);

MSmits: AddOrder("MOVE " + dir + " TORPEDO");

MSmits: surface so rarely happens in my games that I never noticed this crazy misconception :P

eulerscheZahl: you can even surface on purpose to make SILENT more effective

MSmits: and get damage

eulerscheZahl: but little

MSmits: that would only be worth it if you expect your opponent to time out because of it?

MSmits: if he has no pruning

eulerscheZahl: if you expect to get hit by a torpedo as well

MSmits: so, you surface, then silence

eulerscheZahl: yes

YannT: there's for sure a balance to be found with surfacing when all other remaining options "suck", for some difinition of sucking

YannT: maximize your possible positions, not walk into a mine field, reset the available tiles while silence is available...

MSmits: you have a const float SUCK_TRESHOLD in your code don't you Yannt

YannT: I call it a score but yeah :p

AntiSquid: how do you even accurately detect mines?

YannT: accurately you don't

eulerscheZahl: guesstimation

Default avatar.png Insta-x: ooh, is it a GA?

YannT: you can know where there's maybe possibly mines and evaluate wether it's worth risking it or not (that's my next feature)

AntiSquid: so how does the opponent guess it's time to detonate a mine?

MSmits: when he knows where you are

MSmits: that happens a lot

YannT: that's easier, it's like torpedoes

AntiSquid: just blow it up to reduce possibilities?

Default avatar.png Insta-x: wait, if you surface then silence, it could make your opponents silence pruning timeout?

MSmits: if I look at my games, I often know where the opponent is

YannT: well you can be more liberal with mines because it doesn't give your position away, but you still want to get some value out of them

MSmits: unless they chain silence

ZarthaxX: you cant catch me smito

ZarthaxX: im a shadow

MSmits: Yannt it can give your position away actually

MSmits: if you blow up a mine, your opponent knows where the mine was

YannT: if one assumes you don't self damage, we've been over this :p

Default avatar.png Insta-x: you sure we cant track you with mine?

AntiSquid: noob rank ZarthaxX

MSmits: he can then deduce where you where when you dropped it

YannT: no

ZarthaxX: AntiSquid ban

YannT: it's 4 possibilities times the number of possible positions at that time

Astrobytes: BanthaxX

ZarthaxX: astrobyto !

MSmits: he can prune all paths that did not pass by a mine

ZarthaxX: hi

Astrobytes: hey man

MSmits: in that location

ZarthaxX: MSmits is correct

AntiSquid: i will report you ZarthaxX

Default avatar.png Insta-x: i dont know, cuz i just wanted to implement it

YannT: and with people doing the snail, there might ever be several possibilities for laying out a mine in a given path

ZarthaxX: AntiSquid aight

ZarthaxX: Astrobytes how is the corona?

MSmits: Yannt not saying it's easy, I am saying it's possible

YannT: I guess you can get some value out of it yess

YannT: it's probably litte tho

ZarthaxX: it's huge

AntiSquid: ZarthaxX looks like US will be hit the hardest in the long run

Astrobytes: STill feeling a bit meh ZarthaxX but a lot better. Need to go supermarket today

Default avatar.png Insta-x: its pretty similar with silence pruning i think, at least its similar with my silence pruning algo

ZarthaxX: AntiSquid US is rank 1 by far, not smth proud to be about :/

MSmits: yeah, one might wonder if this has something to do with people listening to a mentally unstable president AntiSquid

ZarthaxX: Astrobytes nice, and your mom?

Astrobytes: She's not too good ZarthaxX, still keeping an eye on it, no worse but no better either

YannT: MSmits: might be a feature idea actually, I guess it would indeed be worth something to run all paths and check if they allowed for that mine to be laid, but I don't know if it's going to prune enough to be worth the time cost

MSmits: me neither YannT, but I it's on my list

Default avatar.png Insta-x: i think its worth it?

ZarthaxX: Astrobytes :( hope she goes through this shit

MSmits: yeah Astrobytes

Default avatar.png Insta-x: if we could prune almost everything, our enemy cant escape with silence

YannT: typically everybody moves in a snail manner, so at any point most of your possible paths probably cross that mine, and especially if a silence was used

Astrobytes: Me too ZarthaxX man, everyone healthy on your side?

MSmits: most people come through ok thankfully

Astrobytes: Yeah MSmits, she's got high blood pressure tho' underlying condition and all that

Default avatar.png Insta-x: my bot dont go in a snail pattern lol

ZarthaxX: yeah we are ok, been inside the house for weeks

ZarthaxX: went out for shopping only

Astrobytes: Cool. Doing that shortly myself

MSmits: YannT not just "crossing the path" also crossing it at the point in time when a mine was laid there

Astrobytes: Considering wearing my respirator mask for shits and giggles

MSmits: I get confused in the supermarket

AntiSquid: i had a random dry cough for few days after i started working from home, but that's about it, might as well pretend it was the common cold

ZarthaxX: Astrobytes never wore one, dont know how effective it is..

ZarthaxX: but i guess it helps stop the spread

MSmits: I need to pay so much attention to people staying away from me I forget to take some groceries out of the card and stuff like that

MSmits: it's quite stressful

YannT: MSmits: very interesting actually :)

jacek: youre physics teacher. dont people already stay away from you?

Default avatar.png Insta-x: i havent go out since the quarantine started lol

MSmits: hahahahahahaha :P

AntiSquid: should wear his badge

Astrobytes: No I'd just wear the mask for a laugh, I use it for DIY stuff, sanding paint/varnished surfaces etc. The filter covers viruses too, would scare the shit outta everyone

YannT: but, at this point detection isn't really a primary concern anyway, it's

ZarthaxX: looool jacek

YannT: good enough that I pretty much know where the ennemy is

YannT: MSmits: silence does screw up the "point in time" aspect actually

MSmits: yeah Yannt, just spreading ideas

Default avatar.png Insta-x: well yes, i think strategy and resource management is more worth it

Astrobytes: Spread ideas not viruses

YannT: because of silence your possible paths will have different lengths

YannT: so probably can't do that

YannT: or also keep track of "silence time"

MSmits: it depends a lot on how you model silence

YannT: in each path

MSmits: when i said time, I didn't mean time exactly

Default avatar.png Insta-x: silence time? what does that mean?

MSmits: when you split a silence into possible movement locations, you also get possible mine locations

MSmits: and if a mine did not explode into any of those possible locations, the entire path is impossible

YannT: well if you wanna backtrack a path to know where someone was at a given turn, you also need to keep track of the steps in silence not costing any turns

MSmits: I don't backtrack, I bitboard the entire path and possible origins

MSmits: dont use lists and all that

MSmits: everything is a bitboard

AntiSquid: overall it's more about guesswork, since silence covers too much of the possible map

emh: what I did in the end I keep track of possible end locations, with list of possible parents, then in the end I validate non-self-intersecting paths using the parents

Astrobytes: Coming soon, MSmits SC2 bot, bitboarded

Default avatar.png Insta-x: i use lists MSmits hehe, what is bitboard?

Default avatar.png Insta-x: is it in python?


eulerscheZahl: it's a language agnostic idea

AntiSquid: you use bits to represent data Insta-x

MSmits: this is sector 1 in bitboard

Default avatar.png Insta-x: like a bitmasks?

MSmits: yes

Default avatar.png Insta-x: is it in python?

eulerscheZahl: i feel ignored

Astrobytes: eulerscheZahl 02:14PM it's a language agnostic idea

Default avatar.png Insta-x: cuz i use list to represent the bitbard using True and False lol

ZarthaxX: that's how noobs that talk here feel everyday eulerscheZahl

Astrobytes: At least I paid attention :P

AntiSquid: Insta-x good start

Default avatar.png Insta-x: ooo thx

MSmits: eulerscheZahl i didnt think it merited a response, it was perfectly descriptive and clear

Default avatar.png Insta-x: thx eulerscheZahl

YannT: I don't know how you "bitboard a path", you would need the ordering not just visited locations?

Default avatar.png Insta-x: didnt pay attention :sweat_smile:

eulerscheZahl: not ignored by you MSmits ;)

MSmits: no, the ordering doesnt matter

MSmits: you just keep the visited places

MSmits: and as you build that up

YannT: true, but it does if you want to do the "point in time" thing

Default avatar.png Insta-x: yep ZarthaxX

MSmits: you also build up a possible mine map

MSmits: so each time you add a mine to this possible mine map, you know where you are path-wise

MSmits: at that point in "time"

MSmits: i was thinking about using a uint32_t for this

Default avatar.png Insta-x: i dont bitboard the path, its too memory and performance intensive

MSmits: so i have 4 bits per cell

MSmits: (4 neighbors)

AntiSquid: Insta-x read the link ...

MSmits: the problem with storing the path is that it shifts, so you need to move the path around

MSmits: the path is relative to the origin after all

YannT: but the trigger will be many turns later, so how do you "go back" if you have no ordering to say that this was the turn the mine was laid and these are the paths at that time that were possible

MSmits: no no, you dont need to look at the path

MSmits: thats what the possible mine map is for

Gajowy: what does MSG do?

MSmits: the path is absolute btw, it's not possible path, absolute path

Astrobytes: Clever

MSmits: you split into different states on silence

Default avatar.png Insta-x: Monosodium Glutamate?

Default avatar.png Insta-x: lol

MSmits: then your path is absolute and so is your possible mine map, only the neighbor is uncertain

MSmits: why am I telling you how I do this before I have even coded it :P

Gajowy: but like why whould you use MSG as a submarine

ZarthaxX: lolo

Gajowy: enhance the oceans taste?

Default avatar.png Insta-x: maybe

MSmits: lyrics from your favorite song

YannT: haaa I get it, you keep a possible mine map per path

AntiSquid: Gajowy message

MSmits: YannT yes

Default avatar.png Insta-x: bitboard every possibility?

MSmits: the only problem is pruning this when you prune chain-silencers. Havent solved that yet

YannT: MSmits: that's what I wasn't figuring, yes that would work

MSmits: right now, my first priority is to rewrite my teleporting submarine

Default avatar.png Insta-x: lol

Default avatar.png Insta-x: cool tech

Default avatar.png Insta-x: keep it, you could win easily by teleporting

Astrobytes: That was truly a superb misunderstanding, I have to say :)

YannT: I have a sim that works (only inputs I take from the referee are ennemy orders and current life), but I'm absolutely not using it :p

MSmits: if it would work, sure :P Instead it just surfaces and thinks it's somewhere else, eventually running into it's own path :P

Default avatar.png Insta-x: sim = simulation?

Astrobytes: y

Default avatar.png Insta-x: good luck MSmits

Default avatar.png Insta-x: what should we sim?

MSmits: I imagine the sub captain looking outside the window after surfacing, thinking "I totally just teleported, this water looks completely different".

Default avatar.png Insta-x: lol

AntiSquid: does it taste differently?

MSmits: i didn't code that AntiSquid

Default avatar.png Insta-x: its a possibility

Astrobytes: fix your flavour enhancement Smits

MSmits: on it

Astrobytes: Right, I'm off to brave the supermarket, laters

MSmits: good luck

ToshiTuringMachine: use mask to go out

MSmits: kick old people away to protect them

ToshiTuringMachine: use mask

MSmits: :P

Default avatar.png Insta-x: lol

ZarthaxX: yes

Default avatar.png Insta-x: whats with i dont get it, all i know its an ip address

MSmits: it's not

ZarthaxX: lol

MSmits: it's a mask that can be used to give you a subnet id if I remember correctly

Default avatar.png Insta-x: dont know anything like that

Default avatar.png Insta-x: lol

MSmits: i didnt either, but Iam in a internet security course

Default avatar.png Insta-x: have you tried picoCTF?

MSmits: nope

emh: it's a mask that protects you from interacting with other IPs I think

emh: your own 1-IP subnet. right?

Default avatar.png Insta-x: could it protect us from internet virus LOL

Default avatar.png Insta-x: subnet? what is taht?

Default avatar.png Insta-x: *that

MSmits: a smaller part of the network

Default avatar.png Insta-x: like a wifi?

MSmits: you use a part of the ip-adress to identify hosts in the network

MSmits: wifi will do that I think yes

Default avatar.png Insta-x: nope, i dont have wifi in my house

Default avatar.png Insta-x: now im using mobile data from my phone

MSmits: pretty sure you have it

MSmits: you just can't use it

MSmits: because you dont know the wifi password

AntiSquid: Insta-x check it out, goodbye

MSmits: AntiSquid out? Drop mic?

emh: hmm.. order more tea or not.. favorited 1 out of 5, now want more of that one. but should finish the 5 also...

MSmits: are you that bored with ooc

MSmits: talking about tea now?

AntiSquid: MSmits if he actually checks it out he might not come back

MSmits: oh ok

Default avatar.png Insta-x: thx?

emh: I have open Visual Studio on a template F# project

Default avatar.png Insta-x: im not into cyber security now

emh: wondering to rewrite my C# in F#

AntiSquid: ya tea is a far better topic than ooc

emh: for lesser cognitive load

MSmits: which cognitive load you mean your head or the computers?

emh: my head. hard to come up with new stuff

emh: besides hit the 100k limit

MSmits: 100k what?

emh: code size

MSmits: oh

MSmits: wow

AntiSquid: Insta-x it starts with basics, it helps gain a basic general understanding so you don't have to ask what 255... means

MSmits: it's only been a week

Default avatar.png Insta-x: ok thx, i still have much to learn

eulerscheZahl: this guy doesn't find me and that makes me timeout :/

emh: I went out on a tangent. even coding spiral movement using atan2 hehe. but not using it actually

emh: in production

MSmits: eulerscheZahl why do you timeout?

MSmits: you dont prune ?

eulerscheZahl: i track my opponent tracking me

eulerscheZahl: and no

Default avatar.png Insta-x: oo lol

Default avatar.png Insta-x: you also simulate him tracking you?

MSmits: ahh, I started pruning when blasterpoard showed me a battle vs illedan

Default avatar.png Insta-x: cool

MSmits: you kinda have to

eulerscheZahl: yes, trying not to reveal too much about my position

MSmits: I prune when going over 1000 states

eulerscheZahl: on my list

MSmits: I am not even using any abilities besides torpedo yet

Default avatar.png Insta-x: my code cant process more than 200 states

MSmits: yay for priorities :)

Default avatar.png Insta-x: but my pruning now can keep all possible states below 100

Default avatar.png Insta-x: even if you chain silence

MSmits: yea, mine is invulnerable to that as well now

blasterpoard: the question is, how much information do you lose?

Default avatar.png Insta-x: its all because someone just chain silence lol

Default avatar.png Insta-x: lol, here he is

blasterpoard: I got pinged

Default avatar.png Insta-x: oo

AntiSquid: nice Insta-x

MSmits: ah yeah blasterpoard, I fixed my pruning

Default avatar.png Insta-x: thx

MSmits: just resubmitted

MSmits: will probably not help much in bronze

blasterpoard: cg... I deleted all of my logic

MSmits: but maybe you can try a battle vs illedan again, see what happens

blasterpoard: and started writing an actual bot

MSmits: what did you have before then?

Default avatar.png Insta-x: an ai?

blasterpoard: move to minimize avg distance from opponent

blasterpoard: if expected dmg is >0.7, fire a tornado

MSmits: ohhh

MSmits: tornadoes!

Default avatar.png Insta-x: wowo

blasterpoard: if I can silence, silence 0

Default avatar.png Insta-x: good idea

Default avatar.png Insta-x: lol

blasterpoard: *torpedo

blasterpoard: that is my entire bot

MSmits: good bot

blasterpoard: #24 right now

Default avatar.png Insta-x: cool

blasterpoard: for some reason

AntiSquid: Insta-x why no avatar?

MSmits: yeah, blasterpoard you say it's so easy to track, but it's actually pretty complicated. It doesn't surprise me that bot is 24

Default avatar.png Insta-x: im kinda lazy i think

AntiSquid: avatars unlock the hidden +5% win rate feature

Default avatar.png Insta-x: dont see the point of putting an avatar

Default avatar.png Insta-x: huh?

MSmits: Insta-x otherwise you look the same as everyone else

AntiSquid: +5% win rate Insta-x

MSmits: which is annoying when you're in the top 10

Default avatar.png Insta-x: i dont mind that

MSmits: you want to be able to distinguish

Default avatar.png Insta-x: why?

MSmits: it's annoying to others mostly

blasterpoard: Insta-x if I want to find battles against you in last battles tab, it's annoying if you have no avatar

Default avatar.png Insta-x: oo

MSmits: otherwise I cant tell from the pics on the recent battles who just beat me

MSmits: or who I just beat

blasterpoard: MSmits you failed

Default avatar.png Insta-x: yeah, i feel that

AntiSquid: Insta-x nvm then don't get an avatar then, best to annoy everyone else

Default avatar.png Insta-x: LOL

AntiSquid: for chat it would be nice to have an avatar though Insta-x

MSmits: blasterpoard need more pruning apparentkly

MSmits: I prune after 1k

MSmits: this had 660 states

AntiSquid: otherwise you look like a random person that just made an account and joined chat to type in some random gibberish

AntiSquid: Insta-x

blasterpoard: MSmits I can manage many more states than that

Default avatar.png Insta-x: maybe i'll put something thats still hard to distinguish, so i have an avatar and still annoy everyone :joy:

AntiSquid: yes

MSmits: blasterpoard what you consider a state is different from what I consider a state

MSmits: a

blasterpoard: but maybe my states are diffferent from yours

AntiSquid: i like your thinking Insta-x

Default avatar.png Insta-x: how can you have so many states?

Default avatar.png Insta-x: what language?

MSmits: I have bitboards, 1 bitboard may correspond to a maximum of 225 origins

Default avatar.png Insta-x: for me, i have sets

emh: hmm.. should I go down or up. C++ or F#

AntiSquid: F#

Csipcsirip: do you ust std::bitset ?

MSmits: no

blasterpoard: I use C++, I can handle around 200k states easily, but I'll need some time for other things

MSmits: yes but how do you define a state blasterpoard?

Default avatar.png Insta-x: i prefer C++ just because i dont know F#

Default avatar.png Insta-x: what is a state for you? blasterpoard

blasterpoard: and by state I mean all possible opponent move histories from the beginning of the game

MSmits: does this include the start location?

blasterpoard: all visited and mined cells

Default avatar.png Insta-x: whats the data structure?

blasterpoard: and current location

blasterpoard: and hp

MSmits: ah ok, because I keep my start location variable in the state

MSmits: thats why 1 state can be 100+ states \

Default avatar.png Insta-x: data structure for the visited cells

Csipcsirip: is manual bit toggling much faster MSmits ?

MSmits: in this case I don't care. It just much easier to do

Default avatar.png Insta-x: how do you guys can have so much states? dont you have to calculate ecery state every turn?

MSmits: yes, c++ is fast Insta-x

Csipcsirip: yeah I would use it too if the map would fit in a 64 bit int

eulerscheZahl: at least we update it, sure

Default avatar.png Insta-x: oo, you use c++

eulerscheZahl: and filter states

Default avatar.png Insta-x: i use python3

MSmits: blasterpoard, so you open the game with a 225 - island cells amount of states?

blasterpoard: MSmits yes

MSmits: i open the game with 1

MSmits: thats the difference

AntiSquid: Insta-x here's a good avatar for you

MSmits: so when i have 600 something, that equates to you having 600 times that amount you start with

AntiSquid: wait i meant this one Insta-x

MSmits: and if the current silence-turn multiplies that by 10+ you can see my problem :)

Default avatar.png Insta-x: still easy to distinguish AntiSquid

MSmits: I should just filter after 500 instead of 1000, see if that fixes it

blasterpoard: ofc - your way sounds a bit impractical

Default avatar.png Insta-x: lol

AntiSquid: but it fits your name Insta-x

Default avatar.png Insta-x: hmm?

MSmits: blasterpoard that's personal I think. I am so used to bitboards from all the board games that this feels very natural

Default avatar.png Insta-x: so you guys have every state from the beginning of the game?

MSmits: OH!

MSmits: I had pragmas off

Default avatar.png Insta-x: and prune it every turn?

MSmits: lol

blasterpoard: xD

blasterpoard: Insta-x yes, but we onyl rarely need to prune

MSmits: Insta-x yes

Default avatar.png Insta-x: c++? very fast i see

Default avatar.png Insta-x: one of the fastest i heard

AntiSquid: i didn't bother with branching out

MSmits: yes

MSmits: also not that easy to use

MSmits: but when you have 30 days it's fine

Default avatar.png Insta-x: yep

AntiSquid: not gonna bother until friday probably, unless silver overfloods and i get promoted again

blasterpoard: I don't find C++ that difficult

Default avatar.png Insta-x: gold wil be unlocked next week right?

MSmits: because you're used to it blasterpoard

blasterpoard: I like that I can be sure it's actually doing exactly what I write

Default avatar.png Insta-x: I havent learned all the data Structure in c++ so i didnt use it

MSmits: I like that too, but if I am using a lot of lists and different classes I end up preferring C#

AntiSquid: no ... just compare C++ to some of the more obscure stuff out there, i mean they are not only obscure languages but the way you have to code some of them is really weird

Default avatar.png Insta-x: all i know is array and queue

MSmits: blasterpoard can you run another illedan battle, I can't select him :(

Default avatar.png Insta-x: actually, i also just started using sets, dictionaries and tuples in this contest lol

Default avatar.png Insta-x: MSmits, which league are you in?

MSmits: bronze still

blasterpoard: MSmits

MSmits: I have a bad priority queue :P

Default avatar.png Insta-x: ooh ok

blasterpoard: this one took a bit longer xD

ToshiTuringMachine: tell that to people who say that 'codingame is not teaching anything'

MSmits: Boom yeah!

AntiSquid: Insta-x you're doing well, keep going while you're motivated

MSmits: I could probably stretch my pruning limit. I am not even timing things

Default avatar.png Insta-x: thx, though im not a motivated as 3 days ago

Default avatar.png Insta-x: im a bit tired, especially programming silence pruning

AntiSquid: then save current code and try out random fun nonsense

Default avatar.png Insta-x: it took me 3 full days

MSmits: my surface is still bugged though, i lost illedan and had an empty position map at the end :P

MSmits: but he doesnt shoot anyway

Default avatar.png Insta-x: well, i want to try GA

AntiSquid: JUST DO IT!

Default avatar.png Insta-x: its 10 PM here, so i just want to chat LOL

AntiSquid: excuses

blasterpoard: that's the best time to code

Default avatar.png Insta-x: :v you're not wrong actually

Default avatar.png Insta-x: for me, its not, im not used to sleeping late

AntiSquid: i mean if you're here to chat there's Automaton2000 and he is really cheap, with low hourly rate

Automaton2000: that is the right approach

Default avatar.png Insta-x: oo, hi? lol

Uljahn: Automaton2000: long time no see

Automaton2000: you need to put them in a single line

Default avatar.png icecream17: oh i see you need to type "Automaton2000" for it to work

Automaton2000: give an example of what you want to know how it works

Default avatar.png Insta-x: what to work?

AntiSquid: how Automaton2000's body parts work

Default avatar.png icecream17: Automaton2000

Automaton2000: do you think about that?

MSmits: yeah AntiSquid, do you think about Automaton2000's body parts?

Automaton2000: so i'm pretty sure they have a nice day

Default avatar.png JBM: i may or may not start streaming again

AntiSquid: may or may not? you become your opponent tracker

eulerscheZahl: in #de he wrote that he's already streaming again

MSmits: #de has a better tracker?

MSmits: they know things we dont

Default avatar.png Insta-x: i dont understand anything there

wlesavo: here should be some WWjoke

AntiSquid: jbm knows german?

eulerscheZahl: a little

eulerscheZahl: egaetan speaks German too, he even lived there for some years

AntiSquid: MSmits JBM is ahead of you

egaetan: only one year eulerscheZahl

MSmits: Insta-x, not everything we say is a statement of coder genius. Sometimes we talk out of our ass

eulerscheZahl: my bad

MSmits: especially AntiSquid :P

Default avatar.png Insta-x: LOL

Counterbalance: ohh there's a contest

eulerscheZahl: but i remembered parts of the story

eulerscheZahl: oh there's a Counterbalance

wlesavo: fatality addition seems to be working

Default avatar.png Insta-x: java vs python3 performance, which one is better?

AntiSquid: no, JBM is ahead of you MSmits

MSmits: you bringing a little mortal kombat into ooc wlesavo?

blasterpoard: Insta-x almost everything is better than python

MSmits: ahead of me like what ?

wlesavo: MSmits sure why not

emh: when is CG going to support wenyan-lang? I want to code in Chinese

Default avatar.png Insta-x: :( thats bad, im currently using python

AntiSquid: on the leaderboard MSmits

AntiSquid: and he is streaming, so expect more competition / rank drop

MSmits: bah, everyone and their mom is ahead of me :P

Default avatar.png Insta-x: fatality, you mean pursuing him because you are 100 % will win

Default avatar.png Insta-x: ?

AntiSquid: my mom isn't, will make her an account MSmits

MSmits: Insta-x detecting a winning move yeah, I guess so

wlesavo: it seems that quite a few games can be ended by some finishing move

MSmits: ignoring other considerations

Default avatar.png Insta-x: well, i like to call that SPARTA actually

Default avatar.png Insta-x: but yeah, good name LOL

MSmits: ok AntiSquid, just be advised, I will torpedo your mom

AntiSquid: ehm, ya see? weird MSmits jokes again

ZarthaxX: ban him

AntiSquid: /ban MSmits

MSmits: I meant, in ooc, sheesh

AntiSquid: /kick MSmits

Default avatar.png Insta-x: its not growtopia LOLOL

AntiSquid: SELECT * AS money FROM MSmits_bank_account

MSmits: noooo

blasterpoard: MSmits is so rich that a bank needs a separate db table for him

Default avatar.png Insta-x: its str(" or ""=" ) - injection right?

Default avatar.png Insta-x: *"injection"

Scarfield: random thing i read the other day: Russians were the first to have torpedos expell gas, to reduce the drag from the water, and making them go much faster

AntiSquid: it's a 1 row table doh

MSmits: I'm so rich, I overflow 64 bit and become poor

Default avatar.png Insta-x: i'm so rich i need big Integer

MSmits: good one, see you're getting the coder jokes now

AntiSquid: should have said you need a linked list of integers

Default avatar.png Insta-x: if i dont get that joke, than you can say ima very beginner

Default avatar.png Insta-x: *then

Default avatar.png Insta-x: or for c++, im so rich that i need string

Default avatar.png Insta-x: lol

Default avatar.png Insta-x: i never used linked list, but i have used string to store big integer

emh: yo momma so fat she uses her g-string to store big integer

Default avatar.png Insta-x: LOL

Scarfield: wow that escalated quickly :D

AntiSquid: JBM also missing an avatar, maybe should remove mine

AntiSquid: just for the contest

Default avatar.png JBM: AFAIK you can't

AntiSquid: you can with CG premium membership, just updated, refresh

eulerscheZahl: you uploaded the default image

Default avatar.png JBM: re-uploaded default image appears as whatever file format you gave it

Default avatar.png JBM: missing/default avatar is entirely missing, provided as inline html data

AntiSquid: some people here simply can't afford CG premium i guess

eulerscheZahl: see it's not real

blasterpoard: tbh I would pay for CG premium if I got extra 5ms per turn

AntiSquid: do you really need to confront me about a joke? :D

eulerscheZahl: of course

ToshiTuringMachine: 5ms lol

eulerscheZahl: because i can't motivate myself to work on the contest bot

AntiSquid: will you write a script to filter out and replace my avatar?

ToshiTuringMachine: it becomes a pay-per-win

eulerscheZahl: nor the rewording that jbm suggested

eulerscheZahl: PRs welcome ;)

AntiSquid: i didn't even read the statement apart from input output section

AntiSquid: chat discusses the game so much you don't have to read it

eulerscheZahl: partially the statement is still from the prototype, partially it's what I added it somehow became a little inconsistent

eulerscheZahl: he has valid points

MSmits: I read the statement and I thought I could teleport my sub, chat might've been better :P

Default avatar.png Insta-x: test

Scarfield: icles

Azkellas: hon hon hon

AntiSquid: hey MSmits

eulerscheZahl: teccles isn't playing the contest yet

MSmits: hey AntiSquid

AntiSquid: look up D-star Hexaquark

MSmits: ok will do in a few.

Astrobytes: that's the one you mentioned a few days back Squid?

AntiSquid: related to the article i was talking about MSmits

MSmits: ohh ok

MSmits: quarkstars

AntiSquid: no not stars, dark matter related article

MSmits: oh, right, interesting

AntiSquid: 6 quarks fused together somehow .

MSmits: well normally there's 3

MSmits: or 2

MSmits: but mostly 3

MSmits: protons and neutrons consist of 3

AntiSquid: yes i am aware

MSmits: kk

Astrobytes: It's a Bose-Einstein condensate

MSmits: brb

AntiSquid: Astrobytes it is claimed that it's a "dark matter candidate"

Astrobytes: Yes I know, I'm saying it's formed by Bose-Einstein condensation, fused together at absolute zero

AntiSquid: ah

Astrobytes: Pretty fucking cool

Astrobytes: (pun intended)

AntiSquid: but space isn't at absolute zero is it?

eulerscheZahl: get a profile pic AntiSquid

Astrobytes: No, but during the rapid cooling post-big-bang it may well have been

AntiSquid: why eulerscheZahl ?

eulerscheZahl: it's confusing me

eulerscheZahl: somehow i have a built-in filter to mostly ignore users with no pic

AntiSquid: lol

pb4: didn't you have a profile pic yesterady ?

eulerscheZahl: he had

eulerscheZahl: the galaxy

eulerscheZahl: with a red dot where we live

AntiSquid: no. laniakea with a red dot where the galaxy is

Illedan: Hi

Astrobytes: Hello

dbdr: kovi #1!

AntiSquid: are you streaming Illedan ?

AntiSquid: gratz kovi

dbdr: oh :D

Astrobytes: lol

dbdr: did not expect that

dbdr: this sub is incredible. might just be luck, it's early

AntiSquid: lol

AntiSquid: overshot by a little

E_pur_si_muove: @eulerscheZahl: in the gridmaneger when you initailize the grid I think the expression rand.nextInt(26) is evaluated in every for loop. ???

aangairbender: is c# compiled by mono? why not .net core?

eulerscheZahl: yes indeed :D

eulerscheZahl: didn't even notice yet (not my code, even if i commited)

eulerscheZahl: now find the bug in this line:

eulerscheZahl: because CG struggled to get .net core running on their servers aangairbender

aangairbender: that is sad

aangairbender: .net core is very fast

eulerscheZahl: there might be an update before the may contest

eulerscheZahl: mono is extremely slow on 2D arrays i noticed

kovi: back

kovi: wow

eulerscheZahl: converting to 1D is much faster not like that for .net

kovi: thx dbdr. nice submit btw

eulerscheZahl: impressive kovi

Astrobytes: It doesn't flatten 2D arrays under the hood?

dbdr: well, going up and down a lot. might end up as usual or a bit better

eulerscheZahl: meanwhile: yay, top30!

eulerscheZahl: i don't know how 2D arrays are implemented but with mono they are much slower

eulerscheZahl: for some games i doubled my sim count by converting that

aangairbender: i am rewriting eveything from c# to rust

dbdr: :+1:

aangairbender: is rust good for cg? @dbdr

MSmits: it works, but it runs in the IDE in debug mode afaik

MSmits: which is annoying because that means you can't test properly with, or against other bots in the IDE

eulerscheZahl: yes, release mode only on submit

dbdr: aangairbender as a language it's great, I think

dbdr: the IDE mode is annoying sometimes

dbdr: currently it's not affecting me in OOC

MSmits: nah it wouldnt affect me either. It's more for those high performance board games

wlesavo: mchl12 some crashing in your submit, if you interested

dbdr: even for those, performance is great in arena, which is what matters

aangairbender: btw its easier to express intentions with c#

aangairbender: imo

dbdr: you can workaround the IDE thiing

MSmits: yeah, thats why it is only annoying

dbdr: do you have an example aangairbender?

aangairbender: example of what?

Illedan: AntiSquid, yeah I'll be streaming in 15 min

MSmits: easier to express intentions aangairbender

aangairbender: hmm for example c# has linq, easy way to work with collections

aangairbender: with rust i have to add unwrap() everywhere

dbdr: that's unrelated

MSmits: linq has a high risk of you doing things that are extremely costly in terms of performance

dbdr: unwrap is for unsafe cases

dbdr: you can work with collections like filter map etc without unwrap

kovi: hmm, im not loosing vs pb4

dbdr: and get the same performance as hand-written loops

MSmits: I've never understood why foreach would sometimes be slower than for or reverse in C#

MSmits: the compiler should be able to look at the code and just compile it in the fastest way

aangairbender: with .net core its fast

pb4: damn kovi

MSmits: I'm talking about marginal differences, like 10%

aangairbender: I've read an article about for vs foreach, but I don tremember details(

kovi: france and hungary both has 3 players in top10

dbdr: nice!

dbdr: room for one more country

MSmits: I'm trying!

wlesavo: kovi now im the one loosing to pb4

dbdr: 10 - 1, ouch

aangairbender: i loved how I only needed working simulation+1tick minimax to be in legend in PokerChipRace

aangairbender: but for this one i hope there is not any simulation based strategies

eulerscheZahl: what's wrong with simulations?

wlesavo: i probably need to wait till pb4 will stop resubmiting :slight_smile:

aangairbender: nothing wrong

aangairbender: btw are they applicable here?

MSmits: you do some kind of simulation yes

MSmits: you simulate where the opponent sub can be


kovi: nice submit pb4

aangairbender: dbdr do you gave script for merging code into single file?

dbdr: yes, but it's not in a releasable state I think, with some custom stuff in it

dbdr: :(

dbdr: there was one mentioned on the forum though

aangairbender: ok, thanks


emh: what's everyone's favourite C++ single-header coroutine / generator library?

aangairbender: bits/stdc++.h

aangairbender: if i understood question correctly xD

aangairbender: oh

aangairbender: seems not

emh: I just want my "yield return" :)

ToshiTuringMachine: ... you are so clever you need a shortint to store your IQ

aangairbender: ?

Astrobytes: Toshi coming with the jokes from 3 hours ago :D

aangairbender: for school times

ToshiTuringMachine: yeah my brain is degrading back to school

ToshiTuringMachine: i can't get that silver... i was 3th nownow

eulerscheZahl: how many points below the boss?

ZarthaxX: ToshiTuringMachine same, i got retarded

ToshiTuringMachine: i didn't check

Astrobytes: "got" ZarthaxX? :P

ToshiTuringMachine: yeah ZarthaxX >) drunks on coding

MSmits: I've always wondered when that happened ZarthaxX, tell us more :p

Astrobytes: TardaxX

ZarthaxX: Astrobytes good poinrt

Astrobytes: Tardobytes

ZarthaxX: MSmits is that a joke?

MSmits: of course :)

ZarthaxX: savage

MSmits: you can take it

ToshiTuringMachine: tardTuringMachine

Astrobytes: ToshiTardingMachine

ToshiTuringMachine: how comes I have same results ignoring enemy silence... lol

ToshiTuringMachine: bronze

ZarthaxX: f

MSmits: sorry I cant finish that, my students could be watching

Astrobytes: Did you convince any to take part?

AntiSquid: gonna ban the bear for calling ZarthaxX retarded

MSmits: nah, i was planning on sending them a message, but this contest is too hard I think. Something like code a la mode would be better

AntiSquid: for relaxing yes ^

Astrobytes: They wouldn't like the challenge?

AntiSquid: this isn't a relaxing game for lockdown :D

AntiSquid: it's like perfect torture

MSmits: I think they wouldn't get anywhere

MSmits: or do you think there's an easy way to make a bot

MSmits: that doesnt require tracking and such?

AntiSquid: lol

AntiSquid: there was no way out of wood2 without tracking

ZarthaxX: AntiSquid right LOL

MSmits: yeah thats what I mean

MSmits: I dont think they can do the tracking

ZarthaxX: you will ban myself nice move AntiSquid :P

AntiSquid: remember kutulu contest when wood boss was overpowered?

MSmits: yeah

AntiSquid: this contest felt even harder in wood :D

ZarthaxX: MSmits maybe random moving and shootigng work

ZarthaxX: works

ZarthaxX: but idk

ZarthaxX: but it was a rough start

MSmits: btw, i dont think this games wood boss is overpowered. The game is just hard to begin with

ZarthaxX: right

MSmits: any boss that "works" is gonna be hard to beat.

ZarthaxX: maybe making enemy visible for wood 2 would have been better

MSmits: yeah

AntiSquid: MSmits wood 2 boss is same as wood 1 and default AI, it tracks you down and fucks you up

MSmits: i didnt have problems with it at all. I skipped wood 1

MSmits: before it was nerfed

ZarthaxX: the devs of the game were really inspired for those wood bosses :P

AntiSquid: it's g-rom's bot which he worked on for a good while :p

MSmits: you just need a tracker is all

AntiSquid: ya but, you shouldn't need that for wood

MSmits: I agree, but then the game would be fundamentally different

AntiSquid: normally you just need to not ram your head full speed into a wall and just throw in some skils and promoted

MSmits: also, the boss shoots himself

MSmits: a lot

ZarthaxX: im with squido on this one

AntiSquid: no MSmits, same game, just weaker wood bosses

ZarthaxX: make a bot that uses the actual actions and pass

MSmits: but how would you know where to fire?

MSmits: how to even damage the boss?

AntiSquid: it has to move lol

Astrobytes: BRute-force and ignorance ofc

ZarthaxX: maybe making nemey visible

MSmits: random shooting is kinda hard with a 3x3 blast in a 15x15 map

ZarthaxX: and torpedo be replaced by a move

AntiSquid: the problem is tracks you very well MSmits

ZarthaxX: that has a pathfdinger

ZarthaxX: finder

MSmits: so it comes to me, that is convenient :P

Astrobytes: Paaaathfinger

AntiSquid: imagine xmas rush, but wood bosses go straight to item, which isn't the case

ZarthaxX: Astrobytes youuuuuuuuuuu shut up

Astrobytes: :D

AntiSquid: MSmits you took a while to promote out of wood and so did many others, so that's proof enough the bosses were too strong

MSmits: still a lot of people out of wood though

AntiSquid: either way i find it annoying when they nerf them retroactively after you commited to improve your bot and pass them -.-

MSmits: me too

MSmits: also, I found it extremely annoying my bot skipped wood 1

dbdr: that work is not lost

AntiSquid: MSmits out of wood after probably nerfing them again or resubmitting boss

AntiSquid: just add silence then maybe you promote to silver MSmits

MSmits: i like the abilities coming in slowly

MSmits: haha yeah, i should stop torpedo-ing every 3rd turn

MSmits: i'm 50th in bronze with that now

MSmits: I want to fix a bug or two first

AntiSquid: well maybe wood should be manual promote

AntiSquid: because otherwise you need to setup locally and manually change to wood2

Csipcsirip: what I dont like is that you have to wait like 300 rounds for something to happen

MSmits: i dont mind either way, they should ask the players that have a lower skill level. It doesnt matter if it takes a long time to get out of wood, if you eventually do

AntiSquid: when you bored of wood: type promote or something

MSmits: if you never get out of wood thats a different story

MSmits: br2k bosses for example

MSmits: I never got out of wood 2

MSmits: ofc that is more like gold but still

AntiSquid: never tried that game seriously

AntiSquid: just submitted random

MSmits: its fun, but i didnt know how to eval

Numby: Anyone knows if Java inheritance incurs additional overhead (or no due to type erasure)? I'm considering creating & extending an abstract class to share a helper method vs creating the same method static

pb4: Was it bad that bosses were strong in BR2K ?

MSmits: no, it was a different kind of contest

MSmits: can't really compare

MSmits: I was just saying it kinda gave me a feeling for how it would be for people who cant get out of wood in a regular contest

Astrobytes: I think stronger bosses work well in long contests

Astrobytes: You get more out of it

Astrobytes: imo

Astrobytes: The BR2K format was nice

MSmits: I like how reCurse won it with a NN. That's something you can't do in a regular contest

MSmits: which is a good thing imho. But no reason it shouldnt be allowed in an unofficial contest

Astrobytes: Who said it shouldn't?

MSmits: noone said

Astrobytes: Ah OK, thought someone had

MSmits: don't think so. I think most people liked the fact that he pulled it off in that timeframe

Astrobytes: Yeah, was impressive

Default avatar.png icecream17: what happened?

MSmits: reCurse won br2k unofficial contest with a neural network in I think 14 days? Probably a lot less

ZarthaxX: besat.

ZarthaxX: beast.

Astrobytes: Wasn't br2k a 4 week-er?

MSmits: hmm could be yeah

MSmits: anyways, his bot was unbeatable much sooner

Astrobytes: Yeah, it was

eulerscheZahl: 3 weeks i think

eulerscheZahl: not a real contest anyways

Astrobytes: It's a shame it wasn't. But I liked the unofficial contest idea

Csipcsirip: can you link that contest pls ?

MSmits: it's just an arena


eulerscheZahl: i admit i never tried, not looks like csb2 to me

MSmits: it's mostly the engine

Astrobytes: Yeah, bit more to it than just racing :)

pb4: CSB on steroids(TM)

eulerscheZahl: still i think it was a good decision not to turn it into a contest on a first look

MSmits: but eulerscheZahl is right, it's not an official contest. It's more like what happens occasionally in a new community multi when a lot of good players start it at the same time. We had this with yavalath for a while as well

MSmits: br2k just had better PR

eulerscheZahl: pull request?

Astrobytes: lol

MSmits: you know what I mean :P

eulerscheZahl: seriously i don't get it

MSmits: public relations

Astrobytes: public relations

MSmits: advertising

eulerscheZahl: oh, aaaah

wlesavo: lol resubing pb4 somehow got me to #4

Tunga: in 5 minute contest, pythoners are advantaged as hell ??

MSmits: why would there be a 5 min contest

wlesavo: CoCtest

Astrobytes: think he meant CoC

MSmits: oh ok

eulerscheZahl: try codeforces if you like short contests

Tunga: There is a contest where I just typed the library name and 5-10 more characters and won (in python ofc)

Tunga: Yes CoC

MSmits: call it a clash

MSmits: contest has a completely different meaning to us :)

MSmits: but yeah, python has a major advantage in short contests, just like c++ does in moderate to long ones if they require performance

Uljahn: ye, rigth tool for the job

AntiSquid: clash of code isn't contest D:

ToshiTuringMachine: yeahhh silver

ZarthaxX: gz!

ToshiTuringMachine: ty ZarthaxX

ToshiTuringMachine: time to rewrite

dkov: has someone win rates for utlimate tic tac to for x, o and draws?

eulerscheZahl: ask MSmits about that

MSmits: dkov, around 67% for p1 and 33% for p2 is normal

jacek: an draws

MSmits: I count a draw as 50% win

MSmits: if you do that, you get the 67/33

MSmits: however, I do believe it would be solved to a win for p1

MSmits: if you could

MSmits: running a meta mcts approaching the best play, usually increases p1 winrate I've found (lately that is, I've thought differently before)

dkov: oh! I did not ask my question right!

dkov: for a random mc simulation, what are the win percentages?

MSmits: oh, no idea

eulerscheZahl: i don't think anyone thought that would be interesting to test

MSmits: for example, it would strongly depend on the first move

dkov: cause my old simulater gives 49/43/8 my new one: 41/39/20 random first move

jacek: and how are they different

jacek: do you use 1-ply win check

dkov: different implementation but they should yield the same result. i suspect there might be a bug in one of them or biased random numbers. i don't know, what you mean by 1-ply win check

jacek: if there is a move that would win the game, make it. otherwise make random move

dkov: no 1-ply win check in both

eulerscheZahl: these numbers are close together, can just be randomness

eulerscheZahl: you need more runs for a reliable result

eulerscheZahl: but p1 should have an advantage over p2 for random rollouts as well

dkov: they are consistent with millions of runs

dkov: these are percentages, sorry

eulerscheZahl: oh, i thought you just ran 100 games

eulerscheZahl: then the 49/43/8 sounds more reasonable to me

MrTimber: Hi PHP devs, if you are interested, I made a project that allows you to code using different source files, with a small tool that combines everything into a single file for synchronization with Coding Game:

Astrobytes: MrTimber post that in the forum and/or discord so people can find it :)

dkov: i messed up the victory condition in the new simulator. now I get similar results. thanks for the help

jacek: good for you

Astrobytes: you gonna join the contest jacek?

jacek: unlikely

jacek: i havent done anything game/ai for past few months

jacek: im getting old

Ille-Stream: Top 150 on stream :tada:

Astrobytes: getting old!

Astrobytes: gratz Illedan

Astrobytes: Stream

Astrobytes: Ille-Stream

Ille-Stream: I'll swap :P

Astrobytes: :D

jacek: hm?

Illedan: :)

AntiSquid: oh i see you slightly overshot your main eh?

Illedan: My main is still broken :P

Illedan: It's 25th or something

AntiSquid: ah right

AntiSquid: why did you break it if you can reach top 50 ?

Illedan: I'm working on my new tracking system

Illedan: Need a test bot with silence only

Illedan: Fix 1 thing at a time :)

Astrobytes: Test against mine, it only silences

Illedan: I like to know what I'm testing against :P

Astrobytes: lol

JFB: Illedan - so you can test agains me too - is deterministic, only torpedo + silence (1 step)

Illedan: :)

Astrobytes: I'm also deterministic fwiw :P

AntiSquid: fwiw ?

Counterbalance: for what it's worth, iirc

Astrobytes: yrc

AntiSquid: faa

Default avatar.png icecream17: it's worth it - easier to debug. unfortunately I silence and mine randomly.

eulerscheZahl: sttla

Astrobytes: ok you got me there squiddy

Astrobytes: and you too euler

AntiSquid: last a stands for acronym

AntiSquid: s

Counterbalance: still no bot functions like !urbandict here?

AntiSquid: "still no"

Astrobytes: say no more AntiSquid lol

Astrobytes: nope

Counterbalance: we had that stuff 24 years ago on IRC

Astrobytes: Tell CG :D

AntiSquid: you can add your own bot

Astrobytes: True

AntiSquid: flood chat with Automaton2000 and AutomatonNN

AutomatonNN: yes i do

Automaton2000: as long as it is

AntiSquid: see? they are ready to flood the chat any time

Counterbalance: !rank

Astrobytes: yeah but AutomatonXXXX help/faq/translate/die/troll etc would be more useful

Counterbalance: !slap AutomatonNN

AntiSquid: unlike other chats: discord for example here you can add your own bot and nobody will stop you?!

AutomatonNN: maybe it's a good idea

Astrobytes: heh heh

Counterbalance: lol

AntiSquid: Automaton2000 !die

Automaton2000: if you want to keep it simple

AntiSquid: it's never simple Automaton2000

Automaton2000: this got me to gold

Astrobytes: both bots on form this evening

Counterbalance: move is executed before torpedo? (got a fired out of range) Or does it depend on the order of the commands given?

Astrobytes: Depends on order yeah

ZarthaxX: the things are executed sequentially

Counterbalance: thanks

AntiSquid: it depends on your output Counterbalance

ZarthaxX: Counterbalance read the rules sheez

ZarthaxX: :)

Counterbalance: I did, just didn't read the referee yet

AntiSquid: you can do MOVE N|TORPEDO 0 3 or the other way around

eulerscheZahl: not recommended Counterbalance

AntiSquid: you could just read chat more often, like i did, i didn't read the rules

Astrobytes: is the referee that bad? Not looked at it yet

Counterbalance: I only found out today - too busy with extra work due to the crapshoot going on

eulerscheZahl: reading the chat also helps to find out about a contest

eulerscheZahl: the referee has UI and game logic merged

Astrobytes: How 'merged' is merged

eulerscheZahl: illedan decoupled it but doesn't seem in a mood to push it to the public repo

eulerscheZahl: so merged that he broke the game logic when he tried to add extra animation frames

Astrobytes: oh ffs :D

eulerscheZahl: old prototype from CG that we inherited

eulerscheZahl: existed before the kutulu contest

Astrobytes: yeah, I know it wasn't you guys

Astrobytes: Still, Illedan, push the decoupled version will ya

eulerscheZahl: spot the bug that will cause problems for other constraints

Counterbalance: like non square grids

eulerscheZahl: and we have a winner

Default avatar.png icecream17: how does the seed work

Astrobytes: oh yeah, ffs. Is that used in any non-square grid context in the ref though?

AntiSquid: this sub game was linked on slack back when BotG was in development

AntiSquid: and was still titled captain sonar

eulerscheZahl: and i scrolled all the way up in the history and found it there

eulerscheZahl: then it stopped working with the pixi.js update

Astrobytes: They should bring the PacMan one too

Astrobytes: It looked pretty nice

AntiSquid: maybe we could ask the admins if we can just host it as a regular multi ?

Astrobytes: Or unofficial contest. Mind you, probably wouldn't be best as a contest since the format has been done to death elsewhere

AntiSquid: "i sniped this game, can i host it?"

Astrobytes: lol

Astrobytes: *idea not format

eulerscheZahl: say it's your own game and hope they don't remember

Astrobytes: Change the graphics a bit

Zenoscave: Illedan

Zenoscave: are you streaming?

Astrobytes: Get eulerscheZahl to do them in fact

Astrobytes: He already did Zeno

Zenoscave: cool maybe i'll find some useful stuff

Zenoscave: My code needs some cleanup

eulerscheZahl: my bot just gets worse, even if i improve in self-play :/

Zenoscave: Yeah, this silver is getting rough

struct: This is why I havent started

struct: I cant get worse than default code

eulerscheZahl: and i don't remember which was my best submit

Astrobytes: No versioning, tsk tsk euler

Zenoscave: I have versioning but the scoring for same code is too erratic

Astrobytes: Yeah, I'm just trolling

Zenoscave: :P

blasterpoard: imagine trying to find out where did your bot make a mistake in legend

JFB: eulerscheZahl - for example in match with my bot - your bot crashed. Probably my bot done too many silence

Zenoscave: Yeah silence timeouts are crazy

Zenoscave: still can't fully do all the paths

AntiSquid: i am sure at some point i fixed a bug dropped 50 ranks, improved tracking a bit and jumped 50 ranks back up, maybe i should have kept the bug and just improve? :thinking: -regarding versioning

Zenoscave: I can handle about 1.5k paths total between two players

Zenoscave: Who knows AntiSquid, this is getting tough to predict

eulerscheZahl: do you happen to have a replay JFB?

AntiSquid: e

eulerscheZahl: i think it's not your silence

Illedan: Zenoscave, I'm done streaming

Zenoscave: thanks Illedan :)

blasterpoard: eulerscheZahl just play vs illedan if you want to check

Illedan: I added the link to discord and the forum

blasterpoard: and yes, you crash vs silence cpam

Zenoscave: cpam?

blasterpoard: spam

Zenoscave: ah

eulerscheZahl: hm, didn't expect that but it's indeed the silence here

eulerscheZahl: but most of my timeouts should result from me trying to rebuild the opponent tracking me

Astrobytes: CPAM - Comprehensive Perl Archive Memories

eulerscheZahl: and if the opponent has poor tracking, i find too many options for myself and timeout


Zenoscave: oh god at least it isn't CPAN

Astrobytes: :D

AntiSquid: c like in mice @Astrobytes :p

eulerscheZahl: ok, JFB playing the hiding game with me as well

Astrobytes: yeah I know squid


Zenoscave: I love and hate that I new exactly where that was going

Astrobytes: lol that's exactly what I thought of

AntiSquid: i disagree with the bottom statement though

JFB: eulerscheZahl - I do not understun why you have problem with tracking yourself. As you see - in tris replay, just before your bot stopped, both bots (your and my) knows exactly where you are

Astrobytes: AntiSquid which is your nomination

Astrobytes: ?

eulerscheZahl: in this replay it's tracking you which causes the timeout

AntiSquid: don't think anything is more ridiculous than a giant "alphabet" that people in their 40s who learnt it their entire life didn't master it

eulerscheZahl: but i also had caes where tracking myself was the problem

eulerscheZahl: well, good night

JFB: good night :-)

Astrobytes: gn euler

Zenoscave: gn !

Astrobytes: Which alphabet AntiSquid?

AntiSquid: you can pick between mandarin and cantonese

Astrobytes: Couldn't possibly comment tbh, not enough experience

AntiSquid: Electric + Vision = TV 电视 (diànshì)

   Electric + Brain = Computer 电脑 (diànnǎo)
   Electric + Shadow = Cinema 电影(diànyǐng)

aangairbender: ok I made a script for merging c# code into a single file

aangairbender: going to split my code into some files/folder

Astrobytes: Intonation means a lot huh Antisquid

MSmits: yay silver

MSmits: so this is interesting. I was fixing a nasty bug. When I fixed it, my submit was way worse

MSmits: then i resubmitted my bugged version and I am in silver

Astrobytes: Standard contest bot behaviour :D

MSmits: yeah...

MSmits: also it is still just shooting torpedoes every 3 turns :P

Astrobytes: gz btw

MSmits: thanks

MiniWolskys: Am I the only one feeling like there is a bug with the input for the map in Ocean of Code in C ? Just added a print to the standard code and only half the map is present

MSmits: I'm guessing you added the print wrong

ZarthaxX: you are the bug MiniWolskys

MSmits: but i wouldnt know how to check, i dont know C

aangairbender: input is given to all languages in the same way

Uljahn: there is a limit for debug output length

nnminh171298: i print the whole map ok

Counterbalance: you can print at least 2 maps and some more lines

MSmits: you should be able to at least print a map

MSmits: yeah

MiniWolskys: I print everything with no problem with my own input code but not with the default one

nnminh171298: aaaaa how come I beat you every game and you up rank, MSmits

MSmits: it's not about beating a specific person

Uljahn: ah, the stub could be far from perfect

MSmits: it's about being strong against most important

MSmits: most people sorry

MSmits: also, if you get near the boss on a submit, try to make your bot strong against it


accorp: MSmits, how old are you, btw?

MiniWolskys: All I added is the fprintf line and I don't think I have done it wrong, but only 8 lines are printed of the 15

MSmits: I'm 39

Astrobytes: What about you accorp?

aangairbender: MiniWolskys try adding if (i > height/2) before pprintf

aangairbender: to check whether its a debug size limit

Counterbalance: MAP: 0 ........xx.....MAP: 1 MAP: 2 ........xx.....MAP: 3 MAP: 4 ...............MAP: 5

Counterbalance: it's fubar

Zenoscave: the engine is fubar Counterbalance?

Counterbalance: no, the stub I think

MiniWolskys: Yeah that's the format I got when I added the line to my print, but why is it not picking every other line then ?

Counterbalance: ok, make it so:

char line[width + 2];

fgets(line, width + 2, stdin);


Zenoscave: also fprintf(strderr, "%s\n", line);

Zenoscave: fprintf doesn't add newlines

Counterbalance: fgets reads at most 1less than the given size, so, width bytes. The newline is not read.

Counterbalance: alternatively, add fgetc(stdin) after the fgets()

MiniWolskys: On my own code I fixed it with a fgetc() at the end, but I feel like this is a complicated start if you don't pay attention

Counterbalance: yes indeed

MiniWolskys: if I add the \n it print 3 empty line instead xD

Zenoscave: perhaps we could reach out to the team

accorp: it's completely eef'd

MiniWolskys: I'll post a message on the forum on the OoC bug thread

Zenoscave: :+1:

accorp: is it because the new line is "\n\r"?

MiniWolskys: Good to know it's not just in my head

Zenoscave: I doubt it

Counterbalance: no, because the line size is width + 1, and fgets reads width + 1 - 1 bytes

Zenoscave: Counterbalance is right

Counterbalance: the same kind of bug could occur when reading the opponent orders, but they use a buffer of 201 bytes so it's less likely

Zenoscave: Wait they use a static sized buffer????

Zenoscave: Oh many ideas are flowing

accorp: this can't be right, C does what its told to...


ZarthaxX: smito when is that 40yo birthday


MSmits: not for a while ZarthaxX, it's in 2021

ZarthaxX: ah we wont be alive by then

Counterbalance: so your birthday was before 21 jan?

ZarthaxX: asteroid hitting on april

Zenoscave: Since when is there an asteroid

MSmits: eh no, it wasn't. Are we using ooc tracking methods on my birthday?

ZarthaxX: sinece 2020 sucks

ZarthaxX: you will pewpew the asteroid right zeno?


ZarthaxX: and save the contest

Counterbalance: hehje yeah, my tracking is too restrictive in my bot too

Zenoscave: maybe top 20 again!

ZarthaxX: pog

Zenoscave: 18 heyo!!!!

ZarthaxX: gz!

Zenoscave: and back down to 20 I need to quit estimating

ZarthaxX: lol

MSmits: ohh, I just had a great idea

MSmits: to check your tracking

MSmits: when the opponent possible locations map empties, break your game update loop

MSmits: then check a submit for timeouts

ZarthaxX: put an assert

Counterbalance: TRACKING BUG: no opp cells!

accorp: Counterbalance, this means the last char is forced to be \0, in this case the carry is not returned

Zenoscave: It works decent

Counterbalance: accorp yes indeed

MSmits: does anyone else have problems with repeated code in recursive functions and such? I always found it hard to extract repeated stuff out of a recursive function like that

MSmits: it messes with references and such when i pull it out and separate it into a different function

MSmits: for example, my silence function. I have 4 loops with small differences for the 4 directions. But there is a recursive element due to the silence happening in 4 steps

MSmits: so i end up with this bloated code

ZarthaxX: u mean like repeated processing of diff actions?

MSmits: yeah my processing of actions is also recursive

ZarthaxX: same but i meant that repeats in manyplaces

MSmits: but a single silence action is recursive in and of itself

ZarthaxX: it gets way too repetitive

MSmits: yeah

Counterbalance: you should be able to factor out functions without a problem..

MSmits: a more experienced c++ coder might

Uljahn: why recursive? can't you iterate and break when needed?

MSmits: hard to explain, has to do with damage map being carried down the action list

MSmits: having it recursive means it is easier to pass it on changed or unchanged depending on the actions

MSmits: on a silence, you split into several branches also

MSmits: it's kind of a tree structure

ZarthaxX: should stop giving out your ideas in a contest:P

MSmits: yeah, I'll stop now

Counterbalance: so you have something like if (left) { left-specific-code; copy-past-code} else if (right) { right-specific-code; copy-paste-code} ...?

MSmits: hmm not exactly no

MSmits: I go down all possible directions for silence

MSmits: and iterate 4 steps

MSmits: but each silence step is a possible silence end result so the processing of actions should continue

MSmits: pretty sure everyone does this btw, i am not giving anything away here

MSmits: but anyway, all 4 directions have the same code

MSmits: instead dy = -1 or +1 or 0 etc.

Counterbalance: and you can't do foreach (direction) { explore(dir) }

ZarthaxX: yeah not a spoiler

MSmits: hmm how would you define a direction?

MSmits: like a list of dx,dy structs?

Counterbalance: something simple like for (int dir = 0; dir < 4; dir++) { Pos next{cur + dir}; blah; }

Counterbalance: ehh Pos next{ cur + directions[dir] }

MSmits: yeah I think that might work, I dont work in directions, but in dx, dy, but that could be a constant array of 4 structs {dx, dy}

accorp: first 4s being general directions and the seconds are diagonals

MSmits: dont need diagonals for silence

accorp: same for cross, first 4s are west, second are E and so on

aangairbender: for silence i have two nested loops, first loops on directions, seconds loops on distance

MSmits: yeah, that's what i am changing to now, as advised by Counterbalance. Thanks by the way

MSmits: oh I had a very general coding question btw, that has been bugging me for a while.

Counterbalance: np. If you use constexpr arrays and unroll-loops you'll hardly notice the difference. BUt it should be possible to factor out the identical code to a function so you kan keep the 4 optimisations

MSmits: whats a constexpr array?

Counterbalance: you could even use a template<> inline function()

MSmits: just a const?

Counterbalance: better

MSmits: ah ok

MSmits: so, for my next question

Counterbalance: constexpr's are really compile-time constant, const kind of

MSmits: what if I have boolean that is changed only once in the entire run of the program, but is not constant. Yet I have a lot of if statements that refer to this boolean. Will this slow me down at all?

Counterbalance: (const int foo = 0; will still create a variable on the stack; constexpr int foo = 0 doesn't)

MSmits: kk, will try that, thanks

Counterbalance: It'll slow you down a little, I suppose, but probably not enough to change the approach. If the variable is referenced a lot it's likely cached. But every memory compare + jump does take a little time. If it's not changed in a function you could create a const copy of it (on the stack), that might speed it up a little.

Counterbalance: Is it a win-condition check or something?

MSmits: well say I expand 100k times during a uttt turn and in each expansion I do if(playerId == 0)

MSmits: the playerId is set at the start

MSmits: this is just the first thing that comes to mind, i ran into this many times

Counterbalance: aha, and you have an else // playerId == 1 aswell?

MSmits: well there is automatically an else if it affects what comes after. For the compiler it doesn't matter if there is an else or not

MSmits: it's branching either way

Counterbalance: you _could_ define the function as a template and pass the playerid as a template param, that way the compiler optimizes the ifs out

MSmits: you mean they become two different functions?

Counterbalance: template<int playerId> calculate(...) {}

MSmits: one for p1 and one for p2?

Counterbalance: yes

MSmits: interesting

MSmits: I never used a template before tbh

Counterbalance: the caller would do if (playerId == 0) calculate<0>(..) else calculate<1>(..)

Counterbalance: (the template param has to be a compile-time constant so you can't do calculate<playerId>(..), I think)

accorp: trade off - memory

Skril: if the condition doesn't change during the game, branch prediction should kick in and reduce the cost of the test

MSmits: memory to store functions in you mean accorp?

ZarthaxX: i guess he did

MSmits: Skril that is what i was wondering about, does branch prediction work that well in this situation

ZarthaxX: why woudlnt

MSmits: i have no idea, i know what branch prediction is sort of, but no idea how it works in detail

MSmits: where does it even keep the stats

ZarthaxX: i saw that last year

ZarthaxX: a hardware table

ZarthaxX: it's quite amazing

Skril: it's done at cpu level

MSmits: seems magic to me

dbdr: it's part of the CPU

ZarthaxX: has like a fsm

ZarthaxX: made in hardware

MSmits: fsm?

Skril: it recognises patterns

ZarthaxX: finite state machine

MSmits: ah

ZarthaxX: just 4 cases

Skril: it starts execution code for the prediction it does for the test

dbdr: also branch locations are hashes

ZarthaxX: MSmits

ZarthaxX: that's the states

dbdr: with a small width like say 8 bits, so you definitely get collisions

ZarthaxX: it's from wikipedia anyway

MSmits: mmh ok

dbdr: so depending on one byte shift in your code, you will get collisions or not

dbdr: and very diffrerent perf

dbdr: fun

MSmits: I see

Uljahn: isn't it NN based in recent CPU architectures?

MSmits: well, I am now ranked 179 in silver with a bot that only shoots torpedos all the time and never uses any other action. Also ignores all mines

ZarthaxX: i think

ZarthaxX: good

MSmits: yeah :)

dbdr: MSmits but it tracks the opponent perfectly, I'm sure

MSmits: It probably does, I changed it to break from the update loop as soon as it loses all positions

MSmits: which crashes the bot

dbdr: yeah, that's a great debugging opportunity

MSmits: all my losses seem to be death from torpedo and mines

MSmits: do people use sonar?

dbdr: what else, surface? ;)

ZarthaxX: he meant his crash

MSmits: surface maybe... but dont see it that often

dbdr: I do. but I did not tune my actions much

accorp: Counterbalance, you didn't finish your take on templates...

MSmits: just wondering if sonar is a common top bot-action

MSmits: or if it is like archers in code royale :)

dbdr: not really I think

MSmits: do you think it might help when you detect an opponent that doesn't care about killing you, just tries to out-silence you?

MSmits: then your own silence is useless

dbdr: I might be wrong pb uses sonar too

Counterbalance: oh well, your point about double the code size is very valid; it depends on the compiler and cpu whether one is faster than the other

MSmits: and you may be better off sonaring

dbdr: it would be if it's a top strategy

Counterbalance: but, premature optimisation is the source of all evil, so get it right first and then see if you need to resort to compiler tricks ;)

MSmits: true Counterbalance. I just do all these simple board games so often that I quickly run into questions like this

dbdr: are you saying that to MSmitsboard? :upside_down:

Counterbalance: you guys say BUG a lot - makes it hard to search the console output for bugreports

accorp: this is just academic :) is it just perfect for the template to boolean?

Counterbalance: They're fun though, right MSmits?

MSmits: very

MSmits: this is sort of like a boardgame. It's quite simple compared to most contests. I dont mean simple to play, but very few rules. I like it

Counterbalance: I detest copy-paste code, because I spend a lot of time cleaning up other people's mess at work. Fix a bug, then it turns out the code is copy-pasted 5 more places so I have to do the same thing 5 times, and that's 4 times too many

MSmits: I detest it too, I am just not that experienced in preventing it

MostComplicatedUsername: Hm

MostComplicatedUsername: Function

Counterbalance: if you want really fast code then it's very hard to avoid.. I changed my pos = cur + direction[dir] approach to 4 blocks in another multi and got 20% speed increase, so there's definitely something to say for it under certain circumstances

MSmits: yeah! Thats exactly why it bothers me

accorp: isn't the ugliest of things? :D

MostComplicatedUsername: AHA

MostComplicatedUsername: Im dum

MSmits: but smart enough to realize it

MostComplicatedUsername: ;/

MSmits: it's a sad state to be in

MostComplicatedUsername: YEah

MSmits: better be even dumber and not know it

MostComplicatedUsername: Ignorance is bliss

MostComplicatedUsername: I was surfacing constantly

MSmits: being dumb is like being dead. It's only painful for others - Ricky Gervais

Counterbalance: lol

MostComplicatedUsername: And I realized that I wasn't resetting the trail once I surfaced

accorp: best to know where you stand at

MSmits: MostComplicatedUsername then I was much dumber

MostComplicatedUsername: ?

MSmits: I read the statement carefully and concluded that you can teleport anywhere you have visited when you surface

MostComplicatedUsername: lol

ZarthaxX: Counterbalance how is those 4 blocks

ZarthaxX: idea

MSmits: By using surface you will reset your path of visited cells so that you can freely move to a cell that you have previously visited.

MostComplicatedUsername: yeah

MSmits: freely move to a cell -> teleport!!!

MostComplicatedUsername: :)

MostComplicatedUsername: makes sense

Counterbalance: { pos.y --; foo(); } // up { pos.y+=2; foo(); } // down .. ZarthaxX

ZarthaxX: but you need ifs?

ZarthaxX: or what

MSmits: it's basically like manually unrolling a loop

Counterbalance: yeah you do, for bounds checks...

accorp: +2?

ZarthaxX: wait

Counterbalance: yes because you did y-- before..

ZarthaxX: u apply one, call, apply other, call

ZarthaxX: that way?

Counterbalance: the foo() is just a placeholder for basically the same code again and again

ZarthaxX: oh god ugly

Counterbalance: normally you'd do foreach (dir) { next = cur + directions[dir]; if (next.inBounds()) foo(); } but that is slower

accorp: MISRA is coming for you...

MostComplicatedUsername: Something odd is happening...

MSmits: a game with a lot of BFS for example right Counterbalance

MSmits: like Xmas rush

MSmits: or maybe kutulu

MSmits: actually very many CG games


MSmits: i know he's an idiot lol... but that seems fake

MSmits: does always make funny fake stuff?

AntiSquid: MSmits

AntiSquid: that's what it's known for


MostComplicatedUsername: longest I've ever survived

MSmits: ah ok

AntiSquid: but i bet it crossed his mind to say it at least once :D

MSmits: it gets really confusing when the subject is trump. You have to try hard to make a story so ridiculous people wont think it's real

AntiSquid: MSmits all this complaining about trump makes me wonder if people forget that Biden has dementia

MSmits: I did not forget it

MSmits: I really dislike that he is winning

AntiSquid: it's like most american presidents are senile to some degree

accorp: AntiSquid, the COVID situation seems to be troubling you?

MSmits: Bernie would have been pretty smart

MSmits: he's older than either of them isnt it

MSmits: isnt he?

AntiSquid: nah, i like reading weird stuff accorp

MostComplicatedUsername: Politics...?

AntiSquid: why not

AntiSquid: it's fun

MostComplicatedUsername: :\

AntiSquid: next month we might just get hit by an asteroid so whatever

MSmits: I bet you cross a road without looking also :P

AntiSquid: a car can cross the sidewalk without the driver looking, what's your point? :p

MSmits: thats what I thought :P

accorp: :D

AntiSquid: in fact . there was a carer hit by a bus next to the street lights just on a street near where i live MSmits

MSmits: a carer?

MSmits: you mean like a nurse?

AntiSquid: she was on the side walk

AntiSquid: no, nurses have degrees

AntiSquid: carers just assist

MSmits: ahh a low level nurse

MSmits: like wood 2

accorp: this is getting dark pretty fast

AntiSquid: not considered a nurse

Default avatar.png icecream17: wow Msmits

MSmits: hmm ok

MSmits: what is it icecream17

Default avatar.png icecream17: your comment

AntiSquid: but the point is she was on the sidewalk when the bus hit her MSmits

MSmits: did i say something insensitive?

MSmits: didnt mean to

AntiSquid: calling her wood 2

MSmits: oh ok, is that offensive? Many players are in wood 2

MSmits: they are players too

AntiSquid: i was just bringing it up to show life can screw you over regardless

MSmits: it can yes

AntiSquid: she is fine though

MSmits: good

AntiSquid: i mean she recovered

MSmits: it's another less person in the healthcare system though... not good

MSmits: while she recovers that is

MSmits: all those shortages on masks and such dont help either, docs and nurses get sick too

accorp: AntiSquid, do you fear death?

AntiSquid: you mean if i am worried right now?

AntiSquid: no

AntiSquid: not at the moment anyway, but this year has been crazy

MSmits: yes

accorp: are you drunk right now? :D

AntiSquid: no

accorp: good

MSmits: no accorp he's always like this

AntiSquid: what are you on about accorp

AntiSquid: lik what MSmits ? you made the wood joke about someone who got hit by a bus

MSmits: I'm just messing with you AntiSquid

accorp: you post a lot of stuff, talking in a certain direction

AntiSquid: i am bored

MSmits: it's just late at night, we're tired less inhibitions, more stupid stuff said :P

accorp: oh, I get it

AntiSquid: find a different subject that's more entertaining and i will go along with it

AntiSquid: i hope aliens abduct MSmits

MSmits: being tired is like being drunk

MSmits: me too

AntiSquid: ya good riddance

MSmits: btw, I have a plan for being abducted

MSmits: I'm much smarter than all those other people

MSmits: when I get abducted

MSmits: I will pick up a piece of alien tech

MSmits: off a shelf

MSmits: and prove aliens exist

accorp: one less person to demote me down

accorp: i hear yoy

accorp: you*

AntiSquid: oh please if something like that really visits earth crossing interstellar space they could just pick up humans like rats that can't fight back

Default avatar.png icecream17: but why aliens do that

MSmits: yes, but they always bring you back home after they're done with their rectal exams dont they?

AntiSquid: idk

AntiSquid: have no experience with such things

MSmits: this just hearsay ofc

Default avatar.png icecream17: they would have to be smart right? i wonder what aliens programmers are like.

accorp: ffs :D

MSmits: probably they dont have them

Counterbalance: nor shelves

MSmits: they just have a single neural network

AntiSquid: icecream17 we abduct animals to experiemnt on them and tag them, so naturally one of the theories or made up stories would be about the same thing

Default avatar.png icecream17: what? that's horrible. now i don't like aliens.

aangairbender: yey my c# script for merging project into single file is working

MostComplicatedUsername: you guys have the weirdest discussions

AntiSquid: maybe they had their own human soup and suffer from some virus too icecream17

AntiSquid: humans carry diseases too

MSmits: MostComplicatedUsername just at this time of day

MostComplicatedUsername: :expressionless:

AntiSquid: MostComplicatedUsername it's ok everything is under control, i am a professional moderator

MostComplicatedUsername: :expressionless:

AntiSquid: and how was your day MostComplicatedUsername

MostComplicatedUsername: Normal

AntiSquid: wow how dull

MSmits: dull is good

MostComplicatedUsername: Well, school closed, not much to do

MSmits: oh you're in school

AntiSquid: highschool or uni ?

Default avatar.png icecream17: I wish everyday was not a normal day. I have online learning

ZarthaxX: closed?

AntiSquid: might be one of your students MSmits

ZarthaxX: not even virtual classes?

Default avatar.png icecream17: Ugh.

MostComplicatedUsername: 12 grade

MSmits: he's in the US

MostComplicatedUsername: Yes there are online classes

MostComplicatedUsername: SHe

MSmits: I dont have students there

AntiSquid: hey MostComplicatedUsername do you have a lazy physics teacher that skips classes and programs bots?

MostComplicatedUsername: No

MSmits: lol

AntiSquid: oh ok

Counterbalance: nice one

ZarthaxX: MSmits explain

MSmits: hey I dont just teach physics

Default avatar.png icecream17: i wonder where that question came from

MSmits: what ZarthaxX


ZarthaxX: you are doing virtuual clases?

ZarthaxX: classes

Default avatar.png icecream17: no, just assignments

Default avatar.png icecream17: online

MSmits: yeah, kinda, but I am a bit lucky. I did some experiments along that line last year and the classes that are still going right now are just in that period of the year where i can use material from those experiments. Like Youtube videos

MSmits: so i dont have to do that much

MSmits: but i am going to write two google forms tomorrow to ask some questions during an online class (on google chat)

MSmits: they make pictures of their homework and hand them in as well

MSmits: written by hand ofc

MostComplicatedUsername: Hmm

ZarthaxX: oh nice

MostComplicatedUsername: Seems a bit inefficient

MSmits: physics is not that easy to do digitally

MSmits: equations and such

MostComplicatedUsername: What kind of hw do you give?

MostComplicatedUsername: Like, wksts, etc...

MSmits: we're doing biophysics now

MSmits: mostly about human senses

MSmits: hearing, decibel calculations etc.

MostComplicatedUsername: But do you post problems online?

MSmits: they have books. I refer to the chapters and problems

MostComplicatedUsername: Ohhhhhh

MostComplicatedUsername: I see

MSmits: they write the answers, make a photo

MostComplicatedUsername: Google docs?

MSmits: we do google classroom

MSmits: you can submit files

MSmits: as a student

MSmits: I check them

MostComplicatedUsername: Ik

MSmits: see if they did it seriously

MostComplicatedUsername: But wouldn't google docs be easier for them?

MSmits: dont think so

MSmits: writing equations and calculations takes more effort

MSmits: easier on paper

MostComplicatedUsername: Yeah

MostComplicatedUsername: I was just thinking of having to take a picture of each page and post it

MSmits: there are not that many pages, 1-3 photos per week

Default avatar.png icecream17: lucky

MostComplicatedUsername: yeah

MSmits: they only have my class 3 hrs a week

AntiSquid: 1-3 student selfies per week? Automaton2000 what's going on in this chat?

Automaton2000: i found a bug in my code but i don't think there's a lot of fun

Default avatar.png JBM: streaming more Haskell editing to silence back to the same effects (or so I hope):

Zenoscave: there's tons of fun

MSmits: per student ofc AntiSquid for that particular subject i have 47 students

MostComplicatedUsername: Yay my bot can move randomly...

AntiSquid: well done

MSmits: my CS class ends tomorrow and my graduation year physics class has also ended, because the graduation exams were cancelled

MostComplicatedUsername: Thank you...

MSmits: so I only work half time basically

MostComplicatedUsername: We still have our AP exams

MostComplicatedUsername: unfortunately

MostComplicatedUsername: But a lot of the content was cut out, everything that would have been taught after march

AntiSquid: some junior doctors feel a bit relieved because school is closed, more time to prepare for exams

MSmits: makes sense, though that makes me question the effectiveness of the school

MSmits: isnt the school supposed to prepare you for exams?

Default avatar.png icecream17: in texas exams are closed

MostComplicatedUsername: Yeah

Default avatar.png icecream17: your in texas?

MostComplicatedUsername: But teaching is harder

MostComplicatedUsername: no in CA

AntiSquid: MSmits you've been a teacher for a long time, don't you ever think that the system needs a bit of rethinking and that it's outdated?

MostComplicatedUsername: So the college board has decided

MostComplicatedUsername: to cut it out

MSmits: is texas the state where the governor or senator decided it's ok to let some old people die for the sake of the economy?

Default avatar.png icecream17: idk

MSmits: AntiSquid sure, there's much to improve

Default avatar.png icecream17: like the cafeteria XD


Default avatar.png icecream17: "official-suggests-elderly-willing-die-economy" gosh...

BeeGee: Sounds like Brazil

MSmits: there's video too, you can probably find it on youtube... pretty sick I think

MSmits: it's not even taken out of context or anything... that's just what some people think

AntiSquid: ya idk, it's kinda weird and backward it's like those governments want old people to die

Default avatar.png icecream17: i better check the us coronavirus thing

MSmits: sounds like it yeah

AntiSquid: everyone was initially boycotting china that they secretly spread the virus to have an excuse to kill dissenters and old people, but now they are quiet about their own governments

MSmits: on fox news they still call it the "china virus"

Default avatar.png icecream17: US cases: this morning 105 thousand

MSmits: or the "foreign virus"

Default avatar.png icecream17: now: 121K

AntiSquid: MSmits i think that's irrelevant

MSmits: like the virus has a nationality

AntiSquid: spanish flu / china flu / uk flu / they can even call it after me, it's beside the point to argue about it

MSmits: icecream17 yes, there's a difference between the positively tested amount and the actual amount

ZarthaxX: icecream17 they are rockin

MSmits: you can be sure there's many 100k's , maybe a million

Default avatar.png icecream17: two red comments in a row

AntiSquid: icecream17 what's your favorite icecream

AntiSquid: have you tried red wine ice cream?

Default avatar.png icecream17: mint chocolate or cookies and cream or caramel or ....i'm an 8th grader

Default avatar.png icecream17: When I searched google for favorite foods ice cream was there somehow that's why

MostComplicatedUsername: ah

Default avatar.png icecream17: wow, now i want to eat ice cream. mmm. everyone deserrve an icecream lol

Default avatar.png icecream17: i realize that my "most" moves mover works the wrong way but also correctly

MostComplicatedUsername: Should I come up with a path before the game loop and just print each item in the list during the game loops?

Default avatar.png icecream17: Most moves = N, -> move E

Default avatar.png icecream17: Huh, that's an interesting idea. My thing is mostly deterministic except for charges and silence and mine.

Default avatar.png icecream17: Wow, no tyops this time.

MostComplicatedUsername: YEah

MostComplicatedUsername: Then I just have to keep track of the opponent

MSmits: did you just make a typo in the word typo icecream17?

MostComplicatedUsername: nice lol

AntiSquid: typhos

Default avatar.png icecream17: think I would timeout if I tried to premove. Plus, I never make it to turn 600....

MostComplicatedUsername: Well

MostComplicatedUsername: TUrn 1

MostComplicatedUsername: Response time is 20 times

MostComplicatedUsername: Longer

Default avatar.png icecream17: Turn 0 = Start on 7th square, "2988ms"

Counterbalance: you start measuring too soon

Counterbalance: do it after you have read the first line of the turn input

Default avatar.png icecream17: "1ms"

MostComplicatedUsername: The way I keep track of the enemy's positions

MostComplicatedUsername: Is

MostComplicatedUsername: I have a list of possible positions

MostComplicatedUsername: And update it every turn

MostComplicatedUsername: And I can narrow it ever time the opponent surfaces

MostComplicatedUsername: every*

MostComplicatedUsername: the problem with that is

MostComplicatedUsername: For each "starting" position of my opponent

Default avatar.png icecream17: every time the opponent surfaces?

MostComplicatedUsername: I have to have a list

Counterbalance: i don't have a list

MostComplicatedUsername: And more and more lists as more paths are created

MostComplicatedUsername: I can occasionally delete lists when some are proven impossible

struct: what language MostComplicatedUsername?

Default avatar.png icecream17: oh I do "move", "torpedo", "my torpedo", "surface", and "ohno (silence)"

MostComplicatedUsername: Python

Default avatar.png icecream17: python is suppossed to be eaiser than js, but i learned js first and so python is hard.

MostComplicatedUsername: Oh

MostComplicatedUsername: I haven't actually typed up my idea

Default avatar.png icecream17: what idea?

MostComplicatedUsername: -_-

Default avatar.png icecream17: I'm working on moving (still) and mine for bronze

MostComplicatedUsername: Oh

MostComplicatedUsername: Im in wood 2 still

MostComplicatedUsername: I only have random moving rn

MostComplicatedUsername: Im mainly working on CSB rn

Default avatar.png icecream17: Move up if you can, then left if you can, then right if you can, then down if you can.

MostComplicatedUsername: That's what I do

MostComplicatedUsername: For back to the

MostComplicatedUsername: I mean

MostComplicatedUsername: Tron battle

MostComplicatedUsername: rip

Default avatar.png icecream17: send share

Counterbalance: yay wood1


Default avatar.png icecream17: Good job Counterbalance!

Counterbalance: nasty bugs!

Default avatar.png icecream17: Take a pad and write out explanations for every major function

MostComplicatedUsername: A pad?

Default avatar.png icecream17: It made me realize how bad I am.... (notepad or paper or wall, doesn't matter)

Counterbalance: by bot keeps torpedoing itself

Default avatar.png icecream17: how does your torpedoing work

ZarthaxX: lol

Counterbalance: well enough so far, curiously enough

Default avatar.png icecream17: think of all the ways torpedoing can be pronounced

Counterbalance: yeah, I wanted to write torpedoeing but not sure that's correct either

Default avatar.png icecream17: maybe it's just "torpedo"

Default avatar.png icecream17: I wish I could make my own maps

Default avatar.png icecream17: I can change the seed, but I don't know how the seed number works

Default avatar.png icecream17: seed=0000000000000000000 has islands still....

Counterbalance: you could if you added that to the referee.. some other games have options for that

MostComplicatedUsername: maybe

MostComplicatedUsername: You should\

MostComplicatedUsername: Do an experiment

Default avatar.png icecream17: I looked in the code and it says it adds "random" islands so I definitely don't know how it works

MostComplicatedUsername: Come up with

Default avatar.png icecream17:

MostComplicatedUsername: 200 random seeds

AntiSquid: "bot keeps torpedoing itself" Counterbalance no obscenity in the chat please

Default avatar.png icecream17: :grinning:

MostComplicatedUsername: Then try each out

MostComplicatedUsername: Then figure out how the seed relates to the islands

MostComplicatedUsername: Sigh

MostComplicatedUsername: Automaton2000 fix AntiSquid

Automaton2000: you are good at it

MostComplicatedUsername: Wow thx

Default avatar.png icecream17: anyone in java, what does rand.nextInt(15); do?

ZarthaxX: google it :P


Default avatar.png icecream17: seed=0000000000000000001 is completely different!!!!!!!!

Default avatar.png icecream17: How am I ever going to figure this out?


MostComplicatedUsername: First time every

MostComplicatedUsername: ever*

MostComplicatedUsername: winning against the boss

MostComplicatedUsername: My CSB code 307 lines

MostComplicatedUsername: I could probably make it shorter

Counterbalance: mine's 3000 lines

Counterbalance: that could definitely be shorter :)

MSmits: wait... your csb bot is 3000 lines !?

Counterbalance: yup

ZarthaxX: no bugs at all?

MSmits: I write very long bots and mine is like 1200 lines

MSmits: what is taking up so much space?

MostComplicatedUsername: Dang

MSmits: I sometimes go over 2k with complicated games, but never 3k

ZarthaxX: like this one

ZarthaxX: :D

MSmits: 1185 so far

MSmits: but I am not tracking or using mines, not using silence or sonar either

Default avatar.png icecream17: wow makes my 573 lines sound bad

Counterbalance: it has 1400 lines of shared library code with a lot of #ifdefs for different bots

MSmits: my goals for tomorrow: 1) Make smart ability charging code. 2) stop torpedo-ing everything in sight, 3) use silence and mines

MSmits: oh, it's more than one bot

Counterbalance: that part of the code is used in more than one bot, yes

Default avatar.png icecream17: I do silence or mine, randomly, if the opponent doesn't torpedo for 5+ moves

Counterbalance: it also has local stuff, like generating an AVI replay, param fiddling etc..

MSmits: whats an AVI replay?

Counterbalance: video file format

MSmits: damn

ZarthaxX: the fuck

MSmits: this is too pro for me

Counterbalance: it outputs an image for each frame that gets turned into a movie using ffmpeg

ZarthaxX: u have lots of goals MSmits

MSmits: for this contest? Yes, my list has 12 goals currently, but those 3 are for tomorrow

MSmits: many of the 12 goals will end up having many subgoals. Plenty to do

MostComplicatedUsername: Counterbalance Why

Default avatar.png icecream17: the reason i always have something to improve on is because my code is bad

MostComplicatedUsername: lol

MSmits: Counterbalance how do you get the images?

MSmits: from the referee?

MSmits: also do you do this for every game?

struct: wtf

Counterbalance: no just drawn using lines and circles etc - also part of the bot

struct: avi

MSmits: ahh

struct: my current csb bot is 1700 lines with no search

MSmits: thats because your avx code bloats things

ZarthaxX: lol

struct: let me check

ZarthaxX: who has the largest code

struct: how many lines is avx library

struct: 900 lines

MSmits: ah see

Default avatar.png icecream17: I enlarged my page size. Now *I* have the largest code!

struct: also lots of functions i dont use

struct: but I added them anyways

MSmits: I see

MSmits: compiler will remove them I guess

Counterbalance: at 8 9 my bot does MOVE S TORPEDO|TORPEDO 8 10 Lost 2 lives.

struct: self destruct

MSmits: nice job

Counterbalance: it's as player 2.. it's almost like... hmm

MSmits: next turn, the other guy crashes because his tracking system can't handle your crazy

MostComplicatedUsername: I love it when

MostComplicatedUsername: I make the boss crash

MSmits: Counterbalance ah i get it. Your bot thinks it's always player 1 and it tries to kill player 2 even if that's you

Counterbalance: it looks like it

MSmits: btw, Counterbalance, there's a Dutchie at nr 1. Let's make it a top 3 Netherlands only situation

Default avatar.png icecream17: "seed=1234567890123456789 " seems really good for debugging

Counterbalance: yeah i saw let's try!

Default avatar.png icecream17: In bronze top 5 is all france....

MSmits: around half the players are usually French :)

MSmits: CG is a French company

Zenoscave: this would be a binomial distribution. french not french

YannT: yeah we're just more numerous really :p

YannT: also we have recurse who counts as semi-french

YannT: french adjacent


Zenoscave: Lol true

struct: semi french

Default avatar.png icecream17: :grinning:

AntiSquid: my bot is still at < 500 lines

MSmits: good job MostComplicatedUsername, you showed him

MostComplicatedUsername: Ik right

Default avatar.png icecream17: yeah

YannT: I think he's technically french canadian, so yeah, adjacent ;)

MostComplicatedUsername: Random moving

Zenoscave: Still only a ~3% change of the top 5 all being French if half the server is French

MSmits: there's a selection effect though. He would only say it at the moment it is true

YannT: Cpy. Levine really got nerfed since I saw him ahah

MSmits: he would not also say it 97 times when it's not true

Zenoscave: I don't understand your staement MSmits

MSmits: the boss always blew himself up

MSmits: Zenoscave it's like this

YannT: didn't use too before nerf

MSmits: the top 5 changes all day right

YannT: he'd actually aim

Zenoscave: Correct

MSmits: so 3% of the time it has 5 French players

Zenoscave: in the top 5

MSmits: at all the times it hasn't, noone says anything

MSmits: yes

Zenoscave: Oh so observation bias?

MSmits: ah yes, i should have said that

Zenoscave: I was just going of statistics.

MSmits: yeah

Zenoscave: 0.5^5 = ~0.03

MSmits: got that

Zenoscave: Then we agree in different words

MSmits: it would be more special if it was the top 5 in silver

MSmits: because its more stable

Zenoscave: True

MSmits: bronze changes all the time because people get promoted

Zenoscave: Plus this doesn't take effect of the distribution of French to non french player ranks

MSmits: true

Zenoscave: If the top players are all French it would greatly increase the distribution

struct: We need to prevent it

MSmits: this is also why people always think you absolutely need c++ to win a contest

Zenoscave: I'll be right back writing a script

MSmits: because that simply is what the top players use. Not because you can only win when you use it

Zenoscave: I just had a brilliant idea for a Forum post

MSmits: uh oh

MSmits: :worried:

Zenoscave: Gonna do a country and language Statistical ranking

struct: This was seen before

MSmits: ohh interesting

struct: They used to share those stats on older contests

YannT: real talk, you might need C++ to rank very high in the multi games, but during a contezst language usually really isn't the limiting factor

Zenoscave: I remember struct but did that was a static Country X ranks higher typically than country Y

MSmits: YannT not even in all multi games. Some just dont require performance, or a small change in algorithm has such a large effect that performance effects become negligible

YannT: true :)

Zenoscave: Plus lang wrappers...

Zenoscave: where's the curse when this discussion pulls up

MSmits: you can be sure that all those simple board games require c++ or similar, or wrapped

YannT: I passed UTTT legend with Kotlin tho, and it was honestly more of a challenge because JVM, doable fore sure, just more work by default

MSmits: I think he's avoiding CG until he has time to compete in the contest

struct: but some really require performance

YannT: but this is a pure optimization contest

MSmits: it's frustrating when you have to work on other things

YannT: multi*

Zenoscave: I finished midterms today.

Zenoscave: I'm good for a week

MSmits: grats Zenoscave

Zenoscave: thx

Zenoscave: but not grats. I did horribly on one

MSmits: YannT, not entirely. There's some strategy involved as well

struct: if there are 2 python bots at top 10

MSmits: also some inefficiency in your algorithm may make it 10x slower whereas c++ only gives a 2 or 3x boost

Zenoscave: 65/100 was my score. dropped me from an A to barely above D

struct: its not all about performance

MSmits: as long as you pass Zenoscave

MSmits: you'll never look back at these scores. What you take with you is your degree and what you learned

Zenoscave: I learned not to take a networks class online

Zenoscave: Ironically

MSmits: oh, sounds like my internet security class

MSmits: I am finishing that in 2 weeks

Zenoscave: Just OSI models TCP protos and other such nonsense

MSmits: had to do a ddos attack last week

Zenoscave: you did UDP yes?

struct: so we found out who took cg chat down

YannT: MSmits: on UTTT very little, it's mostly optimization

MSmits: yeah UDP TCP

MSmits: YannT, not entirely though. You can easily get to legend with good optim and mcts with totally random rollout

MSmits: you can be sure that's not what the top 10 does. They have more tricks

struct: yeah

MSmits: but yea, forget this with java

MSmits: even the tricks wont help you enough

struct: if my bot had 80k rolouts i probably would only climb to top 30

MSmits: top 30 sounds about right yes

YannT: well, I did legend on JVM, and my point is that was more work that would have been required on other languages

MSmits: my bot has 90-130k

MSmits: and if i submit it now it's nr 1

MSmits: but waiting on some more improvements

MSmits: i did legend on C# YannT

MSmits: but converted after

YannT: case in point :)

MSmits: yes

YannT: many multi are not optim ones tho

YannT: that one clearly is!

MSmits: it is probably the most extreme example

MSmits: oware would be another

MSmits: bandas probably

MSmits: yavalath not so much

YannT: and, that level of oiptim really doesn't exist during contests (unless you aim for #1)

YannT: so language is not limiting on contests, generally speaking

MSmits: depends on the contest

YannT: it only is for ranking first on multi :p

MSmits: I'm pretty sure I had the most optimized bot on code a la mode in the top 10. But I was only rank 8 and the nr 1 was completely heuristic :P

struct: I think Bit runner is one of the multi its impossible to get legend without c++

MSmits: yeah might be true struct

smeagol: Hi

struct: hi

smeagol: MSmits: do you use simulation algos ?

MSmits: yeah, but that's a very broad question

YannT: MSmits: again, case in point ;)

Counterbalance: STC is also a good candidate

aangairbender: i guess this contest was meant

struct: no Counterbalance you are mistaken

MSmits: eulerscheZahl has a very high rank in STC

YannT: maybe as a multi getting to the top will require crazy performance and an assembly bot or something, but during a contest it generally doesn't really matter

struct: C# bot of euler places around same rank as his c++ bot

smeagol: STC ? STMC

MSmits: he is not known for writing super optimized bots

MSmits: maybe he did that time though, not sure

smeagol: searc tree monte carlo?

struct: I think he has around 600k sims

smeagol: 600k: it's very much

MSmits: smeagol in this contest? No, not mcts

smeagol: AG

struct: we were talking about STC

smeagol: MC

struct: smash the code

MSmits: just processing opponent orders eliminating possible locations and paths and such

YannT: I think in the current contest everyone is heuristic (or close to it)

smeagol: MS: this heuristic algo

smeagol: for navigation, what are you using algo ?

smeagol: the most path doesn't work

YannT: minimize ennemy detection

smeagol: beaucause it eliminate the most possibities

YannT: (and available space after move)

smeagol: whith degree

YannT: taking a path that visits every cell is actually not a good idea

YannT: the best idea is to sometimes eat a surface to have better tiles

YannT: (well, it is a good first idea, but you come back from it)

smeagol: better tiles (in french ?)

smeagol: Salut MAD

smeagol: comment vas tu?

YannT: minimise la détection ennemie et fait des mouvements qui te laissent le plus de cases dispo pour après ;)

YannT: (sorry)

smeagol: le plus de cases : c'est toujours le meme nombre

smeagol: ah oui je voix

YannT: you try not to cut the map

smeagol: pour les mouvements suivants

YannT: yes

smeagol: merci YannT

MSmits: gonna get some sleep, gn

YannT: gn man

ZarthaxX: gn!

Default avatar.png FloopyBirdMan: you are a buttcheak

smeagol: gn!

MostComplicatedUsername: hum

MostComplicatedUsername: I can't really think of a good strategy for moving

BenjaminUrquhart: have you tried

BenjaminUrquhart: moving

MostComplicatedUsername: YEs

MostComplicatedUsername: Rn just random movement

MostComplicatedUsername: Seems to work well enough ;)


MostComplicatedUsername: But I need something

MostComplicatedUsername: That

MostComplicatedUsername: Wait

MostComplicatedUsername: lemme rephrase

MostComplicatedUsername: I need some way to move that increases the amount of time before I surface

aangairbender: go to the cell that gives the most flood value

MostComplicatedUsername: ???

aangairbender: by flood value I mean how many connected free cells are there from next cell

MostComplicatedUsername: English please

MostComplicatedUsername: Oh

MostComplicatedUsername: I see

MostComplicatedUsername: But that...

MostComplicatedUsername: Takes work

MostComplicatedUsername: And im lazy

MostComplicatedUsername: So I'll probably start trying

MostComplicatedUsername: but then stop

aangairbender: 20 lines of floodfill

aangairbender: just bfs

MostComplicatedUsername: I have no idea how to do any of that

BenjaminUrquhart: keep in mind my bot is broken as hell rn

MostComplicatedUsername: Im a nub

MostComplicatedUsername: Hmmm how do you keep track of opponent?

BenjaminUrquhart: process of elimination

BenjaminUrquhart: and hoping I don't divide by zero again

MostComplicatedUsername: My idea is to keep track of possible paths the opponent is taking and use POE

aangairbender: keep all possible enemy positions

aangairbender: and update them after enemy moves

MostComplicatedUsername: Now I just have to write the code

aangairbender: right

MostComplicatedUsername: Argh

MostComplicatedUsername: My least favorite part

BenjaminUrquhart: my tracker breaks when tracking torpedos, so that's fun

MostComplicatedUsername: Why bother tracking torpedoes? They're instantaneous, right?

BenjaminUrquhart: well because the opponent needs to be within 4 units

MostComplicatedUsername: Oh I see

MostComplicatedUsername: So you can narrow the opponent's position

BenjaminUrquhart: exactly

MostComplicatedUsername: Manhattan distance is annoying

BenjaminUrquhart: just bfs

BenjaminUrquhart: smh

aangairbender: abs(ax - bx) + abs(bx - by)

aangairbender: easy

aangairbender: i meant ay - by

BenjaminUrquhart: I mean

BenjaminUrquhart: yes

MostComplicatedUsername: what is ay?

MostComplicatedUsername: And by?

MostComplicatedUsername: confused

aangairbender: coordinates

MostComplicatedUsername: Oh wait

MostComplicatedUsername: Im dum

BenjaminUrquhart: a and b are the 2 points you are comparing

aangairbender: a.x a.y b.x b.y

MostComplicatedUsername: Ik

MostComplicatedUsername: The variable names messed me up\

MostComplicatedUsername: We don't recieve opponent starting position, right? That would be too easy

BenjaminUrquhart: nope

MostComplicatedUsername: receive*

MostComplicatedUsername: ok

BenjaminUrquhart: games would end in like 20 frames

MostComplicatedUsername: yeah

MostComplicatedUsername: too easy

MostComplicatedUsername: Dang

MostComplicatedUsername: I can't get this to work

MostComplicatedUsername: I think I might

MostComplicatedUsername: This is hard

struct: also manhattan distance cant really be used to track torpedo distance

BenjaminUrquhart: islands

BenjaminUrquhart: MostComplicatedUsername I spent several hours on it and it's still broken

BenjaminUrquhart: but it worked well enough for me to get to bronzee

struct: Well you can always check illedan stream to get ideaas

Default avatar.png icecream17: where is the stream

MostComplicatedUsername: Discord?


MostComplicatedUsername: Oh

BenjaminUrquhart: C# tho

struct: I think he explains

struct: you can check to get ideas

MostComplicatedUsername: Oh no

MostComplicatedUsername: Dang

MostComplicatedUsername: There goes my idea

MostComplicatedUsername: And then comes the moment of realization

MostComplicatedUsername: You realize

MostComplicatedUsername: That you've deleted 50 lines of code

MostComplicatedUsername: And

MostComplicatedUsername: Why am I even talking

MostComplicatedUsername: I've spent the last 10 min on the chat

MostComplicatedUsername: im still doing it

Default avatar.png icecream17: If you don't write down an idea, you'll lose it.... =(

Default avatar.png icecream17: the autoface

Zenoscave: anyone have euler's replay site link?