2011-02-09T00:00:46 nullkuhl: nope 2011-02-09T00:00:57 nullkuhl: there's just code everywhere 2011-02-09T00:01:02 hard to tell 2011-02-09T00:01:08 we got some specs done for ants 2011-02-09T00:01:13 but.. we're still far 2011-02-09T00:01:40 its all managed by waterloo university ? 2011-02-09T00:02:34 no 2011-02-09T00:02:45 some of us are students from there 2011-02-09T00:02:50 but... no affiliation anymore 2011-02-09T00:06:16 amstan: some requests for the new site, leaderboards for organisations and countries, and those graphs on users profiles showing ranking vs time 2011-02-09T00:06:24 so, what tron had 2011-02-09T00:06:51 antimatroid: the site redesign is for zeta 2011-02-09T00:06:56 amstan: i was wondering if i could contribute by anything, i do web dev, and graphic design. 2011-02-09T00:06:57 oh okay 2011-02-09T00:06:57 for the other one.. idk 2011-02-09T00:07:07 i just had an idea for ranking countries/organisations 2011-02-09T00:07:11 nullkuhl: we could use some design ideas for the website 2011-02-09T00:07:19 run a separate set of rankings, and assume a player from each just plays for them 2011-02-09T00:07:36 and count up accordingly, does that work when you might have the "same player" playing 2011-02-09T00:08:01 amstan: sure, what are the requirements ? 2011-02-09T00:08:30 nullkuhl: it just needs to look professional, that's pretty much it 2011-02-09T00:08:37 but more than that.. there's no limits 2011-02-09T00:09:06 *** Frontier has joined #aichallenge 2011-02-09T00:10:23 amstan: should it have a certain theme ? any preferred colors (for affiliates like google or waterloo)? 2011-02-09T00:10:47 theme... we're doing ants next, so we could do a disposable design just for ants 2011-02-09T00:10:55 there's no preferred colours 2011-02-09T00:14:10 amstan: i was just wondering about that yesterday, about "ants", i mean the idea got morphed now and includes some sort of infections, so are there any thoughts to change "ants" to "zombies" or something like that ? 2011-02-09T00:14:34 we had a vote, we're staying with ants 2011-02-09T00:15:59 oh okay 2011-02-09T00:16:42 ill start doing some prototype for the website design then, if am done with anything where should i be submitting it ? i mean are there other ppl working on the design as well submitting to somewhere ? 2011-02-09T00:17:09 *** Frontier has quit IRC (Quit: Ex-Chat) 2011-02-09T00:17:12 we're using github for source control 2011-02-09T00:17:48 *** Frontier has joined #aichallenge 2011-02-09T00:17:49 not sure if its the best place to submit a prototype, as it will probably be just an image, jpg or so 2011-02-09T00:18:04 nullkuhl: forums can also work 2011-02-09T00:18:46 yeah i know, i was just wondering whom should i wait for a feedback from, anyway ill submit to forum and pm you the thread link 2011-02-09T00:19:27 i offered to work on the site as well 2011-02-09T00:19:33 we could work on it together 2011-02-09T00:19:46 don't worry about the topic, i check the forums regularly for any new posts 2011-02-09T00:19:51 no need to pm me 2011-02-09T00:20:06 i'll reply with oppinions when you post 2011-02-09T00:22:06 ok great 2011-02-09T00:23:03 thanks for helping btw 2011-02-09T00:23:42 What is the procedure to add new programming languages? 2011-02-09T00:23:55 sure, its not much of a contribution anyway :), i am hoping i could help more later on 2011-02-09T00:24:07 Frontier: which framework? 2011-02-09T00:25:15 Framework? D with the phobos library. I think it is marture enough to take a place at the side of C++. 2011-02-09T00:26:27 Frontier: there's 2 branches being worked on, see topic 2011-02-09T00:26:59 what branches? which topic? 2011-02-09T00:27:34 Frontier: http://www.ai-contest.com/forums/viewtopic.php?f=20&t=1238 2011-02-09T00:30:32 oh, ok. I know that thread. Adding a programming language to either code base doesn't take long I assume. After all .NET has been mastered :) 2011-02-09T00:30:41 yeah 2011-02-09T00:31:05 Frontier: either this file: https://github.com/aichallenge/aichallenge/blob/epsilon/planet_wars/backend/compile_anything.py 2011-02-09T00:31:41 or this: https://github.com/aichallenge/aichallenge/blob/zeta/worker/language.py 2011-02-09T00:31:56 Adding D to either or both frameworks should be almost trivial, except for the part of getting it installed on workers 2011-02-09T00:32:14 I don't think the new framework addresses that part at all yet though 2011-02-09T00:32:37 That's a good place to start. Thank you. What else is needed for the installation? 2011-02-09T00:32:51 Just a .deb file? 2011-02-09T00:33:09 Frontier: yeah, an easy way to install it 2011-02-09T00:33:24 ideally in the ubuntu repo, if not a ppa, if not a deb, if not a source to compile 2011-02-09T00:33:26 and so on 2011-02-09T00:33:36 k 2011-02-09T00:33:38 g2g sleep 2011-02-09T00:33:40 cya 2011-02-09T00:34:26 *** janzert1 is now known as janzert 2011-02-09T00:36:03 ok, got a .deb. good night 2011-02-09T00:38:54 "CoffeeScript"? what the... oh well 2011-02-09T00:41:15 *** McLeopold has joined #aichallenge 2011-02-09T00:42:22 McLeopold: i had an idea with spawning ants, suppose you are using option 1 for battles, 2011-02-09T00:42:23 do players moves, resolve births (player with most ants in range wins, if not unique, food dies), then battle resolution? 2011-02-09T00:44:09 I don't think it makes much difference. At first I wanted food to be secured before spawning an ant. Now that we remove food in contention, it doesn't really matter. 2011-02-09T00:44:33 but this doesn't necessarily remove food in contention 2011-02-09T00:44:38 only if there's a draw for that contention 2011-02-09T00:45:28 so, removing food first, before battle, would tend to remove more food from the game 2011-02-09T00:45:53 i guess maybe 2011-02-09T00:46:34 i was looking at doing the rule afterwards, but i think you'd need to then resolve battles again 2011-02-09T00:46:38 I think I would prefer less food being removed 2011-02-09T00:46:47 yeah i agree with that 2011-02-09T00:46:48 but I could be convinced otherwise 2011-02-09T00:47:04 i thought it might make the claiming of new ants more interesting 2011-02-09T00:47:08 if there was a really compelling reason 2011-02-09T00:47:31 no major reason, just looking for the most interesting game 2011-02-09T00:47:50 it's more of a race with who can get the most there first, but if you tie, its gone 2011-02-09T00:48:05 no one would *not* go for the food 2011-02-09T00:48:38 you basically want to do that now, but just be the first there 2011-02-09T00:48:47 if you both get there, nothing strategic about it, it goes 2011-02-09T00:48:56 what would make it more interesting is if you had to hold on to the advantage for a few turns 2011-02-09T00:49:15 i think that's getting too complicated 2011-02-09T00:49:23 atm it's nice and simple 2011-02-09T00:49:29 while still interesting 2011-02-09T00:56:26 antimatroid: do you have experience with python's Queue 2011-02-09T00:56:36 McLeopold: no 2011-02-09T00:56:44 i've only ever used python for map gens 2011-02-09T00:56:53 and i learnt most of it from j3camero's last one 2011-02-09T00:57:01 ouch 2011-02-09T00:57:12 dive into python 2011-02-09T00:57:24 i've been trying (not very hard) to learn haskell 2011-02-09T00:57:42 yeah, I gave up and started lisp first 2011-02-09T00:57:49 I'll get there, just not yet 2011-02-09T00:58:15 *** delt0r___ has joined #aichallenge 2011-02-09T00:58:17 *** delt0r_ has quit IRC (Read error: Operation timed out) 2011-02-09T01:09:58 there's going to be a whole lot less memory for everyone aye? 2011-02-09T01:28:07 Zannick, you around? 2011-02-09T01:33:44 aye 2011-02-09T01:33:59 I'm having trouble with sadbox similar stuff 2011-02-09T01:34:07 I thought that you had worked on it. 2011-02-09T01:34:21 i've hacked away at it a little 2011-02-09T01:34:55 okay, I've created a process with popen, but, when I write to the process stdin, nothing seems to go 2011-02-09T01:35:02 I've added a flush, just in case 2011-02-09T01:35:29 My subprocess is a python script that is writing to a log file all the stuff that come on stdin. 2011-02-09T01:35:36 It writes a blank file 2011-02-09T01:35:50 If I run the script from the shell, it works. 2011-02-09T01:35:52 is it flushing its output to the file? 2011-02-09T01:36:05 if I run directly yes 2011-02-09T01:36:16 I can add flushes to that side to make sure 2011-02-09T01:36:38 python subprocess.Popen? 2011-02-09T01:37:02 so you're using user_sadbox? 2011-02-09T01:37:21 and sadbox.write or sadbox.write_line? 2011-02-09T01:37:29 hmm, so adding flush to the bot made it write 2011-02-09T01:37:40 No, I'm using something dmj111 wrote 2011-02-09T01:37:45 but it is similar 2011-02-09T01:37:51 same technique 2011-02-09T01:38:02 well, if the flushing output made it write 2011-02-09T01:38:03 well then 2011-02-09T01:38:03 Zannick: You are writing python code for the next contest, right? 2011-02-09T01:38:03 It looks like my new lines are getting lost 2011-02-09T01:38:10 Frontier: some 2011-02-09T01:38:22 McLeopold: really not sure what you mean 2011-02-09T01:38:46 my bot didn't record receiving new line characters from the engine. 2011-02-09T01:39:21 If we were to add the D programming language, would we want object files to be generated or just generate the final executable? 2011-02-09T01:39:21 wait, no, that's not it 2011-02-09T01:39:21 so you sent it a\nb\n and it recorded ab? 2011-02-09T01:39:53 Frontier: the C compiling steps generated object files then link it all together, so that would be fine 2011-02-09T01:40:02 s/generated/generate/ 2011-02-09T01:42:17 Frontier I would just do dmd -release -O mybot.d 2011-02-09T01:42:39 if I'm remembering my dmd command line right off the top of my head 2011-02-09T01:43:51 I don't think there is any benefit to add a separate per file compilation step in this situation 2011-02-09T01:43:58 maybe with an additional -inline 2011-02-09T01:44:13 What is the benefit in the C/C++ case? 2011-02-09T01:44:17 ahh, yeah. that's the one I was forgetting 2011-02-09T01:44:41 for whatever reason they're passing different options in the compilation and linking stages 2011-02-09T01:44:51 not really sure how that came about or why 2011-02-09T01:44:58 *they* :D 2011-02-09T01:45:13 as in someone(s) before my time :) 2011-02-09T01:45:30 i took out the -funroll-loops for zeta :P 2011-02-09T01:45:50 That was a bit esoteric honestly 2011-02-09T01:46:10 * janzert certainly didn't want to take responsibility for it :P 2011-02-09T01:46:58 I'll try and get the backend running locally and create a patch for D 2011-02-09T01:47:18 janzert and Zannick, I keep mixing you guys up. Who did what in the last contest? 2011-02-09T01:47:23 *** Palmik has joined #aichallenge 2011-02-09T01:47:28 except you want to go ahead and make the changes, janzert :) 2011-02-09T01:47:31 *** sigh has quit IRC (Ping timeout: 260 seconds) 2011-02-09T01:47:36 It must be the 'z' in your names. 2011-02-09T01:47:44 i did a small number of bugfixes, janzert ran the show 2011-02-09T01:48:17 so, janzert and I did the map analysis? 2011-02-09T01:48:33 hmm, what map analysis was that? 2011-02-09T01:48:42 average planets 2011-02-09T01:48:51 average growth per map 2011-02-09T01:49:03 i might have been involved with that, i made a mapgen fix 2011-02-09T01:49:06 well at least I was the one asking for those numbers from you anyway :) 2011-02-09T01:49:11 okay 2011-02-09T01:49:27 so, my bot is getting input 2011-02-09T01:49:43 it should be writing to stdout, but something else is crashing... 2011-02-09T01:50:01 where can i see this sadbox you are using? 2011-02-09T01:50:02 * janzert isn't really doing any of the work at the moment, just standing by and being annoying 2011-02-09T01:50:17 it's in the ants directory, called engine 2011-02-09T01:50:25 it's mostly broken 2011-02-09T01:50:54 ./playgame.py -m maps/simple1.txt bots/MyBot.py bots/MyBot.py bots/MyBot.py bots/MyBot.py 2011-02-09T01:51:01 ^^ that's the command I'm running 2011-02-09T01:53:18 okay, now I see that the engine is getting to go\n from the bot 2011-02-09T01:53:46 McLeopold: where is the engine? 2011-02-09T01:53:53 hey, is this OptionParser object part of Python? 2011-02-09T01:53:57 github 2011-02-09T01:53:59 yes 2011-02-09T01:54:09 can you link me? 2011-02-09T01:54:13 git://github.com/aichallenge/aichallenge.git 2011-02-09T01:54:17 cheers 2011-02-09T01:54:29 git clone git://github.com/aichallenge/aichallenge.git 2011-02-09T01:54:31 that is 2011-02-09T01:55:44 oh god mixing threads and processes 2011-02-09T01:56:02 so my hope was to just drop this in and have it work 2011-02-09T01:56:09 that hasn't happened 2011-02-09T01:56:20 i'm not surprised! 2011-02-09T01:56:25 So, I just want to run a bot using stdin/stdout with my engine 2011-02-09T01:56:28 no offense to dmj 2011-02-09T01:56:37 It was a work in progress 2011-02-09T01:57:13 i don't really know what is gained by running the bots separately from separate threads 2011-02-09T01:57:23 Is there an easy way I can just use the sadbox stuff? 2011-02-09T02:00:07 https://bitbucket.org/zannick/planet-wars/src/36d9e6b7b643/user_sadbox.py 2011-02-09T02:00:30 is that not in the official repo? 2011-02-09T02:00:33 basically, strip everything related to ssh or jail security and just run it in a subprocess 2011-02-09T02:00:41 no 2011-02-09T02:00:56 that is a version i modified while testing my own bot during planet-wars 2011-02-09T02:02:36 did we pick a license yet? 2011-02-09T02:03:00 for epsilon? i don't know. 2011-02-09T02:03:21 for zeta i don't know either, but there was a joke about using the wtf license 2011-02-09T02:04:18 so, you're syed? 2011-02-09T02:04:36 syed? 2011-02-09T02:05:09 oh, no i totally didn't write that file at all 2011-02-09T02:05:19 i just remarked out all the parts that needed to be remarked out 2011-02-09T02:05:45 ok 2011-02-09T02:05:51 I run with this for awhile 2011-02-09T02:06:01 oh, so 2011-02-09T02:06:13 i think i see the problem in BotThread.run 2011-02-09T02:06:20 ? 2011-02-09T02:06:31 line = self.process.stdout.readline() 2011-02-09T02:06:39 readline doesn't give a newline, iirc 2011-02-09T02:07:05 and then result.append(line) 2011-02-09T02:07:07 he was putting them in a list, then doing a '\n'.join later 2011-02-09T02:07:10 and "".join(result) 2011-02-09T02:07:11 only looking back at this occasionally, so not sure what the threads above were referring too, but generally it's easiest to do i/o with the bots by using a thread per bot 2011-02-09T02:07:23 no, there isn't a '\n'.join 2011-02-09T02:07:28 it's "".join 2011-02-09T02:08:19 * janzert wanders away again 2011-02-09T02:08:21 the old user_sadbox simply put each line into the output queue itself 2011-02-09T02:08:36 so each line was parsed separately rather than all lines from the turn 2011-02-09T02:09:33 I think I'd rather learn the sadbox way, if that is what we will use 2011-02-09T02:09:50 for epsilon, we will probably want to use that 2011-02-09T02:10:01 I remember fcntl giving me issues in windows for some reason 2011-02-09T02:10:04 for zeta, there is something slightly new going on 2011-02-09T02:10:20 i have never been certain how necessary those lines were 2011-02-09T02:10:36 especially as they were used in the non-secure case of the sadbox 2011-02-09T02:10:57 which was the case that wasn't being used 2011-02-09T02:10:59 btw, if using the sadbox from the last contest go from the one the workers were using, not the main server backend directory 2011-02-09T02:11:34 the engine and sadbox and other stuff for actually playing games in that directory should be thrown away since it bit rotted for about the last month of the contest 2011-02-09T02:12:01 all actual game playing had moved to workers at that point 2011-02-09T02:12:35 I only need enough framework to test the engine and bots 2011-02-09T02:12:58 I don't even want to try and improve or work on this part. 2011-02-09T02:13:05 you will likely be fine with my version of the user_sadbox 2011-02-09T02:13:11 ok 2011-02-09T02:13:18 it is the barest of wrappers around subprocess.Popen 2011-02-09T02:13:47 2 space python, shame on you 2011-02-09T02:13:53 not my fault 2011-02-09T02:14:12 yeah, someone previous to the last contest liked 2 space indention :( 2011-02-09T02:14:24 I'm telling Guido... 2011-02-09T02:14:34 my changes to that file were adding '#' characters to several lines 2011-02-09T02:14:39 and adding a couple print statements 2011-02-09T02:15:48 do I need the working directory stuff? 2011-02-09T02:16:17 um...no. 2011-02-09T02:16:24 no, wait, yes. 2011-02-09T02:16:38 it should just be the working directory of the bot 2011-02-09T02:16:43 it's only passed to the popen 2011-02-09T02:16:45 so 'bots/' is fine 2011-02-09T02:16:48 ok 2011-02-09T02:17:08 and the third arg 'security_on' should be False 2011-02-09T02:17:15 I removed it 2011-02-09T02:17:29 either way :) 2011-02-09T02:17:51 so, I'm thinking of a protocol for turn 0 2011-02-09T02:18:21 send info, send "ready", receive "go", send turn 1 stuff, receive "go", etc 2011-02-09T02:18:34 It makes the starter bot look simple 2011-02-09T02:18:53 if "ready" then setup else if "go" then do turn 2011-02-09T02:21:21 woot, sandbox working 2011-02-09T02:24:00 I seem to need to do a sys.stdout.flush in the bot 2011-02-09T02:24:06 that seems weird 2011-02-09T02:24:19 Zannick: ^^ ? 2011-02-09T02:24:22 Zannick: Where should the server_info.py go? Should I just create one in my backend directory for testing? 2011-02-09T02:24:52 McLeopold: what's wrong with what's on etherpad? 2011-02-09T02:25:10 antimatroid: I'm not looking at etherpad write now 2011-02-09T02:25:15 McLeopold: i don't know; might have been the case in the contest, too 2011-02-09T02:25:36 Frontier: you don't really need one; it's for connecting to the server sql database 2011-02-09T02:25:37 McLeopold: can you go and look if you want to talk io :P 2011-02-09T02:25:48 not right now 2011-02-09T02:25:48 Frontier: i just always turned everything off that used that 2011-02-09T02:25:56 maybe when your sleeping ;) 2011-02-09T02:27:06 Zannick: I want to check that the additional line in the sql table is working as well. 2011-02-09T02:27:18 starter pack did do a fllush 2011-02-09T02:28:16 Frontier: then yeah, just put it somewhere that the scripts that import it can reach it 2011-02-09T02:28:45 aichallenge: Scott Hamilton epsilon * rd89dfe6 / (4 files in 2 dirs): Added sandbox for testing engine. Will rewrite engine to use this instead. - http://bit.ly/hRQVUf 2011-02-09T02:29:13 later 2011-02-09T02:29:24 *** McLeopold has quit IRC (Quit: Leaving) 2011-02-09T02:30:00 stupid question: how do I define this server_info structure in python ^^ ? 2011-02-09T02:31:01 ah got it, forgot the ',' 2011-02-09T02:39:51 it works and compiles my C++ entry. 2011-02-09T02:47:41 *** mega1 has joined #aichallenge 2011-02-09T02:54:29 *** sigh has joined #aichallenge 2011-02-09T03:06:03 yeah, i got my main method down to 9 lines 2011-02-09T03:07:02 http://codepad.org/V7V8vbMh 2011-02-09T03:07:11 simplicity ftw 2011-02-09T03:20:46 Zannick: Does the compiler have to be available as and produce 64-bit executables? I just recalled that D doesn't have 64-bit support yet. 2011-02-09T03:21:02 i'm not sure about server specs 2011-02-09T03:21:24 i don't think it's 64bit 2011-02-09T03:21:35 I think the cloud servers are 2011-02-09T03:22:13 again, i don't know for sure 2011-02-09T03:22:58 the servers used in the last contest were 32bit only 2011-02-09T03:23:35 I'm hoping the ones used in the future can be 64bit, but for sure should still support 32bit applications as well 2011-02-09T03:23:53 ok, so that's no problem. i'm done. i put it all in a forum post now 2011-02-09T03:24:37 *** Mathnerd314 has quit IRC (Ping timeout: 240 seconds) 2011-02-09T03:33:05 *** Kingpin13 has joined #aichallenge 2011-02-09T03:34:41 *** nann has joined #aichallenge 2011-02-09T03:35:37 Here it is: http://ai-contest.com/forum/viewtopic.php?f=21&t=1315 2011-02-09T03:36:10 stupid c++ error :\ 2011-02-09T03:36:20 it's not letting me define my << operator on moves 2011-02-09T03:36:24 *** aerique has joined #aichallenge 2011-02-09T03:38:04 *** Apophis_ has quit IRC (Ping timeout: 245 seconds) 2011-02-09T03:44:38 *** tapwater has quit IRC (Quit: tapwater) 2011-02-09T04:05:45 antimatroid: Thats because the compiler knows that overloading operators is evil ;) 2011-02-09T04:09:53 delt0r___: it's wonderful! 2011-02-09T04:10:12 i overload operators like there's no tomorrow 2011-02-09T04:10:42 your compiler has become self aware and is making its on judgment calls 2011-02-09T04:10:50 own 2011-02-09T04:10:58 on>own 2011-02-09T04:11:06 where i have overloaded ? 2011-02-09T04:11:09 > 2011-02-09T04:11:10 dam 2011-02-09T04:11:21 you have to overload < if you want priority queues 2011-02-09T04:11:47 5 years and i still don't have the german as a us keylayout sorted 2011-02-09T04:17:44 does anyone know if McLeopold is planning to allow friend ants to "swap" squares? 2011-02-09T04:17:53 i think it's easier to allow it 2011-02-09T04:18:57 jmcarthur: what do you think about ants "swapping" squares? 2011-02-09T04:23:13 oh god, i had a game idea, not for now or ever, it would be madness 2011-02-09T04:23:28 wait, nevermind, it doesn't work 2011-02-09T04:24:17 hmm, what about tron, but you can move any of your blocked squares in a turn instead of a designated head, but only one .. 2011-02-09T04:24:49 you'd get long games 2011-02-09T04:25:57 multiplayer knights tour would be cool, can't land in a square that's already been landed in.. 2011-02-09T04:50:22 *** Naktibalda has joined #aichallenge 2011-02-09T04:57:33 *** boegel has joined #aichallenge 2011-02-09T05:44:37 *** Meatkat has joined #aichallenge 2011-02-09T06:25:14 *** Prillicy has quit IRC (Quit: I be bangin') 2011-02-09T07:26:05 *** CIA-37 has quit IRC (Read error: Operation timed out) 2011-02-09T07:32:48 *** CIA-15 has joined #aichallenge 2011-02-09T07:36:22 j3camero: you've got me playing galcon damn you 2011-02-09T07:46:39 *** amstan has quit IRC (Ping timeout: 240 seconds) 2011-02-09T07:55:21 *** Meatkat has quit IRC (Ping timeout: 255 seconds) 2011-02-09T08:01:05 *** Naktibalda has quit IRC (Quit: ChatZilla 0.9.86 [Firefox 3.6.8/20100722155716]) 2011-02-09T08:03:12 *** Kingpin13 has quit IRC (Ping timeout: 276 seconds) 2011-02-09T08:07:59 *** mega1 has quit IRC (Remote host closed the connection) 2011-02-09T08:11:05 *** UncleVasya has joined #aichallenge 2011-02-09T08:11:29 *** mega1 has joined #aichallenge 2011-02-09T08:15:42 *** sigh has quit IRC (Remote host closed the connection) 2011-02-09T08:18:11 *** dlila has joined #aichallenge 2011-02-09T08:35:13 *** Naktibalda has joined #aichallenge 2011-02-09T08:56:49 *** UncleVasya has quit IRC (Read error: Connection reset by peer) 2011-02-09T08:58:50 *** delt0r_ has joined #aichallenge 2011-02-09T09:00:16 *** delt0r___ has quit IRC (Ping timeout: 240 seconds) 2011-02-09T09:37:46 *** dlila has quit IRC (Quit: Leaving) 2011-02-09T09:57:36 antimatroid: what would the win conditions of that tron-like game be? 2011-02-09T10:01:25 hmm... is the intuition that the "head" can move anywhere within the "tail" and poke out of it from anywhere? i guess kind of like movement amon connected territories in risk? 2011-02-09T10:01:29 *among 2011-02-09T10:14:21 *** mega1 has quit IRC (Remote host closed the connection) 2011-02-09T10:16:00 yeah, I think another equivalent description of antimatroid's game is each player starts with one square of territory every turn you must expand your territory to one adjacent square, the first player unable to expand loses 2011-02-09T10:16:41 I do think it would actually be rather interesting 2011-02-09T10:17:16 so do it 2011-02-09T10:17:18 *i 2011-02-09T10:17:46 assuming either the maps aren't too big or there are more than 2 players 2011-02-09T10:18:42 there's still the question of what to do if two players try to, err, "poke" the same square at the same time 2011-02-09T10:21:21 hmm, yeah need some resolution rule there. probably just turn it into a 'wall' 2011-02-09T10:21:46 i.e. neutral unclaimable territory 2011-02-09T10:23:02 *** Meatkat has joined #aichallenge 2011-02-09T10:23:08 also instead of first person unable to expand loses, score by size of territory and it both makes it natural for multiplayer and allows you to short circuit filling in any territory completely surrounded by one player 2011-02-09T10:23:21 or rather only reachable by one player 2011-02-09T10:24:45 for 2 players it's still equivalent to the above 2011-02-09T10:26:06 not sure it'd be a good fit for the contest, but it seems like it might be fun to play around with sometime 2011-02-09T10:30:35 seems easy to write, too 2011-02-09T11:07:48 *** aerique has quit IRC (Quit: ...) 2011-02-09T11:09:27 *** UncleVasya has joined #aichallenge 2011-02-09T11:11:37 *** Blkt has joined #aichallenge 2011-02-09T11:12:06 good day everyone 2011-02-09T11:52:39 *** mega1 has joined #aichallenge 2011-02-09T11:59:42 *** Meatkat has quit IRC (Ping timeout: 276 seconds) 2011-02-09T12:01:40 *** McLeopold has joined #aichallenge 2011-02-09T12:12:11 antimatroid? 2011-02-09T12:18:41 *** Blkt has quit IRC (Ping timeout: 240 seconds) 2011-02-09T12:23:55 *** rebelxt1 has left #aichallenge 2011-02-09T12:34:41 *** boegel has quit IRC (Ping timeout: 240 seconds) 2011-02-09T12:36:22 McLeopold:? 2011-02-09T12:39:53 *** boegel has joined #aichallenge 2011-02-09T12:44:56 *** Naktibalda has quit IRC (Quit: ChatZilla 0.9.86 [Firefox 3.6.8/20100722155716]) 2011-02-09T12:49:33 doood 2011-02-09T12:58:56 antimaroid: yes, ants can swap spaces 2011-02-09T12:59:07 antimatroid: ^^ 2011-02-09T12:59:38 isn't it 5:00am your time? 2011-02-09T13:03:36 McLeopold: it is, i woke up 2011-02-09T13:03:49 McLeopold: good about swapping, that makes everything much easier 2011-02-09T13:04:10 i'm currently playing around with the different battle resolutsion/region sizes and what happens with food squares 2011-02-09T13:05:50 k 2011-02-09T13:06:32 so, there was the option to kill closest ants first, iteratively 2011-02-09T13:06:47 and there's the option to kill all ants in range, regardless of closeness. 2011-02-09T13:07:03 let's call them A and B 2011-02-09T13:07:11 A is closer to 1:1 2011-02-09T13:07:17 which would you prefer? 2011-02-09T13:08:32 B i think 2011-02-09T13:08:37 but i still prefer jmcarthurs rules 2011-02-09T13:09:02 by a long long way 2011-02-09T13:09:46 hehe, i hadn't heard that one 2011-02-09T13:09:55 Why isn't octal a funny number system? Because 7 10 11. 2011-02-09T13:11:11 :/ 2011-02-09T13:11:36 B is easier to code, locally deterministic 2011-02-09T13:11:44 Both allow for some micro 2011-02-09T13:12:00 i want micro to be a defining feature of the game 2011-02-09T13:12:02 The micro in A is more advanced and harder to get the 2:1 kill 2011-02-09T13:12:21 The micro in B is easier to get the 2:1 2011-02-09T13:12:53 in either instance, you want to fight with single ants yes? 2011-02-09T13:12:54 Jeff's okay with either. I think B will the the easiest to explain and understand at a glance 2011-02-09T13:13:00 with the other option, you want to roam around in small packs 2011-02-09T13:13:35 small packs would still be okay, you just need to split when you see an ant, or send out an interceptor from the pack 2011-02-09T13:13:40 so you're not even considering jmcarthur's rule anymore? 2011-02-09T13:13:56 No, because Jeff doesn't want blocking. 2011-02-09T13:14:02 I still like it, I've just lost hope. 2011-02-09T13:14:09 there's only blocking very small widths 2011-02-09T13:14:27 as far as i can tell, jeff is pretty much the only person opposed to that option 2011-02-09T13:14:51 and the only person that needs to be convinced 2011-02-09T13:14:55 :\ 2011-02-09T13:15:01 So, jmcarthur and my *original* proposal? Or something else? 2011-02-09T13:15:24 I pretty sure our original allowed for blocking. 2011-02-09T13:15:35 McLeopold: aba with your new option A kills all three yes? 2011-02-09T13:15:42 i think that's silly 2011-02-09T13:15:47 the enemies of enemies one only allowed for blocking of like 1-wide corridors 2011-02-09T13:15:48 with both A and B, yes 2011-02-09T13:16:23 a.b.a for an actual example that can happen 2011-02-09T13:16:30 i think b should die in that encounter and only b 2011-02-09T13:17:33 one 'a' dying along with the 'b' would also make sense, but it would be nondeterministic, which makes this an obvious choice for me 2011-02-09T13:19:01 McLeopold: basically, i'm not wanting to give up on that rule, i think it's far superior to the others 2011-02-09T13:19:05 :P 2011-02-09T13:19:27 *** Apophis has joined #aichallenge 2011-02-09T13:19:34 Okay, from a macro level, with a less than 1:1 option, the micro allows you to kill 2 ants with 1 2011-02-09T13:19:55 with a more that 1:1, it allows you to defend without losses 2011-02-09T13:20:18 Jeff has been okay with less than 1:1 kill ratios, but not more. 2011-02-09T13:20:45 I may have the less/more backwards, but I hope you know what I'm going for. 2011-02-09T13:20:52 i think it should be costly to take someone's region? 2011-02-09T13:20:59 favouring defending yes? 2011-02-09T13:21:20 So, you need to convince Jeff that being able to defend well, as a strategy, is better than being able to kill effeciently. 2011-02-09T13:21:55 Ultimately, it would be a difference in clumping ants, or spreading them out. 2011-02-09T13:22:16 Jeff has been against clumping and formation being a part of the game. 2011-02-09T13:22:42 i am in favour of that, i think it would make it more interesting strategically and visually 2011-02-09T13:23:11 and i don't see it as being much different what people need to do in order to play "well" in either case 2011-02-09T13:23:16 So, convince Jeff. I will support it. But for now, I'm trying to move the contest forward by getting something up and running. 2011-02-09T13:23:30 j3camero: are you about? 2011-02-09T13:25:08 McLeopold: are you still showing dead ants? 2011-02-09T13:25:16 i think it might be nice to know what team it was from? 2011-02-09T13:25:28 what if dead ants were capitals? and were equivalent to '.'? 2011-02-09T13:26:27 That would work 2011-02-09T13:26:39 that way you can count the number of dead ants you see of each other player 2011-02-09T13:26:45 but, we couldn't have rules where 2 ants land on the same square 2011-02-09T13:26:54 true 2011-02-09T13:27:08 Actually, if we give the orders of the ant, you would know. 2011-02-09T13:27:18 that may give reason to use the larger fighting region, other than it being easier to do the visualiser 2011-02-09T13:27:27 I'm thinking something like: 2011-02-09T13:27:45 [AD] from_x, from_y, to_x, to_y 2011-02-09T13:27:52 a=ant, d=dead_ant 2011-02-09T13:27:57 a=alive_ant 2011-02-09T13:28:15 wait, are you still using x and y instead of row/col? 2011-02-09T13:28:30 for bot communication, yes 2011-02-09T13:28:38 internal storage is row/col 2011-02-09T13:28:59 i'd rather everything was row/col if possible, it's consistent :P 2011-02-09T13:29:12 i think for bot communication x,y is fine 2011-02-09T13:29:21 it's easier to explain x,y 2011-02-09T13:29:30 how? 2011-02-09T13:29:36 go to row, go to col, there 2011-02-09T13:29:38 s your element 2011-02-09T13:30:04 cause the x axis is always horizontal 2011-02-09T13:30:20 idk, it doesn't matter 2011-02-09T13:30:40 you maps may all be sideways. ;) 2011-02-09T13:30:44 printing a map that was used as x,y is tricker 2011-02-09T13:31:32 well, not as efficient, but still easy 2011-02-09T13:31:44 requires more thought 2011-02-09T13:31:52 transpose is an easy function to use 2011-02-09T13:32:22 if you can convince jeff of alternate combat rules, I'll go row/col 2011-02-09T13:32:28 lol 2011-02-09T13:32:31 :) 2011-02-09T13:32:35 challenge accepted 2011-02-09T13:35:08 McLeopold: can you make "kill all fighting ants" option 3/C? 2011-02-09T13:35:09 i' 2011-02-09T13:35:17 ll make it the third branch on those images 2011-02-09T13:35:48 has anything been decided about fight region? 2011-02-09T13:36:13 i think it's nice if ants can't land in the same square, it's easier to program, easier to visualise, would allow showing dead ants as before... 2011-02-09T13:37:18 yeah, I'd rather have a range of at least sqrt(5) 2011-02-09T13:37:41 is that the 2 square? 2011-02-09T13:37:47 5*? 2011-02-09T13:38:00 it's the range of a knight in chess 2011-02-09T13:38:02 i think that means you can't have a draw for food squares? 2011-02-09T13:38:26 or, 5x5 box without the corners 2011-02-09T13:38:35 oh, isn't that just 2 then? 2011-02-09T13:38:50 that would be sqrt(4) 2011-02-09T13:39:04 and miss the knight moves 2011-02-09T13:39:13 oh, i see 2011-02-09T13:39:13 it would be a diamond 2011-02-09T13:39:34 wait, i see 2011-02-09T13:40:07 what's the benefit to that over 2? 2011-02-09T13:40:18 --a----a-- would be a minimal defense line for a 10 wide passage 2011-02-09T13:40:30 um, more death? 2011-02-09T13:41:01 it's not a tessellation, so there is no "perfect" defense coverage 2011-02-09T13:41:44 hmmm okay 2011-02-09T13:42:30 so, wanna go with hex grids? 2011-02-09T13:42:51 i'm curious what it'd be like 2011-02-09T13:43:17 hex grids would be cool, but harder to do sliding squares? 2011-02-09T13:43:20 hexes* 2011-02-09T13:43:41 it would just have to be a jittering square instead 2011-02-09T13:44:11 you could play on a directed graph 2011-02-09T13:44:13 that'd be madness 2011-02-09T13:44:30 it'd be sparta! 2011-02-09T13:44:53 i think the square grid would be fine? 2011-02-09T13:45:11 well, rectangle :P 2011-02-09T13:45:16 no reason not to consider hex 2011-02-09T13:45:24 what if it has some cooler strategies? 2011-02-09T13:45:39 can you wrap hex? 2011-02-09T13:45:47 sure, but there's already a few options for a few different thinks 2011-02-09T13:45:53 McLeopold: hmm... 2011-02-09T13:45:56 if it's an even number of rows/columns 2011-02-09T13:46:48 if it's a tessellation, you can wrap 2011-02-09T13:48:21 yeah it can be done 2011-02-09T13:48:26 you could wrap in 3 direction if it was a giant hexagon, I wonder what shape it would be? 2011-02-09T13:53:17 your fight distance would be 2? 2011-02-09T13:53:28 with a sort of hex manhatten dist 2011-02-09T13:54:10 it has the nice appeal that every "adjacent" square is at an equal distance by any metric 2011-02-09T13:54:36 well, not counting normal manhatten 2011-02-09T13:54:47 any reasonable metric 2011-02-09T14:03:28 am i right that options 2 and new3 are equivalent on a hex grid with fight radius 1? 2011-02-09T14:07:20 *** smellyhippy has quit IRC (Ping timeout: 245 seconds) 2011-02-09T14:08:17 i don't think it gets any more interesting strategy wise, although there's more possible moves 2011-02-09T14:12:13 *** smellyhippy has joined #aichallenge 2011-02-09T14:12:13 *** smellyhippy has joined #aichallenge 2011-02-09T14:15:35 Now add to the mix that the ants can only see what lies in front of them and you get some sneek attacks 2011-02-09T14:17:00 they would need an orientation 2011-02-09T14:17:49 orientation would suck, i think 2011-02-09T14:18:08 it wouldn't be hard to implement, but suck for the bot writers 2011-02-09T14:20:48 i'm fairly opposed to things that make coding unecessarily complicated without sufficient strategy complexity increase 2011-02-09T14:22:09 *** amstan has joined #aichallenge 2011-02-09T14:22:09 *** ChanServ sets mode: +o amstan 2011-02-09T14:30:00 McLeopold: I think that's fairly well blocked (if not completely) with sqrt(5)? 2011-02-09T14:30:05 http://i.imgur.com/0Xoc1.png 2011-02-09T14:30:32 assuming blue is coming down that passage from above 2011-02-09T14:30:40 with method 1 that is 2011-02-09T14:32:57 with the other methods, i think you just want to put a single ant in the middle of the passage with a gap between it 2011-02-09T14:33:05 that's easy to do optimally 2011-02-09T14:39:04 McLeopold: would it be better to decide on fight region or battle resolution first? or consider both simultaneously? 2011-02-09T14:39:10 either way, i'm back to bed for a bit 2011-02-09T14:46:10 amstan: I have everything prepared and tested for D. What next? 2011-02-09T14:46:20 Frontier: huh? 2011-02-09T14:46:54 I have a .deb package, the database entry and the changes to compile_anything.py :) 2011-02-09T14:50:59 *** foucist has joined #aichallenge 2011-02-09T14:51:59 what's up folks 2011-02-09T14:52:59 foucist: A lot of talk about the battle resolution for the ant game 2011-02-09T14:53:26 Frontier: cool what ant game? 2011-02-09T14:54:58 so what are the current contending ideas for the next contest btw? 2011-02-09T14:55:08 i remmber people talking about stock market type stuff 2011-02-09T14:55:11 basically it is about a grid world, where each square can be either a wall, floor, food or an ant of a player 2011-02-09T14:55:38 *** tapwater has joined #aichallenge 2011-02-09T14:55:47 ah 2011-02-09T14:55:48 hmm 2011-02-09T14:55:56 when ants come close to each other they start dying one way or another 2011-02-09T14:55:59 how does it differ from galcon ? 2011-02-09T14:56:06 i mean in terms of actual AI development 2011-02-09T14:56:45 maybe someone else should answer that. 2011-02-09T14:57:31 i don't know too much, but seemed like the majority of the AI solutions for the galcon contest was mostly heuristic? 2011-02-09T14:57:51 You have full control of your agents at any turn, food turns into ants and disapears, the way you position each ant can have a big influence 2011-02-09T14:59:24 foucist: They WERE mostly heuristic. What do you think could make the solutions more 'ai'? 2011-02-09T14:59:59 well is heuristic even AI by definition? 2011-02-09T15:00:44 i guess ultimately an ai solution would be something that is more meta-.. i.e. comes up with hte heuristics itself 2011-02-09T15:00:45 When it comes to video games every software that plays the game is called an ai 2011-02-09T15:00:58 yeah 2011-02-09T15:02:01 This contest is not especially scientific, so for most this definition will suffice. But nothing stops you from writing software that writes software :) 2011-02-09T15:03:44 *** mega1 has quit IRC (Remote host closed the connection) 2011-02-09T15:04:28 foucist: There was one mix of ideas that was interesting to me: Write programs in any language that generate code for a simple virtual machine with a dozen high-level instructions 2011-02-09T15:07:38 janzert: Are you around? 2011-02-09T15:08:27 *** amstan has quit IRC (Ping timeout: 250 seconds) 2011-02-09T15:10:36 Frontier: ok but what would the code for the VM actually do? 2011-02-09T15:11:41 the same as the programs for planet wars. with the difference that there is this abstraction level you were looking for. 2011-02-09T15:12:14 due to a bug, a hold order killed an ant :/ 2011-02-09T15:13:19 different agents from one player could use different vm code and communicate 2011-02-09T15:13:55 i don't think actually learning is a necessary condition for AI 2011-02-09T15:14:12 it just needs to appear intelligent, not actually *be* intelligent 2011-02-09T15:14:49 hmm, why shouldn't it acutally be a little intelligent? 2011-02-09T15:14:56 I wont argue over this topic again -.- 2011-02-09T15:15:21 *** amstan has joined #aichallenge 2011-02-09T15:15:21 *** ChanServ sets mode: +o amstan 2011-02-09T15:15:41 i mean couldn't a contest be developed in such a way that an AI has the opportunity to learn, etc? demonstrate some actual intelligence? ;P 2011-02-09T15:16:25 foucist: AI textbooks define the field as "the study and design of intelligent agents" where an intelligent agent is a system that perceives its environment and takes actions that maximize its chances of success. 2011-02-09T15:16:29 foucist: from wikipedia ^^ 2011-02-09T15:17:20 i bet there is a long discussion about that wikipedia page as well ^^ 2011-02-09T15:18:12 amstan: About that D integration: I have a .deb package, the database entry and the changes to compile_anything.py 2011-02-09T15:18:16 Frontier: the definition of AI doesn't seem to be under any dispute http://en.wikipedia.org/wiki/Talk:Artificial_intelligence 2011-02-09T15:19:22 is there any difference between an "intelligent agent" and a control system? 2011-02-09T15:20:06 jmcarthur: http://en.wikipedia.org/wiki/Talk:Artificial_intelligence#Article_has_nothing_about_the_current_state_of_.2Aacademic.2A_AI_research 2011-02-09T15:20:10 foucist: do control systems necessarily have to "optimize" in any particular way? 2011-02-09T15:20:16 http://upload.wikimedia.org/wikipedia/commons/3/3f/IntelligentAgent-SimpleReflex.png looks like a control system to me i guess 2011-02-09T15:20:52 jmcarthur: i guess they typically do optimize based on a heuristic 2011-02-09T15:20:54 Frontier: yeah, i carefully read that part. it's just about the fact that AI as a field is changing 2011-02-09T15:21:11 *** amstan has quit IRC (Ping timeout: 265 seconds) 2011-02-09T15:21:25 Frontier: but it still has nothing to do with definition, really. it's just that "AI" is a loaded term now 2011-02-09T15:22:48 foucist: seems to me that a control system may or may not be AI. just depends on the particular control system 2011-02-09T15:22:53 I think a loaded term, is a term with a loose definition 2011-02-09T15:23:54 Frontier: to me, "loaded" just means that it is commonly *associated* with some things, not that it's taken to *mean* those things 2011-02-09T15:31:06 *** sigh has joined #aichallenge 2011-02-09T15:32:32 *** Accoun has quit IRC () 2011-02-09T15:35:28 *** UncleVasya has quit IRC (Ping timeout: 255 seconds) 2011-02-09T15:46:48 *** Accoun has joined #aichallenge 2011-02-09T15:50:09 *** Kingpin13 has joined #aichallenge 2011-02-09T16:00:14 *** Blkt has joined #aichallenge 2011-02-09T16:00:33 *** sigh has quit IRC (Remote host closed the connection) 2011-02-09T16:05:11 *** antimatroid has quit IRC (Read error: Connection reset by peer) 2011-02-09T16:14:02 *** antimatroid has joined #aichallenge 2011-02-09T16:22:11 *** boegel has quit IRC (Quit: Leaving) 2011-02-09T16:43:55 *** mega1 has joined #aichallenge 2011-02-09T16:50:36 *** Palmik has quit IRC (Remote host closed the connection) 2011-02-09T16:51:32 *** delt0r_ has quit IRC (Ping timeout: 240 seconds) 2011-02-09T16:53:14 *** delt0r_ has joined #aichallenge 2011-02-09T16:56:19 *** amstan has joined #aichallenge 2011-02-09T16:56:19 *** ChanServ sets mode: +o amstan 2011-02-09T16:57:34 *** Mathnerd314 has joined #aichallenge 2011-02-09T16:58:58 *** delt0r___ has joined #aichallenge 2011-02-09T17:00:34 *** delt0r_ has quit IRC (Ping timeout: 260 seconds) 2011-02-09T17:02:08 *** mega1 has quit IRC (Remote host closed the connection) 2011-02-09T17:09:55 *** sigh has joined #aichallenge 2011-02-09T17:36:11 *** acieroid has quit IRC (Read error: Connection reset by peer) 2011-02-09T17:36:30 *** acieroid has joined #aichallenge 2011-02-09T17:50:45 *** Palmik has joined #aichallenge 2011-02-09T17:52:37 *** Kingpin13 has quit IRC (Quit: You're a kitty!) 2011-02-09T18:16:11 jmcarthur: well what about a control system for a house, basic temperatur/furnace control system ? :P 2011-02-09T18:43:14 *** Apophis has quit IRC (Ping timeout: 240 seconds) 2011-02-09T18:43:57 *** nann has quit IRC (Ping timeout: 240 seconds) 2011-02-09T18:50:22 antimatroid: I've got a solution for your row/col issue. I'm going to randomly flip and transpose each players perspective of the map. 2011-02-09T18:50:48 *** Apophis has joined #aichallenge 2011-02-09T18:50:49 *** Apophis_ has joined #aichallenge 2011-02-09T19:07:25 Frontier: still need me? 2011-02-09T19:08:39 janzert: I have everything prepared for the integration of D. What next? 2011-02-09T19:08:54 Frontier: dude.. we don't even have C working 2011-02-09T19:08:59 stop stressing out over it 2011-02-09T19:09:07 hmm, I'm not really sure who's working on that part 2011-02-09T19:09:13 possibly jbroman 2011-02-09T19:09:21 or possibly nobody right now :( 2011-02-09T19:09:25 jbroman's working on zeta 2011-02-09T19:09:40 yes, but on the compiler and such right? 2011-02-09T19:09:48 worker, yes 2011-02-09T19:09:55 integrating it with zeta would be good 2011-02-09T19:09:56 amstan: I'm not accoun ;), but the times I asked you about the next steps you alwas timed out 2011-02-09T19:10:12 I'm here, but what about Zeta? 2011-02-09T19:10:27 jbroman: frontier's eager about getting D working 2011-02-09T19:10:32 mind adding in the information for a new language? 2011-02-09T19:10:55 We could, I suppose, but currently the entire compilation logic for Zeta is still in flux. 2011-02-09T19:11:10 So I'm not sure whether there's any advantage to putting it in now as opposed to later. 2011-02-09T19:11:22 Zeta isn't my target. I would like to go for the old branch 2011-02-09T19:11:27 just that it doesn't get lost that way 2011-02-09T19:11:59 Well, if you send it to me I can put it in zeta. Haven't looked at epsilon much, so someone else might be better for that. 2011-02-09T19:12:02 Frontier: we're still in flux with epsilon too 2011-02-09T19:12:09 Once a language is working in one branch it can easily be ported to the other I hope 2011-02-09T19:13:30 Frontier: Probably. The marginal effort of adding a language is fairly small. 2011-02-09T19:14:26 I posted the required information on the forums: http://www.ai-contest.com/forums/viewtopic.php?f=21&t=1315&p=8624#p8624 2011-02-09T19:14:36 amstan: are we still shooting for the zeta re-write? 2011-02-09T19:14:47 McLeopold: umm, yes? 2011-02-09T19:14:49 for this next contest? 2011-02-09T19:14:53 oh.. 2011-02-09T19:14:54 idk 2011-02-09T19:15:04 i wanna work on zeta either way 2011-02-09T19:15:09 yea 2011-02-09T19:15:36 I've almost got an engine going with stdin/stdout communication going, with fog of war and centering 2011-02-09T19:15:42 (I don't know how you go about the package installation or the database so I couldn't go into detail there) 2011-02-09T19:18:10 * Frontier didn't know zeta could be ready for this term! That changes everything a bit. 2011-02-09T19:18:33 I wouldn't expect the Ants contest to run on Zeta. 2011-02-09T19:18:38 that will almost certainly be Epsilon. 2011-02-09T19:18:45 *** Apophis has quit IRC (Ping timeout: 240 seconds) 2011-02-09T19:18:57 (Unless we really rush Zeta, which might defeat the point, or become really awesome and fast-like, which would be great.) 2011-02-09T19:19:09 *** Apophis_ has quit IRC (Ping timeout: 240 seconds) 2011-02-09T19:24:09 *** Apophis has joined #aichallenge 2011-02-09T19:24:19 *** Apophis_ has joined #aichallenge 2011-02-09T19:29:15 jbroman: By all means take your time with the core code. I see there are quite a few new ideas, like the new scoring system, less database load or binary submissions 2011-02-09T19:33:25 who's working on the zeta engine? 2011-02-09T19:33:52 I mean, the thing that manages the bots, that you would plug a game into. 2011-02-09T19:34:10 McLeopold: I've written some of it, but it's early-stage at the moment in Zeta. 2011-02-09T19:34:16 Okay I am here. I have a solid few hours to work on things finally. 2011-02-09T19:34:37 sweet, I should catch you up to where I am 2011-02-09T19:35:18 jbroman: what do you think of making a zeta game engine just be like a bot. It would run in the same sort of sandbox and communicate with the general engine stub through its own stdin and stdout? 2011-02-09T19:35:38 Yeah McLeopold catch me up. Can you commit your latest code and I will pull it down now? 2011-02-09T19:36:13 Um, it's broken, give me 10 minutes... 2011-02-09T19:36:24 unless you just want to see 2011-02-09T19:37:02 Yeah just want to see. 2011-02-09T19:37:08 It's okay to break the build hah. 2011-02-09T19:37:39 j3camero: I'm not sure what you mean. 2011-02-09T19:38:03 jbroman: just thinking forward to letting people submit new game engines the way they currently submit bots. 2011-02-09T19:38:11 The current architecture that exists (minimally) in Zeta is to have a Python module that implements the game. 2011-02-09T19:38:14 McLeopold: is there any need to give people relative coordinates? 2011-02-09T19:38:19 http://pastebin.com/ALtM8tZm 2011-02-09T19:38:21 it makes it harder to debug when you aren't where you thought 2011-02-09T19:38:26 * antimatroid reads up the rest 2011-02-09T19:38:43 jbroman: I think that's a great way to do it, especially for now. I don't see letting people submit new game engines for a while yet. 2011-02-09T19:38:46 j3camero: Out of curiosity, why would we run a game whose judge we don't trust? 2011-02-09T19:39:10 This architecture still lets us write a shim game that goes and runs some untrusted engine if we wanted to, I guess. 2011-02-09T19:39:50 jbroman: I am picturing a site that is like Project Euler, where each "problem" is a contest. The user-submitted contests would be ranked based on participation. People would submit shit engines, most of them would be shit actually, but the good ones would bubble up to the top Reddit-style. 2011-02-09T19:40:11 jbroman: you're right. The idea I'm pitching now is probably a distraction. Forget it. 2011-02-09T19:41:31 i disagree with the notion above that the compilation architecture in zeta is in flux ;) 2011-02-09T19:41:32 Wait, are we back on amstan/aichallenge? 2011-02-09T19:41:33 aichallenge: McLeopold epsilon * r71d29bf / (7 files in 3 dirs): Added moving a player's perspective to the center. Getting stdin/stdout bot to work. - http://bit.ly/fZuKoM 2011-02-09T19:41:35 aichallenge: McLeopold epsilon * rcc2da1b / (ants/bots/MyBot.py ants/bots/ants.py ants/maps/random4.txt): Added sample maps. - http://bit.ly/ifjxBz 2011-02-09T19:42:13 no 2011-02-09T19:42:22 I'm directly in aichallenge/aichallenge 2011-02-09T19:42:23 Zannick: An exaggeration, I guess. But not finalized, at least. 2011-02-09T19:42:51 yeah 2011-02-09T19:43:11 i'm mostly done with it unless there are other serious things that need changing 2011-02-09T19:43:11 McLeopold: did that last commit of yours have the latest work on the engine that you've done? 2011-02-09T19:43:15 so, the pastebin above is an example of 1 map where the different perspectives are given to the players 2011-02-09T19:43:20 yes 2011-02-09T19:43:24 unless you refer to the part where the worker is told to compile x 2011-02-09T19:43:45 You'll notice each player thinks he's 'a'. 2011-02-09T19:44:02 McLeopold: sweet 2011-02-09T19:44:27 Zannick: There's that bit of it. I also don't want to declare it done until we can verify that it works the way we want with everything else. 2011-02-09T19:44:36 absolutely. 2011-02-09T19:44:36 *** foucist has left #aichallenge 2011-02-09T19:44:52 so there's some main functions in the game that I can see every game needing. 2011-02-09T19:44:56 j3camero: i don't know about user submitted games so much, i'd prefer to have a bunch of well made games people can pick from, then run a large contest with a specific new game every, maybe, year at that point? 2011-02-09T19:45:13 My engine is just calling those functions. 2011-02-09T19:45:22 jbroman: the compile logic would probably be a good place to start introducing unit tests. I don't know how big you are on testable development but it gives me a huge boner. 2011-02-09T19:45:24 If this were java, I would have made an interface. 2011-02-09T19:45:41 j3camero: You're welcome to write unit tests as well. 2011-02-09T19:45:49 we really could use a testing framework for everything the worker does 2011-02-09T19:45:49 jbroman: oh yes of course haha. 2011-02-09T19:46:01 everything the manager does, too 2011-02-09T19:46:10 Also, would you mind if I made the args the first constructor arg of System(), and just shlex-ed it? i.e. System("gcc -O2 -c {file}", sourceglobs=["*.c"]) as opposed to System(sourceglobs=["*.c"], args=["gcc","-O2","-c","{file}"]) 2011-02-09T19:46:18 As far as I know everything is being done in Python. So the default Python unittest module is pretty awesome. 2011-02-09T19:46:36 Zannick: Not critical, I just like it better aesthetically myself. 2011-02-09T19:46:54 *** antimatroid1 has joined #aichallenge 2011-02-09T19:48:05 dang, I always break something before checking... 2011-02-09T19:48:14 jbroman: i remember making that decision to put it that way because i was worried about how .replace("{file}", repr(filename)) would be handled 2011-02-09T19:48:37 Zannick: Well, you can shlex before you format. 2011-02-09T19:48:38 specifically for cases where filename has spaces or other special characters 2011-02-09T19:49:05 i guess if you do that, sure? 2011-02-09T19:49:28 *** antimatroid has quit IRC (Ping timeout: 265 seconds) 2011-02-09T19:49:36 oh, i made the decision not to do that before, to match the existing functionality 2011-02-09T19:50:26 aichallenge: McLeopold epsilon * r26d8620 / ants/bots/ants.py : Removed work in progress that broke syntax. :( - http://bit.ly/hM6DJY 2011-02-09T19:50:40 McLeopold: what's the point of giving relative coordinates? 2011-02-09T19:50:51 hm, yeah, you need to shlex split before replacing file 2011-02-09T19:51:22 cause it's awesome 2011-02-09T19:51:24 and are you planning to rotate/flip each turn? as that would be quite annoying? 2011-02-09T19:51:30 otherwise you need to handle things like PlanetWars$Planet.class 2011-02-09T19:51:35 it doesn't change the information you have and makes debugging much harder 2011-02-09T19:51:44 j3camero: so, I've got some questions about fog of war in regards to newbs 2011-02-09T19:51:45 *** nullkuhl_ has joined #aichallenge 2011-02-09T19:51:55 i dunno 2011-02-09T19:52:14 (this is why we need testing) 2011-02-09T19:52:30 if we give them the whole map as an ascii picture, then there shouldn't be an issue 2011-02-09T19:52:40 Zannick: Also why the repr(source)? 2011-02-09T19:52:49 McLeopold: how's that view region determined? 2011-02-09T19:53:08 if we give them items and coordinates, then we would only want to give them land and wall info once 2011-02-09T19:53:16 Zannick: When you pass the array to Popen, it doesn't call the shell, so you don't need to quote or escape special characters and such. 2011-02-09T19:53:20 what do you think for making the game as easy as possible? 2011-02-09T19:53:24 ah 2011-02-09T19:53:40 antimatroid1: sqrt(96) right now 2011-02-09T19:53:44 must have been left over from when i was shlexing after substitution 2011-02-09T19:54:07 and "Planet Wars.java" needed to not be two separate arguments 2011-02-09T19:54:21 *** nullkuhl has quit IRC (Ping timeout: 240 seconds) 2011-02-09T19:54:30 McLeopold: I am thinking we send map data as they discover it, sending each tile's value (land/water) only once. I plan on building a piece into the starter package that handles caching of map data so they don't have to write all that book-keeping code. 2011-02-09T19:54:50 You cannot name a file "Planet Wars.java" Oo 2011-02-09T19:54:50 what do you mean by easy? 2011-02-09T19:54:56 okay, right now I've only got ascii pictures working 2011-02-09T19:54:59 i think easy to write a program for and understand is ideal, while still allowing for complicated strategies 2011-02-09T19:55:07 antimatroid1 and I have a scheme for doing it the other way 2011-02-09T19:55:09 Frontier: you can have files with spaces in them 2011-02-09T19:55:19 it is not hard 2011-02-09T19:55:26 I've built in a "reveal" matrix in the engine to support the second way. 2011-02-09T19:55:33 my entire music library has files like that :< 2011-02-09T19:55:41 I'll start working on that next. 2011-02-09T19:55:45 McLeopold: I don't think relative coordinates adds anything to the game? am i wrong? 2011-02-09T19:56:05 Zannick: Generally not, but a Java class cannot have spaces. Never mind ^^ 2011-02-09T19:56:11 McLeopold: sorry I don't understand. Are you planning on sending every visible tile every turn? 2011-02-09T19:56:13 *** Mathnerd314 has quit IRC (Ping timeout: 276 seconds) 2011-02-09T19:56:16 It did when we were going to hide the map size 2011-02-09T19:56:31 well, java was a poor example, then 2011-02-09T19:56:42 j3camero, only land/wall the first time seen, food and ants every turn 2011-02-09T19:56:46 'break your server.c' 2011-02-09T19:57:00 McLeopold: on map size, I believe we should do things the simple way. Send them the map size up front, and use absolute coords instead of relative. 2011-02-09T19:57:16 okay, I'll take the relative coords out. 2011-02-09T19:57:30 But, we should keep them for the visualizer. 2011-02-09T19:57:35 McLeopold: i could change my opinion there if it actually changed anything? 2011-02-09T19:57:42 McLeopold: that's the way I want to do things. Send the land/water status of each tile only once per game as they are discovered, then send the status of all visible ants and food every turn. 2011-02-09T19:58:05 also, we wanted to send the status of killed ants 2011-02-09T19:58:09 j3camero: food squares can change 2011-02-09T19:58:10 ants die 2011-02-09T19:58:38 j3camero: if we don't allow enemy ants to land in the same square ever, you can communicate a dead ant with just the capital of their player char 2011-02-09T19:58:40 Why not send a list of ants and food every turn? If they die they stop getting sent. 2011-02-09T19:58:48 but that requires the larger fighting region 2011-02-09T19:58:57 because it may be difficult to determine which ant went where 2011-02-09T19:59:08 j3camero: that's not such a bad idea 2011-02-09T19:59:10 if it's on the edge of vision, it could become more complicated 2011-02-09T19:59:46 it extra information to try an analyze your opponent, and it's extra info to make the visualizer look cool 2011-02-09T20:00:01 I would at least like to send the location of dead ants. 2011-02-09T20:00:16 McLeopold: store info of dead ants on grid, for each player, scan out and print ant/food info? 2011-02-09T20:00:16 McLeopold: I say don't worry about it. When an ant dies it just disappears. I really doubt many bots will care about sorting out the precise history of the current game state. 2011-02-09T20:00:23 Zannick: Also, the runner chdirs into the directory of the bot, do you mind if I simplify the logic a bit so that we don't have to insert the path into the runner commadn? 2011-02-09T20:00:27 s/commadn/command/ 2011-02-09T20:00:27 It would be nice to attempt to count the ants your opponent has and the losses they take. 2011-02-09T20:00:31 j3camero: i wouldn't mind that data 2011-02-09T20:00:55 you could try to guess how good each opponent is 2011-02-09T20:00:56 jbroman: subprocess.Popen doc: 2011-02-09T20:01:01 If cwd is not None, the child’s current directory will be changed to cwd before it is executed. Note that this directory is not considered when searching the executable, so you can’t specify the program’s path relative to cwd. 2011-02-09T20:01:23 I guess there is no harm adding a new message type like "DEATH player_id x y" or something. 2011-02-09T20:01:33 Yeah, that's what I want. 2011-02-09T20:01:42 can we not have player id's 2011-02-09T20:01:43 this isn't a problem for eg, python, but executables need to be referenced directly 2011-02-09T20:01:45 it's not needed 2011-02-09T20:01:47 I'll put it in for now, we can rip it out if it doesn't work well. 2011-02-09T20:01:52 and complicates the programs a lot 2011-02-09T20:02:31 antimatroid1: you are always player 'a', the second player you discover is always player 'b' 2011-02-09T20:02:40 unless you change the run command for them to "cd . && ./MyBot" or something hacky 2011-02-09T20:02:41 so there are relative player ids 2011-02-09T20:02:55 Zannick: OK, I'll concede that one. 2011-02-09T20:02:59 oh, nevermind 2011-02-09T20:03:05 i was thinking ant_id 2011-02-09T20:03:08 that's what i don't want :P 2011-02-09T20:03:13 no ant ids 2011-02-09T20:04:22 McLeopold: what's the deal with the current sandbox? This is the old skeleton of the VM-based sandbox from the looks of it. Have you changed this at all? 2011-02-09T20:04:39 j3camero: yes, but it is for testing only 2011-02-09T20:04:54 I'm hoping the engine can be plugged into another system. 2011-02-09T20:04:58 McLeopold: I quite like my current io on etherpad, you could change the bot io for map data as per here, but otherwise it's really easy to handle input with 2011-02-09T20:05:03 McLeopold: if you don't mind, I will replace it with the user_sadbox, which is the sandbox that we used for Planet Wars. 2011-02-09T20:05:33 It's pretty much the same thing, with the jail stuff taken out. 2011-02-09T20:05:35 j3camero: that is basically a stripped down version of the user_sadbox, i believe 2011-02-09T20:05:56 leave it in, for testing 2011-02-09T20:05:58 j3camero: note though that sandbox used for planetwars is *not* the one in the backend directory 2011-02-09T20:06:10 it's the one from the workers 2011-02-09T20:06:23 janzert: ah okay I didn't realize. 2011-02-09T20:06:34 janzert: where do I find the sandbox that I want? 2011-02-09T20:06:35 the one in the backend directory along with the engine there were not actually used for the last month 2011-02-09T20:06:37 http://codepad.org/WCVVcW2I that's the kind of io by bot currently takes 2011-02-09T20:07:07 antimatroid1: well, we are going away from ascii pictures 2011-02-09T20:07:08 let me poke around how things are now arranged on github for a sec 2011-02-09T20:07:25 McLeopold: yeah that's fine, but the rest of it i wouldn't mind being like if possible? 2011-02-09T20:07:39 either way, both the old user_sadbox scripts required access to the jail_users to be used properly 2011-02-09T20:07:59 j3camero: one other question, I'm storing things as map[row][col], but I was going to have the bots communicate in [x][y], so there is some translation. thoughts? 2011-02-09T20:08:00 McLeopold: particularly the "T/F" line to say if the following lines are for the start or end of game 2011-02-09T20:08:23 McLeopold: yeah that's fine with me. Whatever. 2011-02-09T20:08:43 McLeopold: hopefully the internal representation of the maps is hidden behind some nice OO methods? 2011-02-09T20:08:44 j3camero: it looks like the stuff in planet_wars/worker should be what was actually in use for playing games at the end of the contest 2011-02-09T20:08:50 McLeopold: actually, nevermind, throw my input out 2011-02-09T20:08:54 thanks janzert. 2011-02-09T20:09:03 j3camero: it will be, if the sample bots are written nicely 2011-02-09T20:09:13 How do I copy a file in git? I tried googling it, but the answer seems... complicated... 2011-02-09T20:09:21 git cp 2011-02-09T20:09:36 Wow why could nobody from the internet just say that. svn copy == git cp. 2011-02-09T20:09:53 you might have been stumbling across something else 2011-02-09T20:09:56 j3camero: http://git.or.cz/course/svn.html 2011-02-09T20:10:00 Instead all you get is these tirades from ponytail-sporting DVCS zealots. 2011-02-09T20:10:13 I am wrong... 2011-02-09T20:11:24 hmm yeah I don't know about this git cp. 2011-02-09T20:11:42 I checked out that page amstan. Doesn't seem to say how to just copy a file. 2011-02-09T20:11:53 copy file in file system, git will "detect" it 2011-02-09T20:11:57 cp then git add 2011-02-09T20:12:00 Some people from the internet are saying just copy the file using ordinary cp then git add it. 2011-02-09T20:12:13 Ah nice I will just do that, as weird as it sounds. 2011-02-09T20:12:58 j3camero: actually, yeah, git can detect even file moves 2011-02-09T20:13:23 That's pretty magic. 2011-02-09T20:13:40 I am still hurting for SVN. I will learn in time though. 2011-02-09T20:13:47 I have a feeling once I grok git I will like it. 2011-02-09T20:15:47 Zannick: OK, so here's a thought: sandboxed compilation? Some people (jmcarthur) want it, and it seems reasonable. Any reason not to? 2011-02-09T20:15:51 Okay McLeopold how do I invoke this engine? Are you testing this in Python interactive mode right now? 2011-02-09T20:15:57 We can use the same sandbox as for the bots, really. 2011-02-09T20:16:04 jbroman: i am +1 for this, too, actually 2011-02-09T20:16:07 jbroman: jeff has some issues with it 2011-02-09T20:16:15 I do? 2011-02-09T20:16:22 jbroman: since he's not sure how to avoid files that eat up a ton of space 2011-02-09T20:16:23 http://codepad.org/DqZz64cy 2011-02-09T20:16:28 that could work for io? 2011-02-09T20:16:30 j3camero: yeah, remember, we were in that big starbucks 2011-02-09T20:16:32 well, input* 2011-02-09T20:16:41 amstan: How does sandboxing compilation affect this? 2011-02-09T20:16:51 oh, L and D are [*ab..] 2011-02-09T20:17:01 jbroman: hmm... maybe i'm not understading properly 2011-02-09T20:17:12 I think sandboxed compilation is a great idea. The only thing that could be hard about it is you need to let the bots touch the filesystem without letting them wreck the filesystem. 2011-02-09T20:17:17 jbroman: do you want to sandbox and allow makefiles? or just sandbox the current compile everything? 2011-02-09T20:17:23 jbroman: yes, compilation should be sandboxed 2011-02-09T20:17:27 even for the next contest 2011-02-09T20:17:55 it was one of the things that left me nervous till the last one closed submissions 2011-02-09T20:18:00 they can't wreck the filesystem if they don't have write permissions outside their homedir 2011-02-09T20:18:04 McLeopold: http://codepad.org/GGYLAMUz what do you think of that? 2011-02-09T20:18:09 that also works if ants are landing in the same square 2011-02-09T20:18:19 j3camero: some iteractive, some running the files directly, some command line 2011-02-09T20:18:20 nullkuhl_: hey, any news? 2011-02-09T20:18:22 Zannick: compilation is currently done under the contest user 2011-02-09T20:18:44 so can wreck all other submissions 2011-02-09T20:19:06 janzert: right, but the idea behind the sandboxing is sudo to another user, compile in the homedir 2011-02-09T20:19:34 ahh, I thought you meant currently, not when sandboxed 2011-02-09T20:19:37 playgame.py -t 10 -m maps\simple1.txt "python bots\MyBot.py" "python bots\MyBot.py" "python bots\MyBot.py" "python bots\MyBot.py" 2011-02-09T20:19:48 j3camero: ^^ 2011-02-09T20:19:48 my comment is it shouldn't be difficult to "let them touch the filestystem without them destroying it" 2011-02-09T20:19:55 s/sty/sy/ 2011-02-09T20:20:03 yeah 2011-02-09T20:20:51 also certain languages allow arbitrary code execution during compilation anyway (with no way to disable that) so people can do whatever they want anyway 2011-02-09T20:21:12 well, that's why we want to sandbox it 2011-02-09T20:21:24 yep :) 2011-02-09T20:21:27 amstan: yeah, worked on a few sketches today, should get something by tomorrow 2011-02-09T20:21:55 nullkuhl_: anything that you can share? 2011-02-09T20:21:56 amstan: will probably provide 2 different designs 2011-02-09T20:22:14 not yet today, but tomorrow i wil 2011-02-09T20:22:17 i don't think input could be much simpler than above 2011-02-09T20:23:38 under a jail user, we still need to be careful, of course, but at least we can prevent them from straightforwardly rm -rf the submissions 2011-02-09T20:23:55 * janzert nods 2011-02-09T20:24:05 Zannick: We can't block every conceivable malicious act, just the trivial ones. 2011-02-09T20:24:15 yes 2011-02-09T20:24:24 the current jail user setup really needs to get locked down a lot better though 2011-02-09T20:24:32 Ultimately, when you allow arbitrary users to upload code in a variety of languages that you will execute you cannot secure it completely. 2011-02-09T20:24:42 janzert: feel free to make a wiki page with your requirements 2011-02-09T20:24:44 also the sandbox should completely remove the jail home directory and recreate it each time 2011-02-09T20:25:21 right now it will leave and .dot files in place that a bot creates 2011-02-09T20:25:28 janzert: No homedir? 2011-02-09T20:25:31 any 2011-02-09T20:25:33 Not all users need have homedirs. 2011-02-09T20:26:02 Or does some language get angry if it can't create preference files? 2011-02-09T20:26:09 jbroman: yeah, that'd be fine. in that case replace home directory above with bot working directory :) 2011-02-09T20:26:15 antimatroid1: to the etherpad! 2011-02-09T20:27:12 I know mono wrote a bunch of stuff under a .something directory in the jailusers but no idea if it required it 2011-02-09T20:29:48 ugh.. spaces vs tabs... i can has tabs 2011-02-09T20:31:06 amstan: no tabs ffs 2011-02-09T20:31:14 lol 2011-02-09T20:31:15 PEP 8. 2011-02-09T20:31:24 i was just kidding 2011-02-09T20:33:47 what metric do people think should be used with view radius? mcleopold is using euclidean, i would have gone with manhatten? 2011-02-09T20:34:02 movement is based off of manhatten 2011-02-09T20:34:14 I don't see any huge advantage one way or the other. 2011-02-09T20:34:27 manhatten gives more consistency i would have thought? 2011-02-09T20:34:37 One way or the other might generate some pretty degenerate situations at the micro level, but I don't know. 2011-02-09T20:34:53 it's about what you can see 10ish squares out 2011-02-09T20:34:58 i think it's not too much of an issue 2011-02-09T20:35:00 if everything could be based off manhattan it'd be a little simpler for people 2011-02-09T20:35:18 I'm inclined to think Manhattan is better for now yeah. 2011-02-09T20:35:26 Chebyshev ^^ 2011-02-09T20:35:30 http://en.wikipedia.org/wiki/Chebyshev_distance 2011-02-09T20:35:39 We'll see if people come up with a compelling reason to switch. 2011-02-09T20:35:42 that's a square^^ 2011-02-09T20:36:04 chris_0076: i dunno about that for view, and with movement you'd want diagonal as well 2011-02-09T20:36:14 @reop 2011-02-09T20:36:15 amstan: I do not know about 'reop', but I do know about these similar topics: 'repo' 2011-02-09T20:36:17 @repo 2011-02-09T20:36:18 amstan: repo = https://github.com/aichallenge/aichallenge 2011-02-09T20:38:00 actually, i think i might see a reason for euclidean 2011-02-09T20:38:17 it gives you a larger variety of fight regions that can be picked out? 2011-02-09T20:38:27 and just work 2011-02-09T20:38:51 but the distances are finite blocks not infinite ranges =/ 2011-02-09T20:39:07 or infinitesimal... 2011-02-09T20:39:46 if we did decide to not allow enemy ants to land in the same square, then manhatten can be used with fightRadius = 2 and viewRadius = r 2011-02-09T20:40:29 The nice thing about euclidean is it will look nicer if the visualizer shows the fog of war. 2011-02-09T20:40:50 because of circles? 2011-02-09T20:40:55 j3camero: that's why I'm using it for vision 2011-02-09T20:40:55 vs squears 2011-02-09T20:40:59 squares* 2011-02-09T20:41:01 = 2011-02-09T20:41:02 =/ 2011-02-09T20:41:11 and I'm using it for attack range 2011-02-09T20:41:21 i've been convinced about that 2011-02-09T20:41:37 movement being n,e,s,w is just a drawback 2011-02-09T20:41:51 McLeopold: walk radius = 1 2011-02-09T20:41:52 for vision, euclidean seems more justified 2011-02-09T20:41:52 simple 2011-02-09T20:42:23 j3camero: http://ietherpad.com/TR0zbEqvx1 <-- let's finalize the communication on this, just the section at the top. 2011-02-09T20:42:44 Or, if you want changes, please update 2011-02-09T20:43:16 McLeopold: why not have P as one longer line? 2011-02-09T20:43:34 this allows for expansion of the parameters 2011-02-09T20:43:42 fair call 2011-02-09T20:43:48 it's only sent turn 0, so it's not a big deal 2011-02-09T20:43:54 yep 2011-02-09T20:44:33 i think the game specs should make it clear you only get sent L or W once for a given square in a game 2011-02-09T20:44:41 yes, they should 2011-02-09T20:44:52 the starter packs should be written to make that clear 2011-02-09T20:45:03 yes, but the actual game specs on the site should also point it out 2011-02-09T20:45:24 McLeopold: seems like a good place to start. We'll add stuff as we build up the engine. 2011-02-09T20:45:45 j3camero: i think we should finalise structure now, only changed if absolutely necessary 2011-02-09T20:46:03 mcleopold has done a good job at making it easy to make ammendments and not mess up peoples code too much 2011-02-09T20:46:13 antimatroid: I think what we have there is enough to get started actually building it. 2011-02-09T20:46:16 now as in soonish 2011-02-09T20:47:07 McLeopold: what is the current fight radius? 2011-02-09T20:47:11 aichallenge: McLeopold epsilon * r94bcf1b / ants/ants.py : Removed centering of ants perspectives. - http://bit.ly/g2QPHi 2011-02-09T20:47:20 i still think 2 would be good 2011-02-09T20:47:37 okay, I'm out for the evening. I'll check the repo later tonight. 2011-02-09T20:47:43 antimatroid1: that will be configurable, and we will just play with it and see what people are liking best. 2011-02-09T20:47:55 McLeopold: see ya. I will keep hacking on this engine. 2011-02-09T20:48:02 okay 2011-02-09T20:48:08 merge my changes, they aren't too much 2011-02-09T20:48:17 *** McLeopold has left #aichallenge 2011-02-09T20:48:25 McLeopold: k 2011-02-09T20:48:26 j3camero: when you've given up doing work for the night i want another crack at convincing you of battle resolution method 1 :) 2011-02-09T20:49:47 also, if we do symmetric maps with symmetric food replenishment, the map gen needs to provide a bit more info to the engine 2011-02-09T20:49:50 antimatroid1: I will give you a listen as always. 2011-02-09T20:50:01 but that can happen once such a decision is made 2011-02-09T20:50:18 j3camero: do you want me to bombard you now or later? 2011-02-09T20:50:53 actually, i'll write it up and you can read it when you like 2011-02-09T20:50:53 *** j3camero has quit IRC (Read error: Connection reset by peer) 2011-02-09T20:50:57 it wont be too long 2011-02-09T20:51:13 *** j3camero has joined #aichallenge 2011-02-09T20:52:41 random food distribution should already encourage people to spread out, it would be nice if the fight mechanic added a bit of tension to that giving some (probably small) balancing incentive to clumping together 2011-02-09T20:54:56 janzert: if you did it with symmetric maps and symmertic to start positions, it wouldn't currently be symmetric and you would still be encouraged to spread out yeah? 2011-02-09T20:55:16 it just adds that extra bit of symmetry to the actual game 2011-02-09T20:55:30 to ensure "fairness" 2011-02-09T20:55:50 I don't think map symmetry or lack thereof effects the above much 2011-02-09T20:56:33 i don't think it'd make much difference for anything in either instance, but when it barely changes strategy, why not err on the side of more symmetric? 2011-02-09T20:56:36 basically it seems like there is no counter tension in the game mechanics to simply spreading fast, unless the fight mechanics introduce it 2011-02-09T20:56:54 *** iFire has quit IRC (Read error: Connection reset by peer) 2011-02-09T20:57:17 *** iFire has joined #aichallenge 2011-02-09T20:57:24 heh, well it seems orthogonal to me, and I think non-symmetry adds interest if it can be made fair 2011-02-09T20:57:31 janzert: there is an incentive to cluster ants in chokepoints to create secure border and the appearance of strength. 2011-02-09T20:57:51 why? I don't see any reason to stop at any choke point 2011-02-09T20:57:59 just expand through it as fast as you can 2011-02-09T20:58:20 yeah, you can always retreat if necessary 2011-02-09T20:58:25 depending on how much you sent through 2011-02-09T20:58:45 janzert: but when you do encounter an enemy force, the best place to fall back to is a chokepoint. 2011-02-09T20:58:56 if you get into a "block" formation, you can store information from future turns about how to return there 2011-02-09T20:58:58 at least if fighting the best you can do is keep your ants spread out so you don't lose more than one ant for one of theirs 2011-02-09T21:00:51 janzert: if I charge your chokepoint with a cluster of ants I can break through and start collecting your food. That's why I think there's a strong incentive to keep ants near chokepoints. 2011-02-09T21:01:22 if your ants are clustered I can kill at more than 1 for 1 though right? 2011-02-09T21:01:34 so you have to spread them out 2011-02-09T21:01:54 Still I would want to keep them somewhat near a chokepoint. 2011-02-09T21:02:08 I have to be able to get them to the chokepoint in time to stop you from charging it. 2011-02-09T21:02:56 If your chokepoint gets charged you could get badly routed. 2011-02-09T21:02:59 might as well push through and collect the food on the other side for as long as I can though, I'm still closer to the chokepoint than you and can reach it before you and maybe I'll find another one further on 2011-02-09T21:03:25 janzert: maybe if you're only fighting that one opponent. 2011-02-09T21:03:59 any number of opponents doesn't matter I can just treat them all as simply enemy 2011-02-09T21:04:26 Well, your opponents to the east and west are unlikely to act in concert. That's the difference. 2011-02-09T21:05:16 you still have to leave ants in the interior 2011-02-09T21:05:29 when I'm talking about spreading out I mean an even density 2011-02-09T21:05:34 We saw in Planet Wars that the best bots always kept almost no bots on most of their planets. They preferred to concentrate all troops near potential sites of conflict. I think we will see the same here, with a few foragers eating food behind the front line. 2011-02-09T21:08:59 in planetwars a ship that wasn't on the frontlines was useless, in ants an ant that is too close to another is useless 2011-02-09T21:09:17 not sure how close too close will end up being :) 2011-02-09T21:15:10 Holy hell. This sandbox stuff all needs to get cleaned up and factored out into a nice library or something. 2011-02-09T21:15:35 I put this together in such a hurry before the last contest after bailing on the VM sandbox approach. 2011-02-09T21:18:39 *** Frontier_ has joined #aichallenge 2011-02-09T21:18:39 *** Frontier has quit IRC (Read error: Connection reset by peer) 2011-02-09T21:19:23 *** j3camero has quit IRC (Read error: Connection reset by peer) 2011-02-09T21:19:44 *** j3camero has joined #aichallenge 2011-02-09T21:23:39 *** javagamer_ is now known as javagamer 2011-02-09T21:25:27 *** amstan has quit IRC (Remote host closed the connection) 2011-02-09T21:30:48 *** amstan has joined #aichallenge 2011-02-09T21:30:48 *** ChanServ sets mode: +o amstan 2011-02-09T21:30:58 did i just part? 2011-02-09T21:32:15 j3camero: http://codepad.org/O0kheKea 2011-02-09T21:32:27 that's my best argument for why i like 1 over 2 2011-02-09T21:34:52 *** nann has joined #aichallenge 2011-02-09T21:36:37 i also didn't mention the need to also spread out with option 1 to ensure you see new food, also discouraging "packing up" too much 2011-02-09T21:37:10 *** amstan has quit IRC (Ping timeout: 240 seconds) 2011-02-09T21:38:22 *** Apophis_ has quit IRC (Ping timeout: 240 seconds) 2011-02-09T21:38:22 *** Apophis has quit IRC (Ping timeout: 240 seconds) 2011-02-09T21:38:45 *** Apophis has joined #aichallenge 2011-02-09T21:39:24 r 2011-02-09T21:40:34 http://pastebin.com/WKENk6jf 2011-02-09T21:40:39 pastebin actually wraps reasonably 2011-02-09T21:41:17 *** amstan has joined #aichallenge 2011-02-09T21:41:17 *** ChanServ sets mode: +o amstan 2011-02-09T21:43:32 *** Prillicy has joined #aichallenge 2011-02-09T21:45:04 so its definitely ants then? not zombies? I kinda liked the zombie idea 2011-02-09T21:45:13 Prillicy: ants, we had a vote 2011-02-09T21:45:42 I think there are a few criticisms of Option 2 in there that are pretty invalid. Also, the document does not even address my primary concern about Option 1. I can best phrase it thus: the rule is very difficult for novices to exploit. While it will be more interesting for you to tinker with (I don't deny it), you will destroy the novices so badly that they won't want to play. This concern is not addressed in the document. 2011-02-09T21:45:53 darn, I had a plan, I was going to build a zombie bot, then give it the three laws, and watch as it does nothing 2011-02-09T21:47:19 j3camero: any "strategy" involved in option 2 would have to be so complex as to discourage beginners to a much greater deal 2011-02-09T21:50:19 j3camero: I thought i had addressed it with the difficulty to beginners, unless a beginners spreads out, they will also get trampled by a better bot anyway, and I don't think it's going to be very easy to exploit these kind of things very well 2011-02-09T21:50:46 it also provides something clear and noticable people can do to improve the quality of their bot 2011-02-09T21:50:51 I think there is this perception that 1:1 death rules render all strategy moot because there is no way to make your opponent die more than you. The argument goes "if we always lose ants at the same time, then there is no strategy. It doesn't matter whether you fight or don't fight." This argument is utterly invalid. 2011-02-09T21:51:10 no, i understand you want to claim more region for larger growth 2011-02-09T21:51:24 but i think you can have that and more 2011-02-09T21:51:50 option 1 encourages both good defense and offense 2011-02-09T21:52:02 if you can surround and enemy from all sides, you're probably going to take them out pretty easily 2011-02-09T21:52:28 provided beginners are getting games mostly with people near their ranks, it really shouldn't matter that much anyway 2011-02-09T21:52:31 I don't think I will be able to convince you on this. You seem to believe that a good portion of the participants will have the patience to code up an algorithm that takes advantage of the tactical death conditions. I know from experience that they will not. 2011-02-09T21:53:00 they don't have to and they will still have each other to play 2011-02-09T21:53:33 i don't see any need for the game to be easy enough for someone not willing to put effort in to do well 2011-02-09T21:53:42 only that someone can get started easily and with minimal effort 2011-02-09T21:53:52 the longer the road for improvement the better surely? 2011-02-09T21:54:07 I disagree. 2011-02-09T21:54:37 why would you want someone who puts in minimal effort to actually rank high? 2011-02-09T21:54:50 *** Blkt has quit IRC (Quit: ERROR: do not makunboud t plese!) 2011-02-09T21:55:11 That's also not what I'm saying. 2011-02-09T21:55:21 what then? 2011-02-09T21:56:24 I have tried to convey it so many ways, I don't know what else to say. The problem is with the disproportionately large reward for creating an algorithm which is able to milk Rule 1. 2011-02-09T21:56:55 there is a large reward for playing any game well, it's called winning :P 2011-02-09T21:57:25 look at how bocsimacko pounded people in planet wars 2011-02-09T21:57:33 Think about why we don't do chess. It's because it takes days of coding before you get anything satisfying. There are very few little rewards along the way. The improvement curve is not smooth. Rather, it has a huge discontinuity. 2011-02-09T21:57:34 i didn't hear a single person say the game sucked because of that 2011-02-09T21:57:44 it's because it's already well studied i thought 2011-02-09T21:58:00 Nope. 2011-02-09T21:58:14 i think there are plenty of improvements with ants with option 1, even before touching micro very well 2011-02-09T21:58:52 if the starter package is about as stupid as can be without doing nothing, with a variety of increasing difficulty sample bots, they have quite a lot of work ahead 2011-02-09T21:58:58 It's because there is this point beyond which you can't make any improvements without knuckling down for days of coding with no rewards. At that point we would bleed participants. They would just leave. 2011-02-09T21:59:03 and the majority of the bots on the servers will most likely be at their level anyway 2011-02-09T21:59:26 i think planet wars would have had a lot less room for improvement 2011-02-09T21:59:35 there was a very big brick wall for that 2011-02-09T22:00:29 i agree with you that people should be able to make continous noticable improvements for quite a long time 2011-02-09T22:01:26 i always note that as something ideal for a game :) 2011-02-09T22:02:43 j3camero: I'll even volunteer to do an indepth discussion about how people could do a decision/game tree with "ants in fight range" to see what move right now might better your chances of a "good fight" 2011-02-09T22:02:43 i'm planning to do a tutorial for people anyway 2011-02-09T22:02:44 The game should be both deep and smooth. The depth is the number of visibly distinct skill levels that can fit on the leaderboard. The smoothness is the smoothness of the graph of rank vs hours of coding. 2011-02-09T22:03:08 by smoothness to you mean linear? 2011-02-09T22:03:14 Not linear. 2011-02-09T22:03:20 Just... smooth. 2011-02-09T22:03:24 Like, no cliffs. 2011-02-09T22:03:30 Or plateaus. 2011-02-09T22:03:37 okay sure, i'll agree with that 2011-02-09T22:04:01 i don't think it should necessarily be hours of coding 2011-02-09T22:04:09 there needs to be some distinction of ability in there 2011-02-09T22:04:57 i don't think there is a lack of that smoothness with 1 though? 2011-02-09T22:05:37 with pairing as in planet wars, lower ranked players are going to be playing each other most often anyway, and i don't think it's going to be easy for middle ranked players to get it right either 2011-02-09T22:05:49 i'm not sure how i'd do it very well 2011-02-09T22:06:02 i plan to use some kind of tree regardless of battle method, but even then it's tricky 2011-02-09T22:07:52 It's definitely a tree search sort of problem. 2011-02-09T22:08:08 It's not totally just straight alpha beta, but it's tree-like. 2011-02-09T22:08:25 it's not zero sum i don't tihnk 2011-02-09T22:08:48 plus unless you treat all enemies as "one" player, you have n payoffs to consider 2011-02-09T22:08:57 it's still fairly easy to do backward induction on such a tree though 2011-02-09T22:09:06 it's pretty much the same algorithm 2011-02-09T22:09:27 i've no idea if an alpha-beta like thing would work for pruning 2011-02-09T22:09:42 you're going to have to prune somewhere if there's lots of ants in "fight" range 2011-02-09T22:10:06 but i see that as a necessary goal for reaching the top of the leaderboard with either battle resolution method? 2011-02-09T22:10:42 people can also try pattern matching, and storing information about where good positions are etc. 2011-02-09T22:10:48 there's a lot of different things people can try 2011-02-09T22:11:13 It would be fine if there was some way to gain a proportional advantage by doing some sort of crazy tree search. The problem here is that the reward for figuring out this one aspect of the game is so monstrous that it's likely to overpower the other elements of the game. A scrappy fighter could cream a skilled general hands-down, because he is getting n-to-1 odds in battle. It's just too disproportionate. 2011-02-09T22:11:54 i'm not sure it will always be so easy for them to get the advantage, the fight arena needs to be right 2011-02-09T22:12:10 if a less skilled player goes around in a swarm and bombs in numbers, they should still do alright 2011-02-09T22:13:35 a less skilled player should at least be able to work out how to avoid walking into a trap 2011-02-09T22:13:50 and that's another thing they get to program/play around with 2011-02-09T22:13:55 Here's another way to think about the problem. You get a huge amount of reward for a huge amount of work. Since the algorithm for being a scrappy fighter is likely to be fairly sophisticated, it gives you zero utility until it's 100% done. So the contest will become more about who bothers putting in the time, rather than rewarding a specific insight. 2011-02-09T22:14:49 I mean, if you have the scrappy fighter algorithm, you could beat an army of 100 using just two ants. 2011-02-09T22:14:54 That's just too much. 2011-02-09T22:15:06 It will overpower the other aspects of strategy. 2011-02-09T22:15:22 i don't think even the number one bot would achieve such a feat 2011-02-09T22:16:09 i would expect at least the top 100 people to be playing around with micro, and i expect it to be very hard to get right, so people will be doing it at different levels of goodness 2011-02-09T22:16:34 so it wont be a "they have it or don't" thing 2011-02-09T22:17:21 You're right that it would still be competitive. I don't disagree. Again, the problem is with the discontinuity. There would be varying levels of goodness of the algorithm. However, you can't get one ounce of that goodness without a great deal of effort up front. 2011-02-09T22:17:54 you can assume they do nothing and work out the best position you should move into fairly easily? 2011-02-09T22:18:06 But once you do get that first bit of the scrappy fighting algorithm, the advantage is so monstrous as to be unreasonable. 2011-02-09T22:18:07 that would be a simple micro strategy 2011-02-09T22:18:45 most people have been in favour of option 1 as well 2011-02-09T22:19:30 when i saw 1 ant kill 3 others i voted for option 1. 2011-02-09T22:19:38 The first thing that will occur to most people who take the time to study the death rule is to form a long straight line of ants and march forward. This is the "windshield wiper algorithm". It would cause the death of a player who does not have such an algorithm virtually n-to-0. 2011-02-09T22:20:04 j3camero: and would be fairly easy to implement 2011-02-09T22:20:12 How easy is it really? 2011-02-09T22:20:34 j3camero: pretty much implement a snakebot 2011-02-09T22:20:39 Is it within reach of most participants? No. So is it reasonable to assign such incredible odds? I don't think so. It's a truly massive discontinuity. 2011-02-09T22:20:41 j3camero: can I ask a question? 2011-02-09T22:20:43 make sure all your ants are connected 2011-02-09T22:21:20 i think it'd be within reach of any participant that wanted to sit down and think 2011-02-09T22:21:33 making a line of ants seems awfully easy, if we can't give beginners instructions to do that... 2011-02-09T22:21:35 and could otherwise compete (can program) 2011-02-09T22:21:40 The windshield wiper algorithm is interesting. It's easy to characterize its goal, but pretty hard to actually code it. 2011-02-09T22:22:08 what's the purpose of this whole thing? 2011-02-09T22:22:09 j3camero; what if the starter bots were just that? 2011-02-09T22:22:38 i think it'd be better to leave it as an exercise to the participant though 2011-02-09T22:23:16 Prillicy: the contest means different things to different people. I started it to get more people coding for fun. So choosing a game where a single algorithmic insight results in 100-0 slaughter is not really what I'm going for. 2011-02-09T22:23:48 You're jumping defensive quickly 2011-02-09T22:24:06 I haven't even given an opinion on your idea since I've spoken to you 2011-02-09T22:24:13 Yep. 2011-02-09T22:24:35 my curiosity is much simpler. This game, what's the goal? to have the most ants at the end? 2011-02-09T22:24:35 i don't expect to see a 100-0 slaughter, but people got slaughtered all the time in planet wars 2011-02-09T22:24:39 and not just from bocsi 2011-02-09T22:25:30 Prillicy: basically the goal of the game is to kill your opponents ad be the last ant standing. 2011-02-09T22:25:43 the exact scoring isn't finalised yet 2011-02-09T22:25:56 although i think mcleopold is onto a winner maybe 2011-02-09T22:26:38 ok, and since this is an ai contents, the idea is that the person with the best strategy wins? 2011-02-09T22:27:07 Pretty much yep. 2011-02-09T22:27:23 so what's the purpose of the food? 2011-02-09T22:27:47 it is converted to your new ant if you get another one close to it 2011-02-09T22:27:54 *purpose 2011-02-09T22:27:55 When you go near food the food turns into an ant of your color. 2011-02-09T22:28:13 i think Prillicy is looking for "why is it an important part of the game?" 2011-02-09T22:28:18 the food, in terms of "strategy" encourages one to spread out and risk his ants being alone and unprotected 2011-02-09T22:28:26 j3camero: simple windshield like algorithm: if an ant is less than 5 away from an enemy stand still, otherwise move to a square nearer to the closest enemy? 2011-02-09T22:28:30 The idea is that food is randomly palced throughout the game. So the more territory you can keep hold of, the more ants you get. 2011-02-09T22:28:42 Prillicy: yep 2011-02-09T22:29:00 and the purpose of the enemy ants? 2011-02-09T22:29:11 it's more of a freeze up and block the path algorithm 2011-02-09T22:29:12 doing the same themselves :) 2011-02-09T22:29:26 to contradict that strategy, stop you from spreading out, for fear of death 2011-02-09T22:29:44 j3camero: are we in agreement in all of this? 2011-02-09T22:29:48 Prillicy: yep pretty much. 2011-02-09T22:29:54 It's a big balancing act. 2011-02-09T22:30:11 Expand too fast and you will die. Expand too slow and you will die. Gotta get the balance. 2011-02-09T22:30:20 we all either agree or have decent reasons for not agreeing usually i think 2011-02-09T22:30:50 ok, so by your statement, keeping ants close together becomes more dangerous than having them spread out, where they might just get lucky and encounter a large group of ants and kill more enemies than allied ants die in the process 2011-02-09T22:31:35 i.e. you remove the fear of enemy ants 2011-02-09T22:31:53 Unless there's some reason to bunch some ants together, like to have a bank of responders near a chokepoint. 2011-02-09T22:31:55 * janzert agrees completely 2011-02-09T22:32:04 with Prillicy 2011-02-09T22:32:32 you also have the incentive to spread out for food now, option 2 favours spreading while option 1 gives a counter balance 2011-02-09T22:32:39 which is another balancing act for people 2011-02-09T22:32:48 you're thinking that a map is going to counter the downside? I hadn't thought of that. please elaborate 2011-02-09T22:32:59 the idea is that there should be a couple contradictory motivators. you should have reason to spread out (with the current rules: food and safety), and you should have reason to clump together (currently, nothing motivates this) 2011-02-09T22:33:58 i also think 2011-02-09T22:33:58 a.b.a -> a...a is better than ..... 2011-02-09T22:34:04 I think there is reason to clump together. Having a pack of ants near a site of likely conflict means you can apply more force there faster when it's time to act. 2011-02-09T22:34:26 again, that only encourages ants to stay within "sight" distance 2011-02-09T22:34:27 force is pretty meaningless when relatively few attackers can take out relatively many defenders 2011-02-09T22:34:42 so the ideal is still to spread out 2011-02-09T22:34:50 even when defending 2011-02-09T22:34:53 just to keep within visible distance 2011-02-09T22:34:58 j3camero: option 2 encourages people to stand back and send single ants in, option 1 encourages you to charge in and battle each other 2011-02-09T22:35:09 which is more spread out than option 1 would encourage 2011-02-09T22:35:30 what about having the ants in a huge group, that has lots of branches 2011-02-09T22:35:41 I think option 2 would discourage beginners more than option 1 tbh 2011-02-09T22:35:45 jmcarthur: I disagree. I could defend a chokepoint without risking bad odds in battle by placing a block of ants, say, 10 units back from a chokepoint and sending two or three ants at a time to defend it. You could stop the enemy from suicide bombing your block of ants. 2011-02-09T22:35:46 if you clump together with the option 2 rules, you lose. there is *no* case where it is better to clump together with these rules 2011-02-09T22:35:51 j3camero: i think even with option 2, if you want to be competitive at the top, you're going to need to put the work in for some kind of tree 2011-02-09T22:36:01 j3camero: why even keep a block of ants? 2011-02-09T22:36:15 yeah, the block of ants just seems wasted 2011-02-09T22:36:16 there's just no reason to 2011-02-09T22:36:19 if you are evenly distributed, you can just stream them there 2011-02-09T22:36:22 it's *always* better to spread out 2011-02-09T22:36:56 then redistribute once the battle is over 2011-02-09T22:37:14 it's very hard to have this conversation. my cat is trying to sleep on my chest while i type 2011-02-09T22:37:27 I guess it's a question of latency in battle. If I ambush a section of the map with a large number of ants I can take a big block of territory before he is able to summon an army to defend. 2011-02-09T22:37:42 but he doesn't need an army 2011-02-09T22:38:02 he just needs to send 1 ant at a time and hope that you're a beginner who doesn't know to program his ants to move 1 at a time to defend 2011-02-09T22:38:03 j3camero: the thing is that you never need an army 2011-02-09T22:38:08 j3camero: it's better not to have an army at all 2011-02-09T22:40:06 or at the most, an evenly spaced army 2011-02-09T22:40:28 just make a "dot formation" over the entire map 2011-02-09T22:40:40 Isn't that like saying that it's just as good to spread your ships evenly across your planets in Planet Wars? Clearly there's an advantage to having large armies at the front line ready to defend. 2011-02-09T22:41:00 j3camero: no, because you wanted to get ships there as fast as possible 2011-02-09T22:41:00 Or attack as the case may be. 2011-02-09T22:41:10 whereas here you want a stream of ants 2011-02-09T22:41:11 j3camero: planet wars was entirely different. a fleet with one ship couldn't take out a fleet with 3 ships 2011-02-09T22:41:14 spaced 2011-02-09T22:41:14 there was no disadvantage to too many ships 2011-02-09T22:41:26 at a single point that was then attacked 2011-02-09T22:41:37 j3camero: I think I see where the confusion comes from. It 2011-02-09T22:42:00 I think the premise of option 2 is simply contradictory to the way the situation would work in real life. 2011-02-09T22:42:23 j3camero: a beginner who doesn't manage to spread out with option 2 also stands to be demolished by a good bot 2011-02-09T22:42:40 who would build an AI for a scenario that simply couldn't happen 2011-02-09T22:42:42 and when ants spawn near each other, that might be common 2011-02-09T22:43:01 Prillicy: not really 2011-02-09T22:43:06 it does make some sense 2011-02-09T22:43:18 explain the realism then 2011-02-09T22:43:23 each ant goes for it's closest enemy, conveniently in a cyclic manner if necessary 2011-02-09T22:43:31 closest ants fight first 2011-02-09T22:43:37 as they "reach" each other first 2011-02-09T22:43:41 it makes sense if ants are like bombs 2011-02-09T22:43:55 1 ant versus 4 2011-02-09T22:43:57 4 wins 2011-02-09T22:43:57 So say we're the two players who are left. You're evenly spread out, whereas I have more ants near the front than far from it. I take 5% of the map from you, and you're only able to match my strength in that area a few moments later. I win. 2011-02-09T22:44:08 Prillicy: good point 2011-02-09T22:44:16 j3camero: no, i'm able to match your strength immediately 2011-02-09T22:44:23 go with jmcarthur's bombs 2011-02-09T22:44:23 j3camero: because i don't need as many ants to kill you 2011-02-09T22:44:41 I think I see the idea now 2011-02-09T22:44:46 and if you're only concentrated at the front it means your growth will be slower than mine 2011-02-09T22:44:52 hence I can reinforce faster 2011-02-09T22:45:09 you're saying groups of ants sending out ant defenses like countermeasures on an aircraft 2011-02-09T22:45:18 and if you manage to impede on them, you'll start taking out chunks 2011-02-09T22:45:20 individual ants sent away from the group to defend 2011-02-09T22:45:23 jmcarthur: no, because I'm not attacking with a bare rectangle of ants. I'm just attacking with more ants than you have in the area. 2011-02-09T22:45:33 it's an interesting idea and it would work with option 1 as much as option 2 2011-02-09T22:45:37 j3camero: you don't want to do that 2011-02-09T22:45:59 you want to fight with less ants and be able to get more ants there before the battle ends 2011-02-09T22:46:13 j3camero: you can't use all those ants at once. it doesn't help at all 2011-02-09T22:46:24 option 1 would be better for that person 2011-02-09T22:46:36 j3camero: by the time you have been able to strategically use your ants, i've been able to stream enough ants in in the first place 2011-02-09T22:46:38 but even then it's a balancing act of taking them out vs them growing faster 2011-02-09T22:46:44 j3camero: because you can only use a couple at a time 2011-02-09T22:46:47 tightly grouped ants hurts the possibility of getting food, this is the reason to spread 2011-02-09T22:47:02 you could ensure no regions can be blocked i think 2011-02-09T22:47:07 j3camero: so the combat situation favors neither of us, but the food situation favors me 2011-02-09T22:47:10 one enemy ant could kill 5 of your ants if positioned correctly, this is a reason to spread. 2011-02-09T22:47:12 just ensure there is no 2011-02-09T22:47:13 %. 2011-02-09T22:47:13 %% things 2011-02-09T22:47:30 j3camero: and the combat situation favors *me* if you don't attack with just one or two at a time 2011-02-09T22:47:36 one enemy ant could kill one of your ants, this is a reason to stay close 2011-02-09T22:48:04 Prillicy: huh? 2011-02-09T22:48:07 There is a tradeoff between how quickly you pounce on food that is within your territory, vs how quickly you are able to act at the front line. It's how many of your ants you have at the front vs foraging. 2011-02-09T22:48:40 j3camero; there's also going to be ants in all directions, if you're the last two left, and spaced, you come in from every direction on them 2011-02-09T22:48:47 kamakazeeing them, that's going to annialiate them 2011-02-09T22:48:55 except that your front is severely hurt if one ant gets to it and the ants aren't perfectly positioned to avoid multi-death 2011-02-09T22:49:10 j3camero: okay, this is simple math here. if you have 20 ants at the front, and i have 5 ants at the front, 5 ants a bit further back, 5 ants a bit further back, and 5 ants a bit further back, i'm able to fend you off while i stream in my ants because you can't attack all at once. meanwhile, as i'm streaming them in, i'm getting more food. 2011-02-09T22:49:27 and with constantly shifting fronts, that nearly destroys any chance for a beginner to develop a strategy 2011-02-09T22:49:47 instead they'll be trying to program avoiding multi-death for the 2 months or whatever length the competition is 2011-02-09T22:49:57 jmcarthur: I'm not saying don't forage and just keep all ants at the front, clearly. 2011-02-09T22:50:10 j3camero: i'm saying there's not *point* in keeping them at the front 2011-02-09T22:50:13 *no 2011-02-09T22:50:26 I don't see the point 2011-02-09T22:50:27 jmcarthur: if I manage to push you back for a short time, I have more territory on which to collect food. 2011-02-09T22:50:29 j3camero: i'm saying that having more ants at the front doesn't enable you to respond more quickly 2011-02-09T22:50:36 fighting is reduced to keep a constant stream available with option 2 2011-02-09T22:50:51 j3camero: it also doesn't give you more power to push with 2011-02-09T22:50:54 which provides no balance to the spreading out 2011-02-09T22:50:59 j3camero: you can still only attack with a couple at a time 2011-02-09T22:51:09 j3camero: and i only have to stream them in at the same speed 2011-02-09T22:51:17 i could easily hold your ants at bay 2011-02-09T22:51:23 *at the same rate 2011-02-09T22:51:35 plus, without ants grouped together, he would have more ants coming in as more are foraging 2011-02-09T22:51:42 exactly 2011-02-09T22:52:13 not that that even helps 2011-02-09T22:52:20 unless that's where score comes from 2011-02-09T22:52:28 Except that while this is all happening, I have more territory. 2011-02-09T22:52:34 you wouldn't 2011-02-09T22:52:36 you're more compact 2011-02-09T22:52:41 territory means nothing if your ants aren't on it 2011-02-09T22:52:44 with the same number of ants, he would have more territory 2011-02-09T22:52:46 more spaced means you have more area 2011-02-09T22:53:09 there will ideally be lots of paths to most places too 2011-02-09T22:53:20 so if they're blocking you, go around and attack from behind 2011-02-09T22:53:45 i'm tempted to just say we should code the engine and then j3camero can make a bot that clumps together and somebody else can make one that spread out, then we'll see once and for which one annhilates the other 2011-02-09T22:53:47 right, maybe that's the key. territory in this case is not the places you can reach first, it's the places you are in now 2011-02-09T22:54:08 I think you're worrying too much about "beginners" when that's the contestant selector program's job 2011-02-09T22:54:17 the squares where food turns into your ants that is 2011-02-09T22:55:16 it's not like combat resolution would be difficult to change after we finally show j3camero how bad this one is 2011-02-09T22:55:32 i think it is sufficient to see the food. if you aren't on it that only means a short delay to get there. the food doesn't decay. It is all yours as long as it is on your territory 2011-02-09T22:55:32 Maybe I'm not understand you. You're saying that the optimal strategy with option 2 is to just spread out to coat your territory with a uniform distribution of ants? 2011-02-09T22:55:38 jmcarthur: the problem is with how late we realise it needs changing 2011-02-09T22:55:39 j3camero: exactly 2011-02-09T22:55:52 antimatroid1: part of my proposal is to code some bots before the contest starts 2011-02-09T22:55:59 j3camero: yes 2011-02-09T22:56:09 yes i plan to as well, i have been working on my own "super starter bot" 2011-02-09T22:56:10 j3camero: and there's really nothing that will beat that 2011-02-09T22:56:31 it has no strategy yet, it's all just tools 2011-02-09T22:57:13 jmcarthur: clearly not. I mean, come on. If there are two players left, all I have to do is push you back just a tiny bit, and I will now have 51% of the territory. If there are two even players left, the situation is inherently unstable. It will quickly break in favor of one player or the other. The way to make it break in your favor is to push just a little harder than the other guy at the front line by having just a slightly higher density of ants at 2011-02-09T22:57:13 can i also point out option 1 is cheaper to compute 2011-02-09T22:57:21 j3camero: what do you push with? 2011-02-09T22:57:34 j3camero: that sounds like a very slow game 2011-02-09T22:57:42 j3camero: you're going to push my one ant with, well, one ant at a time, right? 2011-02-09T22:57:45 2 people left, slowly battling away single ants at a time 2011-02-09T22:57:57 j3camero: meanwhile, i can just stream the ants in 2011-02-09T22:58:07 j3camero: there's no benefit to having them clumped up at the front 2011-02-09T22:58:25 j3camero: and since you don't have as many ants throughout the rest of your territory, you're not generating as many ants 2011-02-09T22:58:34 as you get more ants that you've filled your region, you would fill the front lines from a distance anyway 2011-02-09T22:58:58 Yeah, so my first ant and your first ant kill each other, but then I have a second ant directly behind and you don't. Therefore I am able to collect food in the area more readily than you. 2011-02-09T22:59:04 it's fairly boring macro wise as opposed to how people must deal with 1, which means it's more interesting with micro and macro? 2011-02-09T22:59:14 j3camero: if it's directly behind, it dies. if it's a safe distance behind, well, i have one too 2011-02-09T22:59:15 j3camero: option 2 presents a clear simple optimizing strategy...which I believe is one of the first things you said shouldn't be in the game 2011-02-09T22:59:18 j3camero: no advantage 2011-02-09T22:59:37 jmcarthur: abb -> ..b 2011-02-09T22:59:52 Wait, why does my second ant die? 2011-02-09T22:59:57 antimatroid1: all i have to do is let him chase one of my ants a couple pixels in and come from the side 2011-02-09T22:59:58 It's behind, not beside. 2011-02-09T23:00:09 it's a trivial move 2011-02-09T23:00:13 aaa a.a 2011-02-09T23:00:13 .b. ... unless with chebyshev 2011-02-09T23:00:22 j3camero has a point 2011-02-09T23:00:26 j3camero: the optimizing strategy is to keep ants at visible distance of each other, searching their vision for food and enemies. When one ant goes out of visual range (having prioritized either food or fight) the ant that doesn't see it anymore should follow 2011-02-09T23:00:31 If you let me chase you back a few pixels, I win. 2011-02-09T23:00:48 antimatroid1: or unless with the sqrt(5) range 2011-02-09T23:01:03 j3camero: i don't think it lets you win, but it gives you something i didn't think before 2011-02-09T23:01:14 j3camero: that's not the case because you then immediately lose those ants you ran in with 2011-02-09T23:01:19 this creates a perfect funnel to enemy ants avoiding possible multi-kills and finds as much food as possible 2011-02-09T23:01:30 the spread out bot is going to be growing faster 2011-02-09T23:01:43 and have a larger region 2011-02-09T23:02:23 j3camero: you're assuming your massive group of ants isn't getting hit with multi-kills left and right as well, which is going to happen as people would develop strategies to find ways to get the most kills with individual ants 2011-02-09T23:02:26 Here's the counter-example. Picture a 1xN map which is just a thin rectangle. Two players start wth the same number of ants int he same configuration. If you spread evenly, all I have to do is keep, say, 3 ants lined up at the front with the rest spread evenly otherwise, and march steadily towards you. It almost can't lose. 2011-02-09T23:02:40 j3camero: ant worst, i just need a single file line. i still don't need a huge clump of ants 2011-02-09T23:02:54 *at worst 2011-02-09T23:03:16 huh? 2011-02-09T23:03:23 j3camero: why would that favor either player at all? 2011-02-09T23:03:25 yes it can 2011-02-09T23:03:41 if you have groups of 3, then you pretty much can't lose? 2011-02-09T23:03:54 but it's a simple strategy for both to work out 2011-02-09T23:03:55 Because my first ant kills your first ant, then I have another immediately ready to hold the gains and you don't. 2011-02-09T23:04:24 okay fine, but this still doesn't counter against my single file line 2011-02-09T23:04:27 i don't need a clump 2011-02-09T23:04:46 it's still effectively the same thing 2011-02-09T23:04:48 aabb -> .... in option 1 2011-02-09T23:04:48 a..b in option 2 2011-02-09T23:04:52 It's still not an even spread, as I understand it. 2011-02-09T23:04:55 you just need to go around with pairs if possible 2011-02-09T23:05:10 no, he's right 2011-02-09T23:05:17 as I said, the fight is the encouragement to stay together 2011-02-09T23:05:18 I agree 2011-02-09T23:05:28 but the multi-kill is DISCOURAGING that 2011-02-09T23:05:33 i also still don't see it as very compelling 2011-02-09T23:05:37 j3camero: we won't meet in the middle though we'll meet on your half since you had to put that clump together and spread slower 2011-02-09T23:06:40 janzert has a point 2011-02-09T23:06:44 just start with one ant on either 2/3rds point and go from there 2011-02-09T23:06:57 more than that, where are all these ants coming from on a 1xN map? there can only be food on the straight line 2011-02-09T23:07:19 which means the spreader would have more ants anyway 2011-02-09T23:07:44 would it depend on the rate of food? 2011-02-09T23:07:51 somewhat 2011-02-09T23:07:56 if it's too slow, then j3camero wins 2011-02-09T23:08:06 incorrect 2011-02-09T23:08:09 hmmm 2011-02-09T23:08:22 you're still forgetting that j3camero is going to lose 3 ants to your 1 2011-02-09T23:08:22 So at first your forward-most ants run right to the front, while the rest spread out. Then we meet in the middle. After that first meeting, I have an ant closer to the middle than you. After the second battle, I still have an ant closer to the middle than you. I will always. The only sacrifice I'm making is to be slightly slower to pick up food far from the front line. 2011-02-09T23:08:31 so he needs to have 3x your ants to beat you 2011-02-09T23:08:31 Prillicy: nono, he won't in this case 2011-02-09T23:08:43 Prillicy: aaab => aa.. 2011-02-09T23:08:54 in a single line map? it won't matter, the food the map started with will result in the spreader having more ants 2011-02-09T23:09:06 Prillicy: well, that's what antimatroid1 was talking about 2011-02-09T23:09:14 Prillicy: the rate of food spawning has an effect here 2011-02-09T23:09:21 you just don't want to do a.b.a 2011-02-09T23:09:23 not necessarily 2011-02-09T23:09:36 that would hurt :P 2011-02-09T23:09:43 Prillicy: e.g. if it was only one food every fifteen turns 2011-02-09T23:09:49 Yes it's true that the rate of food spawning increases the choice you make on the tradeoff between foraging and pushing. 2011-02-09T23:10:00 you're thinking backward 2011-02-09T23:10:11 huh? 2011-02-09T23:10:22 the rate of food spawning does help a user make the decision whether to group or spread 2011-02-09T23:10:31 In any realistic scenario here, where food is relatively sparse, I can sacrific just a few foraging ants to gain a steady upper hand at the front. 2011-02-09T23:10:33 that doesn't change the fact that option two encourages a user to spread 2011-02-09T23:10:45 on a finite map it does affect your decision 2011-02-09T23:10:47 food is the reason to spread 2011-02-09T23:10:49 breaking down fronts like this will be slow and boring 2011-02-09T23:10:49 okay yes 2011-02-09T23:10:52 i agree there 2011-02-09T23:10:54 enemies is the reason to group 2011-02-09T23:11:02 i agree that option 2 and food both encourage spreading out 2011-02-09T23:11:03 if you add a second reason to spread: option 2 2011-02-09T23:11:08 what's your second reason to group 2011-02-09T23:11:10 ? 2011-02-09T23:11:20 i'd rather the two be conflicting motivators 2011-02-09T23:11:25 this should be an even conflict 2011-02-09T23:11:59 if your second reason to group is lowering the food rate, the reality is you're simply removing the 1st reason to spread 2011-02-09T23:12:28 if you truly want to encourage varying strategies 2011-02-09T23:12:32 randomize the food growth rate 2011-02-09T23:12:42 don't add something so obvious to destroy beginners like option 2 2011-02-09T23:12:52 Prillicy is speaking more clearly than anybody else 2011-02-09T23:12:56 *** j3camero has quit IRC (Read error: Connection reset by peer) 2011-02-09T23:13:02 dammit jeff! 2011-02-09T23:13:03 :P 2011-02-09T23:13:04 and he missed it 2011-02-09T23:13:36 this is why we have logs 2011-02-09T23:14:15 *** j3camero has joined #aichallenge 2011-02-09T23:14:23 sorry got booted from my internet. 2011-02-09T23:14:25 I didn't make much progress on the engine today. Got stuck trying to get the user_sadbox to work. 2011-02-09T23:14:49 a working engine isn't too important from you atm i don't think 2011-02-09T23:14:59 mcleopolds ought to be sufficient for testing rules 2011-02-09T23:15:35 j3camero, did you see what I said? 2011-02-09T23:16:04 Missed it. 2011-02-09T23:16:17 where did you leave off? 2011-02-09T23:16:26 22:59 < Prillicy> this should be an even conflict 2011-02-09T23:16:30 Going to bed though. 2011-02-09T23:16:36 Must... work... tomorrow... 2011-02-09T23:16:38 if your second reason to group is lowering the food rate, the reality is you're simply removing the 1st reason to spread 2011-02-09T23:16:40 if you truly want to encourage varying strategies 2011-02-09T23:16:41 randomize the food growth rate 2011-02-09T23:16:43 don't add something so obvious to destroy beginners like option 2 2011-02-09T23:16:43 It's been a good debate. 2011-02-09T23:17:00 I should go to bed also 2011-02-09T23:17:01 Prillicy is speaking more clearly than anybody else 2011-02-09T23:17:05 lol 2011-02-09T23:17:09 j3camero (~jeff@207.219.39.71) has quit (Read error: Connection reset by peer) 2011-02-09T23:17:14 thanks for listening to my input 2011-02-09T23:17:18 dammit jeff! 2011-02-09T23:17:20 :) 2011-02-09T23:17:24 lol 2011-02-09T23:17:48 Yeah for some reason the last few days my crazy wired internet has been cutting out for a minute at a time. Pretty weird. 2011-02-09T23:17:54 reminder that these exist: http://contestbot.hypertriangle.com/channellogs/%23aichallenge/%23aichallenge.2011-02-09.log 2011-02-09T23:18:07 * Prillicy logs amstan 2011-02-09T23:18:17 * Prillicy *hits amstan with a log. 2011-02-09T23:18:29 * jmcarthur logs Prillicy with an amstan 2011-02-09T23:18:42 * amstan hits jmcarthur with a jmcarthur 2011-02-09T23:18:47 wait.. is that possible? 2011-02-09T23:18:59 * Prillicy makes a hit single about logs with jmcarthur and amstan. 2011-02-09T23:19:03 amstan: Sure it is. "Stop hitting yourself. Stop hitting yourself." 2011-02-09T23:19:19 g'night everybody. 2011-02-09T23:19:21 *** Prillicy has quit IRC (Quit: I be bangin') 2011-02-09T23:19:24 jbroman: i'm hitting him with a whole jmcarthur though 2011-02-09T23:19:38 * antimatroid1 sends out Snorlax 2011-02-09T23:19:39 ever played portal? :P 2011-02-09T23:20:52 no, but i know what it is 2011-02-09T23:21:00 i don't really play games unless they're flash 2011-02-09T23:50:16 *** antimatroid1 has quit IRC (Ping timeout: 246 seconds) 2011-02-09T23:51:32 *** antimatroid has joined #aichallenge