2011-02-07T00:15:38 aichallenge: Alexandru Stan epsilon * r760f141 / (25 files in 4 dirs): Merge branch 'simpleants' into HEAD - http://bit.ly/g5vRIs 2011-02-07T00:15:39 aichallenge: Alexandru Stan epsilon * r872cd42 / (Makefile engine.py): made it run - http://bit.ly/h4Gkmu 2011-02-07T00:15:42 aichallenge: Alexandru Stan epsilon * r592ffb1 / (26 files in 4 dirs): merged stuff from mcleopold - http://bit.ly/gIDYch 2011-02-07T00:16:21 amstan: did you just check in an ants engine? Or is that the old planet wars engine? 2011-02-07T00:16:46 j3camero: that was in epsilon 2011-02-07T00:16:52 so.. both 2011-02-07T00:16:59 we need to clean epsilon up 2011-02-07T00:17:04 delete all those games that we're not using 2011-02-07T00:17:10 move over the engine from planetwars 2011-02-07T00:17:12 delete that as well 2011-02-07T00:18:09 Yeah there's so much stuff in there that is not used. 2011-02-07T00:19:04 I have been rethinking the epsilon/zeta stuff. It seems like we might have enough folks around that we could race right into zeta. 2011-02-07T00:19:13 Just sprint for the finish. 2011-02-07T00:19:38 If we're doing ants we need to change all the ranking and scheduling stuff anyways. 2011-02-07T00:19:45 Might as well go whole-hog. 2011-02-07T00:20:31 j3camero: we can do that at any time 2011-02-07T00:21:16 contestbot: later tell mcleopold I sent you a pm on github with some notices about your simpleants stuff, please check 2011-02-07T00:21:16 amstan: I come to serve. 2011-02-07T00:21:34 ok.. now i feel organized 2011-02-07T00:21:45 except the stuff from zeta 2011-02-07T00:21:48 epsilon* 2011-02-07T00:21:49 lol 2011-02-07T00:22:25 j3camero: tron is epic coding music 2011-02-07T00:22:41 j3camero: also: https://github.com/aichallenge/aichallenge/wiki 2011-02-07T00:28:01 Yeah I am listening to Tron right now! 2011-02-07T00:28:05 It's soooo good for coding. 2011-02-07T00:29:52 j3camero: there we go: https://github.com/aichallenge/aichallenge/issues/issue/1 2011-02-07T00:32:48 j3camero: it might be better not to rush zeta? 2011-02-07T00:33:13 zeta would take a month to get out 2011-02-07T00:33:31 unless we all start coding like crazy on stuff we're not comfortable with 2011-02-07T00:34:13 You think we can do zeta in a month? 2011-02-07T00:34:21 That seems optimistic. 2011-02-07T00:34:37 if we have at least 4 coders, which we do 2011-02-07T00:34:39 yeah 2011-02-07T00:35:05 Hofstadter's law - "It always takes longer than you expect, even when you take into account Hofstadter's Law." 2011-02-07T00:35:23 *back to lurk mode* 2011-02-07T00:35:31 Hm okay let's do it. 2011-02-07T00:35:42 what's going on? 2011-02-07T00:35:48 I don't think it's going to take a month, but nevertheless we could do it. 2011-02-07T00:35:50 well.. our previous contests, the problem was that it was only a like 2 ppl working at the same time 2011-02-07T00:36:11 Yeah. I burned myself out in a big way last time. 2011-02-07T00:36:21 you didn't have help 2011-02-07T00:36:31 i'm onboard, i see jbroman's interested 2011-02-07T00:36:36 Assigning more programmers to a project running behind schedule will make it even later 2011-02-07T00:36:38 and he's doing a cool job too 2011-02-07T00:36:44 What was amazing was tron. I had mspang helping me out the whole time. 2011-02-07T00:36:50 - Fred Brooks 2011-02-07T00:37:00 janzert: lol 2011-02-07T00:37:04 janzert: we're not behind schedule though, we knew this would happen 2011-02-07T00:37:17 you can't be behind schedule when there isn't one :P 2011-02-07T00:37:30 it's now february, how late are you planning to launch? 2011-02-07T00:37:36 somebody said february though ;) 2011-02-07T00:37:42 Yeah. The AI Contest is like Duke Nukem Forever. When will it be released? When it's done. 2011-02-07T00:37:43 that's why i said when it is :P 2011-02-07T00:37:47 janzert: i had to say something.. lol 2011-02-07T00:38:29 also.. i might be getting ipv6 soon, that would be cool 2011-02-07T00:39:23 whoa, jbroman really did a lot on zeta! 2011-02-07T00:39:35 i know! lol, and good pythonic stuff too 2011-02-07T00:40:07 Orly? 2011-02-07T00:40:14 j3camero: https://github.com/aichallenge/aichallenge/tree/zeta/worker 2011-02-07T00:41:39 ugh, tabs in the source. please consider sticking to pep 8 style 2011-02-07T00:42:18 i do like tabs, but yeah.. 2011-02-07T00:43:32 there is something that needs to be done with respect to when submissions close 2011-02-07T00:43:35 well, i guess i can stop working on my own engine now 2011-02-07T00:44:05 the server should close submissions, then attempt to compile every submission in the queue, it doesn't currently do that 2011-02-07T00:44:58 antimatroid: you're referring to zeta or what was used? 2011-02-07T00:45:08 the last contest did do that 2011-02-07T00:45:21 janzert: i'm just saying at some point that needs to be fixed 2011-02-07T00:45:25 if it's left too late, it wont happen 2011-02-07T00:45:33 antimatroid: which branch? 2011-02-07T00:45:36 Oh wow jbroman and Zannick are awesome. 2011-02-07T00:45:38 what's broken though? 2011-02-07T00:45:48 that is the behaviour that was used in the last contest 2011-02-07T00:45:59 although it all had to be done manually of course 2011-02-07T00:46:14 there was a single submission that didn't get compiled yeah? 2011-02-07T00:46:29 i think that's undesirable, if it's submitted before deadlines are closed off, it should be given a chance to compile 2011-02-07T00:46:38 no, they all were attempted to be compiled 2011-02-07T00:46:52 oh, i thought you said there was one that wasn't, my mistake :) 2011-02-07T00:47:09 I think you're remembering that the final (or penultimate) submission failed in the compilation 2011-02-07T00:47:28 I don't remember for sure which, but it did try to get compiled 2011-02-07T00:48:08 i.e. the submission had a bug that caused it be uncompilable 2011-02-07T00:48:16 j3camero: we need a website design, i can code it, but i need ideas 2011-02-07T00:48:33 aichallenge: Benjamin S Wolf zeta * re8f275b / (worker/compiler.py worker/language.py): Merge branches 'master' and 'zeta' into zeta - http://bit.ly/gZsdpn 2011-02-07T00:49:36 luckily that wasn't terrible, only one commit 2011-02-07T00:49:48 now i should figure out how to get rid of 'master' 2011-02-07T00:49:58 Zannick: rename or delete? 2011-02-07T00:50:12 Zannick: rename is git branch -m source dest, delete is git branch -d todelete 2011-02-07T00:50:20 my last pull created a zeta branch 2011-02-07T00:50:53 amstan: go for it. I think the only piece where the website overlaps with the rest of the project is the website and passing submitted zip files to the backend. 2011-02-07T00:51:01 yes, zeta is the same as master, if your zeta's newer feel free to delete master 2011-02-07T00:51:05 amstan: so make sure to coordinate very closely with people on those details. 2011-02-07T00:51:32 amstan: in particular, make sure you nail down a database schema with people working on the backend. 2011-02-07T00:51:50 j3camero: yeah, but i need some design guidance, visual design 2011-02-07T00:51:57 how will the ants contest website look? 2011-02-07T00:53:04 I've always gone with a standard header/sidebar/content pane. 2011-02-07T00:53:27 colour scheme? some art? 2011-02-07T00:54:27 hm 2011-02-07T00:55:36 if i edit jbroman's files i'm either going to have to replace all the tabs or mix tabs and spaces or change my rc to use hard tabs 2011-02-07T00:55:57 Zannick: i think we should convert to spaces 2011-02-07T00:57:06 the last contest site was fine design wise 2011-02-07T00:59:55 amstan: find Alex Riedler. See if he's interested in doing the design this time. 2011-02-07T00:59:58 He did the last one. 2011-02-07T01:00:08 Before that I was using stuff I found on freewebtemplates.com 2011-02-07T01:00:33 i can do it, i just need some ideas 2011-02-07T01:00:34 It's actually not a bad way to go. You're guaranteed to end with something that looks really polished. 2011-02-07T01:00:40 yeah 2011-02-07T01:00:53 What we don't want to end up with is something that looks homemade. 2011-02-07T01:01:26 this could go well with ants: http://www.4templates.com/view/website-templates/0/AX0461CY 2011-02-07T01:01:33 maybe some more noise 2011-02-07T01:02:07 Yep looks "underground" 2011-02-07T01:02:23 Check out the extreme minimalist concept here: http://www.feedparser.org/ 2011-02-07T01:02:32 I would not mind exploring this. 2011-02-07T01:02:51 Like, even that exact design would work for us. 2011-02-07T01:07:41 In any case, do separate the look and layout from the content. We should be able to slap a new look onto the website in minutes. Take a look at some of the pages from planet wars. You see that there is nothing in them but content. All the look and layout is in the stylesheets and header.php. It would take minutes to download a different template from the web, create a new header.php, and deploy the new look. 2011-02-07T01:08:44 yeah, that's fine, i can design something like that 2011-02-07T01:09:17 in django's easy as well.. you have templates that are used by the code 2011-02-07T01:14:18 Sweet. 2011-02-07T01:20:34 omg you would not believe this 2011-02-07T01:20:39 I am trolling this chick SO HARD. 2011-02-07T01:20:40 j3camero: yes? 2011-02-07T01:20:42 I feel kinda bad. 2011-02-07T01:20:50 hmm 2011-02-07T01:20:52 do tell 2011-02-07T01:21:57 Oh on Galcon. 2011-02-07T01:22:55 I noticed this person on Galcon a few days back in the chat. 2011-02-07T01:23:13 She was always asking "hey is firstname here?" 2011-02-07T01:23:30 "firstname lastname?" 2011-02-07T01:23:43 So I didn't take much notice, happens sometimes. 2011-02-07T01:23:48 *** Mathnerd314 has quit IRC (Remote host closed the connection) 2011-02-07T01:24:07 Anyways today I see the same girl asking around. 2011-02-07T01:24:21 She's like "firstname? is firstname here?" 2011-02-07T01:28:09 Oh my goodness I wish I had this logged. 2011-02-07T01:28:15 j3camero: lol 2011-02-07T01:28:37 oh man.. mcleopold managed to merge *everything* together: https://github.com/McLeopold/aichallenge/tree/ 2011-02-07T01:28:45 zeta+epsilon+simpleants 2011-02-07T01:30:01 *** McLeopold has joined #aichallenge 2011-02-07T01:30:10 McLeopold: what did you do? lol 2011-02-07T01:30:19 McLeopold: i suggest just deleting your fork and reforking 2011-02-07T01:30:41 you merged zeto into epsilon 2011-02-07T01:30:49 zeta* 2011-02-07T01:31:19 did I? 2011-02-07T01:31:28 McLeopold: yep: https://github.com/McLeopold/aichallenge/tree/ 2011-02-07T01:31:31 that's not what they were called when I pulled 2011-02-07T01:31:41 oh man so I figure I'll bite. I said "hey yes I am firstname. who is this" 2011-02-07T01:32:19 McLeopold: yeah, you probably used the fork queue, don't use that unless you know what you're doing 2011-02-07T01:32:37 maybe I will delete, I was doing all that work to get used to github, nothing is special there 2011-02-07T01:33:10 I was only doing command line pulls, committing and then pushing to my own repo 2011-02-07T01:33:12 McLeopold: i have your code all in here: https://github.com/aichallenge/aichallenge/tree/epsilon/ants 2011-02-07T01:33:21 okay 2011-02-07T01:33:23 so she's like "this is girlname". And I say "oh awesome. nice to see you on here girlname" 2011-02-07T01:33:30 But she's suspicious. 2011-02-07T01:33:35 j3camero: lol 2011-02-07T01:33:39 lol 2011-02-07T01:34:03 k, going to bed 2011-02-07T01:34:17 isn't the fork queue for pulling in work others have done? 2011-02-07T01:34:29 does my repo look like crap? 2011-02-07T01:34:31 McLeopold: yes, but fork queue shows all the work, from all branches 2011-02-07T01:34:41 McLeopold: yes 2011-02-07T01:34:58 i just added a couple of suggestions in a Python Style Guide on the github wiki 2011-02-07T01:35:15 I hope you just went with pep8 2011-02-07T01:35:22 i wish we could have notifications for wiki changes and issues 2011-02-07T01:35:33 lol 2011-02-07T01:35:38 i get emailed for issues 2011-02-07T01:35:40 Zannick: please link in the homepage 2011-02-07T01:35:43 as i discovered today 2011-02-07T01:36:24 McLeopold: he went with google 2011-02-07T01:36:38 linked 2011-02-07T01:36:56 the google style is more or less what i do personally 2011-02-07T01:37:05 and at google :P 2011-02-07T01:37:27 Power Features 2011-02-07T01:37:28 ▶ Avoid these features. 2011-02-07T01:37:31 what does that mean? 2011-02-07T01:38:00 +1 for Modules should begin with #!/usr/bin/env python 2011-02-07T01:38:09 they should also be chmodded +x 2011-02-07T01:38:19 okay amstan I'll tell you this story tomorrow. This is just too good to be true. 2011-02-07T01:38:40 amstan: it lists a bunch of features if you click 2011-02-07T01:39:01 like grabbing code from functions, system changes 2011-02-07T01:39:04 really crazy stuff 2011-02-07T01:39:22 j3camero: how far are we on engine work? I had an idea for player perspective switching, but don't want to redo work. 2011-02-07T01:39:44 Zannick: yeah, the stuff to avoid makes sense 2011-02-07T01:40:08 I would also suggest not feeling the need to create 1 class per file, but that's just me. 2011-02-07T01:40:19 It makes it feel like java 2011-02-07T01:40:52 i don't do that 2011-02-07T01:41:04 i don't think that's in the guide anywhere, either 2011-02-07T01:43:58 Also, I tend to avoid creating classes as structs. Is there any known performace hit for that? Am I just paranoid? 2011-02-07T01:46:02 *** sigh has quit IRC (Ping timeout: 255 seconds) 2011-02-07T01:51:11 *** McLeopold has left #aichallenge 2011-02-07T01:52:22 * antimatroid loves structs 2011-02-07T01:53:31 amstan: that template was nice, although i think it's better to have the links along the side 2011-02-07T01:53:37 given the trend with wide screens 2011-02-07T01:54:54 McLeopold: I haven't done much with the engine yet. Just gonna copy the engine from PW and work from there. 2011-02-07T01:54:59 I don't think it will be that uncommon for people to take a 2:1 hit or whatever, particularly with the stupider bots 2011-02-07T01:55:03 j3camero: he left 2011-02-07T01:55:29 j3camero: i have some requests for the engine for whoever writes it 2011-02-07T01:55:57 most important is sequentially allowing each player to make their moves 2011-02-07T01:58:13 damn you mcleopold, i have things to say to you! 2011-02-07T02:00:19 Why sequential? 2011-02-07T02:00:33 And how can we keep people from pondering during other people's turns? 2011-02-07T02:01:06 sigstop and sigcont? 2011-02-07T02:02:09 I will ahve to read about these signals. 2011-02-07T02:02:23 Will the kernel just stop scheduling the program for execution? 2011-02-07T02:02:43 might be something other than sigstop, i don't recall off the top of my head 2011-02-07T02:02:50 j3camero: otherwise each player in the worst case gets timeLimit/noPlayers 2011-02-07T02:02:53 and noPlayers is variable 2011-02-07T02:03:02 i hated it before, but it's even worse with varying number of players 2011-02-07T02:06:06 Why not just give more time when there are more players? 2011-02-07T02:07:12 j3camero: i still would prefer it to be sequential 2011-02-07T02:07:26 even if it was just 2 players, i would want it to be sequential 2011-02-07T02:18:04 *** delt0r_ has joined #aichallenge 2011-02-07T02:19:24 *** delt0r___ has quit IRC (Ping timeout: 246 seconds) 2011-02-07T02:19:36 Why? Is it an issue of getting fair amount of CPU time? 2011-02-07T02:20:59 j3camero: yes 2011-02-07T02:21:05 TIL - asians squint in reverse 2011-02-07T02:21:49 During Tron mspang and I did a bit of investigation and we found it wasnt usually a big deal. 2011-02-07T02:21:58 The CPU time is generally pretty fair 2011-02-07T02:22:47 i'd be interested to know the variation with computationally expensive bots playing each other, particularly if there's like 16 of them 2011-02-07T02:23:13 it really shouldn't change the computation time that much 2011-02-07T02:23:42 if each player is given say 0.5 seconds for their moves, then it's not much different to giving 0.5*n seconds per turn 2011-02-07T02:23:47 and people could infer the number of players from that 2011-02-07T02:24:05 We could try doing some SIGSTOP and SIGCONT magic, but it's going to be harder than it seems. Many bots spawn a few processes. 2011-02-07T02:24:18 isn't that forbidden? 2011-02-07T02:24:30 or are these those green processes someone was talking about? 2011-02-07T02:24:32 No a small number is allowed. 2011-02-07T02:24:33 the jvm does it no matter what 2011-02-07T02:25:01 We tell people not to use fork or threads, but in practice they can get away with a little bit. 2011-02-07T02:25:03 * antimatroid has yet another reason to hate java 2011-02-07T02:25:25 Yeah the JVM is balls. It uses 10 threads just to run Hello World. 2011-02-07T02:25:57 I'd say it'd be easiest/nicest compromise if we can afford it to just run the moves simultaneously with a maximum one bot per core 2011-02-07T02:26:39 but that isn't terribly efficient and pretty much limits the maximum players to 4 with EC2 2011-02-07T02:26:58 you can't vary the time limit for the number of players so each gets ~0.5 seconds and they don't know the number of players 2011-02-07T02:27:11 right 2011-02-07T02:27:19 that presents a problem right there 2011-02-07T02:27:30 i could survive with it like it has been, but how do we get around that? 2011-02-07T02:27:33 * janzert doesn't like a varying timelimit in any case 2011-02-07T02:28:11 even sigstop/sigcnt or whatever will probably give away the number of players 2011-02-07T02:28:14 if you don't vary the overall limit, you vary the individual *limit* 2011-02-07T02:28:22 just look at the amount of realtime since your last turn 2011-02-07T02:28:40 i don't think so, only if everyone used all their time 2011-02-07T02:28:45 which most people don't 2011-02-07T02:29:03 j3camero: we might need to tell people how many players there are 2011-02-07T02:29:25 *** delt0r___ has joined #aichallenge 2011-02-07T02:29:41 i'm wondering if maybe the game would be better without fog of war at all 2011-02-07T02:29:51 you already have the problem of playing against n-1 other players 2011-02-07T02:30:45 *** delt0r_ has quit IRC (Ping timeout: 240 seconds) 2011-02-07T02:38:09 *** sigh has joined #aichallenge 2011-02-07T02:38:38 i love how people claim economics is fail because they can't forecast stuff long in advance 2011-02-07T02:39:19 antimatroid: yeah hiding the number of players will be hard because of the time issues. 2011-02-07T02:40:08 j3camero: what are your thoughts on fog of war? 2011-02-07T02:40:22 originally i was all for it, but with n players i'm wondering if it might be more interesting to have people see what is happening 2011-02-07T02:40:39 it's still not at all trivial as to whether you should try to take someone out or not 2011-02-07T02:41:06 One solution is to give them the same amount of time regardless of the number of players. That way you would not be able to squeeze as much CPU time per turn out during games with more players. 2011-02-07T02:41:33 The issue with not having the fog of war is that it will produce deadlocks. 2011-02-07T02:41:47 deadlocks how? 2011-02-07T02:41:53 In a 3-player game, you end up in a situation where if you fight you insta-lose. 2011-02-07T02:41:58 http://en.wikipedia.org/wiki/Swarm_intelligence i expect people to play around with these ideas 2011-02-07T02:42:24 i wasn't considering prime numbers for number of players 2011-02-07T02:42:36 Do you play much Galcon? Think of how a computer would play a situation with three players left, where no one player has more than 50% of the production. The optimal strategy is to sit and wait for the other two to fight. 2011-02-07T02:42:36 as you basically need to do a 1xn region splitting on the torus 2011-02-07T02:42:53 i don't play galcon much but i know what you mean 2011-02-07T02:43:01 i did bang my head with pw for 3 months :P 2011-02-07T02:43:29 hopefully people will try to coordinate cooperation 2011-02-07T02:43:49 and then we can have people band together before breaking the cooperation 2011-02-07T02:44:04 possibleNoPlayers = [4, 6, 8, 9, 10, 12, 14, 15, 16] 2011-02-07T02:44:08 that's what my current map gen uses 2011-02-07T02:44:18 Whereas if you put a fog of war, then it's never a good idea to camp unless you can somehow see all the places where your enemies border eah other. 2011-02-07T02:44:36 you still don't want to camp until you've secured your region 2011-02-07T02:44:42 and i doubt people will do that perfectly symmetrically 2011-02-07T02:44:56 i dont think we should use symmetric maps. 2011-02-07T02:45:08 i am very agains the game not being symmetrical 2011-02-07T02:45:29 there is such a small variety of maps that are symmetrical with large number of players. 2011-02-07T02:45:38 no there isn't 2011-02-07T02:46:11 i mean, you'll get different-looking maps. but from a strategic point of view they land in a small number of categories right? 2011-02-07T02:47:18 You basically have to put the starting positions on some sort of square lattice or radially symmetric pattern. 2011-02-07T02:47:21 That's it. 2011-02-07T02:48:26 i'll outline how i'm currently thinking of making them 2011-02-07T02:48:29 Whereas we could continuously generate non-symmetric maps and put them into the rotation. We can have a script that regularly assesses the maps to measure their fairness. 2011-02-07T02:49:10 We will end up with an unimaginable variety of very interesting maps that have really interesting strategic elements. 2011-02-07T02:50:25 We could even have the system take into account the average ranking score of the players when measuring fairness of maps. So we would end up with a set of maps for each different skill level. 2011-02-07T02:50:44 *** boegel has joined #aichallenge 2011-02-07T02:50:49 The magical part would be that the set of maps would change and respond as people submit different sorts of bots over time. 2011-02-07T02:51:14 * boegel likes ;agic 2011-02-07T02:51:17 urgh 2011-02-07T02:51:17 If somebody comes up with a completely different strategy, and their strategy spreads, the maps will evolve to accommodate that. 2011-02-07T02:51:20 * boegel likes magic 2011-02-07T02:51:26 I'd like to see non-symmetric maps with tracking of the maps to give bonuses for positions that have weaknesses and thrown out if they get too unbalanced. I also think this would be really hard to get right though. 2011-02-07T02:52:11 I don't see it as being too hard. To measure a map's fairness, just do a t-test on the hypothsis "all starting positions are equally likely to win" 2011-02-07T02:52:57 When an unfair map starts to get some play, it will gradually produce evidence that it's not perfectly fair. As soon as there's enough evidence to conclude that the map is unfair, it gets thrown out. 2011-02-07T02:53:39 http://codepad.org/7b2gzhnb 2011-02-07T02:53:47 that's a rough explanation of how i would make symmetric maps 2011-02-07T02:54:04 Or perhaps we set the map's priority to the score from the t-test. That way unfair maps will naturally drop out of favor, fair maps will stick around for a long time, and new maps will get lots of play at first until their t-test score settles down. 2011-02-07T02:55:58 Seems solid antimatroid. 2011-02-07T02:56:16 I just don't think the maps are going to be interesting enough though. 2011-02-07T02:56:25 it isn't the same path to all of your neighbours, but once you goto n>2, you can't have the same path to ALL players anyway 2011-02-07T02:56:25 They're all going to be square lattices. 2011-02-07T02:57:04 if it's not quite clear whether you have an advantage or not on a map, it would also make it harder to tell how well your bot did on the map 2011-02-07T02:58:53 I believe that if we re-assign map priorities once per hour using a statistical analysis of the maps game histories, the majority of games will take place on maps that are well within people's fairness tolerance. 2011-02-07T03:00:52 Plus it would just be so sexy. 2011-02-07T03:01:33 i personally don't like non-symmetric at all 2011-02-07T03:01:45 i did play galcon before and couldn't stop thinking, this would be a lot better if maps were symmetric 2011-02-07T03:02:05 I think I get the jist of your concern. But don't you think that having all the maps be square lattices is a little boring? 2011-02-07T03:03:05 I think your concern is that everyone should have the same shot at winning. Also, that the maps should provide clear feedback to their creators by maximizing the role of skill and minimizing the role of luck. 2011-02-07T03:03:37 I am asking you to also consider the interestingness of the maps. 2011-02-07T03:04:18 I claim that we can maintain all of the fairness of symmetric maps without creating boring maps. 2011-02-07T03:04:46 If we just use some stats. 2011-02-07T03:05:15 you'd really want something that makes near symmetric maps then? 2011-02-07T03:05:22 not near symmertic 2011-02-07T03:05:26 near fair 2011-02-07T03:05:32 how would one even go about that? 2011-02-07T03:05:43 you don't want to be throwing out 99+% of maps 2011-02-07T03:05:59 and i am a big fan of the final maps being new 2011-02-07T03:07:06 however, depending on how well the stats idea works, i could be alright with that 2011-02-07T03:07:16 without that i would have hated it 2011-02-07T03:07:54 There's nothing wrong with throwing out 99% of the maps. 2011-02-07T03:08:00 I think that's probably what would happen. 2011-02-07T03:08:25 The system might end up discovering one good map per day. That would be okay with me. 2011-02-07T03:08:34 People will notice over time that the maps are improving. 2011-02-07T03:08:47 in order to throw out 99% of maps, you're going to be playing an awful lot of games on unfair maps so you can discover they're unfair 2011-02-07T03:09:18 Yes. We can control that by putting an upper cap on the percentage of games that can be played on new maps. 2011-02-07T03:09:54 how many games do you think will be needed to determine the fairness? 2011-02-07T03:10:25 Quite a few probably. The maps with more players will require more trials. 2011-02-07T03:10:49 However, the grossly unfair ones will disapper quicker. 2011-02-07T03:10:57 what could be done is an attempt to rank people not just by scoring but the level of "fairness" of their position as before, but like janzert said, that soon becomes really complicated 2011-02-07T03:11:10 Say you've got a map where one starting location has 4 wins and the other have 6. That one would disappear really fast. 2011-02-07T03:11:32 I think we should just aim to maximize the fairness of maps. 2011-02-07T03:11:51 hmmm, what about... start with your t-test with a confidence bound, then if games > x and you reject the fairness, throw the map 2011-02-07T03:12:14 i still think it's worth making a map gen that at least tries to make a fair map 2011-02-07T03:12:14 Really gross unfairness will disappear really quickly. Proving that a map is really well balanced will take a lot of trials though. 2011-02-07T03:12:22 like maybe place everyone on a square lattice 2011-02-07T03:13:44 I think it's a good idea. We can make a map gen that tends to produce fair-ish maps. We can also invent a way to do a basic pre-screen to detect maps that are grossly unfair. For example, create a voronoi diagram and count how much "area" each player starts with. 2011-02-07T03:15:33 j3camero: it can even be a rectangle lattice 2011-02-07T03:15:40 heh (not a serious proposal but) separate from running games you could let bots bid for positions on maps and then use that as a points handicap in the game, but you need to give bots permanent memories so they can track how they did in the various maps/positions 2011-02-07T03:15:40 verticle and horizontal heights don't need to be equal 2011-02-07T03:16:15 janzert: that would be really interesting. 2011-02-07T03:17:26 yeah, I think it would add too much complication though 2011-02-07T03:17:50 i think it's going to be expensive to work out fairness of a map 2011-02-07T03:18:09 particularly if you have 16 player maps 2011-02-07T03:18:21 antimatroid: i hate the lattice system. I think people will be really bored with the maps. It really restricts things since player positions will be so predictable. You always have a neighbor to the north, east, west, and south, at the exact same distance. 2011-02-07T03:18:55 j3camero: you might have the same neighbour up and down, or it might just be you there 2011-02-07T03:19:14 you also have to pick which direction to go first to start expanding 2011-02-07T03:19:24 and then respond according to what everyone else did etc. 2011-02-07T03:19:34 if you have fog of war, you wouldn't even know what others are doing 2011-02-07T03:19:54 I think that those problems become more interesting when you start off not knowing the structure of the map. 2011-02-07T03:20:08 Imagine how not-fun Starcraft would have been if all the maps were regular lattices. 2011-02-07T03:20:25 i don't really play games, i've not played starcraft 2011-02-07T03:20:38 It would have completed ruined the game. 2011-02-07T03:21:17 when i do play games, i do prefer them to be symmetric, i don't see how the maps are less interesting, with a fog of war, you don't even know the map :P 2011-02-07T03:21:43 players don't know the region layouts or the srow,scol dimensions, so they also need to pattern match to try and work that out 2011-02-07T03:21:54 they could also use that to deduce the number of players 2011-02-07T03:23:10 I just think it's so boring. 2011-02-07T03:23:15 No fun to watch. 2011-02-07T03:23:21 Well, less fun. 2011-02-07T03:23:53 i find it more fun to see how people go knowing it was completely fair, and i don't really see how you're going to get enough games to throw out lots of maps 2011-02-07T03:23:58 I have high hopes that we will be able to find a great set of fair maps that are really interesting. So we get all the win associated with interesting maps without losing the fairness. 2011-02-07T03:24:43 i'll make one, how does this sound... 2011-02-07T03:25:20 normal placement of players in a rectangle lattice, then for each food/wall square, i'll randomly place one in each players "region" for every one added 2011-02-07T03:26:12 then if food is placed, one is placed in every players "starting" region 2011-02-07T03:26:19 should food placement be static for a given map somehow? 2011-02-07T03:26:33 Say we can play 10 games per minute. That's 14,000 games per day. Say we use 20% of these games to trial the newest maps. That's almost 3000 games per day just for testing new maps. I think that's easily enough. 2011-02-07T03:26:40 it would be hard to debug if playing a game on the same map with a deterministic bot gave differing results 2011-02-07T03:27:15 but it also needs to be unpredictable by the bot, hmmm 2011-02-07T03:28:36 What I like is that your bot would not know what is around them at all when they start. 2011-02-07T03:29:15 i like that too, particularly not knowing the number of players, it's like colony wars in the real world, fighting to expand your colony without knowing how many other colonies exist 2011-02-07T03:29:41 Right. It presents risks that are really difficult to measure and control. 2011-02-07T03:30:08 You have no idea where the other players are, how far away they are, or what's right around the next corner. 2011-02-07T03:30:19 *** Palmik has joined #aichallenge 2011-02-07T03:30:23 Acquiring knowledge of the world will be a whole new end in and of itself. 2011-02-07T03:31:01 i like visibility through walls, because then you might see something attractive but there may not actually be an easy path to it 2011-02-07T03:31:13 it can essentially fool you if you assume unseen squares aren't walls 2011-02-07T03:32:12 I'd say let food be completely random and have starter packs record a rng seed with the game that it will also accept to replay the game the same way 2011-02-07T03:32:39 Good idea. 2011-02-07T03:32:57 rng seed? 2011-02-07T03:33:08 What would be really sexy is we could go whole-hog with the map auto-balancing system and just use a genetic algorithm. 2011-02-07T03:33:19 rng = random number generator 2011-02-07T03:34:03 So the map gen takes a bunch of parameters and generates a map. A small change in the parameters should produce a small change in the map. Then we do a big genetic algorithm to evolve good maps. 2011-02-07T03:34:05 aren't we meant to be keeping this simple for beginners? 2011-02-07T03:34:30 None of this complicates the game for beginners. 2011-02-07T03:35:00 j3camero: what constitutes a good map? 2011-02-07T03:35:18 Fairness. 2011-02-07T03:35:21 which language and libraries are you using for the genetic algorithms? 2011-02-07T03:35:36 are they guaranteed to be symmetric or no? 2011-02-07T03:35:41 they = the maps 2011-02-07T03:35:56 Where fairness is the probability that his statement is false: "all starting locations are equally likely to win". We measure this probability with a simple t-test on the game data. 2011-02-07T03:36:25 I don't think symmetric maps are a good idea. 2011-02-07T03:37:33 I am not sure if I would use a library for this GA. 2011-02-07T03:37:52 kk. Which language do you like to use? 2011-02-07T03:38:05 j3camero: http://codepad.org/9svfZ6s9 look at the map at the bottom 2011-02-07T03:38:05 Well different parts would be in different languages. 2011-02-07T03:38:13 that is symmetric, players aren't going to know what to do at the start 2011-02-07T03:38:46 player 1 is on row 16 2011-02-07T03:39:04 Well you still know that you've got neighbors up down left and right, at equal distances. 2011-02-07T03:39:14 You know you're not in a corner. 2011-02-07T03:39:19 your up neighbour is your down neighbour 2011-02-07T03:39:29 and the distance is different to your left and right neighbour distance 2011-02-07T03:39:35 j3camero: hmm interesting. Which languages and why mix? Just to use the strengths of each one? 2011-02-07T03:39:45 and there isn't a clear path straight to them, you don't know a path there and they wont be there when you get there 2011-02-07T03:40:24 it's entirely possible you can't get from a to b without going left 2011-02-07T03:40:27 and off the screen 2011-02-07T03:42:34 You're right that the maps can still be complex and have interesting features. 2011-02-07T03:42:39 i think walls should block fights, but that shouldn't be hard, just block them when scanning outwards from players to make the "fighting" graph 2011-02-07T03:43:04 j3camero: I'm just starting to learn about GAs so that's why I'm asking. I know/use Python, Clojure, and Go and wonder whether the language features you think are useful for GAs can be found in these languages, and which ones 2011-02-07T03:43:22 elmisteve: it was a passing comment about using GA's 2011-02-07T03:43:28 I think these days all languages have really great GA libraries. 2011-02-07T03:43:35 from what i understand, they're only best when used as a last resort 2011-02-07T03:43:36 Python has pygene though I have never used it before. 2011-02-07T03:43:40 otherwise there's usually a better way 2011-02-07T03:44:10 What I'm proposing here is a little different than a standard GA, since it's integrated with the game-playing system. 2011-02-07T03:44:25 i don't quite get ga 2011-02-07T03:44:38 it doesn't seem anywhere near as cool to me as everyone else 2011-02-07T03:44:41 I guess it's more of an online learning system. 2011-02-07T03:44:42 antimatroid: yeah I've recently heard that a domain-specific solution stemming from actually understanding the problem usually works better than a GA 2011-02-07T03:44:52 I see 2011-02-07T03:44:56 elimisteve: we both read reddit :P 2011-02-07T03:45:04 *** amstan has quit IRC (Remote host closed the connection) 2011-02-07T03:45:30 ha probably. I saw the video from last year's winner, surely widely talked about on Reddit 2011-02-07T03:45:53 ga is just like writing some logic rules and trying to use those to deduce more logic rules in a way? 2011-02-07T03:45:55 Based on my experience with GAs, domain understanding is 100% necesary for everything but the most trivial problems. The key to success with a GA is to find the right way to represent a solution to the problem as a genome. 2011-02-07T03:45:58 that's pretty much how i think about it 2011-02-07T03:46:11 video from last years winner? where? 2011-02-07T03:47:29 Franz held a webinar 2011-02-07T03:47:32 i'm surprised dimkadimon hasn't raided the forums again yet, it's 7:35pm on the east coast of australia 2011-02-07T03:47:38 pretty sure he's in canberra 2011-02-07T03:48:32 http://www.franz.com/services/conferences_seminars/webinar_1-20-11.lhtml 2011-02-07T03:48:53 I will have to watch that. 2011-02-07T03:49:06 did not know this existed 2011-02-07T03:49:07 thanks 2011-02-07T03:49:12 you bet 2011-02-07T03:50:13 "my rubber duck was very helpful" 2011-02-07T03:50:46 ha yes, not an american phrase for sure 2011-02-07T03:50:55 not that I've heard at least 2011-02-07T03:51:02 i'm not american :P 2011-02-07T03:52:05 the rubber duck is a reference to http://en.wikipedia.org/wiki/Rubber_duck_debugging 2011-02-07T03:52:17 I actually heard it the first time a few months ago 2011-02-07T03:52:22 thanks 2011-02-07T03:55:58 i want an engine :( 2011-02-07T03:56:36 j3camero: get to work :P 2011-02-07T03:57:34 Oh man. I have to get up to go to work in 2 hours. 2011-02-07T03:57:40 But that's okay because I slept all day today. 2011-02-07T03:57:51 Wow I haven't been this messed up in a while. 2011-02-07T03:58:11 Gotta get back to regular sleeping hours. 2011-02-07T03:58:42 You know your sleep schedule is messed up when you're chilling on IRC chatting with australians. 2011-02-07T03:59:49 haha, you should have seen me last year during semester 2011-02-07T03:59:59 classes during the day, programming and irc through the night 2011-02-07T04:00:04 sleep an hour or two and repeat 2011-02-07T04:00:40 uni goes back in a couple of weeks :\ 2011-02-07T04:00:58 1 year degree's ftw 2011-02-07T04:01:10 j3camero: ha tell me about it. I woke up at 7pm today (it's now 1am CA time) and I'm trying to stay up till tonight/tomorrow night 2011-02-07T04:09:47 *** mega1_ has joined #aichallenge 2011-02-07T04:11:11 mega1_: can i ask your opinion on maps? 2011-02-07T04:11:41 the idea is to have non-symmetric maps but use a t-test on each map with results to throw out "unfair" maps 2011-02-07T04:13:54 j3camero: if we have an official tcp, that data could be used for throwing out maps too 2011-02-07T04:14:34 Hmmm intriguing. 2011-02-07T04:14:56 There would be lots of games on there between mostly high-ranking bots. That means lots of signal. 2011-02-07T04:15:15 i was just thinking about that, really you want to work out odds of each player winning 2011-02-07T04:15:35 not give each player an equal chance of winning on a fair map 2011-02-07T04:15:41 because a better player should win more 2011-02-07T04:16:12 *** Naktibalda has joined #aichallenge 2011-02-07T04:16:26 we'd be using maps to rank players and players to rank maps, no idea if that two way feed causes issues or not? 2011-02-07T04:16:50 It can cause feedback yes. But we're not the first people to do this sort of thing. 2011-02-07T04:16:59 There are ways to deal with this. 2011-02-07T04:17:10 antimatroid: right. It can only work if the general population is good enough. 2011-02-07T04:17:45 which means there may be issues in the beginning. 2011-02-07T04:18:18 mega1_: http://www.ai-contest.com/forum/viewtopic.php?f=21&t=1313 we're conflicted over that, i would love your opinion on that one 2011-02-07T04:18:33 poll is meh, an opinion would be ace 2011-02-07T04:18:54 *** delt0r_ has joined #aichallenge 2011-02-07T04:19:27 Interesting, we could just treat maps as being no different than submitted bots. We use maps to rank bots and bots to rank maps. We could even have a leaderboard for maps. They would be ranked by t-test scores. 2011-02-07T04:19:31 i heard your voice for the first time earlier too 2011-02-07T04:19:47 j3camero: now we're talking 2011-02-07T04:20:13 we could have a second contest 2011-02-07T04:20:17 people can submit map generators 2011-02-07T04:20:28 concurrent contest? 2011-02-07T04:20:28 Yeah it would be pretty easy even to let people submit their own maps. 2011-02-07T04:20:41 although you win by making maps symmetric aha 2011-02-07T04:20:50 *** delt0r___ has quit IRC (Ping timeout: 276 seconds) 2011-02-07T04:20:54 no own maps in the final contest 2011-02-07T04:21:06 too much potential for influence 2011-02-07T04:21:19 If their map sucks it will get buried in the leaderboard. If it's good it will rise in the rankings. This would be a great man vs machine contest. See if anyone can beat the auto-generated maps. 2011-02-07T04:21:51 We could potentially rank using a mix of fairness and some other criteria. 2011-02-07T04:22:07 There must be some crude way of measuring how "interesting" a game was. 2011-02-07T04:22:38 number of kills? 2011-02-07T04:22:43 well deaths? 2011-02-07T04:22:54 rate of deaths even? 2011-02-07T04:23:13 Yeah that would be one. 2011-02-07T04:23:29 that would surely favour games with more ant interaction 2011-02-07T04:23:35 which is imo more interesting 2011-02-07T04:23:38 Another would be the maximum drawdown in the number of ants. 2011-02-07T04:23:58 Very similar to number of ant deaths. 2011-02-07T04:24:20 that's just a different metric on the rate 2011-02-07T04:24:29 take the max rather than the mean 2011-02-07T04:24:35 i think 2011-02-07T04:24:40 i'm poor with that kind of thing 2011-02-07T04:25:15 If we learned anything during planet wars, it's that the total ant count will probably have very clear periods of increase and decline. We could measure the number of trend reversals. That would tell us how many major battles occurred. 2011-02-07T04:25:48 antimatroid: what is the reason for basing the decision on the number of enemies of opponents? 2011-02-07T04:25:58 *** mega1 has joined #aichallenge 2011-02-07T04:26:03 *** mega1_ has left #aichallenge ("http://quassel-irc.org - Chat comfortably. Anywhere.") 2011-02-07T04:26:14 mega1: it was something jmcarthur came up with, it's really cool when played around with 2011-02-07T04:26:30 It's just a slick death rule that produces interesting micro battles. 2011-02-07T04:26:47 j3camero is worried it will discourage beginners 2011-02-07T04:26:51 If you play around with it, you get some interesting puzzles. 2011-02-07T04:26:56 when a top bot comes in and just obliterates them 2011-02-07T04:26:57 obviously, I cannot simulate this in my head 2011-02-07T04:27:09 no, i need to make some pictures 2011-02-07T04:27:14 * antimatroid opens paint 2011-02-07T04:27:32 I still don't even really understand it. I mean, I know the rule and I can solve situations, but I don't really grok it. 2011-02-07T04:27:35 I'm afraid we may even need to look into the dynamics. 2011-02-07T04:29:07 mega1: people have played with a few examples 2011-02-07T04:29:53 *** chris__0076 has joined #aichallenge 2011-02-07T04:30:32 i'm going to assume the fighting distance is two with the manhatten metric 2011-02-07T04:30:53 that ensures opponents can't land in the same square 2011-02-07T04:32:46 *** chris_0076 has quit IRC (Ping timeout: 246 seconds) 2011-02-07T04:41:21 i have 2 examples 2011-02-07T04:41:27 once imgur loads 2011-02-07T04:42:19 mega1: http://i.imgur.com/5NIMl.png 2011-02-07T04:42:26 top is option 1, bottom is option 2 2011-02-07T04:42:58 oh crud, that's also if you were only checking the 8 adjacent squares, that can't actually happen 2011-02-07T04:43:17 hmmm now i've confused myself 2011-02-07T04:43:38 regardless of what can happen, that gives you an idea of the rules 2011-02-07T04:49:26 third example the result is the same if the walls are there or not right? 2011-02-07T04:50:05 janzert: yeah 2011-02-07T04:50:30 the point is you can block small passageways 2011-02-07T04:50:39 and people can't come from the opposite direction and breach your two campers 2011-02-07T04:50:49 but it breaks down if you try to block a larger pathway 2011-02-07T04:51:01 but you can build defensive structures that are expensive to break down 2011-02-07T04:51:14 it's awesome 2011-02-07T04:52:01 you can even send those two along, then run back if you stumble across another ant 2011-02-07T04:55:11 j3camero: if attacking was blocked by walls and other players, you wouldn't be able to block that passage 2011-02-07T04:59:32 j3camero: another point, if it's mostly 1:1 i don't think there's much point in fighting if there's more than 1 player 2011-02-07T04:59:41 you want other people to fight first while you grow 2011-02-07T04:59:59 whereas if you think you can fight them well, you're going to charge in there, and other people are going to have to fight you 2011-02-07T05:00:20 a point per death does help counter that 2011-02-07T05:00:39 but it's more of a you want to grow your army then leave enough enemies to mass suicide at the end 2011-02-07T05:02:46 If you win you get more territory. That's the point. 2011-02-07T05:02:54 Just like Planet Wars. 2011-02-07T05:04:26 yeah, but you're going to try and dance around them if possible 2011-02-07T05:04:38 i dunno, i'd be trying to avoid fights 2011-02-07T05:04:38 For sure yeah. 2011-02-07T05:04:51 i'd rather be trying to seek out fights 2011-02-07T05:04:57 hmm, I think a point per death could quite probably have some bad incentives 2011-02-07T05:05:28 There are two factors in the strategic strength of a player: territory size and territory security. 2011-02-07T05:05:30 we want people to wipe out weaker opponents as quickly as possible 2011-02-07T05:06:34 while option 2 would work and is cool, i think option 1 is awesome 2011-02-07T05:07:03 how about a point per move survived longer than an opponent, so no one gets a point until the first player is killed then each get 1 point and so on, then the last surviving player gets and additional n-1 points to the max turn limit 2011-02-07T05:07:26 If you're fighting over a chokepoint, ultimately the player with more territory is going to be able to force the smaller player to back up. However, a smaller player might be able to force a larger player to back down if the larger player is unable to secure their other borders. So you want to try to create peace in order to build secure borders, but you also want to land heavy punches in order to score more territory. It's an interesting balance. 2011-02-07T05:08:28 janzert: that sounds quite neat 2011-02-07T05:08:47 I think it gives a lot better incentives 2011-02-07T05:09:31 kill as quick as you can (and stop using my resources for your game ;) ) 2011-02-07T05:10:35 it would appear my internet needs resetting 2011-02-07T05:12:28 *** antimatroid1 has joined #aichallenge 2011-02-07T05:15:26 *** antimatroid has quit IRC (Ping timeout: 276 seconds) 2011-02-07T05:21:46 *** Meatkat has joined #aichallenge 2011-02-07T05:32:34 *** mega1_ has joined #aichallenge 2011-02-07T05:34:33 *** mega1_ has quit IRC (Client Quit) 2011-02-07T06:22:40 *** Sandern has joined #aichallenge 2011-02-07T06:26:20 i just realised... 2011-02-07T06:26:43 with the symmetric maps, if two players go towards each other, they aren't playing symmetrically, the map will look different 2011-02-07T06:29:39 i don't think games will be as boring as they're been made out to be 2011-02-07T06:34:10 jmcarthur: http://i.imgur.com/8tdbG.png 2011-02-07T06:37:14 it's still possible to block that passage 2011-02-07T06:40:07 http://i.imgur.com/2wlZS.png bottom right shows how you can block 2011-02-07T06:47:29 doesn't that depend on timing your step up with the opponent's step down? 2011-02-07T06:47:50 janzert: yes 2011-02-07T06:48:15 so you can't really block it with certainty 2011-02-07T06:48:23 no 2011-02-07T06:48:32 even better 2011-02-07T06:52:00 hehe, it's possible for 4 separate players to make a square 2011-02-07T07:00:20 janzert: http://i.imgur.com/uWTQg.png 3 more on there 2011-02-07T07:00:25 let me know if i screw up 2011-02-07T07:02:09 i don't think eithers any easier than the other tbh 2011-02-07T07:03:24 yeah, I've not had any big preference either way 2011-02-07T07:06:44 i feel like option 1 should encourage people to cluster and have larger battles 2011-02-07T07:06:47 but i could be wrong 2011-02-07T07:11:56 *** Meatkat has quit IRC (Ping timeout: 276 seconds) 2011-02-07T07:14:22 jmcarthur: i think i came up with a counterexample to your explanation for option 2 2011-02-07T07:16:01 jmcarthur: http://i.imgur.com/nOit5.png 2011-02-07T07:19:38 except that situation can't happen 2011-02-07T07:19:39 hmmm 2011-02-07T07:28:25 *** sigh has quit IRC (Remote host closed the connection) 2011-02-07T08:26:06 jmcarthur: i found a similar example where it's possible for the situation to happen http://i.imgur.com/ANKgY.png 2011-02-07T08:26:56 i think according to your wording blue survives, but according to the implemented option 2, they all die 2011-02-07T08:26:58 *** boegel has quit IRC (Quit: Leaving) 2011-02-07T08:57:51 bleh, no one is about :( 2011-02-07T08:58:31 i'm fairly convinced the original map gen i made would make for perfectly interesting games, when ants come across each other, the wall arrangement is not going to be symmetric for their move decisions 2011-02-07T09:33:20 *** mega1 has quit IRC (Ping timeout: 240 seconds) 2011-02-07T09:34:18 *** mega1 has joined #aichallenge 2011-02-07T09:48:53 ... now i am looking for c++ help 2011-02-07T09:48:57 http://codepad.org/VuPj8khZ 2011-02-07T09:49:15 with the template Bug& operator<<(Bug &bug, const C c) function, is it possible to get that to take endl? 2011-02-07T09:49:34 it hate's bug << endl; 2011-02-07T09:51:51 nevermind, i created my own 2011-02-07T09:58:50 *** mega1 has quit IRC (Read error: Connection reset by peer) 2011-02-07T09:58:58 *** mega1 has joined #aichallenge 2011-02-07T10:30:56 *** delt0r___ has joined #aichallenge 2011-02-07T10:32:16 *** delt0r_ has quit IRC (Ping timeout: 240 seconds) 2011-02-07T11:11:26 http://upload.wikimedia.org/wikipedia/commons/2/2f/MAZE_2000x2000_DFS_SOL.png 2011-02-07T11:11:27 yeah 2011-02-07T11:24:53 *** amstan has joined #aichallenge 2011-02-07T11:24:53 *** ChanServ sets mode: +o amstan 2011-02-07T11:38:39 *** asdf_ has joined #aichallenge 2011-02-07T12:01:06 *** amstan has quit IRC (Ping timeout: 276 seconds) 2011-02-07T12:04:07 antimatroid1: we knew already that you could block a 1-wide passage with option 1 2011-02-07T12:04:20 so long as you could get two ants adjacent to one square in the passage 2011-02-07T12:04:25 *within range of 2011-02-07T12:05:28 but yeah, even then it's tough to pull off when you can fight outside of just the 8 squares around you 2011-02-07T12:07:31 antimatroid1: what is the combat range and distance algorithm for this one in the lower left? http://i.imgur.com/uWTQg.png 2011-02-07T12:07:43 i think you are using different ones in different examples or something 2011-02-07T12:08:41 antimatroid1: a tough exercise to consider: what's the most efficient way to attack a square formation? 2011-02-07T12:08:55 jmcarthur: i've been using a combat range of 2 with the manhatten metric 2011-02-07T12:08:58 it's possible to do, but it requires some surgical precision and a few sacrifices 2011-02-07T12:09:17 hence why the top right shows just leaving a "blockage" wont work 2011-02-07T12:09:36 antimatroid1: the lower left is wrong then 2011-02-07T12:09:48 jmcarthur: why? 2011-02-07T12:10:17 hold on let me actually work this one out myself. maybe i'm just being retarded because i just woke up 2011-02-07T12:10:55 each players "fight" region is the diamond around with manhatten distance 2 2011-02-07T12:11:38 jmcarthur: http://i.imgur.com/nOit5.png take a look at that example 2011-02-07T12:11:51 i think it breaks your explanation of option 2 2011-02-07T12:12:28 wait, not that link 2011-02-07T12:12:39 http://i.imgur.com/ANKgY.png that one 2011-02-07T12:12:51 the one before is similar, but the example sitation can't happen 2011-02-07T12:12:52 antimatroid1: okay, what's wrong is that the leftmost and rightmost red ants should also die 2011-02-07T12:13:38 antimatroid1: i think you computed the number of opponents based on the diamond, but then only compared them using the 8 squares around each ant 2011-02-07T12:14:46 okay, in this last one you just linked me. they should all die, right? 2011-02-07T12:14:52 i think so 2011-02-07T12:14:58 and i guess mine doesn't do that 2011-02-07T12:14:59 but your explanation wouldn't have that yeah? 2011-02-07T12:15:07 i think you are right 2011-02-07T12:15:18 sorry :P 2011-02-07T12:15:22 so my version of that algorithm is a straw man then 2011-02-07T12:15:32 thanks for finding that 2011-02-07T12:15:37 np 2011-02-07T12:15:57 easiest form of proof 2011-02-07T12:16:01 find a counterexample 2011-02-07T12:16:34 okay, back to that lower left example... do you see what i mean? 2011-02-07T12:16:35 other favourites are induction and contradictions 2011-02-07T12:16:41 not at all :P 2011-02-07T12:16:50 counterexamples are the best *dis*proof ;) 2011-02-07T12:16:59 well, unless it's a not(P) proof i guess :P 2011-02-07T12:17:15 okay h/o 2011-02-07T12:17:21 the removed ants each have 3 enemies in range? and every other ant is in range of one of those? 2011-02-07T12:17:51 antimatroid1: https://gist.github.com/814726 2011-02-07T12:18:07 the red ants that i marked '2' for are in range of the ants marked '1' 2011-02-07T12:18:16 so they must also die 2011-02-07T12:18:34 oh hmmm okay 2011-02-07T12:18:43 that makes sense 2011-02-07T12:18:56 feel free to find any other errors i've made 2011-02-07T12:19:42 the others i think are fine 2011-02-07T12:19:49 i'm only checking option 1 though 2011-02-07T12:20:05 no point now that we know option 2 is not equivalent to the current algorithm 2011-02-07T12:20:14 *no point in checking option 2 2011-02-07T12:20:33 unless you are sure that all those cases coincide with what would happen anyway 2011-02-07T12:21:28 antimatroid1: anyway, back to my challenge. find the most efficient way to attack a group of ants that are in a large-ish square formation 2011-02-07T12:21:32 antimatroid1: with option 1 2011-02-07T12:21:33 jmcarthur: second option should coincide with what was meant for option 2 2011-02-07T12:21:37 it's actually pretty tough 2011-02-07T12:21:38 it's easy enough to work that out by eye 2011-02-07T12:21:46 okay 2011-02-07T12:22:17 with option 1? send ant's to each 4 corners or 2 to each side 2011-02-07T12:22:25 you can take it out fairly easily with 4 ants? 2011-02-07T12:22:31 hard to beat that though 2011-02-07T12:22:41 you can't, actually 2011-02-07T12:22:52 hmm, actually, when i did this i was thinking about 8 squares around, not diamond 2011-02-07T12:22:58 yeah me too 2011-02-07T12:22:59 hmmm 2011-02-07T12:23:00 it might be different this way 2011-02-07T12:23:03 *** bhasker has joined #aichallenge 2011-02-07T12:23:05 *** Blkt has joined #aichallenge 2011-02-07T12:23:16 i keep forgetting and thinking in 8 2011-02-07T12:23:16 just consider what it takes to beat only one corner of it 2011-02-07T12:23:31 oh yeah hang on 2011-02-07T12:23:34 you can take it out 2011-02-07T12:23:36 once you have a corner knocked out it's a bit easier to kill off the rest assuming it's not moving around very intelligently 2011-02-07T12:23:53 aa 2011-02-07T12:23:53 aa 2011-02-07T12:23:53 ..b 2011-02-07T12:23:53 .b 2011-02-07T12:24:12 but the corner, at least in my thought exercise yesterday, required more ants to take out than were actually killed in the square 2011-02-07T12:24:21 *** amstan has joined #aichallenge 2011-02-07T12:24:21 *** ChanServ sets mode: +o amstan 2011-02-07T12:24:21 required the lives of, that is 2011-02-07T12:24:55 i guess it's easier with the diamond combat area 2011-02-07T12:25:11 yeah, i think that makes it easier 2011-02-07T12:25:17 alrighty then, there goes that concern, too 2011-02-07T12:25:19 but that also ensures enemies can't land in the same square 2011-02-07T12:25:33 it's really hard to block a passage now too 2011-02-07T12:25:35 did you notice that? 2011-02-07T12:25:38 yeah 2011-02-07T12:25:47 you basically have to guess when they will move into that square 2011-02-07T12:25:47 it requires precision (lucky) timing 2011-02-07T12:26:01 and even then 2011-02-07T12:26:03 and if you miss it, you messed it 2011-02-07T12:26:11 if it's two ants going down the corridor instead of one... 2011-02-07T12:26:22 one behind the other 2011-02-07T12:26:43 hello 2011-02-07T12:26:50 they will be able to kill one of the blocking ants 2011-02-07T12:27:02 amstan! 2011-02-07T12:27:08 hmm? 2011-02-07T12:27:22 jmcarthur: with right middle, if red kept initial stance, does that block? 2011-02-07T12:27:24 i think it does 2011-02-07T12:27:52 you mean if blue just attacks? 2011-02-07T12:27:57 yeah 2011-02-07T12:28:05 if red doesn't move, blue can't hurt it 2011-02-07T12:28:18 it's like the old block, just slightly different 2011-02-07T12:28:21 obviously blue should go around :P 2011-02-07T12:28:26 but okay, yeah 2011-02-07T12:28:37 twat :P 2011-02-07T12:29:54 regardless, the previous proposed solution of just tweaking the map gen would work 2011-02-07T12:31:12 what tweak? 2011-02-07T12:31:22 j3camero seems pretty keen on doing non-symmetric maps 2011-02-07T12:31:31 no 1-wide corridors 2011-02-07T12:31:37 although the maps i made, if you players come across each other, it's not going to be symmetric from both directions 2011-02-07T12:31:48 actually i think we had previously said that had to be no 2-wide corridors or something. i don't remember now 2011-02-07T12:32:07 i'd prefer to allow it to happen 2011-02-07T12:32:17 i think it's cool that people can block off certain passageways 2011-02-07T12:32:56 jeff's idea for doing non-symmetric maps is to run t-tests on the results of maps with the null "map is fair" and if it gets rejected, throw the map out 2011-02-07T12:33:05 i don't care if we don't have symmetry, but we'd need to have a really good map pruning algorithm without it 2011-02-07T12:33:08 i don't see it being feasible to get enough data on maps 2011-02-07T12:33:17 maybe with tcp data 2011-02-07T12:33:41 i do agree that it would get very boring very fast if everything is just a lattice 2011-02-07T12:33:42 we could even make the engine assign the best players to the currently worst considered starting position etc. pre contest 2011-02-07T12:34:08 that could make it work out whether it's "fair" or not faster 2011-02-07T12:34:31 well, that would work out the *very* unfair maps faster 2011-02-07T12:34:40 but the *slightly* unfair maps would last even longer that way 2011-02-07T12:35:36 *** Frontier has joined #aichallenge 2011-02-07T12:35:49 but i don't see how we'd make a generator that isn't requiring us to throw out 99+% of the maps it spits out 2011-02-07T12:36:06 couple that with the already limited servers, i just don't really see that 2011-02-07T12:36:24 why don't we just have a map gen that can make both symmetric and assymmetric maps, then we can experiment and if the assymmetric maps are all doing too poorly we can just switch to symmetric only 2011-02-07T12:36:39 i would be keen on that 2011-02-07T12:36:59 oh, janzert suggested a scoring method i'm interested in 2011-02-07T12:37:43 after the first player dies, every other player receives 1 point every other turn, 2 once 2 are dead, once n-1 are dead, winner gets remainingturns*(n-1) more points 2011-02-07T12:38:03 i like it 2011-02-07T12:38:05 wait, that's just survival of the fittest isn't it? 2011-02-07T12:38:11 means you try to kill them off as quick as possible 2011-02-07T12:38:32 oh, so we're going to carry points across games? 2011-02-07T12:38:34 yeah okay 2011-02-07T12:38:35 how about each player receives one point per ant per turn per dead player :P 2011-02-07T12:38:38 that's very good 2011-02-07T12:38:49 that would be cool 2011-02-07T12:38:54 scoreboard would explode 2011-02-07T12:39:12 divided by something or other? 2011-02-07T12:39:24 logarithmic scale? :P 2011-02-07T12:39:37 have you ever played winterbells? 2011-02-07T12:39:45 at the end we could divide the final scores by the number of ants and the number of turns or something 2011-02-07T12:39:57 *total number of ants 2011-02-07T12:39:59 i dunno 2011-02-07T12:40:03 good evening everyone 2011-02-07T12:40:03 no 2011-02-07T12:40:11 make breakfast/lunch now 2011-02-07T12:40:13 bbl 2011-02-07T12:40:16 antimatroid1: omg! winterbells! 2011-02-07T12:40:20 what would a point per turn per ant favour? 2011-02-07T12:41:00 amstan: your score doubles every time a player dies and you get a point per turn for every ant you have :P 2011-02-07T12:41:44 actually, you get a cumulative sum of points 2011-02-07T12:41:51 to be fully like winterbells 2011-02-07T12:42:13 Blkt: morning :) 2011-02-07T12:42:25 i suck at winterbells though 2011-02-07T12:42:32 Blkt: good afternoon 2011-02-07T12:47:07 *** McLeopold has joined #aichallenge 2011-02-07T12:58:00 *** Naktibalda has quit IRC (Quit: ChatZilla 0.9.86 [Firefox 3.6.8/20100722155716]) 2011-02-07T13:05:52 j3camero? 2011-02-07T13:06:27 *** UndiFineD has left #aichallenge ("Ex-Chat") 2011-02-07T13:07:12 McLeopold: he's at work 2011-02-07T13:18:50 ok 2011-02-07T13:19:03 is antimatroid1 around? 2011-02-07T13:20:02 i am 2011-02-07T13:20:14 i shouldn't be, but i am 2011-02-07T13:20:18 (it's 5am) 2011-02-07T13:20:44 McLeopold: i have a working bot 2011-02-07T13:21:02 well it seems to work when i pass it fake input anyway 2011-02-07T13:22:01 well i have two actually, a "starter bot" that could be used and a "starter bot with the works" for myself 2011-02-07T13:22:02 I was looking at your examples from last night 2011-02-07T13:22:46 http://i.imgur.com/ANKgY.png 2011-02-07T13:23:12 as a note, in that example, only red and green kill each other 2011-02-07T13:23:21 with your algorithm? 2011-02-07T13:23:22 really? 2011-02-07T13:23:28 wait... 2011-02-07T13:23:51 if the range is expanded to 2, then yellow and cyan kill each other next, but red and green are removed first 2011-02-07T13:24:25 my fight range is the 2 radius manhatten diamond thing 2011-02-07T13:24:32 if that changes anything 2011-02-07T13:24:36 also, I'm not using manhattan distance, because it brings us closer to a 1:1 ratio 2011-02-07T13:24:56 manhatten is how movement works, it'd be simpler to use it always 2011-02-07T13:25:08 it's not that much simplelr 2011-02-07T13:25:25 a.b 2011-02-07T13:25:25 ...c 2011-02-07T13:25:26 even if you don't, isn't the euclidean 2 circle the same? 2011-02-07T13:25:45 so, a-b is 2, b-c is 2 with manhatten 2011-02-07T13:26:20 a-b is 2, b-c is sqrt(2) with euclidean 2011-02-07T13:26:42 oh you're right 2011-02-07T13:26:47 i've been thinking with euclidean :P 2011-02-07T13:26:51 I would argue it is more intuitive that b-c kill each other and a lives 2011-02-07T13:26:54 i've been counting diagonal as closer 2011-02-07T13:27:05 oh good 2011-02-07T13:27:13 I haven't actually been using sqrt 2011-02-07T13:27:23 no, just consider that closer 2011-02-07T13:27:33 I just add the squares of the x and y distance 2011-02-07T13:27:41 same problem arises 2011-02-07T13:27:46 so, if I want distance 3, I just look for <= 9 2011-02-07T13:27:51 don't red and green kill each other, then yellow and blue? 2011-02-07T13:27:59 yes 2011-02-07T13:28:02 in the one turn? 2011-02-07T13:28:21 yes, but red and green are removed, then the algo continues to look for more conflict 2011-02-07T13:28:38 yeah, the issue is that it breaks jmcarthurs intuitive explanation of the rule 2011-02-07T13:28:43 so if cyan wasn't there, yellow lives 2011-02-07T13:28:57 I never did understand that 2011-02-07T13:29:06 doesn't matter, it's broken 2011-02-07T13:29:30 it suggests blue lives 2011-02-07T13:29:36 *** carbono has joined #aichallenge 2011-02-07T13:29:48 because yellows closest enemy is rt(2 ) and it's closest enemy is 2 2011-02-07T13:31:08 hello 2011-02-07T13:31:18 when will it start the next challenge? 2011-02-07T13:34:10 at least a month probably 2011-02-07T13:36:08 it's closest enemy is 1 2011-02-07T13:36:15 even with manhatten 2011-02-07T13:36:27 ? 2011-02-07T13:36:27 *** amstan has quit IRC (Ping timeout: 245 seconds) 2011-02-07T13:37:45 McLeopold? 2011-02-07T13:40:23 yes? 2011-02-07T13:40:50 antimatroid1: because yellows closest enemy is rt(2 ) and it's closest enemy is 2 << explain? 2011-02-07T13:41:08 blues closest enemy is yellow which is 2? 2011-02-07T13:41:18 yellows closest enemy is green which is rt 2 2011-02-07T13:41:18 yellow is rt(2) to green, which is 1 to red 2011-02-07T13:41:50 with manhatten, it's y-g=2 g-r=1 2011-02-07T13:41:50 the point is blues only enemy in range has a closest enemy of rt 2 which is less than 2 2011-02-07T13:41:59 which by jmcarthurs definition leaves blue alive 2011-02-07T13:41:59 ok 2011-02-07T13:42:12 oh, i see 2011-02-07T13:42:14 hence it isn't equivalent to the actual rule 2011-02-07T13:42:22 but then, yellow lives too 2011-02-07T13:42:29 yes 2011-02-07T13:42:37 it breaks there 2011-02-07T13:42:37 but yellow and blue are in range 2011-02-07T13:42:51 i concucted it to do that 2011-02-07T13:43:11 i have another one that does it, but it's not actually possible to get there 2011-02-07T13:43:17 http://i.imgur.com/nOit5.png 2011-02-07T13:44:12 yeah, so the bottom 2 would live according to jmc 2011-02-07T13:44:29 yeah 2011-02-07T13:45:10 so, with my method, a single ant can't determine if it will live or die, unless it knew the state of the entire map 2011-02-07T13:45:21 i think such a situation is very very unlikely, but nonetheless possible 2011-02-07T13:45:42 only if people were that linked up i guess? 2011-02-07T13:45:50 yes, if linked 2011-02-07T13:45:55 i would expect most combats to be fairly small range 2011-02-07T13:46:12 *** sigh has joined #aichallenge 2011-02-07T13:46:19 sigh: night :P 2011-02-07T13:46:25 by 2011-02-07T13:46:36 o_O 2011-02-07T13:46:43 ? 2011-02-07T13:46:54 morning...? 2011-02-07T13:47:04 i don't see it being very easy to chain fight regions up 2011-02-07T13:47:15 i could be wrong? 2011-02-07T13:47:39 the chain would have to exists of alternating colors, so, very, very hard 2011-02-07T13:48:18 maybe 2 lines of evenly spaced opposing ants in a diagonal pattern? 2011-02-07T13:49:12 so, for blocking attacks, I'm thinking there can be a path of some sort to allow a link 2011-02-07T13:49:51 aXX 2011-02-07T13:49:51 --c 2011-02-07T13:49:55 block or no? 2011-02-07T13:50:40 brb 2011-02-07T13:53:46 you mean -c- yeah? 2011-02-07T13:54:47 i think -c- would make the attack around the wall 2011-02-07T13:55:00 i would block aXc from going through 2011-02-07T13:55:16 if you allowed -c- then they could move into the same square 2011-02-07T13:55:19 we can't have that 2011-02-07T13:55:24 anyway, i'm off to bed 2011-02-07T13:56:21 *** sigh has quit IRC (Remote host closed the connection) 2011-02-07T14:01:26 *** bhasker has quit IRC (Ping timeout: 255 seconds) 2011-02-07T14:08:04 *** bhasker has joined #aichallenge 2011-02-07T14:15:29 jmcarthur? 2011-02-07T14:17:52 *** amstan has joined #aichallenge 2011-02-07T14:17:52 *** ChanServ sets mode: +o amstan 2011-02-07T14:21:34 amstan: how do I get git to use my ssh key? 2011-02-07T14:21:54 I'm typing in a password for clone and push commands 2011-02-07T14:21:56 McLeopold: umm.. it should work right away 2011-02-07T14:22:11 did you use the ssh url for the repo? 2011-02-07T14:22:18 no... 2011-02-07T14:22:30 McLeopold: hey 2011-02-07T14:22:36 that's the only way with keys 2011-02-07T14:22:53 i think you have to give github your pubkey? 2011-02-07T14:22:53 yeah my formulation of the distance-based algorithm turned out to not match what we're actually using right now 2011-02-07T14:23:41 i was hoping it would be possible to determine the future state of each ant in isolation of the others, but i guess that's just not going to happen 2011-02-07T14:23:50 McLeopold: http://help.github.com/linux-key-setup/ 2011-02-07T14:24:32 jmcarthur: you just have to put it in terms of who kills who, not who lives 2011-02-07T14:24:51 McLeopold: but that still means you can't determine them in isolation 2011-02-07T14:25:08 i can't just take an ant and its immediate environment and know who dies and who lives 2011-02-07T14:25:24 each ant can make 1 or more kills, to the ants that are closest, unless they are focused on someone closer 2011-02-07T14:25:30 nope 2011-02-07T14:25:39 you have to know the state of the whole board 2011-02-07T14:25:44 yeah 2011-02-07T14:26:03 and you have to kill ants incrementally. there is no closed form formula for it 2011-02-07T14:26:13 I think there is 2011-02-07T14:26:26 to determine if a single ant lives or dies? 2011-02-07T14:26:41 the, "unless they are focused on a closer enemy" is the key 2011-02-07T14:26:48 certainly not an efficient or convenient closed form formula 2011-02-07T14:27:03 so, you don't need to know the state of the whole board 2011-02-07T14:27:24 if an ant will make a kill, it will also die 2011-02-07T14:27:38 but they may not be focused on a closer enemy because that enemy may have been killed 2011-02-07T14:27:43 *** Naktibalda has joined #aichallenge 2011-02-07T14:27:48 in a previous iteration with closer distance or whatever 2011-02-07T14:27:52 unless i'm misunderstanding 2011-02-07T14:28:09 right, but you don't need to iterate, you know it will be killed first if it has a closer enemy 2011-02-07T14:28:17 ah, hmm 2011-02-07T14:28:42 this sounds suspiciously like the rule i made already which turned out not to work 2011-02-07T14:28:55 very close, but different 2011-02-07T14:29:14 okay, a closer enemy than what? 2011-02-07T14:29:25 you rule said an ant will always focus on the closest enemy, this is only if the enemy is not engaded in even closer combat 2011-02-07T14:30:18 so, an ant will focus on the closest ant that is no closer to another enemy 2011-02-07T14:30:30 right 2011-02-07T14:30:49 stick that in your haskell 2011-02-07T14:31:10 A.opponents.length < A.opponents.map(.opponents.length).minimum 2011-02-07T14:31:17 so, I want to understand the above 2011-02-07T14:31:33 A.opponents.length is the distance to the closest enemy? 2011-02-07T14:31:41 no, that's my old algorithm 2011-02-07T14:31:49 the enemies of enemies algorithm 2011-02-07T14:31:52 I still want to understand the syntax 2011-02-07T14:31:59 it's basically pythonic 2011-02-07T14:32:11 A.opponents.length is the number of opponents that A is fighting 2011-02-07T14:32:18 oh 2011-02-07T14:33:12 then using map is confusing 2011-02-07T14:33:16 to me 2011-02-07T14:33:30 well it's not python syntax, but it has lambda doesn't it? 2011-02-07T14:33:41 Not for long... 2011-02-07T14:33:49 thanks a lot guido 2011-02-07T14:34:04 BDFL is always right. :) 2011-02-07T14:34:15 bah 2011-02-07T14:34:29 well i can't help it that guido is limiting your vocabulary :P 2011-02-07T14:34:35 whatever, just name the function before using it, almost the same 2011-02-07T14:35:04 a.opponents.map(.opponents.length).minimum is equivalent to min(len(b.opponents for b in a.opponents)) 2011-02-07T14:35:19 ah 2011-02-07T14:35:36 the latter is a python generator comprehension 2011-02-07T14:35:47 er 2011-02-07T14:35:59 min(len(b.opponents) for b in a.opponents) 2011-02-07T14:36:01 minimum . map (length . opponents) . opponents 2011-02-07T14:36:22 I think you need brackets for that. 2011-02-07T14:36:26 ^^ if you don't mine reading right to left 2011-02-07T14:36:29 *mind 2011-02-07T14:36:30 you don't, actually 2011-02-07T14:36:37 :P haskell 2011-02-07T14:36:42 min([len(b.opp) for b in a.opp]) 2011-02-07T14:37:05 no, you can leave those out 2011-02-07T14:37:11 i was surprised when i found that out, too 2011-02-07T14:37:15 minimum [length (opponents b) | b <- opponents a] 2011-02-07T14:37:32 the *original* list comprehension :P 2011-02-07T14:37:38 is <- supposed to be \in ? 2011-02-07T14:37:39 before python stole it from haskell 2011-02-07T14:37:55 I just learned something new 2011-02-07T14:38:32 Zannick: i read it as "is drawn from" 2011-02-07T14:38:43 jmcarthur: that's still more readable than the previous forms 2011-02-07T14:38:54 okay, back to current combat expressed in haskell 2011-02-07T14:38:55 you mean you're more used to it 2011-02-07T14:39:08 "|" = foreach, "<-" = in 2011-02-07T14:39:10 sure 2011-02-07T14:39:19 i haven't used haskell, so it's harder to parse 2011-02-07T14:39:21 McLeopold: the way i'd been expressing it is not haskelly at all. it's more pythony 2011-02-07T14:39:37 McLeopold: with the exception of map i guess 2011-02-07T14:39:42 haskellic? 2011-02-07T14:40:43 a.min_dist = min(b.min_dist for b in a.opp) 2011-02-07T14:41:06 that's not quite right 2011-02-07T14:41:26 * jmcarthur is trying to remember how he initially wrote it out 2011-02-07T14:42:18 here we go 2011-02-07T14:42:20 A lives if A.minDistToOpponent > A.opponents.map(.minDistToOpponent).maximum 2011-02-07T14:42:24 oh wait, this does need to be iterative 2011-02-07T14:42:34 ab.c..d 2011-02-07T14:42:53 c and d do focus on each other 2011-02-07T14:43:11 okay now we're on the same page 2011-02-07T14:43:31 if the range was 5, ab.c..d...e....f would be weird 2011-02-07T14:43:48 a-b, c-d, e-f are kill pairs 2011-02-07T14:44:06 from d's perspective, it's difficult 2011-02-07T14:44:59 hmm... maybe my version of rule should just be >= instead of > 2011-02-07T14:45:05 oh no 2011-02-07T14:45:07 from e's perspective 2011-02-07T14:45:07 backwards 2011-02-07T14:45:10 nevermind 2011-02-07T14:45:17 is e fighting d? 2011-02-07T14:45:23 if he doesn't see c? 2011-02-07T14:45:31 no 2011-02-07T14:45:45 the shortest distance pairs are removed first 2011-02-07T14:46:02 from e's perspective, with my incorrect version of the rule, e lives if 4 > 5, so e dies 2011-02-07T14:46:12 right, but who is e focused on? 2011-02-07T14:46:16 are you still using that? 2011-02-07T14:46:21 is it based on the whole map? 2011-02-07T14:46:25 ab.c..d...e....f 2011-02-07T14:46:25 ...c..d...e....f 2011-02-07T14:46:25 ..........e....f 2011-02-07T14:46:25 ................ 2011-02-07T14:46:32 the actual algorithm being used requires the entire map 2011-02-07T14:46:33 no, i understand that 2011-02-07T14:46:36 that's the progression, yes on the whole map 2011-02-07T14:47:29 *** amstan has quit IRC (Ping timeout: 240 seconds) 2011-02-07T14:47:53 so this "focus" thing isn't a player perspective thing, it's just an abstraction by the engine? 2011-02-07T14:47:55 maybe you could say an ant lives if every enemy is closer to another? 2011-02-07T14:48:18 yeah, we just made up the term to see if we could come up with a better formula for the same rule 2011-02-07T14:48:41 ab.c..d...e....f ==> 11.2..3...4....5 ==> 1 > 1; 1 > 2; 2 > 3; 3 > 4; 4 > 5; 5 > 4 ==> F;F;F;F;F;T ==> ...............f 2011-02-07T14:48:51 that's my closed form version 2011-02-07T14:49:02 an ant lives => every enemy is closer to another 2011-02-07T14:49:05 the reverse is not true 2011-02-07T14:49:35 McLeopold: that rule i think is equivalent to mine 2011-02-07T14:49:44 ab.c..d 2011-02-07T14:49:51 d lives 2011-02-07T14:49:51 every enemy of d is closer to another, but d dies 2011-02-07T14:50:02 by the latter rule that is 2011-02-07T14:50:06 but it shouldn't with the iterative process 2011-02-07T14:50:15 yeah d dies with the iterative one 2011-02-07T14:50:17 as ab.c..d => ...c..d => ....... 2011-02-07T14:50:33 arg 2011-02-07T14:50:49 are you trying to come up with a rule to describe the iterative process? 2011-02-07T14:50:54 yes 2011-02-07T14:51:04 it is not necessarily going to work 2011-02-07T14:51:09 i don't think it will 2011-02-07T14:51:13 we aren't actually trying to change battle resolution here 2011-02-07T14:51:14 i think the iteration is necessary 2011-02-07T14:51:20 and i am not sure it is worth it 2011-02-07T14:51:33 well, it would have been worth it for the sake of having a simpler rule 2011-02-07T14:51:33 since the algorithmic complexity is likely to be the same 2011-02-07T14:51:43 easier to reason about when you don't have to worry about a global state 2011-02-07T14:52:12 the problem is you do with that rule 2011-02-07T14:52:15 *** amstan has joined #aichallenge 2011-02-07T14:52:15 *** ChanServ sets mode: +o amstan 2011-02-07T14:52:19 if we did what your rule stated, where d lives, then we cross the 1:1 ratio line 2011-02-07T14:52:20 with the iterative one you do, yes 2011-02-07T14:52:35 McLeopold: i thought this wasn't 1:1 anyway 2011-02-07T14:52:37 you can start to micro again 2011-02-07T14:52:46 aba 2011-02-07T14:52:48 all die 2011-02-07T14:52:50 well, it's on the death side of 1:1 2011-02-07T14:52:50 no, with the rule you need to see all your enemies' enemies 2011-02-07T14:53:10 Zannick: but you don't care about it recursively with my closed form version. you do with the iterative version 2011-02-07T14:53:14 or lack thereof 2011-02-07T14:53:20 true 2011-02-07T14:53:21 Zannick: with mine you only have to look one level deep 2011-02-07T14:53:44 the closed form solution for this one would be a recursive algorithm 2011-02-07T14:53:47 and slow 2011-02-07T14:53:56 well, in any case, i support using a rule xor an iterative process, but trying to use or define both at the same time is confusing 2011-02-07T14:54:29 i just wanted to be able to explain it in a non iterative terminology because i think it would have been simpler 2011-02-07T14:54:38 this isn't about proposing an alternative 2011-02-07T14:54:55 or.. using both 2011-02-07T14:55:02 i'm not even sure where that came from? 2011-02-07T14:55:16 sorry, trying to explain one with another was confusing 2011-02-07T14:55:21 if they are equivalent then there's no such thing as using both 2011-02-07T14:55:33 or at least it doesn't makes sense to talk about them as different things 2011-02-07T14:55:37 i think saying "for each x; for each y; blah" is fine 2011-02-07T14:56:43 it's fine in that it works and the algorithm is simple. it's not fine in that it requires a lot of thought just to figure out what will happen 2011-02-07T14:57:00 in ab.c..d...e....f, the presence of a determines if f lives or dies 2011-02-07T14:57:08 yeah that's crazy! 2011-02-07T14:57:28 i agree; that is silly 2011-02-07T14:57:40 it's not totally silly 2011-02-07T14:57:52 extra crazy if a is actually on the same team as f 2011-02-07T14:58:02 by killing an extra ant you kill another of your own, wtf 2011-02-07T14:58:22 you'd have to have 3 colors for that 2011-02-07T14:59:02 it which case, general intuition would tell you to back off a little until the kill each other 2011-02-07T14:59:06 RB.B..R...B....R 2011-02-07T14:59:28 nope 2011-02-07T14:59:38 if a isn't there, b.b don't fight 2011-02-07T14:59:49 .B.B..R...B....R 2011-02-07T14:59:54 oh duh 2011-02-07T15:00:00 f dies anyway 2011-02-07T15:00:31 well i still think it's weird 2011-02-07T15:00:34 it might be crazy, from a fog of war perspective 2011-02-07T15:00:52 but, it would help you get extra info 2011-02-07T15:01:17 if you move an ant toward an enemy and are in range, but the enemy dies and you live, then there is a 3rd part 2011-02-07T15:01:43 it allows for some micro 2011-02-07T15:01:53 or at least info gathering 2011-02-07T15:02:15 the micro this encourages is to only attack one at a time and keep your forces spread out 2011-02-07T15:02:38 try to take one ant into a group of opponents that are too closely packed when possible 2011-02-07T15:02:41 well, anything with 1:1 will do that 2011-02-07T15:02:51 no, true 1:1 wouldn't encourage that 2011-02-07T15:03:01 taking one ant into a dense group would just kill one ant from that group 2011-02-07T15:03:37 the current rule is the same, unless you happen to step within the exact same distance as 2 ants 2011-02-07T15:04:12 so, from a defense perspective, it is good to send out interceptors so you don't lose 2:1 2011-02-07T15:04:14 right, except that in this one your opponent will be trying very hard to prevent that 2011-02-07T15:04:17 *** carbono has quit IRC (Ping timeout: 240 seconds) 2011-02-07T15:04:33 with 1:1, dense/loose doesn't make a difference 2011-02-07T15:04:50 with this you want to be loose 2011-02-07T15:05:14 with enemies of enemies you want to be... kind of dense, or in a formation 2011-02-07T15:05:53 distance to yourself doesn't matter, but you want to be a little farther from the enemy that his enemy is 2011-02-07T15:06:40 it does encourage some type of formation different from true 1:1 2011-02-07T15:06:48 i just mean you want to avoid cases where an enemy can ever get the same distance from two of your ants 2011-02-07T15:06:51 but a line of ants will be fine 2011-02-07T15:07:05 the attacker will always be closest to 1 ant 2011-02-07T15:07:13 no matter what they try 2011-02-07T15:07:16 a line of ants is fine except when fighting on two fronts 2011-02-07T15:07:35 err 2011-02-07T15:07:40 as an attacker 2011-02-07T15:07:44 two lines is bad 2011-02-07T15:08:06 you want to always attack with as few as possible, basically, and just use the rest of your ants to herd them around 2011-02-07T15:08:31 which does sounds like compelling enough micro 2011-02-07T15:08:45 in a "game of chicken" sort of way 2011-02-07T15:08:49 if you attack with n ants, you are guaranteed at least n kills 2011-02-07T15:09:39 it's no guarantee 2011-02-07T15:09:39 you can only hope for extra kills 2011-02-07T15:09:55 if you can get extra kills than so can your opponent 2011-02-07T15:10:00 *then 2011-02-07T15:10:06 well, you are guranteed that if your ant dies, you will get a kill 2011-02-07T15:10:13 yes 2011-02-07T15:10:19 but you are not guaranteed a productive ratio 2011-02-07T15:10:37 it can't be unproductive. it will be 1:1 or better 2011-02-07T15:10:47 oh wait... 2011-02-07T15:10:50 I see what your saying 2011-02-07T15:10:51 that's not true 2011-02-07T15:11:11 you are only guaranteed that if you are attacking with exactly one ant 2011-02-07T15:11:14 attack with 2, then the opponent gets the 2:1 2011-02-07T15:11:17 right 2011-02-07T15:11:23 hmm... I like it 2011-02-07T15:11:27 i don't 2011-02-07T15:11:31 micro is back, baby 2011-02-07T15:11:32 it means there will be no large battles 2011-02-07T15:11:35 just games of chicken 2011-02-07T15:12:00 all sides will just send one ant at a time 2011-02-07T15:12:07 perfectly spaced 2011-02-07T15:12:18 um 2011-02-07T15:12:40 why not use a matching algorithm, then? 2011-02-07T15:12:49 ? 2011-02-07T15:12:51 because then it's not deterministic 2011-02-07T15:13:00 you are guaranteed that when an ant kills another, it kills that ant back 2011-02-07T15:13:01 we have to go back to ant serial numbers 2011-02-07T15:13:09 this isn't deterministic either! 2011-02-07T15:13:10 ah that's what you mean 2011-02-07T15:13:12 yes it 2011-02-07T15:13:13 yes it is 2011-02-07T15:13:14 is 2011-02-07T15:13:21 it's just hard 2011-02-07T15:13:26 and relies on potentially hidden information 2011-02-07T15:13:37 oh, but it's deterministic by not providing 1:1? 2011-02-07T15:13:37 well, from a bots perspective 2011-02-07T15:13:43 but it's deterministic, and there is at least a *way* that you can learn all the information to predict it exactly 2011-02-07T15:13:45 because aba all die? 2011-02-07T15:13:52 yes 2011-02-07T15:14:10 1:1 is fundamentally nondeterministic 2011-02-07T15:14:21 unless you make serial numbers public information or something 2011-02-07T15:14:44 i did suggest giving the player the ants in order 2011-02-07T15:15:07 if you only know your own ants' serial number then you have a really crazy game of stratego 2011-02-07T15:15:16 jmcarthur: please like the current rules. I'd rather not go back to true 1:1 2011-02-07T15:15:17 *numbers 2011-02-07T15:15:31 McLeopold: i like the current rules *much* better than 1:1 2011-02-07T15:15:51 okay, let's not convince Zannick otherwise on accident 2011-02-07T15:16:10 i thought i was doing a decent job of arguing *against* 1:1 here... 2011-02-07T15:16:10 i'm just gonna get back to work for a while :P 2011-02-07T15:16:42 well, if you find fault on both sides, then you are arguing *for* 1:1 2011-02-07T15:17:14 anyway, back to code for me 2011-02-07T15:17:34 being honest about pros and cons is not the same as arguing for or against 2011-02-07T15:17:44 it's a matter of prioritizing the pros and cons 2011-02-07T15:17:47 *** carbono has joined #aichallenge 2011-02-07T15:17:54 alright, i should do the same 2011-02-07T15:18:02 okay, I think blocking maps is worse than playing chicken 2011-02-07T15:18:19 and i the opposite 2011-02-07T15:18:45 now we know... 2011-02-07T15:19:46 IMO, so long as there are alternative routes or maps that don't have blockable corridors, or if blocking is actually very difficult to pull off reliably, then blocking isn't so bad 2011-02-07T15:20:19 i think of blocking overall as a bad thing though 2011-02-07T15:20:27 assuming no workarounds 2011-02-07T15:20:47 possibly worse than chicken, so i guess we sort of agree 2011-02-07T15:20:52 i just have qualifications to add :) 2011-02-07T15:23:01 *** Accoun has quit IRC () 2011-02-07T15:35:23 *** Accoun has joined #aichallenge 2011-02-07T15:36:19 *** carbono has quit IRC (Ping timeout: 240 seconds) 2011-02-07T15:52:16 *** Meatkat has joined #aichallenge 2011-02-07T15:57:56 *** sigh has joined #aichallenge 2011-02-07T16:02:53 *** carbono has joined #aichallenge 2011-02-07T16:07:17 *** sigh has quit IRC (Remote host closed the connection) 2011-02-07T16:15:49 amstan: can github cleanup line endings, are there hooks? 2011-02-07T16:16:31 McLeopold: not sure, what do you mean line endings? 2011-02-07T16:17:25 I'm in windows and don't want to piss off the unix people. 2011-02-07T16:17:34 CRLF vs LF 2011-02-07T16:17:51 git itself can do it i'm sure 2011-02-07T16:19:44 git config --global core.autocrlf true 2011-02-07T16:19:47 just found it 2011-02-07T16:20:45 the only thing about autocrlf is that if the repo already has a file with crlf then on next commit it will change every line of that file 2011-02-07T16:21:31 yea, but I think we want no CR's anyway, so it's gotta be done at sometime 2011-02-07T16:21:41 alright 2011-02-07T16:22:15 looking at diffs was pretty hard when I went from 2 spaces to 4 for indentation 2011-02-07T16:22:31 If people would just listen to Guido the first time... 2011-02-07T16:23:50 do i sense a little trolling in that sentence? ;) 2011-02-07T16:24:55 yeah, sorry 2011-02-07T16:25:05 lucky for me autocrlf was already on 2011-02-07T16:25:11 yay! 2011-02-07T16:26:04 The last time I broke a build was pretty embarrassing. I didn't even have correct syntax. 2011-02-07T16:26:26 Now I'm always paranoid about checking in code. 2011-02-07T16:37:21 *** antimatroid1 has quit IRC (Ping timeout: 246 seconds) 2011-02-07T16:45:04 *** antimatroid has joined #aichallenge 2011-02-07T16:46:57 So, what does everyone think of having a queen ant. You kill the queen, you get eliminated? 2011-02-07T16:47:42 uh, your queen get's killed, that is 2011-02-07T16:57:54 is there any advantage to having a queen ant or just the drawback? 2011-02-07T17:02:54 *** amstan has quit IRC (Ping timeout: 246 seconds) 2011-02-07T17:03:02 it means there's an objective at least 2011-02-07T17:03:20 could be extra interesting if the queen is the source of all new ants 2011-02-07T17:03:48 gets tougher to get near the queen as long as new ants are being born 2011-02-07T17:04:07 placement of new ants could be ambiguous though... 2011-02-07T17:09:52 *** Palmik has quit IRC (Read error: Connection reset by peer) 2011-02-07T17:14:50 *** carbono has quit IRC (Ping timeout: 240 seconds) 2011-02-07T17:22:20 *** sigh has joined #aichallenge 2011-02-07T17:22:46 *** mega1 has quit IRC (Ping timeout: 250 seconds) 2011-02-07T17:28:10 something ought to make the queen a little tougher maybe 2011-02-07T17:28:58 I was thinking it would make the game more like a protect the queen 2011-02-07T17:29:14 maybe only a queen can turn food into ants 2011-02-07T17:29:36 that would make the game slower 2011-02-07T17:29:52 it would turn it into the traveling salesman problem 2011-02-07T17:30:35 it would turn simpleants into one of the more complicated variants that were being worked on a while ago 2011-02-07T17:30:52 yeah, it was just an idea 2011-02-07T17:31:08 I was thinking of ender's game 2011-02-07T17:31:22 where killing the correct ship kills the fleet 2011-02-07T17:31:33 maybe the queen is only known to the bot? 2011-02-07T17:32:27 1 point per queen per turn 2011-02-07T17:42:06 *** Naktibalda has quit IRC (Remote host closed the connection) 2011-02-07T17:52:49 *** Sandern has quit IRC (Read error: Connection reset by peer) 2011-02-07T18:10:24 hmm, a hidden queen... 2011-02-07T18:10:42 kind of a cool idea 2011-02-07T18:10:52 mixed in the most important idea from stratego without all the rest 2011-02-07T18:10:56 *mixes 2011-02-07T18:16:07 maybe not *the* most important... i guess the most important is to be able to reasonably guess the value of a pieces based on movement. might actually be kinda hard if there's only one special piece 2011-02-07T18:31:32 *** delt0r_ has joined #aichallenge 2011-02-07T18:32:44 *** delt0r___ has quit IRC (Ping timeout: 240 seconds) 2011-02-07T18:48:46 *** carbono has joined #aichallenge 2011-02-07T18:53:07 if you kill the queen, a blast radius of 10 wipes out all ants 2011-02-07T18:53:18 like the commander in Total Annialation 2011-02-07T18:53:46 if you kill the explosive zombie... 2011-02-07T18:54:01 Zombie Ant! 2011-02-07T18:54:17 The "host" zombie 2011-02-07T18:54:49 the zombie to which the "client" zombies connect? 2011-02-07T18:54:58 * Zannick ducks 2011-02-07T18:55:00 that way if you want your bot to give up, you can suicide bomb someone 2011-02-07T18:55:18 kingmaker? 2011-02-07T18:55:23 Zombie cyborgs? 2011-02-07T18:55:28 not really kingmaker 2011-02-07T18:55:30 just fun 2011-02-07T18:55:53 the visualizer can shake the entire browser screen when it happens 2011-02-07T18:56:43 imagine 2 queens close, one goes off, then kills the other, which goes off 2011-02-07T18:57:13 It was always hilarious in TA when you hunted the the other commander 2011-02-07T18:57:23 it was a chain reaction of death and destruction 2011-02-07T19:06:32 opinions on kill counts? 2011-02-07T19:06:46 if I eliminate a group of ants [a,b] 2011-02-07T19:06:56 a gets 1 kill, b gets 1 kill 2011-02-07T19:07:02 [a,a,b] 2011-02-07T19:07:07 b=2 a=1 2011-02-07T19:07:12 [a,a,b,c] 2011-02-07T19:07:20 a=2, b=3, c=3? 2011-02-07T19:07:40 I'm okay with the points not matching the actual number of kills. 2011-02-07T19:07:49 jmcarthur? 2011-02-07T19:08:03 what if d enters the fray? 2011-02-07T19:08:12 [a,a,b,c,d] 2011-02-07T19:08:20 a,b,c gain a point each, and d gains 4 2011-02-07T19:08:27 a=2, b=4, c=4, d=4 2011-02-07T19:08:53 this would be a group that is all equidistant 2011-02-07T19:09:08 i'm saying this makes it worth it to toss an ant into someone else's fight to gain points 2011-02-07T19:09:32 unless you want to keep your ant around to get more 2011-02-07T19:09:47 it could be a last turn move 2011-02-07T19:10:01 hm, depends on how else one would score points 2011-02-07T19:10:11 and how many points games tend to be decided by 2011-02-07T19:11:01 in general, there will be only 2 ants per kill group 2011-02-07T19:11:13 so the scores should be fairly close to 1 kill one point 2011-02-07T19:11:25 I'm just thinking of edge cases here 2011-02-07T19:11:33 [a,b,c] 2011-02-07T19:11:51 handing out 2 points to each is kinda much 2011-02-07T19:12:05 maybe I need to spread 3 points around to all 2011-02-07T19:12:15 [a,a,b,c] is for points 2011-02-07T19:12:17 four 2011-02-07T19:12:28 it makes sense that a=2 b=1 c=1 2011-02-07T19:12:47 max(num_enemies, num_allies) then? 2011-02-07T19:12:55 but [a,a,b], b=2 a=1 2011-02-07T19:13:19 min(num_enemies, num_allies)? 2011-02-07T19:13:27 er, yeah 2011-02-07T19:13:28 lol 2011-02-07T19:13:41 so [a,a,b] would only hand out 2 points 2011-02-07T19:14:00 it's a weird case 2011-02-07T19:14:19 it would be the most common edge case 2011-02-07T19:14:25 more common than [a,b,c] 2011-02-07T19:15:57 maybe reward extra points to the player that lost less ants? 2011-02-07T19:16:19 hm, i'm envisioning this wrong 2011-02-07T19:16:54 [a,a,b] and [a,a,b,c] are really different cases 2011-02-07T19:17:19 min(enemies) should be part of it 2011-02-07T19:18:45 min(enemies, allies) + len(largest_player) - len(this_player) ? 2011-02-07T19:19:07 so a:2, b:2, c:2 2011-02-07T19:19:15 for [a,a,b,c] 2011-02-07T19:19:37 and [a,a,b] = a:1, b:2 2011-02-07T19:20:06 *** Umsturz has joined #aichallenge 2011-02-07T19:20:14 [a,b,c] = a:1, b:1, c:1 2011-02-07T19:20:45 allies/enemies 2011-02-07T19:21:00 enemies/allies 2011-02-07T19:21:04 ? 2011-02-07T19:22:02 sorry, enemies = len(ants not of this player), allies = len(ants of this player) 2011-02-07T19:22:09 yes 2011-02-07T19:23:08 enemies/allies would be interesting 2011-02-07T19:23:09 so for an easy case [a,a,b], the deaths of a go to the other players 2011-02-07T19:23:26 so b gets 2, and vice versa, a gets 1 2011-02-07T19:23:47 [a,a,b,c] a's 2 splits between b and c, so 1 point each 2011-02-07T19:24:08 b's 1 death splits between a and c, so .5 each? 2011-02-07T19:24:24 that would be a=3, b=.5, c=.5 2011-02-07T19:24:40 a=2, no? 2011-02-07T19:24:47 er, a=1 2011-02-07T19:25:01 a=1, b=1.5, c=1.5, yeah, I was wrong 2011-02-07T19:25:23 not bad, other than now we need floats 2011-02-07T19:25:36 only for score 2011-02-07T19:26:11 so, that's enemies/allies 2011-02-07T19:26:29 no 2011-02-07T19:27:15 enemy ants/enemy count 2011-02-07T19:27:39 average enemy size 2011-02-07T19:27:42 in other words 2011-02-07T19:27:49 so, it doesn't matter how many ants you send in 2011-02-07T19:28:35 well, the battle resolution shouldn't do things like kill a group of [a,a,a,a,a,b,c] 2011-02-07T19:28:50 *** nann has quit IRC (Read error: Connection reset by peer) 2011-02-07T19:28:58 if we can construct the proper molecule, then yes 2011-02-07T19:29:26 but yes 2011-02-07T19:29:28 .aa. 2011-02-07T19:29:28 abca 2011-02-07T19:29:28 .aa. 2011-02-07T19:29:37 oh dear 2011-02-07T19:29:45 don't be stupid and do what a just did 2011-02-07T19:30:30 jmcarthur was talking about how the current death rules encourage a bit of a game of chicken 2011-02-07T19:30:48 if the scoring can reward doing the opposite, it may balance out better 2011-02-07T19:31:58 well, this average enemy size scoring encourages trying to get single ants in groups of enemies 2011-02-07T19:32:13 right, which is the opposite of what I want 2011-02-07T19:32:29 I do favor 1 point per death, even if it seems silly to state it that way 2011-02-07T19:33:00 except for the case of [a,a,b] 2011-02-07T19:33:14 Take each killed ant, apportion 1 point among its enemies. 2011-02-07T19:33:26 that's average enemy size 2011-02-07T19:33:34 that's exactly what we just talked about 2011-02-07T19:33:47 unless you apportion it among each enemy ant 2011-02-07T19:33:59 I meant per ant. 2011-02-07T19:34:06 So if you send more ants to a battle, you get more reward. 2011-02-07T19:34:18 Because in theory you would contribute more to killing enemies. 2011-02-07T19:34:30 so, giving b more points in the [a,a,b] case encourages the game of chicken 2011-02-07T19:34:40 allies * enemies / total? 2011-02-07T19:35:35 [a,a,b]: a=2/3, b=2/3 2011-02-07T19:36:00 I'm trying to put jbroman's idea into math, and failing 2011-02-07T19:36:01 [a,a,b,c]: a=1, b=3/4, c=3/4 2011-02-07T19:37:35 well, jbroman's idea is more like allies * sum_Enemy (len(Enemy)/(total-len(Enemy)) 2011-02-07T19:37:37 *** amstan has joined #aichallenge 2011-02-07T19:37:37 *** ChanServ sets mode: +o amstan 2011-02-07T19:37:51 sum(allies/enemies) 2011-02-07T19:38:34 *** Umsturz has quit IRC (Quit: Umsturz) 2011-02-07T19:38:35 so [a,a,b,c] in that case would be a:2/3, b=4/3, c=4/3 2011-02-07T19:38:41 er, sorry 2011-02-07T19:38:47 a=4/3 2011-02-07T19:39:10 [a,a,b] : a=1,b=2 2011-02-07T19:39:47 I like that best 2011-02-07T19:40:08 I like that sum(scores) = # of kills 2011-02-07T19:40:15 yeah, sum(allies/enemies) over each enemy, then times our own allies 2011-02-07T19:41:05 sum(scores) = # of kills is fair for bots not in that battle, any thing else would be unfair 2011-02-07T19:43:15 sum(e.count / e.enemy_count for e in enemies) 2011-02-07T19:43:38 sum(e.count / e.enemy_count * allies for e in enemies) 2011-02-07T19:44:01 a.count * sum(e.count / e.enemy_count for e in a.enemies) 2011-02-07T19:44:22 doesn't the ally count multiply need to be inside? 2011-02-07T19:44:36 hmm... 2011-02-07T19:44:44 you can factor it out 2011-02-07T19:44:47 it won't matter since it's not based on e 2011-02-07T19:47:03 *** javagamer_ has joined #aichallenge 2011-02-07T19:47:08 *** Apophis has joined #aichallenge 2011-02-07T19:48:21 *** javagamer has quit IRC (Ping timeout: 240 seconds) 2011-02-07T19:57:25 *** carbono has quit IRC () 2011-02-07T19:59:43 "the visualizer can shake the entire browser screen" - because people like programs to take control of their operating system :D 2011-02-07T20:00:30 oh, and a.enemies are the enemy players in the conflict, and a.enemy_count is the number of enemy ants 2011-02-07T20:01:42 any updates on which roadmap is settled on for next contest ? 2011-02-07T20:01:46 *** amstan_ has joined #aichallenge 2011-02-07T20:01:46 *** ChanServ sets mode: +o amstan_ 2011-02-07T20:02:13 nullkuhl: how much detail do you need? 2011-02-07T20:02:54 *** amstan has quit IRC (Remote host closed the connection) 2011-02-07T20:03:25 Frontier: all details :P 2011-02-07T20:03:36 looks like jeff likes the ant idea. so you can start to write a path finding algorithm 2011-02-07T20:04:11 Zannick: if I gave you ants = [1,1,2,3], can you return [0,1.3,1.3,1.3]? I'm almost there 2011-02-07T20:04:11 ant ? 2011-02-07T20:04:44 Well, some sort of grid with walls/water that 'agents' move on and kill each other 2011-02-07T20:05:17 you see what McLeopold is talking about. It is all weird at the moment. 2011-02-07T20:05:46 numbers are flying around and battle resolution schemes are discussed 2011-02-07T20:05:53 you mean [0,1.3,1.3,1.3] is the mapping from player id to score? 2011-02-07T20:05:57 Frontier: this was never mentioned on the forums was it ? 2011-02-07T20:06:01 yes 2011-02-07T20:06:14 yeah, that's what the algorithm would give 2011-02-07T20:06:15 *** Mathnerd314 has joined #aichallenge 2011-02-07T20:06:22 +/- .03333333 2011-02-07T20:06:26 :P 2011-02-07T20:06:43 nullkuhl: it all over the forums 2011-02-07T20:07:15 nullkuhl: I don't know. I'm totally overrun by all the new ideas to the ant game. But it IS the ant game that is in the focus 2011-02-07T20:07:47 http://ai-contest.com/forum/viewtopic.php?f=21&t=1312 2011-02-07T20:07:56 that's the closest example 2011-02-07T20:08:48 I'm just eating Nutella and curd waiting for something official 2011-02-07T20:11:12 You should try it. the mix of hazlenut and curd is really good 2011-02-07T20:13:00 jmcarthur: you about? 2011-02-07T20:14:25 contestbot later tell jmcarthur this is another interesting micro battle system that I kinda like http://ai-contest.com/forum/viewtopic.php?f=21&t=1313&view=unread#p8600 2011-02-07T20:14:25 McLeopold: I come to serve. 2011-02-07T20:14:47 McLeopold ant bot wont do this term :D 2011-02-07T20:15:21 oh, it will... 2011-02-07T20:19:30 hm, that is interesting 2011-02-07T20:19:58 it still allows for a 3:1 clobbering if you know what your doing 2011-02-07T20:20:13 but, it doesn't allow blocking 2011-02-07T20:20:38 the defense would have to be active and guess the enemy attacks 2011-02-07T20:21:09 anyone here familiar with the details of trueskill 2011-02-07T20:21:24 yes 2011-02-07T20:22:35 in the results of a multiplayer game does trueskill just want an ordering or is player 1 with 10 p2 with 5 and p3 with 1 different from p1 with 10, p2 with 9, p3 with 1 2011-02-07T20:22:54 just an ordering 2011-02-07T20:23:36 http://atom.research.microsoft.com/trueskillranking/rankcalculator.aspx 2011-02-07T20:24:09 you can see that the game outcome box only gives you the ability to rank, not provide scores 2011-02-07T20:24:57 *** Blkt has quit IRC (Quit: ERROR: do not makunbound t please!) 2011-02-07T20:25:08 yep, then I think just ordering the players by how long they survive would be a nice simple, intuitive and have good incentives 2011-02-07T20:25:19 no way 2011-02-07T20:25:30 bad incentives 2011-02-07T20:25:34 but it is simple 2011-02-07T20:26:12 as I mention in my reply on the forums, I think hiding is a good way to die fast 2011-02-07T20:26:37 we will find out 2011-02-07T20:27:00 if we track both types of ordering, and then see we don't like one or the other, that would answer the question 2011-02-07T20:27:32 I think even jeff wanted something like, "amount of food eaten" 2011-02-07T20:27:35 except the ordering being used will have an effect on bot behavior 2011-02-07T20:27:46 Very much so 2011-02-07T20:28:24 amount of food eaten means you have a disincentive to kill off the last opponent 2011-02-07T20:28:29 Frontier: nutella is awesome 2011-02-07T20:28:52 eating more food should correspond to survival length, but I prefer the eating food method because this is multi-player 2011-02-07T20:28:55 your better of letting him barely survive so you can be sure to eat more than everyone previously at 2011-02-07T20:29:00 if it was 1v1, it wouldn't matter 2011-02-07T20:29:03 nullkuhl: I got hold of a 1000g glass ;D 2011-02-07T20:29:32 yeah, that is interesting 2011-02-07T20:29:42 you wouldn't really know the scores of the others 2011-02-07T20:30:02 You'd have to be over most of the map to ensure there was only one left 2011-02-07T20:30:06 One disadvantage of survival scoring is that if you *do* figure out a way to barricade yourself, you cannot lose. Another is that it forces draws if we put a maximum number of turns in effect. 2011-02-07T20:30:20 not interesting, if everone figures it out it's catastrophic cause all games will go to the turn limit 2011-02-07T20:30:28 So, the lone survivor can almost guarantee himself a win 2011-02-07T20:30:52 Frontier: damn i thought my 350 is the biggest i can get 2011-02-07T20:30:53 if you're the dominant bot you will almost certainly be covering the whole map 2011-02-07T20:31:03 jbroman: we are eliminating the possibility of turtling with the battle rules 2011-02-07T20:31:20 look how quickly hunter bot spreads and it does a really poor job of it 2011-02-07T20:32:07 if there is a turn limit, you may not be able to catch up to the leader 2011-02-07T20:33:02 true, but I don't think that really matters much. The big problem is there is no incentive to try and end the game early 2011-02-07T20:33:08 if we gave the scores out each turn, a bot would know not to keep the game going 2011-02-07T20:33:48 but why bother ending it early even if you know, might as well just code it to always keep one enemy ant alive 2011-02-07T20:34:06 there's no benefit to ending early and potential damage 2011-02-07T20:35:30 we could set a score limit? 2011-02-07T20:35:40 no turn limits 2011-02-07T20:36:08 that would end the game before there is 1 left 2011-02-07T20:36:16 maybe even save more resources 2011-02-07T20:37:08 yeah, but then everyone can just try to go for the maximum score instead of fighting 2011-02-07T20:37:09 if we know there is about 1 ant created per turn, we can tune it to be pretty close to what we want 2011-02-07T20:37:17 scoring is fighting 2011-02-07T20:37:42 McLeopold's idea is good 2011-02-07T20:37:43 I thought we were discussing scoring is eating food :) 2011-02-07T20:37:53 McLeopold: Even if we set a score limit, a turn limit is nice in that it bounds game time and prevents us from having very long games because two bots that do nothing (or do something stupid and never meet) end up playing each other. 2011-02-07T20:38:07 you cannot eat food if you always avoid fights 2011-02-07T20:38:22 I think there will be the most skill differentiation by pitting the bots most directly against each other 2011-02-07T20:38:23 McLeopold: looks like that proposal is to mine as the current iterative algorithm is to the closed form distance one 2011-02-07T20:38:53 i was just wondering where did the 'ant' naming come from, i mean why is it not frogs ? tanks ? or soldiers ? :) 2011-02-07T20:38:55 jmcarthur: it's almost better than what we came up with 2011-02-07T20:39:05 it's sort of eating food is bot vs environment and fighting is bot vs bot 2011-02-07T20:39:07 i haven't thought much about it yet 2011-02-07T20:39:26 nullkuhl: zombies is in, too 2011-02-07T20:39:55 jmcarthur: it allows micro where you can take out a lot of enemies if you want, but has less of a blocking aspect than ours 2011-02-07T20:40:07 you can eat food without fighting by waiting for the food to spawn in your area 2011-02-07T20:40:07 McLeopold: it seems to satisfy my criteria so far 2011-02-07T20:40:24 nullkuhl: I think it all started with the forum post about an 'ant' game. then ideas how to alter the game play arose and noone changed the name 2011-02-07T20:40:24 jeff won't like it 2011-02-07T20:40:45 janzert: I like death or kills being the score mechanism 2011-02-07T20:41:23 it's a little harder to reason about than mine because it requires the whole map, but it also doesn't seem to have the weaknesses that mine does 2011-02-07T20:41:30 Frontier: zombies seems to be more approriate since they are kinda infecting, spreading and killing 2011-02-07T20:41:43 jmcarthur: it's iteritive 2011-02-07T20:41:47 right 2011-02-07T20:42:07 i suspect that any non-recursive closed form version is going to be a bit ad hoc though, so this might just be my favorite 2011-02-07T20:42:32 nullkuhl: There isn't really an "infection" mechanism per se at present. 2011-02-07T20:42:48 (unless eating -> infection?) 2011-02-07T20:43:15 why am i always drunk when the interesting topics are discussed? :( 2011-02-07T20:43:20 (this can still be expressed as a closed form with an inefficient, recursive algorithm, i'm sure, and it could probably be made more efficient using dynamic programming) 2011-02-07T20:43:28 Frontier: maybe you're just drunk too often? :P 2011-02-07T20:43:34 if the food wasn't static and wandered around the map, then yeah zombies would fit well 2011-02-07T20:45:07 jbroman: well from the image in the forums http://img833.imageshack.us/i/movief.gif/ it seems like infection.. 2011-02-07T20:45:38 yeah, jeff won't like it 2011-02-07T20:45:40 :( 2011-02-07T20:45:54 I guess from the visualizer it's more pliable. Doesn't explain why the uninfected stand still and get infected by competing zombies. 2011-02-07T20:46:01 But sure, it could work. 2011-02-07T20:46:12 (I still like ants better because zombies is overdone, but meh.) 2011-02-07T20:47:57 yeah we need more than George A. Romero playing the game 2011-02-07T20:48:12 *insert 'fans' 2011-02-07T20:56:45 aichallenge: McLeopold epsilon * rb408f86 / (6 files in 4 dirs): Rewrote ant_map to use [col][row] storage. Rewrote to accept orders in the form "col row direction". I think I totaly broke hunter_bot. - http://bit.ly/i6wE0u 2011-02-07T20:57:46 sweet 2011-02-07T20:58:32 just waiting for my commit privileges to be revoked now. :) 2011-02-07T20:59:12 *** McLeopold has left #aichallenge 2011-02-07T21:06:37 Zannick: ping 2011-02-07T21:06:49 jbroman: pong 2011-02-07T21:07:08 Zannick: Might I ask what your intended direction with submission.py, language.py and compiler.py is in Zeta? 2011-02-07T21:07:40 Your commit message indicates that the goal is to centralize where behaviour for each language is defined, but I'm unclear why the definitions for compiler command and execution command are so separate. 2011-02-07T21:08:02 i was intending Submission to be sort of a player object universal across the workers 2011-02-07T21:08:20 yeah, i might move some things around 2011-02-07T21:08:40 i didn't really feel compiler was a good place to put the execution command 2011-02-07T21:09:13 Zannick: I agree, but maybe putting the compiler commands into language? 2011-02-07T21:09:35 yeah, that's probably what will be done 2011-02-07T21:10:11 contestbot later tell McLeopold dimkadimon's proposal solves blocking only because it doesn't include diagonal combat. adding that to it adds blocking again, and i think removing diagonal combat from option 1 fixes the problem there as well 2011-02-07T21:10:11 jmcarthur: I come to serve. 2011-02-07T21:11:04 I was also kinda wondering why the language information in compiler.py wasn't in language.py 2011-02-07T21:11:47 jmcarthur: if you don't have diagonal combat, can't enemies end up stepping on each other? 2011-02-07T21:11:58 do they just both die then? 2011-02-07T21:12:46 jbroman: how much do you mind me changing your tabbing to conform with a different standard? 2011-02-07T21:13:57 contestbot later tell McLeopold actually, it doesn't solve blocking at all anyway. see my post in the thread 2011-02-07T21:13:57 jmcarthur: Ready to serve. 2011-02-07T21:13:57 Zannick: What standard, might I ask? 2011-02-07T21:14:09 janzert: yeah that would be the idea, but.... ^^ 2011-02-07T21:15:04 Zannick: (In general, I don't mind, but it would be nice to know to what and why.) 2011-02-07T21:15:08 jbroman: amstan and i don't like tabs, so I suggested we set a style guide... https://github.com/aichallenge/aichallenge/wiki/Python-Style-Guide 2011-02-07T21:15:20 4 space soft tabs and 80-char lines, basically 2011-02-07T21:15:30 re python style I'd prefer at least agreeing to use pep 8, and the google style guide (superset of pep 8 I believe) would be great 2011-02-07T21:16:13 Zannick: 4-space tabs sounds reasonable. I had 4-space hard tabs set by default for Python, but this is easy for me to change. 2011-02-07T21:16:20 That one gets an "absolutely, go ahead" from me. 2011-02-07T21:16:50 jmcarthur: it seems a little weird to have combat interactions more restricted than movement, but it may work out better in practice 2011-02-07T21:16:54 As for the 80-char line limit, I tend to use that as a "soft limit", but if we want to make it a hard limit, that's fine. 2011-02-07T21:17:58 PEP8 is a reasonable baseline, at least. 2011-02-07T21:18:01 pep 8 looks good 2011-02-07T21:18:10 i actually do the 79-char thing myself 2011-02-07T21:18:27 i differ on the binary operator, though 2011-02-07T21:18:52 Zannick: It's easier to do implied continuations with the PEP8 way. 2011-02-07T21:19:15 (even without extra parentheses) 2011-02-07T21:19:19 i limit to 80 not due to technical limits but just for readability 2011-02-07T21:19:27 i hate trying to read long lines 2011-02-07T21:19:46 jbroman: yeah, it just most often comes up for me when i'm using parentheses anyway 2011-02-07T21:19:51 The reason I use 80 as a soft limit is that usually 80 is plenty, but I find that there are occasionally lines that are awkward to break. Especially ones that end up at 83 chars or something. 2011-02-07T21:20:07 the awkwardness just depends on the language for me 2011-02-07T21:20:39 I'm pretty sure almost all my code is already 79 chars/line or less, but you're free to adjust that if needed. 2011-02-07T21:20:52 aichallenge: Benjamin S Wolf zeta * r3781720 / (9 files in 2 dirs): Style changes. - http://bit.ly/i2ZtkZ 2011-02-07T21:20:53 aichallenge: Benjamin S Wolf zeta * r841f553 / (worker/games/__init__.py worker/language.py): Move worker.games.Game to use submission objects as players. - http://bit.ly/f46WjZ 2011-02-07T21:20:57 i regularly break my rule with languages like Java which have very long method names and frequently deep method chains such 2011-02-07T21:21:04 *and such 2011-02-07T21:21:23 i haven't written enough python to say how frequently that would happen for me with it 2011-02-07T21:22:16 Much less often with Python than Java. 2011-02-07T21:22:17 it's not very awkward in haskell at all, probably for similar reasons that it's probably not awkward in perl... haskell is kind of a swiss army knife among functional languages 2011-02-07T21:23:08 idiomatic python often look like short lines are the norm anyway 2011-02-07T21:23:19 from what i've seen 2011-02-07T21:23:23 jmcarthur: Indeed. 2011-02-07T21:23:50 The other thing I don't like about hard limits is the way some people try to fit inside them. Like changing variable names to be two characters long so that they meet the "style guide". 2011-02-07T21:24:10 that's actually not the norm in haskell. typically haskell has very few long lines instead of very many short lines 2011-02-07T21:25:02 i guess due to everything just being one big expression 2011-02-07T21:25:06 jmcarthur: this . that $ foo (foo . bar $ asdf $ quux) 2011-02-07T21:25:19 yeah, i didn't do the compiler/language refactoring before because it's going to take a bit of time 2011-02-07T21:25:54 yeah, usually in python when I'm having a hard time with line lengths it's a cue that I've either got one statement that should be broken up, or I've gotten myself into too many indentation levels and the code is becoming a mess and it's time to step back and reorganize a bit 2011-02-07T21:26:34 Oh, that's the reason I hate 8-space-wide tabs. 2011-02-07T21:26:55 i used to have those 2011-02-07T21:27:02 If I'm three levels in (not unusual), I've already lost 30% of my space. 2011-02-07T21:27:03 I also use the 80 character limit as not quite a complete hard limit 2011-02-07T21:27:04 use those * 2011-02-07T21:27:16 and use a 90-char limit 2011-02-07T21:27:22 but it was still a mess 2011-02-07T21:28:08 out of approximately 500 lines of python in the project files I have open at the moment I see 1 that is over the limit 2011-02-07T21:29:43 and it's actually a rather complex list comprehension that should be either split up or easier just formatted on multiple lines to make it easier to read 2011-02-07T21:33:35 and like Zannick mentioned earlier I also don't strictly follow the whitespace around binary operators inside parentheses. I think I do most of the time, but certainly not always since I just saw an example where I didn't. :) 2011-02-07T21:33:59 damnit, why are you all so active while i sleep 2011-02-07T21:34:14 i really don't like that ab.c..d..e...f thing with option 2 2011-02-07T21:34:16 cause you're on the wrong side of the world :P 2011-02-07T21:36:25 McLeopold, jmcarthur: you guys were talking about the whole chicken thing and wanting to have your outside edges being "spread" out for fighting 2011-02-07T21:36:55 i preferred it when we were thinking about people going around in small swarms and trying to form the best attacking structure for the given space when confronting other ants 2011-02-07T21:37:29 it also allowed you more room to take more ants out with less, i still don't understand how it's debatable that that is awesome 2011-02-07T21:38:19 antimatroid: http://ai-contest.com/forum/viewtopic.php?f=21&t=1313#p8600 2011-02-07T21:39:53 yeah, but it's no better is it? 2011-02-07T21:39:56 antimatroid: option 1 is to that as the closed-form option 2 is to the current iterative algorithm 2011-02-07T21:40:08 antimatroid: well, the advantages i thought were there are not actually there, true 2011-02-07T21:40:11 that and option 2 require you to have full map info to make sure you can resolve battles yeah? option 1 doesn't 2011-02-07T21:40:29 correct 2011-02-07T21:40:44 i am now looking for other reasons to like that proposal i just linked to. haven't found any yet 2011-02-07T21:40:49 i thought removing blocking was one 2011-02-07T21:40:49 with option 1 and the 2 space fighting region, blocking corridors is hard and guess work 2011-02-07T21:41:02 blocking is not hard 2011-02-07T21:41:12 oh wait, yeah i realised that last night 2011-02-07T21:41:15 i went backwards 2011-02-07T21:41:22 find 1-wide corridor. stick two ants in front of it 2011-02-07T21:41:30 you have to do it jagged 2011-02-07T21:41:49 as my last post shows, it depends on the attack area 2011-02-07T21:41:58 ^^ i said with it as 2 :P 2011-02-07T21:42:10 i'm trying to avoid enemy ants ever landing in the same square 2011-02-07T21:42:28 okay sure, ranged fighting makes it at least harder to block well 2011-02-07T21:42:33 i was thinking about the visualiser last night, if we go with pixels, the visualiser could at least "slide" them into the next position each move 2011-02-07T21:42:49 yeah, that would be ideal 2011-02-07T21:42:49 so you can see who moved where 2011-02-07T21:43:00 and a dying square could "fade" 2011-02-07T21:43:27 i'm making a graphics engine for a game right now. if i get anywhere by the time this contest starts i might make an unnecessarily fancy visualizer with it just for kicks 2011-02-07T21:43:36 with dynamic lighting and everything :P 2011-02-07T21:43:37 :) 2011-02-07T21:43:52 explosions during combat 2011-02-07T21:43:58 etc. 2011-02-07T21:44:02 i don't know about explosions 2011-02-07T21:44:11 i said unnecessarily fancy. i meant it 2011-02-07T21:44:13 i want it to still be simple enough that I can see what my bot is doing and debug 2011-02-07T21:44:26 i don't mean as the official visualizer :P 2011-02-07T21:44:36 haha fair enough, it would make for a good official one 2011-02-07T21:44:37 not on tcp 2011-02-07T21:44:56 it would be a neat one to throw on youtube or something, that's all 2011-02-07T21:45:12 do you still agree that option 1 is the only one that encourages fighting in packs and with interesting formations that are hard to make? 2011-02-07T21:45:13 *** smellyhippy has quit IRC (Ping timeout: 240 seconds) 2011-02-07T21:45:21 i want that so badly, it sounds so awesome 2011-02-07T21:45:38 well, dimkadimon's encourages the same style of micro i think 2011-02-07T21:45:42 whereas the others encourage trying to fight more ants with less, which is as you said, spreading yourself out 2011-02-07T21:46:15 dimkadimon's is the same as option 1 except for being more "complete" (and as a result requiring the entire map...) 2011-02-07T21:46:40 option 1 looks only a couple levels deep, but dimkadimon's looks as far as necessary to determine a more accurate combative strength, basically 2011-02-07T21:46:47 i think it's good if people can work it out within their view area 2011-02-07T21:46:56 if we were to re-express it as a local algorithm 2011-02-07T21:47:42 i do too. i think we need to express it in the simplest possible way though, but it seems as though a lot of people are not seeing its simplicity 2011-02-07T21:48:05 or its intuition 2011-02-07T21:48:19 maybe i need to add those diagrams with numbers on each player 2011-02-07T21:48:25 i think that would be good 2011-02-07T21:49:13 maybe even show the attack area for selected ants and show exactly how you are determining the result for those ants 2011-02-07T21:50:52 that example you corrected me on would be good for that 2011-02-07T21:51:33 *** smellyhippy has joined #aichallenge 2011-02-07T21:51:44 you might want to explain why you want ranged combat. i didn't go into much detail on that in my post, and left out that it can potentially alleviate the blocking issue 2011-02-07T21:52:03 *** McLeopold1 has joined #aichallenge 2011-02-07T21:52:44 McLeopold1: dimkadimon's proposal doesn't solve blocking 2011-02-07T21:52:59 McLeopold1: see my new post in the thread 2011-02-07T21:53:00 jmcarthur: i'm going to add those numbers, and a third branch for dimka's then maybe make a new post in the thread outlining options again maybe 2011-02-07T21:53:14 antimatroid: do it 2011-02-07T21:58:28 antimatroid: btw, in the bottom center one, the blue player could attack more efficiently from the same angle with option 1 by, oddly enough, spreading out a bit 2011-02-07T21:58:44 could kill two reds instead of just one 2011-02-07T21:59:32 oh wait. 2011-02-07T21:59:39 i was using the wrong distance again maybe 2011-02-07T21:59:48 lemme just try this a few ways... 2011-02-07T21:59:53 you're using manhattan in these, right? 2011-02-07T22:00:11 i was using 8 around again. might not even make a difference there though 2011-02-07T22:00:32 but i kind of suspect now that you got option 1 wrong on that one 2011-02-07T22:01:32 ah no, you had it right 2011-02-07T22:02:32 antimatroid: A-A-A;BBBBB <-- fares better for A than -AAA-;BBBBB 2011-02-07T22:03:08 2 thoughts, I'm opposed to Manhattan distance. Second, since there will not be hills, I'd like a '!' in the map to indicate a dead ant. 2011-02-07T22:03:59 McLeopold1: why show the dead ant? or are you wanting it to block and be moveable like we were talking about before? 2011-02-07T22:04:20 so you can tell what happened 2011-02-07T22:04:21 or is it just to inform the bot that an ant died? 2011-02-07T22:04:23 ah 2011-02-07T22:04:28 okay 2011-02-07T22:04:40 otherwise, you don't really know what moves the opponent made 2011-02-07T22:05:06 it would be like distance 1 planets in planetwars 2011-02-07T22:05:07 so a dead ant is like '.' but passing informtation? but you also don't know where they moved? 2011-02-07T22:05:13 antimatroid: AA-A-;BBBBB <-- A gets three kills there 2011-02-07T22:05:32 doh, no it doesn't 2011-02-07T22:05:34 just two 2011-02-07T22:05:38 yeah was going to say :P 2011-02-07T22:05:42 so only as good as my last suggestion 2011-02-07T22:05:54 *** McLeopold1 has left #aichallenge 2011-02-07T22:06:03 i don't see the need for dead ant info 2011-02-07T22:06:36 it would also be awesome for watching bots forming weird structures for battle 2011-02-07T22:06:43 as opposed to ants just walking at each other all the time 2011-02-07T22:07:55 i think option 2 is the least intuitive 2011-02-07T22:08:53 antimatroid: by shifting two to the left, A can force an even tradeoff: AAA---;-BBBBB ==> A-----;---BBB 2011-02-07T22:10:00 assuming the bot gets a chance to do that at all, of course 2011-02-07T22:10:21 point is that you can show that 3 vs. 5 doesn't necessary mean the result is 0 vs. 4 2011-02-07T22:10:52 jmcarthur: yeah, it's so awesome :( 2011-02-07T22:11:05 am i making dimka's option 3? 2011-02-07T22:11:10 i point that out so you can add it to the graphic 2011-02-07T22:11:11 seems weird when it's so similar to 1? 2011-02-07T22:11:24 i dunno, up to you 2011-02-07T22:11:33 i'd do it 2011-02-07T22:11:37 just to show the similarities 2011-02-07T22:11:55 although if the combat range is a required part of that proposal then somebody will call shananigans 2011-02-07T22:12:01 *shenanigans? 2011-02-07T22:13:36 lol, i think there was an error with my first example 2011-02-07T22:14:15 oh, i think that's good 2011-02-07T22:14:43 lol you did 2011-02-07T22:14:50 should leave B-B 2011-02-07T22:14:52 yep 2011-02-07T22:21:50 jmcarthur: what do you mean when you say you don't like using euclidean? 2011-02-07T22:22:04 manhatten* 2011-02-07T22:28:53 *** chris__0076 is now known as chris_0076 2011-02-07T22:29:08 bah, i need to make my grids larger 2011-02-07T23:09:28 antimatroid: mcleopold said that 2011-02-07T23:09:36 i'm not decided on what distance metric i want 2011-02-07T23:11:44 jmcarthur: http://i.imgur.com/gN29M.png 2011-02-07T23:11:50 i'm working on more, but that's a start? 2011-02-07T23:12:44 i need to make some that give 1 and 3 differing 2011-02-07T23:12:47 and add in the other old ones 2011-02-07T23:12:59 i'll try out those larger blockable regions too 2011-02-07T23:16:54 ...why is groovy being compiled when we can run it as a script? 2011-02-07T23:17:25 maybe it runs faster compiled? 2011-02-07T23:17:34 Not sure, but my inclination is to allow things to be compiled that can be fairly easily. 2011-02-07T23:17:39 many languages can be interpreted but are probably better off compiled 2011-02-07T23:17:46 To give them as much speed advantage as possible. 2011-02-07T23:17:52 bah, i'll leave it 2011-02-07T23:18:05 ghc can interpret haskell too, but the interpreter is waaaaaaaay slower than the compiled binary would be 2011-02-07T23:18:21 i have no problem with compiling it 2011-02-07T23:18:36 other than how it is run 2011-02-07T23:18:54 "java -cp MyBot.jar:/usr/share/groovy/embeddable/groovy-all-1.7.5.jar MyBot" 2011-02-07T23:20:02 also there was one groovy user last year, who submitted the equivalent of a starter bot 2011-02-07T23:20:54 Zannick: Still, the marginal cost of a language is small. 2011-02-07T23:20:57 yes 2011-02-07T23:21:03 it is so small 2011-02-07T23:21:17 that i am wondering why many of these languages were not enabled last year 2011-02-07T23:21:46 could we *finally* allow binaries this time? 2011-02-07T23:21:57 jmcarthur: What's the advantage of allowing binary submissions? 2011-02-07T23:22:00 I never understood that. 2011-02-07T23:22:06 i can compile with whatever compiler i want 2011-02-07T23:22:15 instead of ghc 6.6, which is old and slow as hell 2011-02-07T23:22:19 he doesn't have to worry about which haskell version the backends use 2011-02-07T23:22:21 and also with whatever libraries i want 2011-02-07T23:22:45 so, whichever language, whichever compiler, whichever compile flags, etc. 2011-02-07T23:22:50 right 2011-02-07T23:22:59 You also have to target the contest running platform (which should be homogenous, but still…). 2011-02-07T23:23:03 binary would basically allow any language that can build statically 2011-02-07T23:23:07 I guess I see the point. 2011-02-07T23:23:31 i could even mix languages 2011-02-07T23:23:35 We also lose a measure of transparency (it's harder to examine a binary submission than a source one). 2011-02-07T23:24:04 (i deviously used both haskell and C in an older version of my tron bot since ghc will build c files with gcc on your behalf) 2011-02-07T23:24:18 i'm still tempted to add .s and .S files to the c files 2011-02-07T23:24:29 i'm not sure how much that transparency actually helps us 2011-02-07T23:24:37 especially if Zannick does that ^^ ;) 2011-02-07T23:24:45 jmcarthur: In practice, probably not much, I guess. 2011-02-07T23:24:49 i didn't say i'd do it ;) 2011-02-07T23:25:01 if you did i could just spit out some assembler from ghc and go, i guess :D 2011-02-07T23:25:17 i mean, C already has asm syntax 2011-02-07T23:25:21 yeah 2011-02-07T23:25:26 asm("blah") 2011-02-07T23:25:49 btw, something we need to do is sandbox the compilers 2011-02-07T23:25:56 jmcarthur: So GHC 6.12 is that bad? 2011-02-07T23:25:58 i was hoping to automate sharing of code with a new site 2011-02-07T23:26:07 jbroman: ghc 6.6 2011-02-07T23:26:07 jmcarthur: This is probably coming in Zeta. 2011-02-07T23:26:08 that would be hard if you haven't got source submitted 2011-02-07T23:26:22 jmcarthur: Ubuntu Maverick is 6.12, at least. 2011-02-07T23:26:28 jmcarthur: let me know if you spot any errors with my images :p 2011-02-07T23:26:32 jbroman: that's much better, but ghc 7 is still much much much faster 2011-02-07T23:27:06 especially for array heavy code and for heavily numeric code (by virtue of the new llvm backend) 2011-02-07T23:27:53 but yeah, i've discovered several major security problems just due to the fact that the compilation isn't sandboxed 2011-02-07T23:28:06 some languages allow for arbitrary code to run at compile time, for example 2011-02-07T23:28:38 and even disabling that, when possible, some languages still allow you to tell the compiler that you want a "preprocessor" to run on the source file 2011-02-07T23:28:54 which can be specified in the source code 2011-02-07T23:29:42 jmcarthur: It should definitely be sandboxed in a similar manner to the other stuff eventually (again, most likely coming in Zeta), though honestly at some level people can't be too malicious. 2011-02-07T23:29:48 we ought to actually sandbox it 2011-02-07T23:30:27 jbroman: in the last contest i was able to manipulate the server's file system at will. i demonstrated it 2011-02-07T23:30:50 jmcarthur: Sure, I believe you. 2011-02-07T23:30:55 hm 2011-02-07T23:31:22 we have to sandbox it, and yet properly chown or chmod the result file so that it can be run by other workers 2011-02-07T23:32:02 i'm still not very familiar with the new distributed architecture 2011-02-07T23:32:19 Zannick: Most compilers at least set g+x. 2011-02-07T23:32:47 that might be dependent on umask? 2011-02-07T23:33:00 Zannick: Then set the umask as appropriate. 2011-02-07T23:33:01 this is just lisp, right? i don't see any other languages that actually run the source file to compile it 2011-02-07T23:33:08 jbroman: indeed 2011-02-07T23:33:15 haskell has at least two ways of running arbitrary code at compile time 2011-02-07T23:33:24 the one i exploited was template haskell (a macro system) 2011-02-07T23:33:26 not that we shouldn't sandbox all the languages for consistency 2011-02-07T23:33:30 *** AlliedEnvy has quit IRC (Remote host closed the connection) 2011-02-07T23:33:35 the other one is to call out to an arbitrary preprocessor 2011-02-07T23:34:07 which could be, say, a script or binary included with the bot that does whatever i want 2011-02-07T23:34:25 jmcarthur: Yes, we get it – you can run arbitrary stuff at compile time. :) 2011-02-07T23:34:44 Zannick was asking about which languages can do it 2011-02-07T23:34:55 i'm pretty sure D can do it too 2011-02-07T23:35:01 not sure if we even have that though 2011-02-07T23:35:04 we don't have D yet 2011-02-07T23:35:07 nor sml 2011-02-07T23:35:12 which i suspect also could 2011-02-07T23:35:31 * jmcarthur checks the language list 2011-02-07T23:36:06 *** AlliedEnvy has joined #aichallenge 2011-02-07T23:36:38 wait, which scheme is being used? seems like a compiled implementation would be nicer to provide than an interpreted one 2011-02-07T23:36:40 Zannick: This is what I had in mind for the language/compiler description: https://gist.github.com/815849 2011-02-07T23:41:38 jmcarthur: it wasn't used so far as i can tell 2011-02-07T23:42:46 jbroman: i like 2011-02-07T23:43:15 i am currently doing something similar but more verbose 2011-02-07T23:43:23 i will change this now 2011-02-07T23:43:28 jmcarthur: using the larger fight region, i think it's much harder to force better killing odds 2011-02-07T23:44:02 because you have that extra square on the larger square that can ping players "long range" 2011-02-07T23:47:23 aichallenge: Jeremy Roman zeta * rc96d302 / (worker/process.py worker/queue.py): queue errors may occur; log and then ignore them - http://bit.ly/fwzwoL 2011-02-07T23:47:29 aichallenge: Jeremy Roman zeta * r9b838df / (10 files in 2 dirs): 2011-02-07T23:47:29 aichallenge: Merge branch 'zeta' of github.com:aichallenge/aichallenge into zeta 2011-02-07T23:47:29 aichallenge: Conflicts: 2011-02-07T23:47:29 aichallenge: worker/process.py 2011-02-07T23:47:29 aichallenge: worker/queue.py - http://bit.ly/i4JwSV 2011-02-07T23:47:30 aichallenge: Jeremy Roman zeta * r5aba49f / (worker/games/__init__.py worker/submission.py): make runner set cwd - http://bit.ly/dXly1K 2011-02-07T23:47:52 CIA obviously doesn't like multi-line commit messages. 2011-02-07T23:49:34 antimatroid: yeah. micro is tough with large fight regions. this is one reason that i kind of like smaller ones