2011-02-10T00:17:28 bleh, i hate [x][y] 2011-02-10T00:17:57 say you have a map in file: 2011-02-10T00:17:57 aaa 2011-02-10T00:17:57 bbb 2011-02-10T00:17:57 does that then get passed as 2011-02-10T00:17:57 ab 2011-02-10T00:17:57 ab 2011-02-10T00:17:57 ab? 2011-02-10T00:28:02 err, it doesn't get passed :P 2011-02-10T00:28:12 i still hate [x][y] 2011-02-10T00:38:19 antimatroid: you seem quite obsessed about this 2011-02-10T00:46:02 sigh: it makes my life harder 2011-02-10T00:46:22 I'm sure it does 2011-02-10T00:46:24 i don't see how anyone prefers that 2011-02-10T00:47:10 somehow 40+ years of programmers have managed 2011-02-10T00:48:02 janzert: they've all been wrong :P 2011-02-10T00:48:20 it's like having current around the wrong way 2011-02-10T00:49:55 40+ years of imperative programming is wrong, too 2011-02-10T00:49:59 and so are people that use vim 2011-02-10T00:50:14 and god don't get me started on tabs and spaces 2011-02-10T00:51:38 yay, everyone is wrong 2011-02-10T00:52:31 no, not i 2011-02-10T00:52:43 self is never wrong 2011-02-10T00:52:56 if i'm wrong, the universe is accomodate 2011-02-10T00:53:00 is to* 2011-02-10T00:59:30 *** delt0r_ has joined #aichallenge 2011-02-10T01:00:37 *** delt0r___ has quit IRC (Ping timeout: 240 seconds) 2011-02-10T01:23:04 *** McLeopold has joined #aichallenge 2011-02-10T01:25:36 jmcarthur: I use vim. We are now enemies... 2011-02-10T01:27:38 j3camero: any update to code? 2011-02-10T01:29:02 McLeopold: he went to bed 2011-02-10T01:29:13 i'm working on changing to your input atm 2011-02-10T01:29:28 McLeopold: I added "G" and "F noPlayer..." lines for input 2011-02-10T01:29:34 to etherpad 2011-02-10T01:29:39 etherpad? can you link me? 2011-02-10T01:29:44 I'm on a different machine 2011-02-10T01:29:50 http://ietherpad.com/TR0zbEqvx1 2011-02-10T01:30:22 i think we're closer to convincing jeff that 1 might be better to use for attacks 2011-02-10T01:30:33 thanks to prillicy 2011-02-10T01:30:59 whatever, it's a function swap in the engine 2011-02-10T01:31:19 yeah 2011-02-10T01:31:41 with bot output, are you happy with W for a move? 2011-02-10T01:31:50 if we go with option 1, I'm going to have to put in *effort* to win 2011-02-10T01:31:53 it's used for wall with input, but M is used with map syntax? 2011-02-10T01:32:21 i'd rather have it m 2011-02-10T01:32:28 done 2011-02-10T01:32:31 map syntax can be just the ascii art 2011-02-10T01:32:43 take out the P and M on maps 2011-02-10T01:32:54 the engine can count 2011-02-10T01:32:54 easy 2011-02-10T01:33:12 same with number of players, it will just record what it finds 2011-02-10T01:33:24 are you translating the map when you read it in? 2011-02-10T01:33:32 or are you treating each row as though those are a col? 2011-02-10T01:33:45 not translating, transposing 2011-02-10T01:33:47 a row is a row, or a line on the x axis 2011-02-10T01:33:51 so, I'm translating 2011-02-10T01:34:11 okay, i've done my conversions right 2011-02-10T01:34:17 the engine stores stuff as row/col 2011-02-10T01:34:21 i still think it just complicates things, but i'll survive :P 2011-02-10T01:34:45 jeff's comment on bots being x/y was "whatever" 2011-02-10T01:34:51 so we could go all row/col 2011-02-10T01:35:19 it means nobody ever needs to bother transposing and worrying about whether they should or not, but really you can abstract it out when you handle the input 2011-02-10T01:35:22 then never think about it again 2011-02-10T01:35:29 so yeah, whatever from me too 2011-02-10T01:36:10 it could confuse the hell out of beginners, more so than understand the concept of indexing by row,col 2011-02-10T01:36:18 everything is axis agnostic though right? so if people get the axis backwards except for visualization right 2011-02-10T01:36:28 janzert: that can suck for debugging 2011-02-10T01:36:51 ...for visualization it won't matter 2011-02-10T01:36:54 janzert: not really, moves are n,e,w,s 2011-02-10T01:37:17 if someone got it wrong, north would go east 2011-02-10T01:37:18 hmm, so it does matter then 2011-02-10T01:37:19 hehe, i like the news part 2011-02-10T01:38:14 oh well it matters in a spot that they should figure it out very quickly if they get it wrong anyway 2011-02-10T01:38:22 yea 2011-02-10T01:39:09 antimatroid: 'go' is still the signal to process 2011-02-10T01:39:13 not 'G' 2011-02-10T01:39:24 and turn 0, the engine sends 'ready' 2011-02-10T01:40:50 McLeopold: wouldn't it make sense for the bot to say it's ready to start? 2011-02-10T01:40:56 why not just make them all G? 2011-02-10T01:41:03 it's a single sharacter and easy to work with 2011-02-10T01:41:13 it makes the starter bot look nice 2011-02-10T01:41:35 okay, hang on, watch ether pad 2011-02-10T01:41:53 it's very clear that 'ready' is for setup and 'go' is for order 2011-02-10T01:43:01 McLeopold: I use cin >> charVar to work out what line type something is 2011-02-10T01:43:02 oh, yeah, we do need a 'finish' 2011-02-10T01:43:10 it's more expensive to do it to a string :P 2011-02-10T01:43:28 i added it there with E ? 2011-02-10T01:43:39 feel free to change any of that 2011-02-10T01:43:48 that's a reason to make less of them single letters ;) so that people don't do that and have problems when we add other types that make even less sense as a single letter 2011-02-10T01:43:48 i am just trying to make sure we have what's needed 2011-02-10T01:44:49 McLeopold: I think sending ants land informtation is unecessary? 2011-02-10T01:44:58 if all ants assume every square is land to start with 2011-02-10T01:45:06 which you would 2011-02-10T01:45:06 no, I don't want confusion on what is seen and what is not 2011-02-10T01:45:24 but you don't send them land for what is currently seen every turn 2011-02-10T01:45:29 we now have to work that out ourselves 2011-02-10T01:45:30 then we don't need to make them program for view radius 2011-02-10T01:45:50 or do you mean only sent once per turn? 2011-02-10T01:45:57 land and walls are sent once 2011-02-10T01:46:02 per turn or game? 2011-02-10T01:46:05 it can be assumed that food and ants are on land 2011-02-10T01:46:10 once per game 2011-02-10T01:46:14 for an x,y pair 2011-02-10T01:47:10 for the 'end' line, i don't think we need to send number of players 2011-02-10T01:47:15 just the list of scores 2011-02-10T01:47:35 but, whoever we send it to, their score needs to be first 2011-02-10T01:47:41 oh wait, i see why it's needed 2011-02-10T01:47:45 maybe we could send a rank only? 2011-02-10T01:47:46 it's redundent for what i'll do 2011-02-10T01:47:49 don't worry 2011-02-10T01:47:57 end 1st 4players? 2011-02-10T01:48:17 why are you giving the bot end of game information? 2011-02-10T01:48:24 because we are nice 2011-02-10T01:48:29 janzert: if people want to train it might be easier? 2011-02-10T01:48:36 waiting for an EOFError is stupid 2011-02-10T01:48:37 but officially we tell them they can't store it anyway 2011-02-10T01:48:41 you can write to file at the end etc. 2011-02-10T01:48:47 no, but they can train a bot locally 2011-02-10T01:48:55 store what? 2011-02-10T01:49:03 anything :) 2011-02-10T01:49:03 can't write to file on servers 2011-02-10T01:49:29 are we allowed to retrieve info from files? 2011-02-10T01:49:33 i think that could be useful in this 2011-02-10T01:49:40 it's going to lead to more bots that do writes though, make them do it outside of the bot even locally 2011-02-10T01:49:49 *** sigh has quit IRC (Ping timeout: 240 seconds) 2011-02-10T01:50:01 antimatroid: yes, reading from data files uploaded along with the source code is fine 2011-02-10T01:50:05 janzert: so you rekon don't send the end info? 2011-02-10T01:50:25 janzert: will the .txt file end up where the compiled code is run though? 2011-02-10T01:50:30 I think it just encourages unwanted behavior 2011-02-10T01:50:31 janzert is going to kill your process before you can make sense of it 2011-02-10T01:50:39 antimatroid: yes it would 2011-02-10T01:51:05 janzert: maybe not send it to bots, it it will be part of the playback 2011-02-10T01:51:17 whatever the directory state is after compilation ends up with your bot when it runs 2011-02-10T01:51:20 I'll like the playback to be the exact same format as what is send to bots 2011-02-10T01:51:41 McLeopold: are you happy for me to remove all the end stuff? 2011-02-10T01:51:46 no 2011-02-10T01:51:48 McLeopold: I do too, but with fog of war it becomes pretty messy 2011-02-10T01:52:22 the playback will be from a 3 party perspective 2011-02-10T01:52:26 but will have the same format 2011-02-10T01:52:50 are you concerned about storage space? 2011-02-10T01:53:01 or bandwidth for viewing matches? 2011-02-10T01:53:13 that'd be fine but for me loses the big advantage of using the same format that tron had, which was being able to feed replay data directly to the bot 2011-02-10T01:53:15 janzert: i was thinking before, i don't think it works to treat them as "the enemy" 2011-02-10T01:53:37 even keeping them separate for resolving states, doing that, their payoff is going to be geared somewhat towards cooperating against you i think 2011-02-10T01:53:48 planetwars was crazy with it's 3 different formats 2011-02-10T01:53:49 you want to consider cooperating with other people or free for all etc. 2011-02-10T01:54:25 antimatroid: hmm? not sure what conversation you're referring to 2011-02-10T01:54:51 yes, in an actual bot and with combat resolution that makes sense for sure you do :) 2011-02-10T01:54:53 janzert: treating your opponents as "the enemy" 2011-02-10T01:54:57 i think you made a comment about that earlier? 2011-02-10T01:55:29 I think I might have but I meant it only in the very limited scenario jeff was proposing at the time 2011-02-10T01:55:44 yeah sure 2011-02-10T01:56:38 i think option 1 encourages cooperation more than 2 as well? 2011-02-10T01:56:38 McLeopold: yeah, I didn't really like the radically different way planetwars formatted data 2011-02-10T01:56:56 err, didn't really -> really didn't 2011-02-10T01:56:57 wouldn't that be a good thing considering we're going with n-player? 2011-02-10T01:57:14 maybe 2011-02-10T01:57:33 I'm pretty strongly in favor of option 1 now that I thought about option 2 some more 2011-02-10T01:58:00 can you summarize which option is which? 2011-02-10T01:58:02 but I now also think 2 will be so bad that once it's up and running it will be fairly obvious it needs to change 2011-02-10T01:58:19 2 is the one jeff wants 2011-02-10T01:58:24 McLeopold: 1 is jmcarthurs rule about number of enemies in fighting region 2011-02-10T01:58:36 2 is jeffs with remove closest fighting ants first 2011-02-10T01:58:36 how will 2 be bad? 2011-02-10T01:59:00 it encourages keeping your ants spread out 2011-02-10T01:59:08 which is also the case for making sure you get growth 2011-02-10T01:59:15 whereas 1 encourages roaming in packs 2011-02-10T01:59:16 I want to hear it from janzert 2011-02-10T01:59:22 it provides no incentive to clump 2011-02-10T01:59:35 why is spreading out bad? 2011-02-10T01:59:35 and we already have incentive to spread 2011-02-10T01:59:55 it's not in itself but there needs to be a disadvantage from it as well 2011-02-10T02:00:02 McLeopold: it means there is a balance, similar to don't expand too fast or slow 2011-02-10T02:00:04 otherwise optimal strategy is always spread 2011-02-10T02:00:25 well, damn, check the irc logs and you can see I've been saying that over and over 2011-02-10T02:00:37 search for ying/yang 2011-02-10T02:00:40 yeah, I think lots of people have :) 2011-02-10T02:01:05 that's why I wanted hills 2011-02-10T02:01:16 I thought it would provide incentive to clump 2011-02-10T02:01:22 McLeopold: also situations like a.b.a make more sense with option 1 2011-02-10T02:01:48 even with hills I don't think it would provide enough to bother clumping with option 2 for fighting 2011-02-10T02:02:05 you would have to make sure you spread out evenly from the hill I guess 2011-02-10T02:02:07 if we designed them correctly it would 2011-02-10T02:02:25 i think this game currently meets my standards for an ideal game, the rules are so simple anyone can understand them, the game is easy for beginners to improve, and the pathway to the top is long and reasonably clear while complicated enough that bots wont be too similar 2011-02-10T02:02:50 i do think it makes it even simpler if enemy ants just can't land in the same square, but not a huge amount 2011-02-10T02:03:00 particularly when you want to handle information about dead ants 2011-02-10T02:03:13 so, food encourages spread, combat encourages spread, scoring encourages spread 2011-02-10T02:03:46 with 1 combat encourages both spreading and clumping 2011-02-10T02:03:51 antimatroid: ants landing on the same square is no big deal either way, I've already programmed for that. 2011-02-10T02:04:09 McLeopold: it's also more work for contestants if the want to handle the dead ant info 2011-02-10T02:04:18 a defense line isn't always clumping 2011-02-10T02:04:19 because they need to be able to handle multiple ants per square 2011-02-10T02:04:43 yeah, option 1 offers a variety of optimal ways to do things, both for defense and offense, i really like that 2011-02-10T02:05:57 McLeopold: with blocking off corridors, assuming you can fight through cracks, it's not very often that I think it will be possible 2011-02-10T02:06:27 you could even enforce no 2011-02-10T02:06:27 %% 2011-02-10T02:06:27 %. patterns and i think it'd be impossible to block 2011-02-10T02:06:34 maybe if there was a disadvantage to eating food 2011-02-10T02:06:51 in PlanetWars, you had to "invest" in planets 2011-02-10T02:07:07 ants would be like planet wars with 0 ship neutrals 2011-02-10T02:07:12 *** amstan has quit IRC (Ping timeout: 240 seconds) 2011-02-10T02:07:49 McLeopold: did you see my block for your fight region yesterday? 2011-02-10T02:07:50 http://i.imgur.com/0Xoc1.png 2011-02-10T02:08:10 i think that blocks the region (assuming they're just coming down the corridor) with knight moves allowed 2011-02-10T02:08:26 oh wait, no it doesn't, don't worry 2011-02-10T02:08:27 I hate to say this, but the best way to counter spreading is to make the ant bring the food back to the hill 2011-02-10T02:08:40 janzert: ^^ 2011-02-10T02:08:49 back to my game without hp? :P 2011-02-10T02:08:54 yea 2011-02-10T02:09:14 i'd still like option 1 battles :P 2011-02-10T02:09:39 :) I certainly was never opposed to that 2011-02-10T02:09:51 I think you'll never get jeff to agree though 2011-02-10T02:10:00 "too complicated" 2011-02-10T02:10:03 talking him out of option 2 has been about impossible 2011-02-10T02:10:10 it's really easy to do a stupid path home algorithm 2011-02-10T02:10:17 the battle system isn't going to fix the spread fast issue 2011-02-10T02:10:27 if food is turned into ants on the spot 2011-02-10T02:10:32 option 1 will make you go around in small packs 2011-02-10T02:10:42 spreading fast isn't really a problem 2011-02-10T02:10:53 the problem is that there isn't anything better than just spreading evenly 2011-02-10T02:11:18 for sure at least not much better, and possibly not at all 2011-02-10T02:11:53 if hills were the scoring, you could march an army in and hold a hill against a spread opponent 2011-02-10T02:12:28 nope 2011-02-10T02:12:34 an army does you no good 2011-02-10T02:12:59 how so? 2011-02-10T02:13:07 cause each ant you kill of mine I kill of yours and I can stream in replacements and my growth is higher than yours 2011-02-10T02:13:24 and if your really bad I can kill multiple of yours for one of mine 2011-02-10T02:13:44 that's the problem a clump never helps 2011-02-10T02:14:10 well, then food is removed from the map, and new ants can only be created at the hill 2011-02-10T02:14:28 might help 2011-02-10T02:14:34 so an army that marches in and takes a hill can get reinforcements to where they need 2011-02-10T02:14:34 that doesn't really encourage clumped fights 2011-02-10T02:14:42 but why not just change the fight system, it's a lot easier 2011-02-10T02:14:44 except there 2011-02-10T02:14:48 and the true root of the problem 2011-02-10T02:14:50 I'm not trying to encourage clumped fights 2011-02-10T02:15:02 clumped fights are more interesting 2011-02-10T02:15:02 I'm just trying to provide a weakness for a spread out player 2011-02-10T02:15:05 you can't march in with an army though 2011-02-10T02:15:13 unless you already out number me 2011-02-10T02:15:20 not if your spread 2011-02-10T02:15:33 it depends on how spread you are 2011-02-10T02:16:03 if we did that, i'd just make sure ants are spread around the base such that they can take out incoming attacks and run back to give a stream to oncoming attacks from another direction 2011-02-10T02:16:11 you're still going to spread out from the battle resolution 2011-02-10T02:16:58 if you "take out" an incoming attack, your ant is dead 2011-02-10T02:17:06 you never want more than one ant involved in the same fight, and if possible you want other people to fight over you 2011-02-10T02:17:10 right, the perfect density is somewhere right around, probably slightly farther apart than, food spawn distance 2011-02-10T02:17:24 whereas option 1 encourages getting everyone in there for a go and cooperating with other players to snipe ants in the middle 2011-02-10T02:17:41 McLeopold: any ant is a walking kamakazee 2011-02-10T02:17:48 it's guaranteed to take out at least one ant 2011-02-10T02:18:07 you just have to be not stupid enough to have 2+ in range when it gets close 2011-02-10T02:18:16 and really you need to take into account expected food spawns in the area, so there should be a gradient of lower density toward your central areas 2011-02-10T02:19:02 is there any other weakness we can give a spread opponent, besides battle resolution? 2011-02-10T02:19:05 such that future expected ants leaves you with a flat density 2011-02-10T02:19:36 not without adding other features to the game I don't think so since there really isn't much else currently 2011-02-10T02:19:39 i don't understand how this is such an issue, as far as i'm concertned option 1 is clearly better :\ 2011-02-10T02:19:49 and jeff would be more opposed to that I believe 2011-02-10T02:19:53 I may be wrong though 2011-02-10T02:20:02 and i am concerned about beginners being able to compete in the contest 2011-02-10T02:21:15 food spawning? 2011-02-10T02:21:50 *** tapwater has quit IRC (Quit: tapwater) 2011-02-10T02:21:56 food has less probability spawning near an ant? 2011-02-10T02:22:22 i think that has complications 2011-02-10T02:22:35 it would be too hard to explain 2011-02-10T02:22:53 it's so simple if we just go with 1 :( 2011-02-10T02:23:34 i think it opens the door for people to use pattern matching too? which would be cool 2011-02-10T02:23:37 antimatroid: then we might need to come up with examples of blocking, and ensure our maps don't contain those elements 2011-02-10T02:24:03 in an open field, there is no blocking 2011-02-10T02:24:08 McLeopold: no L's with walls would stop any blocking i'm pretty sure 2011-02-10T02:24:10 just flanking 2011-02-10T02:24:25 if we find more, we can remove them from maps 2011-02-10T02:24:29 i'm not sure blocking small passages is a bad thing 2011-02-10T02:24:49 but i'm happy to go with that if it means getting 1 2011-02-10T02:24:56 it might be worth seeing how it goes to start though 2011-02-10T02:25:18 it's like removing maps with starting planets too close 2011-02-10T02:25:38 yep 2011-02-10T02:25:39 or maps without a neutral that can be taken 2011-02-10T02:25:51 that's the key to convincing jeff 2011-02-10T02:25:56 if we play around with maps early enough, it should be testableish 2011-02-10T02:26:40 If we can establish a set of parameters that minimize "permanent defense" patterns, the it would be better 2011-02-10T02:26:51 any pattern where you never lose an ant 2011-02-10T02:27:19 i think that L rule will give it, but i could be wrong 2011-02-10T02:27:24 but, can we use a combat range of 2? 2011-02-10T02:27:32 you might be able to build a more complex one, but if you can find that, good for you 2011-02-10T02:27:43 that's what i want? 2011-02-10T02:27:49 euclidean 2 yeah? 2011-02-10T02:28:15 which is the same as manhatten 2? 2011-02-10T02:28:19 so not with knights moves 2011-02-10T02:29:04 McLeopold: run with that, and then people can argue against it if necessary 2011-02-10T02:29:21 that creates more patterns to eliminate, with range 2 2011-02-10T02:29:43 what about colliding friends then? still kill them? or fuse them into one? 2011-02-10T02:30:06 kill em 2011-02-10T02:30:25 you can't even block a small passage with permanently (100% of the time) right? 2011-02-10T02:30:37 only with about a 50% probability per ant put down it 2011-02-10T02:30:41 janzert: yes but it needs to be blocked with an L 2011-02-10T02:30:41 yes you can 2011-02-10T02:30:45 from one side 2011-02-10T02:30:50 not the other side 2011-02-10T02:31:01 you could potentially block off all openings to a larger region 2011-02-10T02:31:07 was there a diagram of it? 2011-02-10T02:31:12 http://www.ai-contest.com/forum/viewtopic.php?f=21&t=1313&start=10 2011-02-10T02:31:35 look for the passages and assume you've got enemies only having access down the passage 2011-02-10T02:31:45 ignore option 3 2011-02-10T02:32:33 but with say the 4th exampl, if that square diagonally above red isn't a wall, blue can land there, hence the no L shapes 2011-02-10T02:32:40 right, but I still don't see how you block it permanently. If I'm coming from the top 2011-02-10T02:33:02 blue sends any amount of ants down there and red kills them all 2011-02-10T02:33:05 well, here's an argument for blocking not being that bad... the blocker isn't expanding 2011-02-10T02:33:05 without loss 2011-02-10T02:33:17 McLeopold: i've made that argument :P 2011-02-10T02:33:29 not without losing one ant 50% of the time at least if I'm moving non-deterministically 2011-02-10T02:33:37 what? 2011-02-10T02:34:03 4th example on that page? blue dies and 2 reds stay alive 2011-02-10T02:34:21 you can even block the 2 width corridor 2011-02-10T02:34:33 your big png of diagrams right? 2011-02-10T02:34:39 yeah 2011-02-10T02:34:59 the single corridor starting in the second row and the left side of the first row 2011-02-10T02:35:11 second row on the right 2011-02-10T02:35:19 fourther diagram :P 2011-02-10T02:35:23 fourth* 2011-02-10T02:35:57 oh, I thought with that red configuration and blue up one red lost the right ant 2011-02-10T02:36:10 not with fight distance 2 2011-02-10T02:36:31 blue has 2 enemies in range, each red only 1 2011-02-10T02:36:34 so blue dies 2011-02-10T02:36:43 antimatroid: I kinda favor a scheme where ants can be next to each other 2011-02-10T02:36:51 we could combine options 1 and 2? 2011-02-10T02:36:59 ahh, yeah that's a problem :( 2011-02-10T02:37:08 nah that'd be awful 2011-02-10T02:37:09 so, if you have enough backup, you can still survive 2011-02-10T02:37:24 janzert: if blue has another one 2 to the right, it takes out the right red 2011-02-10T02:37:28 then, you can move onto the enemy ants to kill them 2011-02-10T02:37:33 so if you have no L's with walls, you're set? 2011-02-10T02:37:53 really you're going to just hold their ants at bay there 2011-02-10T02:37:59 and they will have to find another way in 2011-02-10T02:38:07 i don't think it's necessarily bad 2011-02-10T02:38:20 are you positive it can't be extended beyond 2 wide corridors? 2011-02-10T02:38:22 it breaks down for passeges 3 wide, but you can make it tought for them to break through 2011-02-10T02:38:32 janzert: there are examples of a 3 corridor 2011-02-10T02:38:37 i think i convinced myself pretty well 2011-02-10T02:39:12 you can almost block it, so it'd be expensive to invade 2011-02-10T02:39:25 again, if there was no L's, they could get you diangonally through the walls too 2011-02-10T02:40:10 I guess it depends somewhat on the type of maps then, I think a little more open maps aren't a big deal so it would probably work out ok 2011-02-10T02:41:10 that's why we would have to find patterns and remove or reject them 2011-02-10T02:41:10 yeah, i might even try and play around with making maps that have lots of passages 2011-02-10T02:41:16 I don't think I would outright disallow it either, any map that it becomes a problem on should just be thrown out. of course that depends on a good map monitoring system :/ 2011-02-10T02:41:20 not small ones 2011-02-10T02:41:30 just lots of different routes everywhere, but not necessarily easy to find 2011-02-10T02:42:23 especially if you do no L's, then people might have to go and find a path to the other side of the wall before breaking their "blockade" 2011-02-10T02:42:31 and a good map monitoring system according to jeff is basically trivial ;) 2011-02-10T02:42:49 "just to a t-test" 2011-02-10T02:42:55 piece of cake 2011-02-10T02:43:02 no way we'd get the data 2011-02-10T02:43:07 it's a cool idea 2011-02-10T02:44:33 not for a large enough set of keepable maps anyway 2011-02-10T02:45:18 yep. in the state space of completely random maps, good ones are way to sparse 2011-02-10T02:45:34 McLeopold: are we going to pass the top 2 players winners about the "last" state where they make no moves? 2011-02-10T02:45:45 info about* 2011-02-10T02:49:01 damn, i can't do a switch with a string 2011-02-10T02:50:26 *** sigh has joined #aichallenge 2011-02-10T02:51:38 what? 2011-02-10T02:55:05 i can't do 2011-02-10T02:55:06 instream >> stringVar; 2011-02-10T02:55:06 switch(stringVar) in c++ 2011-02-10T02:55:22 *** boegel has joined #aichallenge 2011-02-10T02:55:32 c++ seems to have == for strings, i thought maybe switches would just use that 2011-02-10T02:58:13 jmcarthur: the bomb idea would make more sense for killing anything in range 2011-02-10T03:02:04 contestbot later tell j3camero: git commits? 2011-02-10T03:02:04 McLeopold: Ready to serve. 2011-02-10T03:02:13 *** McLeopold has quit IRC (Remote host closed the connection) 2011-02-10T03:03:59 *** boegel has quit IRC (Ping timeout: 276 seconds) 2011-02-10T03:43:15 *** mega1 has joined #aichallenge 2011-02-10T03:43:36 *** aerique has joined #aichallenge 2011-02-10T03:52:29 *** Palmik has joined #aichallenge 2011-02-10T03:53:39 *** mega1 has quit IRC (Remote host closed the connection) 2011-02-10T04:07:13 *** antimatroid has quit IRC (Ping timeout: 240 seconds) 2011-02-10T04:18:18 *** antimatroid has joined #aichallenge 2011-02-10T04:23:42 i found an issue with the current input format 2011-02-10T04:24:26 say you went out of range of a food square, you would assume it's still there right? well if you walk back into visibility of it, you need to work out for yourself if it's not telling you that's it there anymore but should be 2011-02-10T04:42:31 *** Naktibalda has joined #aichallenge 2011-02-10T04:59:06 *** mega1 has joined #aichallenge 2011-02-10T05:01:02 i found an offender with my map gen for speed 2011-02-10T05:01:07 so it's a bit faster now 2011-02-10T05:15:30 http://codepad.org/Fs8nvrry 2011-02-10T05:15:36 that map is sweet 2011-02-10T05:22:43 how many players are you guys planning to have per map? 2011-02-10T05:24:49 antimatroid's map has twelve (if I read it right), that seems a bit hardcore :P 2011-02-10T05:28:32 sigh: that's my highest atm 2011-02-10T05:28:42 the nice thing about 12 is you can do 3x4 2011-02-10T05:28:59 9 has 3x3 2011-02-10T05:29:14 4 2x2, the rest are quite rank 2011-02-10T05:29:45 sigh: atm i have possibleNoPlayers = [4, 6, 8, 9, 12] 2011-02-10T05:31:44 ah, so always in a grid 2011-02-10T05:31:56 I suppose that's simplest :P 2011-02-10T05:32:01 well yeah :P 2011-02-10T05:32:13 how else would you do it? 2011-02-10T05:32:33 i'd love to hide starting locations, although i don't think it really matters 2011-02-10T05:32:40 i'd probably do the same thing 2011-02-10T05:32:52 you won't necessarily know how far up or along, but someone started there somewhere 2011-02-10T05:33:03 does the map wrap? 2011-02-10T05:33:07 yes 2011-02-10T05:33:17 so excepting relative starting positions, it's symmetric 2011-02-10T05:33:21 yeah 2011-02-10T05:33:23 cool 2011-02-10T05:33:25 but if you come across someone, it's not on symmetric grounds 2011-02-10T05:33:30 :) 2011-02-10T05:33:40 well, unlikely 2011-02-10T05:34:17 it could be interesting to play on 1xn maps 2011-02-10T05:34:24 but it's hard to fit that on a screen well 2011-02-10T05:34:32 depends on n :D 2011-02-10T05:34:36 *** chris__0076 has joined #aichallenge 2011-02-10T05:35:03 i could allow 1x5 maybe 2011-02-10T05:36:26 *** Chris_0076 has quit IRC (Ping timeout: 240 seconds) 2011-02-10T05:37:39 jeff thinks the lattice maps will be boring 2011-02-10T05:37:50 but i think it has the appeal of non-symmetric while being symmetric 2011-02-10T05:37:52 what does he propose? 2011-02-10T05:38:11 non-symmetric maps while using a t-test to throw out "unfair" maps 2011-02-10T05:38:30 ahhh 2011-02-10T05:38:34 it's a kind of cool idea, but i don't see it being possible to run enough games given the proportion of maps you'd throw out 2011-02-10T05:38:51 that's not going to be very accoun-proof :P 2011-02-10T05:39:09 i don't think that's a high priority :P 2011-02-10T05:39:14 :D 2011-02-10T05:39:25 i'm fairly against non-symmetric maps 2011-02-10T05:39:46 i want food replenishment to be symmetric to starting positions too, but i don't think i'm getting that 2011-02-10T05:40:00 and that has issues too with complicating strategy 2011-02-10T05:40:55 why can't food replenishments be symettric? 2011-02-10T05:41:30 if the symmetric square to what's chosen in a place still has a resource there, do you fill the other squares? what about if a player fills one of hte squares? 2011-02-10T05:41:42 ahh 2011-02-10T05:42:10 it might be better to put a new food square in every players starting region every n turns or something? 2011-02-10T05:42:19 that's a rate of one food square per turn 2011-02-10T05:43:04 maybe 2011-02-10T05:43:33 there will be a way to provide the engine with a seed so replenishment is the same for debugging locally 2011-02-10T05:43:38 but otherwise it's going to change 2011-02-10T05:43:55 yeah, that's a must 2011-02-10T05:44:13 i think there should be a way to turn it off maybe even 2011-02-10T05:44:27 turn off what? 2011-02-10T05:44:31 replenishment 2011-02-10T05:44:40 so when you're testing on your own simple maps it doesn't get in the way 2011-02-10T05:46:00 i see 2011-02-10T05:46:28 http://ietherpad.com/TR0zbEqvx1 2011-02-10T05:46:38 scroll down to the visualiser description thing on that 2011-02-10T05:46:44 could you think of any improvements to that? :P 2011-02-10T05:48:27 don't really have time to go over it in detail right now... have to figure out how I am going to interview job candidates tomorrow :S 2011-02-10T05:49:01 yeah, sucks to be you :P 2011-02-10T05:49:11 i start uni again in a bit over a week :\ 2011-02-10T05:49:20 one year degree, mmm 2011-02-10T05:49:36 really, that seems early? 2011-02-10T05:49:43 isn't it usually end of feb? 2011-02-10T05:50:22 hmmm... maybe I'll ask them to write a map generator :P 2011-02-10T05:51:42 we go back 21st, seemed early to me too 2011-02-10T05:51:52 oh well, map gen is piece of piss 2011-02-10T05:51:56 wouldn't really challenge anything 2011-02-10T05:52:14 yeah... was just joking :) 2011-02-10T05:53:01 ask them to write you an algorithm for finding mixed strategy nash equilibria in n-player games 2011-02-10T05:53:08 haha 2011-02-10T05:54:56 that is my current thesis topic this year, but i think it might be a little hard 2011-02-10T05:55:22 the journals start talking about ring theory and grobner bases 2011-02-10T05:55:25 and i'm like say what? 2011-02-10T05:55:32 well, you seem to enjoy the topic so it should be good 2011-02-10T06:18:59 *** Prillicy has joined #aichallenge 2011-02-10T06:30:22 *** iFire has quit IRC (Read error: Connection reset by peer) 2011-02-10T07:13:20 *** Prillicy has quit IRC (Remote host closed the connection) 2011-02-10T07:35:44 *** boegel has joined #aichallenge 2011-02-10T07:49:22 *** sigh has quit IRC (Remote host closed the connection) 2011-02-10T08:14:06 *** dlila has joined #aichallenge 2011-02-10T08:32:46 *** amstan has joined #aichallenge 2011-02-10T08:32:46 *** ChanServ sets mode: +o amstan 2011-02-10T08:47:40 with a view radius of 9.6 you can see 293 squares 2011-02-10T08:47:48 with a single ant 2011-02-10T08:59:36 *** delt0r___ has joined #aichallenge 2011-02-10T09:00:51 *** delt0r_ has quit IRC (Ping timeout: 240 seconds) 2011-02-10T09:08:26 *** Kingpin13 has joined #aichallenge 2011-02-10T09:41:16 *** amstan has quit IRC (Ping timeout: 240 seconds) 2011-02-10T10:19:36 *** chris__0076 has quit IRC (Ping timeout: 240 seconds) 2011-02-10T10:19:56 *** amstan has joined #aichallenge 2011-02-10T10:19:56 *** ChanServ sets mode: +o amstan 2011-02-10T10:29:37 *** amstan has quit IRC (Ping timeout: 255 seconds) 2011-02-10T10:32:54 *** chris__0076 has joined #aichallenge 2011-02-10T10:50:40 *** sigh has joined #aichallenge 2011-02-10T10:52:34 *** sigh has quit IRC (Remote host closed the connection) 2011-02-10T10:55:16 *** aerique has quit IRC (Quit: ...) 2011-02-10T10:57:47 janzert: what about a scoring system where you get a point for every ant inside the fighting region of a dying enemy ant? 2011-02-10T10:59:34 that would encourage people to participate in a 3+ player battle 2011-02-10T11:25:14 *** amstan has joined #aichallenge 2011-02-10T11:25:14 *** ChanServ sets mode: +o amstan 2011-02-10T11:29:37 *** amstan has quit IRC (Ping timeout: 245 seconds) 2011-02-10T11:40:09 *** boegel has quit IRC (Ping timeout: 276 seconds) 2011-02-10T11:55:01 *** amstan has joined #aichallenge 2011-02-10T11:55:01 *** ChanServ sets mode: +o amstan 2011-02-10T12:00:39 *** boegel has joined #aichallenge 2011-02-10T12:01:59 *** mega1 has quit IRC (Remote host closed the connection) 2011-02-10T12:08:27 *** McLeopold has joined #aichallenge 2011-02-10T12:11:56 *** boegel has quit IRC (Quit: *poof!*) 2011-02-10T12:37:21 McLeopold: i found something i don't like about current input 2011-02-10T12:38:53 basically, if you assume a square that becomes invisible while containing food or another player and it's not there when it becomes visible again, nothing alerts you other than the fact that it's technically visible and nothing has been said to you 2011-02-10T12:38:55 if that makes sense? 2011-02-10T12:39:26 we also weren't saying anything about dead food squares 2011-02-10T12:45:18 *** iFire has joined #aichallenge 2011-02-10T13:00:00 *** Naktibalda has quit IRC (Quit: ChatZilla 0.9.86 [Firefox 3.6.8/20100722155716]) 2011-02-10T13:05:38 yeah, that's makes sense 2011-02-10T13:06:36 McLeopold: i think it would be pretty much solved if one receives info for every "visible" square each turn 2011-02-10T13:06:45 only if changed 2011-02-10T13:06:58 or, we give them vision radius and let them work it out 2011-02-10T13:07:24 working it out is tedious 2011-02-10T13:07:39 you need to determine whether the information that it is a food square is old or not 2011-02-10T13:09:19 if you can see what was a food square, and it wasn't reported as anything, it is land 2011-02-10T13:10:02 same with ants 2011-02-10T13:11:49 yes, but you need to pick up that it's visible and wasn't reported this turn 2011-02-10T13:12:03 which requires marking it as "old" information 2011-02-10T13:12:54 people also need to currently work out what is or isn't visible etc. 2011-02-10T13:13:13 if we passed players info for every square they can see each turn, the starter bots wouldn't even need to back up info 2011-02-10T13:15:24 McLeopold: are you counting dead ants from battles (and collisions)? as part of ants that can "currently" see? 2011-02-10T13:16:56 no 2011-02-10T13:17:25 move -> kill ants -> spawn ants -> pass new vision state 2011-02-10T13:17:47 so, if you move closer to get more map info, but die, you don't get it 2011-02-10T13:18:22 your vision is greater than the combat range, so you ought to know what is comming 2011-02-10T13:19:20 yep, sure 2011-02-10T13:19:25 I would say if food disappears, we just send an 'L' for land, not "dead food" 2011-02-10T13:19:58 for ants, the player should clear their list every turn, so always assume the ants dissapear 2011-02-10T13:20:15 in fact, we could do that for food 2011-02-10T13:20:23 hmm.. 2011-02-10T13:20:52 for food... if there is a food square that isn't seeable, can you mark that as an unseen land square again or something along those lines? 2011-02-10T13:20:55 that would do the trick 2011-02-10T13:21:07 yeah, but that's up to the bot 2011-02-10T13:21:33 my point is they might want to remember where food was at the start 2011-02-10T13:21:39 and where another enemy was or something 2011-02-10T13:21:47 I'm thinking give them vision radius. This is a bot issue, not an engine issue. 2011-02-10T13:22:32 i dunno, i think a change in how the engine does things can make life easier for people 2011-02-10T13:22:49 it's not a complication that's interesting, just tedious 2011-02-10T13:23:07 i don't mind too much though and i'm off to bed 2011-02-10T13:23:08 night 2011-02-10T13:23:13 cya 2011-02-10T13:37:45 *** amstan has quit IRC (Ping timeout: 240 seconds) 2011-02-10T13:38:36 *** bhasker has joined #aichallenge 2011-02-10T13:54:05 *** bhasker has quit IRC (Read error: Connection reset by peer) 2011-02-10T13:54:12 *** bhasker has joined #aichallenge 2011-02-10T13:58:13 *** chris__0076 is now known as chris_0076 2011-02-10T13:58:31 *** chris_0076 has quit IRC (Quit: Leaving) 2011-02-10T13:58:54 *** chris_0076 has joined #aichallenge 2011-02-10T14:02:07 *** tapwater has joined #aichallenge 2011-02-10T14:32:31 *** bhasker has quit IRC (Quit: bhasker) 2011-02-10T14:36:55 *** boegel has joined #aichallenge 2011-02-10T15:01:55 *** sigh has joined #aichallenge 2011-02-10T15:03:44 *** amstan has joined #aichallenge 2011-02-10T15:03:44 *** ChanServ sets mode: +o amstan 2011-02-10T15:20:27 *** Meatkat has joined #aichallenge 2011-02-10T15:23:19 *** Accoun has quit IRC () 2011-02-10T15:23:52 *** KP13 has joined #aichallenge 2011-02-10T15:24:31 *** Meatkat has quit IRC (Ping timeout: 240 seconds) 2011-02-10T15:25:20 *** Kingpin13 has quit IRC (Ping timeout: 260 seconds) 2011-02-10T15:33:24 *** Accoun has joined #aichallenge 2011-02-10T15:46:43 *** McLeopold has left #aichallenge 2011-02-10T15:53:05 antimatroid: as written that scoring system means you want to separate and surround your opponents, while holding a little over half the total area and not completely kill off any opponent. 2011-02-10T15:53:22 *** sigh has quit IRC (Remote host closed the connection) 2011-02-10T16:04:40 *** amstan has quit IRC (Ping timeout: 245 seconds) 2011-02-10T16:10:25 *** boegel has quit IRC (Quit: Leaving) 2011-02-10T16:17:40 *** dlila has quit IRC (Quit: Leaving) 2011-02-10T16:32:05 *** antimatroid1 has joined #aichallenge 2011-02-10T16:35:26 *** antimatroid has quit IRC (Ping timeout: 276 seconds) 2011-02-10T16:46:10 *** amstan has joined #aichallenge 2011-02-10T16:46:19 *** ChanServ sets mode: +o amstan 2011-02-10T17:00:10 *** delt0r_ has joined #aichallenge 2011-02-10T17:01:22 *** delt0r___ has quit IRC (Ping timeout: 240 seconds) 2011-02-10T17:05:24 *** sigh has joined #aichallenge 2011-02-10T17:06:21 *** Mathnerd314 has joined #aichallenge 2011-02-10T17:26:58 *** Frontier_ is now known as Frontier 2011-02-10T17:28:42 *** iFire has quit IRC (Read error: Connection reset by peer) 2011-02-10T17:28:59 *** iFire has joined #aichallenge 2011-02-10T17:31:07 *** iFire` has joined #aichallenge 2011-02-10T17:34:39 *** iFire has quit IRC (Ping timeout: 240 seconds) 2011-02-10T17:39:32 *** javagamer has quit IRC (Remote host closed the connection) 2011-02-10T17:50:39 *** McLeopold has joined #aichallenge 2011-02-10T17:52:21 janzert: where's the scoring system you commented on? 2011-02-10T17:54:50 (10:45:17 AM) antimatroid: janzert: what about a scoring system where you get a point for every ant inside the fighting region of a dying enemy ant? 2011-02-10T17:56:10 yeah, that's a little nuts 2011-02-10T17:56:34 It does make you want to cluster, kinda, but it has too many other affects. 2011-02-10T17:58:51 In order to "fix" the game mechanics of ants, without complex battle, we would need a scoring system that encouraged not spreading out, or a system where getting new ants costs you land. 2011-02-10T17:59:38 I've thought of making new ants require all 4 squares around food to be occupied, but I don't know if that's enough. 2011-02-10T18:00:14 maybe 3 ants need to be in range for a birth? 2011-02-10T18:00:27 and the birth radius is smaller than the combat radius? 2011-02-10T18:01:14 you could hold territory, but not gain the benefit if you didn't come in with enough 2011-02-10T18:01:42 although you could still keep others away 2011-02-10T18:02:12 so, 3 ants need to converge for a new ant, but there is the risk that an enemy could get a good kill ratio 2011-02-10T18:02:22 janzert: ^^ 2011-02-10T18:04:11 *** Palmik has quit IRC (Remote host closed the connection) 2011-02-10T18:05:14 jmcarthur: ^^ 2011-02-10T18:17:21 or we could go back to having hills, but the scoring is 1 point per ant per turn in range, where the range is 4 or so 2011-02-10T18:17:45 *** amstan has quit IRC (Ping timeout: 240 seconds) 2011-02-10T18:20:03 so, you could get 48 points per turn with a cluster of ants 2011-02-10T18:22:38 *** Mathnerd314 has quit IRC (Ping timeout: 255 seconds) 2011-02-10T18:25:43 *** Prillicy has joined #aichallenge 2011-02-10T18:30:28 Prillicy: ^^ 2011-02-10T18:35:19 *** Blkt has joined #aichallenge 2011-02-10T18:37:54 *** Mathnerd314 has joined #aichallenge 2011-02-10T18:38:12 McLeopold: ^^ 2011-02-10T18:39:14 ^^ 2011-02-10T18:39:53 so, I had some thoughts on game play 2011-02-10T18:40:03 Can you read the logs? 2011-02-10T18:40:11 sure 2011-02-10T18:40:13 when? 2011-02-10T18:40:24 Like 5 minutes before you joined 2011-02-10T18:41:52 *** javagamer has joined #aichallenge 2011-02-10T18:42:11 If we allow more complex attacks, or formations, then, the balance issue may be solved. But, I'd like to talk about ways to keep the "easy" combat and still make the game balanced. 2011-02-10T18:42:52 I don't know if threesomes produce offspring that often 2011-02-10T18:42:55 I'm going to bring out my ban hammer to ensure no one talks about "options". 2011-02-10T18:43:14 :) too much thinking... 2011-02-10T18:43:24 just saying 2011-02-10T18:43:29 Go with the zombie theme then :) 2011-02-10T18:43:40 you're increasing the risk required to get food 2011-02-10T18:43:54 which is, again, discouraging getting food 2011-02-10T18:44:03 again, what did that before? 2011-02-10T18:44:13 enemy ants 2011-02-10T18:44:34 how did that discourage getting food? 2011-02-10T18:44:49 because you had to leave the cluster of safety with other ants nearby 2011-02-10T18:45:06 so here's what I'm seeing 2011-02-10T18:45:11 oh, assume we are using the easy battle rules, the one where everyone needs to spread out 2011-02-10T18:45:30 a bunch of extremely skilled coders are looking for a way to make a simple game more complex, am I correct? The game is "too simple" in your opinions 2011-02-10T18:45:43 No, I'm on the other side. 2011-02-10T18:45:58 I want interesting macro, not micro. 2011-02-10T18:46:04 so you're simply trying to develop a way to counteract the easier battle rules 2011-02-10T18:46:11 Yes 2011-02-10T18:46:31 in that regard this method is effective enough to force ants to group in "squads" 2011-02-10T18:46:37 To keep the game balanced, to prevent the strategy from always being "spread out and attack" 2011-02-10T18:46:58 right, and if you see an enemy ant, you need to ungroup slightly 2011-02-10T18:46:58 additionally, loss of members of the squad will force the coder to develop a way to retreat to where other allies may be 2011-02-10T18:47:26 So, is this enough to bring balance back? Or does it just make it more complicated without good effect? 2011-02-10T18:47:43 however, I think that what's going to happen is people will have a group of ants in their "base" mining for food while the others charge out blindly one at a time 2011-02-10T18:48:16 right, so from a big picture, instead of spreading out with single ants, you just spread out with squads 2011-02-10T18:48:23 incorrect 2011-02-10T18:48:34 you spread with single ants, until enough ants make it to a point to form a squad 2011-02-10T18:48:43 then you spread further with single ants, leaving squads behind 2011-02-10T18:48:54 essentially, a single ant could take out an entire squad mining for food 2011-02-10T18:49:05 so you still want to charge with individual ants 2011-02-10T18:49:27 so, single ants for defense and offense, squads for collecting food 2011-02-10T18:49:37 exactly 2011-02-10T18:49:43 it does create a need for a squad 2011-02-10T18:49:56 which is an improvement in my opinion by making them more "ant-like" 2011-02-10T18:49:59 does it provide conflicting objectives so that the game is interesting? 2011-02-10T18:50:03 remember, my main goal here is to keep realizm 2011-02-10T18:50:25 it provides the need for very complex starter packs 2011-02-10T18:50:33 and the need to start with more than 1 ant 2011-02-10T18:50:58 remember, the more complex the game is, the more complex the starter packs must be 2011-02-10T18:51:38 which means, the less likely less capable programmers are going to try to mod the starter pack beyond the main function/method 2011-02-10T18:52:03 I was wondering, could i build the c# starter pack this time? 2011-02-10T18:52:35 why not 2011-02-10T18:52:50 well, the challenge is knowing what the computer will output 2011-02-10T18:53:06 you mean, the communication protocol? 2011-02-10T18:53:09 yeah 2011-02-10T18:53:18 http://ietherpad.com/TR0zbEqvx1 2011-02-10T18:53:21 thanks 2011-02-10T18:53:21 it's a work in progress 2011-02-10T18:53:34 it's probably going to change I'm sure 2011-02-10T18:53:41 but that will let me get started on a starter pack 2011-02-10T18:53:50 anyhow, let me try and wrap my head around this 2011-02-10T18:54:08 to start, you'll be a tightly packed group of ants (group necessary due to the new food rules) 2011-02-10T18:54:38 so your bot will be programmed to spread to the edges of group vision to find food, and somehow notify the group to follow when you see food 2011-02-10T18:55:12 you could continue in this way in order to gather food.... 2011-02-10T18:55:29 question: how long does it take to get the food? is it still instant, or do so many ants have to be in range for so many rounds? 2011-02-10T18:55:54 let's say instant 2011-02-10T18:56:05 well, then we're at the same place we were. 2011-02-10T18:56:20 this only encourages ants to stay at the edge of vision, briefly closing when one ant finds food 2011-02-10T18:56:27 I gotta run to the store 2011-02-10T18:56:29 bbia 2011-02-10T18:56:31 b 2011-02-10T18:57:02 so, then, consider my hills idea 2011-02-10T18:57:08 when you get back 2011-02-10T19:00:25 You are a hillbilly. But any sort of additional complexity would make the game more diverse at this point. I totally agree with the point of finding a factor the favors sticking together 2011-02-10T19:08:39 Well, the game is easy to play. You have a list of ants, you can send them somewhere. 2011-02-10T19:08:58 Having different objectives isn't really that much more complex. 2011-02-10T19:10:07 Having pros and cons to each choice of where to send ants gives the game more depth. We just need to pros and cons to be easy to reason about and understand. 2011-02-10T19:10:56 right now, there is no drawback to attacking all out 2011-02-10T19:11:01 in a 2 player game 2011-02-10T19:11:50 the only other level of complexity would be coordination with other bots, which may be too difficult unless we give the players a mechanism for simple communication 2011-02-10T19:12:58 If we can make bots suffer from "early leader syndrome" then there is now a drawback to expanding fast, which is the other players will tend to gang up against you. 2011-02-10T19:13:09 if they are smart 2011-02-10T19:18:22 *** Meatkat has joined #aichallenge 2011-02-10T19:27:24 Oh... that sounds like Risk 2011-02-10T19:28:40 When I play risk with my family, everyone expects me to be the root of all evil - dont know why - and that made the most peaceful player - my mother - win last time 2011-02-10T19:29:59 yeah, me too 2011-02-10T19:30:03 McLeopold: How would you recognize an early leader? Communication from other players can not be trusted and the fog of war makes it difficult to estimate the strength 2011-02-10T19:30:37 that's part of the fun? 2011-02-10T19:31:34 we'd lose the fog of war and hidden number of players if we really wanted it 2011-02-10T19:31:53 but then, communication still can't be trusted 2011-02-10T19:32:13 hey something is communicating with my computer 5 KB up & down... suspicious 2011-02-10T19:33:24 oh it is this website from some indy game developer 2011-02-10T19:35:52 McLeopold: I have a feeling that a losing player will often appear as expanding to others because it is pushed in a direction 2011-02-10T19:37:26 But that shouldn't be our concern at this point. We just have to make sure the game has no single strong strategy to winning 2011-02-10T19:39:20 I wonder if there is a new spec for the visualizer? There are no ant ids, no directions, but other things to be added. 2011-02-10T19:39:55 spit out the hills idea 2011-02-10T19:40:03 and if there is no fog of war, there is no need to communicate 2011-02-10T19:40:15 What would be the best practice to handle differently dimensioned maps? Maps of 50x100 or 200x200 can hardly be displayed at the same scale 2011-02-10T19:40:48 make the visualizer be able to scale 2011-02-10T19:40:58 not hard to do 2011-02-10T19:41:04 use local storage to remember a persons preference 2011-02-10T19:41:08 I wrote that for my home page 2011-02-10T19:41:26 or cookies 2011-02-10T19:41:28 oh, not the preference 2011-02-10T19:41:31 Especially with the matrix functions it isn't hard to do, no. 2011-02-10T19:42:07 McLeopold: ajax and gets will allow players to share their games at certain sizes 2011-02-10T19:42:31 share? 2011-02-10T19:42:59 when you see a game, you post a link 2011-02-10T19:43:08 if the link is a get with the sizing 2011-02-10T19:43:10 ah ok, so the scale is in the link 2011-02-10T19:43:15 yeah 2011-02-10T19:43:43 that would be nice for me though, I'm on 1028x600 on my netbook here 2011-02-10T19:43:46 what if people copy the adress line - i do that usually 2011-02-10T19:44:09 ? 2011-02-10T19:44:16 then the scale is stillt the old scale, not the one i selected in the visualizer 2011-02-10T19:44:26 allowing for people to chose 2011-02-10T19:44:29 *choose 2011-02-10T19:44:30 or does the adress line change with an ajax request? 2011-02-10T19:44:42 that's what I mean 2011-02-10T19:44:52 you can still resize from what you start with (with or without get) 2011-02-10T19:45:03 just post the resizes to the url 2011-02-10T19:45:22 I guess by post I mean get, but that sounds wierd 2011-02-10T19:45:26 How about the game is just always scaled to fit the screen? 2011-02-10T19:45:48 I'm just offering that it's nice to zoom in 2011-02-10T19:46:02 ok, i agree :) 2011-02-10T19:46:32 besides, my way is easier than auto-scaling to screen size 2011-02-10T19:46:35 Mouse wheel zoom and dragging with the lmb should be fine 2011-02-10T19:46:48 screen size code is horrible for web development 2011-02-10T19:47:20 I would try to find a working solution on the web for Firefox, Chrome, IE and Opera 2011-02-10T19:47:52 which is 3 different portions of code 2011-02-10T19:48:10 which browsers share their code? 2011-02-10T19:48:43 chrome & opera 2011-02-10T19:48:51 they both use css3 2011-02-10T19:49:08 I do a lot of web dev 2011-02-10T19:49:48 McLeopold: what's with the crazy birth rule? just go with option 1 already :P 2011-02-10T19:49:49 Prillicy: CSS3 is a standard, not a body of code. 2011-02-10T19:50:07 Prillicy: IE also implements (parts of) CSS3. 2011-02-10T19:50:22 you need 1 body of code to account for css3, 1 for ie fixes, and 1 for mozilla 2011-02-10T19:50:34 believe me, I"ve built screen-resizing stuff before 2011-02-10T19:51:42 it's a mess 2011-02-10T19:52:36 I am hosting a website on a basic cable internet connection, shared with 4 roomates + myself and ripping out ie fixes has allowed that website to still have great load-times in spite of the connection 2011-02-10T19:52:51 *2 websites 2011-02-10T19:53:11 found a function: http://codepad.org/HzLyGlEV 2011-02-10T19:53:26 Frontier; have you looked on etherpad about the visualiser? 2011-02-10T19:53:38 not yet 2011-02-10T19:53:42 not screen size 2011-02-10T19:53:47 but ok 2011-02-10T19:53:49 http://ietherpad.com/TR0zbEqvx1 2011-02-10T19:53:52 you're referring to browser size 2011-02-10T19:54:02 i put a very flexible outline there that i think could make a cool visualiser 2011-02-10T19:54:17 Prillicy: Well what I really need is the inner window size. I wan't clear about that. 2011-02-10T19:54:18 but of course I have no idea with making them, so feel free to change it 2011-02-10T19:55:21 fair enough, that's pretty easy with dom (as you just demonstrated) though usually I find I have to add a fix for ie anyway 2011-02-10T19:55:28 thanks for the bold font on head lines ;) 2011-02-10T19:55:54 Frontier: a canvas can be any size, and you can scale an image on it any way. You'll want zoom and wrap around. 2011-02-10T19:56:45 wait, you'rereferring to one bot controlling multiple ants, I thought the whole point was one bot per ant 2011-02-10T19:57:02 McLeopold: That's what we said 2011-02-10T19:57:06 Prillicy: nope 2011-02-10T19:57:16 except for the wrap part ^^ 2011-02-10T19:57:18 too complicated for the backend 2011-02-10T19:57:27 Prillicy: all friend ants share the same info, too much overhead 2011-02-10T19:57:45 fog of war really slows down the engine :( 2011-02-10T19:58:15 how much are you doing for it each turn? 2011-02-10T19:58:32 I've got a naive algo. 2011-02-10T19:58:46 if you didn't store info about what people had/hadn't seen and passed more input (all visible squares each turn just by painting outwards) would it be faster? 2011-02-10T19:58:48 the get_vision function should return a matrix of true/false 2011-02-10T19:59:11 probably not 2011-02-10T19:59:27 the slowdown is in finding what is currently visible 2011-02-10T19:59:50 yeah fair enough, i found that wasn't as trivial as i thought to work out 2011-02-10T19:59:51 I'm looping through each ant and "painting" a circle. So, the more ants, the slower it is. 2011-02-10T20:00:03 I'm thinking I should just to a map scan. 2011-02-10T20:00:10 i first scanned out from ants sequentially, which causes you to screw up if you try to use the same "visited" information 2011-02-10T20:00:36 yeah, i scan out from each players ants and only check a square once 2011-02-10T20:00:40 When should the ants that die fade out? During the turn that kills them or afterwards? 2011-02-10T20:00:42 If 2 ants are next to each other, I'm painting a lot of the same squares as "can see". 2011-02-10T20:01:02 Frontier: atm there are different ways for an ant to die, from a collision or a battle 2011-02-10T20:01:27 Frontier: for the game, a dead ant will only be shown for 1 turn, so if you walked into the area 1 turn later, you wouldn't know. 2011-02-10T20:02:07 McLeopold: if you want into view of an ant that just died, you see that aye? 2011-02-10T20:02:10 The visualizer can do anything, including counting the amount of ants that die in a square 2011-02-10T20:02:12 how do we visualise that fact 2011-02-10T20:02:21 walk* 2011-02-10T20:02:50 I cannot see from the basic input if an ant died from collision or battle 2011-02-10T20:03:01 Frontier: i know, that needs fixing 2011-02-10T20:03:31 So you DO want some different visualization in each case? 2011-02-10T20:04:14 lol, kill food from collision, don't be silly :o) 2011-02-10T20:04:16 i'm trying to work out what you need? 2011-02-10T20:04:31 Frontier: food is to die if it's contested for? 2011-02-10T20:04:47 oh I should read more *g* 2011-02-10T20:04:50 Frontier: depending on the final attack range, you can make assumptions for kill/collision 2011-02-10T20:05:41 if one bot controls everything, there's no need for communication 2011-02-10T20:05:44 antimatroid1: I'm not sending dead food info. 2011-02-10T20:05:48 McLeopold: You are right, it is more a design decision if the visualizer is just a display device or makes its own calculations 2011-02-10T20:05:59 and in terms of fog of war, I think you're working backward is what's slowing you down 2011-02-10T20:06:05 McLeopold: so you just know it died by the lack of it being reported? 2011-02-10T20:06:15 i don't like this having to search for stuff just because the input format sucks 2011-02-10T20:06:18 for food, yes 2011-02-10T20:06:22 *** Mathnerd314 has quit IRC (Ping timeout: 245 seconds) 2011-02-10T20:06:26 a bot should clear it's ant and food list each turn 2011-02-10T20:06:34 that's not desirable 2011-02-10T20:06:37 if you want to track it, you're on your own 2011-02-10T20:06:44 I liked my ant ids ^^ 2011-02-10T20:06:55 it's making it unecessarily complicated to track it 2011-02-10T20:06:58 Prillicy: I'm up for idea's on making fog faster 2011-02-10T20:07:23 alright 2011-02-10T20:07:32 from the sounds of it, you were building fog from the ants out 2011-02-10T20:08:07 *** bhasker has joined #aichallenge 2011-02-10T20:08:14 McLeopold: http://codepad.org/8z4olzWx that's my very rough ugly code for finding visible squares, it is reasonably fast i think 2011-02-10T20:08:17 you should build the map with a array of the ants as a property 2011-02-10T20:08:28 each ant gets a true or false per square 2011-02-10T20:08:41 then feed that to the ants 2011-02-10T20:09:32 aichallenge: McLeopold epsilon * rbc3764a / (5 files in 3 dirs): Fix orientation issues. Got random bot running on stdin/stdout. Sending changes in map state only to bots. - http://bit.ly/fkSTD5 2011-02-10T20:09:32 aichallenge: McLeopold epsilon * rf6c5242 / (ants/game.py ants/make_movie.cmd): game.py is an "abstract" class example for game classes. - http://bit.ly/eqXevu 2011-02-10T20:09:36 * Frontier steals code for the visualizer 2011-02-10T20:09:42 yeah, definitely backward 2011-02-10T20:09:59 Prillicy: me backwards? 2011-02-10T20:10:00 assign variables as you go, don't do more loops than are necessary 2011-02-10T20:10:07 yes 2011-02-10T20:10:15 you're looping through the map for each ant 2011-02-10T20:10:20 no i'm not 2011-02-10T20:10:22 loop through the ants for each map 2011-02-10T20:10:27 see the number of loops that differ here? 2011-02-10T20:10:44 i add each ants location to a queue, then scan outwards finding squares in range 2011-02-10T20:11:03 ah, I can't read your code because I can't put it in context 2011-02-10T20:11:29 I tried it's like looking at a ball of cotton candy having never heard of one 2011-02-10T20:11:33 I'm looping through ants, then looping through a list of squares they can see, setting them to true. 2011-02-10T20:11:43 backward 2011-02-10T20:11:51 McLeopold: add players locations to a queue, then do it all from that 2011-02-10T20:12:15 that way you add a visible square and assign it to the closest player to it, so you don't miss squares 2011-02-10T20:12:24 let me reword what I'm thinking 'cause that sounds like what I was saying even to me 2011-02-10T20:12:59 the visible area should be part of the ant, i.e. the ant's location includes that area, so you would begin placing the ant as you hit that square when building the map 2011-02-10T20:14:07 Prillicy: I'm building a mask for what a player can see. 2011-02-10T20:14:49 McLeopold: you are doing each ant sequentially yes?, so you go through squares more than one ant can see more than once? 2011-02-10T20:14:53 or are you doing what i am 2011-02-10T20:15:29 *** Mathnerd314 has joined #aichallenge 2011-02-10T20:15:33 for each square of the map, check if ants are within visible range, and assign them visibility to that square 2011-02-10T20:15:42 that's worse code 2011-02-10T20:15:46 why did I even sayt hat 2011-02-10T20:15:50 * Prillicy facepalms 2011-02-10T20:16:02 Prillicy: there is one bot controlling many ants. 2011-02-10T20:16:40 that's because the multi-instance scenario won't be possible until the rewrite is complete? 2011-02-10T20:16:41 I don't need a separate mask per ant, just the union of their masks 2011-02-10T20:17:04 At this point, "cause jeff said so" 2011-02-10T20:17:17 then, build distance between the ants first 2011-02-10T20:17:19 and go from there 2011-02-10T20:17:28 between? 2011-02-10T20:17:32 yes 2011-02-10T20:17:36 between what? 2011-02-10T20:17:40 the ants are placed based on x and y right? 2011-02-10T20:17:44 yes 2011-02-10T20:17:47 McLeopold: that\s unfair. We don't do one-process-per-ant because it's infeasible, not because I said so. 2011-02-10T20:17:50 so build out distance formulas 2011-02-10T20:17:59 this will ensure you don't double map squares 2011-02-10T20:18:20 j3camero: sry, it was easier to just say that, cause us programmer always try to solve a problem. 2011-02-10T20:18:26 can someone please tell me why my way doesn't work as fast? i'd rather make it faster if possible 2011-02-10T20:18:32 j3camero: but you're in charge, this means by default everything is blamed on you 2011-02-10T20:18:51 antimatroid1: could you comment your code? 2011-02-10T20:20:22 based on an ant's x & y, you can determine both the distance between them, and what squares they would share 2011-02-10T20:20:24 makes sense to me. 2011-02-10T20:20:30 Prillicy: http://codepad.org/mFWRjad7 2011-02-10T20:20:34 thanks 2011-02-10T20:21:57 The good thing is, it works on a per ant basis 2011-02-10T20:22:01 your code is good, but it's not what he want 2011-02-10T20:22:03 s 2011-02-10T20:22:14 he doesn't want to build the whole map, ideally, he's building the player map 2011-02-10T20:22:15 he wants what is fastest yes? 2011-02-10T20:22:19 and it doesn't check squares twice 2011-02-10T20:22:28 i want the fastest 2011-02-10T20:22:38 i plan to use that with my state evaluation 2011-02-10T20:22:39 he only wants to build out the squares that the player can see, ignoring the rest of the map for speed 2011-02-10T20:22:48 antimatroid1: I'm not good at c++, I don't really get it. 2011-02-10T20:22:55 antimatroid1: then maybe get rid of the allocations of pair<>s in the inner loop 2011-02-10T20:23:08 Frontier: i'll strip that stuff later 2011-02-10T20:23:37 McLeopold: you're getting a nested loop 2011-02-10T20:23:44 this is the problem 2011-02-10T20:23:46 Yeah, it looks like you know C++ with that initalization on the first line :) 2011-02-10T20:23:51 how many nests are you doing currently? 2011-02-10T20:24:01 McLeopold: take a queue of ant locations, but you also need to know which ant the location was referring to, then use that queue to paint outwards for squares that are "currently" visible 2011-02-10T20:24:04 hold on 2011-02-10T20:24:18 'cause antimatroid does 2 loops, 1 nested 2011-02-10T20:24:23 I'm doing 1 nested loop 2011-02-10T20:24:25 antimatroid: that's what I'm doing? 2011-02-10T20:24:46 McLeopold: are you doing the whole lot at once, or separately? 2011-02-10T20:24:58 if you do it separately, you visit lots of squares more than once 2011-02-10T20:24:59 once for each player 2011-02-10T20:25:10 you want to do it all in one sweep 2011-02-10T20:25:11 my loop is (ant*ant) which is smaller than (squares*ant) 2011-02-10T20:25:12 "visiting" squares isn't really a performance hit 2011-02-10T20:25:26 it is when you are doing it lots and testing each square for visibility etc. 2011-02-10T20:25:40 what is killing performance? 2011-02-10T20:26:08 https://github.com/aichallenge/aichallenge/blob/epsilon/ants/ants.py 2011-02-10T20:26:10 i'm guessing the fact that mcleopold is basically finding each ants visbility then unioning them 2011-02-10T20:26:11 if you are truly doing (visible*ant) nest, then you're probably doing one of the smallest possible loops 2011-02-10T20:26:16 look for "get_vision" 2011-02-10T20:26:24 { You need one map per player, so an algorithm that can generate them all in one sweep would be nice } 2011-02-10T20:26:59 I already have an index of ant locations, by player. 2011-02-10T20:27:08 double nested loop 2011-02-10T20:27:36 is that python? 2011-02-10T20:27:42 yes 2011-02-10T20:27:51 I just started learning that, whadoyaknow 2011-02-10T20:27:52 double nested loop is not bad per se. it depends on the actual numbers 2011-02-10T20:28:12 so, the inner 2 loops produce a unique list of square offsets that are visible from a location 2011-02-10T20:28:27 what does the third loop do? 2011-02-10T20:28:36 McLeopold: try what i'm saying and see if it speeds up 2011-02-10T20:28:40 so for each ant, for each visible square, set to true 2011-02-10T20:28:43 couldn't you use an area formula? 2011-02-10T20:29:00 Prillicy: it is precalculated 2011-02-10T20:29:11 * Frontier sets up a programmig contest for the problem 2011-02-10T20:29:17 your third loop is what's hurting you 2011-02-10T20:29:21 let me fiddle with this 2011-02-10T20:29:34 antimatroid1: I don't know what the hell you're trying to get me to do. :P 2011-02-10T20:29:42 paint outwards :P 2011-02-10T20:29:56 do you understand how to paint a grid with a queue? 2011-02-10T20:29:57 write some pseudo code ,or python 2011-02-10T20:29:59 where does d_row d_col come from? 2011-02-10T20:30:24 that's the precalc, it's a list of offsets a location can see 2011-02-10T20:30:27 antimatroid's code would be less resource intensive than yours 2011-02-10T20:30:43 can someone write mine in python for that? 2011-02-10T20:30:48 i'm very much a python newb 2011-02-10T20:30:48 so, radius 1 produces the list [ (0,1), (0,-1), (1,0), (-1,0) [ 2011-02-10T20:30:51 offsets? as in squares locations or offsets as in 1 square away 2011-02-10T20:31:07 and i keep writing pythong 2011-02-10T20:31:10 I kinda know c++ and kinda know python 2011-02-10T20:31:17 so give me a minute, maybe I can translate 2011-02-10T20:31:35 i'm gonna go do some things, bbiab 2011-02-10T20:32:05 *** Frontier has quit IRC (Read error: Connection reset by peer) 2011-02-10T20:32:19 It's almost worse than perl... 2011-02-10T20:32:25 what is? 2011-02-10T20:32:31 your code 2011-02-10T20:32:38 it makes sense to me :\ 2011-02-10T20:32:39 *** Frontier has joined #aichallenge 2011-02-10T20:32:43 i can't make sense of yours :P 2011-02-10T20:32:57 :) 2011-02-10T20:33:06 McLeopold: your range method/function is what's killing you 2011-02-10T20:33:18 I can see that from here 2011-02-10T20:33:39 line 187? 2011-02-10T20:34:11 you seem to be running the same function three different ways 2011-02-10T20:34:23 vision = [[False for col in range(self.width)] for row in range(self.height)] 2011-02-10T20:34:31 for r in range(radius+1): 2011-02-10T20:34:40 and 2011-02-10T20:34:41 for d_row, d_col in RADIUS[r]: 2011-02-10T20:35:11 the first line initialized a blank mask 2011-02-10T20:35:20 it's got a loop in it 2011-02-10T20:35:22 2 actually 2011-02-10T20:35:30 nested from the looks of it 2011-02-10T20:35:54 here, let me try some pseudo code 2011-02-10T20:35:59 for each ant 2011-02-10T20:36:06 so, how would you initialize the matrix? 2011-02-10T20:37:36 location = [[ant.x, ant.y], [ant.x+1, ant.y], [ant.x-1,ant.y], [ant.x,ant.y-1], [ant.x,ant.y+1]] 2011-02-10T20:37:53 that's radius 1 2011-02-10T20:37:54 end loop 2011-02-10T20:37:57 yes 2011-02-10T20:38:00 I've got that 2011-02-10T20:38:01 I'm not done 2011-02-10T20:38:04 ok 2011-02-10T20:38:11 the loop that follows is 2011-02-10T20:38:17 (not nested) 2011-02-10T20:38:32 for each location (paint passable/impassable) 2011-02-10T20:38:42 2 loops, no nests 2011-02-10T20:38:45 that's what the code is doing 2011-02-10T20:38:52 no it's not 2011-02-10T20:38:54 you've got 4 nests 2011-02-10T20:38:56 yes, it really is 2011-02-10T20:39:08 show me 2011-02-10T20:39:33 walk me through this function line by line 2011-02-10T20:39:45 line 187 and 188 together run the inner loop once for each unique square an ant can see 2011-02-10T20:40:03 I could make it a little tighter, but I was reusing code from the death function. 2011-02-10T20:40:11 I pulled hte code, could you just say what the lines are 2011-02-10T20:40:35 for r in range(radius+1): and for d_row, d_col in RADIUS[r] 2011-02-10T20:40:57 the inside of that runs once per unique square an ant can see 2011-02-10T20:41:09 so why do you have to nest that loop? 2011-02-10T20:41:21 it was to support the death function 2011-02-10T20:41:46 I could rewrite it to the precalulated radius contains all squares <= instead of = 2011-02-10T20:41:48 I could see: for ant in ants { for size*2 in visibleRange{}} as a nested loop 2011-02-10T20:42:13 just so that you don't have to manually build the visual range 2011-02-10T20:42:19 and you could adjust size 2011-02-10T20:42:42 RADIUS[size] is the lookup to get a list of precalculated offsets. 2011-02-10T20:43:10 so what is r in range(radius+1) 2011-02-10T20:43:40 The RADIUS[size] only gives the list of squares equal to that radius, not less than and equal to. 2011-02-10T20:43:47 like I said, I can optimize that. 2011-02-10T20:44:01 is RADIUS core python? 2011-02-10T20:44:10 no, look at the top 2011-02-10T20:44:15 then throw all of that code out 2011-02-10T20:44:31 you're seriously hindering yourself by expanding the radius out 1 pixel at a time 2011-02-10T20:44:43 I understand the reason 2011-02-10T20:44:48 but it's going to slow your code down 2011-02-10T20:44:49 i needed it for the death code, but yes, let me redo that 2011-02-10T20:45:14 I'm not talking about the death code :P 2011-02-10T20:45:41 I'm going to try to build this game on my computer 2011-02-10T20:46:09 I just need to get comfortable first... 2011-02-10T20:47:32 * Frontier considers installing an apache2 server to test ajax & php with the visualizer 2011-02-10T20:48:45 alright, let's see if I can build a 1 ant visual radius 2011-02-10T20:49:51 McLeopold: do you know c# 2011-02-10T20:50:13 maybe 2011-02-10T20:50:32 well, if I build this in c# will you be able to read it? 2011-02-10T20:50:38 hopefully 2011-02-10T20:50:39 * antimatroid1 still thinks you should do what i am 2011-02-10T20:50:46 otherwise it will be my first program in python 2011-02-10T20:50:50 so do i, i just don't understand it 2011-02-10T20:50:50 antimatroid1: he is doing what you're doing 2011-02-10T20:50:54 he's just doing it backward 2011-02-10T20:51:08 he's using his old code to do it, which is hurting him 2011-02-10T20:51:22 aichallenge: McLeopold epsilon * r31a6531 / ants/ants.py : Unrolled a loop for get_vision. - http://bit.ly/fJSWaw 2011-02-10T20:51:27 okay, check it now 2011-02-10T20:51:49 I am still stuck on getting the #$%^ user_sadbox to work in non-security mode so I can test the engine. I have to stop working for today. Grrrr. 2011-02-10T20:51:53 can you just pastebin that part of the code? 2011-02-10T20:52:10 j3camero: don't worry about sadbox, just use the crap I wrote 2011-02-10T20:52:15 it's good enough for now 2011-02-10T20:52:29 I'm running games with bots in their own process. 2011-02-10T20:52:55 that is significantly better 2011-02-10T20:52:57 j3camero: also, check out the new game.py file. 2011-02-10T20:53:08 just because of the removal of extra loops 2011-02-10T20:53:20 Okay, so, I'm still painting lots of the same squares if ants are close to each other 2011-02-10T20:53:20 you were making a 4 layer nest into a 5 layer one 2011-02-10T20:54:08 the only thing you could do to stop that is have an if in the function that if that square had been hit before, skip it, but it's a small performance boost 2011-02-10T20:54:25 The only other way I can think of speeding this up is to ignore redundant ants (don't know how yet) or to do a map scan with some tricky method of finding close ants first. 2011-02-10T20:54:27 on that note, I'm going to focus on my starter pack instead 2011-02-10T20:54:41 you could run a nested ant loop 2011-02-10T20:54:45 I'm not checking the status of a square. 2011-02-10T20:54:54 give each ant distances to every other ant 2011-02-10T20:55:01 I set a value to true, can't speed that up 2011-02-10T20:55:21 I could solve the convex hull problem and only do those ants 2011-02-10T20:55:46 Prillicy: is the scan happening for all ants simultaneously or sequentially? 2011-02-10T20:55:54 sequentially, why? 2011-02-10T20:55:58 you can't do it sequentially and mark squares as visited 2011-02-10T20:55:59 it breaks 2011-02-10T20:56:03 that's how i initially did it 2011-02-10T20:56:04 antimatroid1: I'm not doing it with threads? 2011-02-10T20:56:14 huh? 2011-02-10T20:56:14 i don't even know that that means 2011-02-10T20:56:34 antimatroid1: if you thread it, then you're not giving a real performance boost, you're faking one 2011-02-10T20:56:49 you can paint out from an ant it's whole view radius, then for each other ant (sequentially), or you can paint out from all ants at one (simultaneous) 2011-02-10T20:56:49 and in reality, that would cause the server to crash when a lot of people are watching battles 2011-02-10T20:56:51 not actual threads 2011-02-10T20:57:06 ah, I see what you're saying 2011-02-10T20:57:12 I dont 2011-02-10T20:57:19 if you do the first with marking squares as visited, the algorithm breaks 2011-02-10T20:57:28 again, that requires more loops than painting from each ant 2011-02-10T20:57:44 and you're wrong about the algorithm breaking 2011-02-10T20:57:52 no i'm not 2011-02-10T20:58:01 the squares are all false 2011-02-10T20:58:05 consider ....a.a......... 2011-02-10T20:58:15 marking a square as visited is more expensive than setting the matrix value to true 2011-02-10T20:58:16 ok 2011-02-10T20:58:18 if you do left a's vision first, you'll mark around other a as visited, then he can't scan out 2011-02-10T20:58:30 the inside of the loop is value=true, it's not expensive 2011-02-10T20:58:35 you're thinking there's a visited variable here 2011-02-10T20:58:39 he's skipping that 2011-02-10T20:58:44 i said if you do that it doesn't work 2011-02-10T20:58:47 each ant simply sets its visible squares to true 2011-02-10T20:58:48 a big if there :P 2011-02-10T20:59:02 anyway, I'm trying to build a starter pack here, I've only named the clas 2011-02-10T20:59:28 anyway, now you know not to make that mistake 2011-02-10T20:59:43 Prillicy: https://github.com/aichallenge/aichallenge/blob/epsilon/ants/bots/MyBot.py 2011-02-10T20:59:49 there's a python starter bot 2011-02-10T20:59:52 pretty simple 2011-02-10T20:59:57 It's random bot 2011-02-10T21:00:10 thanks 2011-02-10T21:00:20 I'm going to use this to learn python also 2011-02-10T21:00:25 https://github.com/aichallenge/aichallenge/blob/epsilon/ants/bots/ants.py 2011-02-10T21:00:27 and this ^^ 2011-02-10T21:00:45 do you know list comprehensions? 2011-02-10T21:01:18 i learnt about them with haskell 2011-02-10T21:01:21 they're the shit 2011-02-10T21:01:36 neat 2011-02-10T21:01:53 list comprehensions? I think I was reading about those 2011-02-10T21:02:10 [0 for i in range(10)] makes an array of 10 zeros. 2011-02-10T21:02:30 yeah 2011-02-10T21:02:38 i think i may have gone overboard overloading pre and post fix ++ on state's for ending turns and iterating states 2011-02-10T21:02:40 [['blah' for i in range(10)] for j in range(10)] makes a matrix of 10x10 strings 2011-02-10T21:03:04 i like haskells syntax, it's more set like 2011-02-10T21:03:28 yeah, python takes math concepts and turns them into pseudo code 2011-02-10T21:03:34 I do have to say, the one thing I don't like about python is reading right to left like that 2011-02-10T21:03:42 it's always halfway between math and code 2011-02-10T21:04:05 i'm still not sold on whitespace meaning something 2011-02-10T21:04:44 If there's only one way to do it, then every can read the code easier. That's the idea. 2011-02-10T21:04:57 It's forced indentation 2011-02-10T21:05:08 I like that whitespace has meaning 2011-02-10T21:05:10 I indent anyway 2011-02-10T21:05:29 i always indent, but yeah 2011-02-10T21:05:40 logging off for movies and code 2011-02-10T21:05:43 i've always been a fan of flexibility, most of what i read no one ever sees anyway 2011-02-10T21:05:47 me too. that was a good idea in python. away with the useless { { { } } } 2011-02-10T21:05:47 Yes, I like the structure it imposes on me. I've only have a few wtf due to indentation, so it doesn't really have drawbacks for me. 2011-02-10T21:06:16 Do you have a special key on english keyboards for { and } ? 2011-02-10T21:06:25 I find the brackets comforting sometimes. :) 2011-02-10T21:06:34 yeah, it's shift [ 2011-02-10T21:06:45 that is two keys :) 2011-02-10T21:06:45 Frontier; where are you from? 2011-02-10T21:06:51 what keyboard? 2011-02-10T21:07:02 I have a qwertz keyboard 2011-02-10T21:07:09 ? 2011-02-10T21:07:20 Gεrmαηγ τhατ ιs 2011-02-10T21:07:26 fuuuuuuu 2011-02-10T21:07:35 do you have a special key for double s? 2011-02-10T21:07:44 do you have a key for backwards d's? 2011-02-10T21:07:54 oh yes we do have one for ß 2011-02-10T21:08:16 What is a backward d? Is that cyrillic? 2011-02-10T21:08:33 3 symbols on the number keys? 2011-02-10T21:09:04 there was something somewhere (maybe bash?) where someone asked how to do the backwards d 2011-02-10T21:09:11 probably a troll, but nevertheless made me laugh 2011-02-10T21:09:46 most number keys have 3 symbols yes. linux introduced a few more codes though 2011-02-10T21:09:57 *** Prillicy has quit IRC (Ping timeout: 240 seconds) 2011-02-10T21:10:18 what was your bot name for planet wars? 2011-02-10T21:10:34 Bμτ I ςαη αssιgη ωhατενεr I ωαητ αηγωαγ. Sσ I dση'τ rεαllγ ςαrε αbσμτ τhε sγmbσls. 2011-02-10T21:10:44 frontier? :P 2011-02-10T21:10:50 correct 2011-02-10T21:10:54 100 pts 2011-02-10T21:11:07 bot name? 2011-02-10T21:11:17 http://www.ai-contest.com/profile.php?user_id=9727 2011-02-10T21:11:45 Yeah... I didn't really update my bot in the last weeks ^^ 2011-02-10T21:12:02 i'm still quite impressed with medrimonias effort 2011-02-10T21:12:17 if i recall correctly, they were a first year uni student that learnt to program last year 2011-02-10T21:12:31 which shows even with planet wars beginners were able to compete 2011-02-10T21:12:37 if they put the effort in 2011-02-10T21:13:04 What language made him so productive? 2011-02-10T21:13:17 antimatroid1: I went 5 to 2 against you in the finals. 2011-02-10T21:13:19 don't say python ^^ 2011-02-10T21:13:24 python 2011-02-10T21:13:30 *doh* 2011-02-10T21:13:34 McLeopold: i have no idea how i got the rank i did 2011-02-10T21:13:46 the tree is broken, i lost lots of games 2011-02-10T21:13:51 I also crash out a quarter of my matches :( 2011-02-10T21:14:00 my only saviour was i could also beat top 10 bots 2011-02-10T21:14:22 i think my bot did better than accouns 1 on 1 2011-02-10T21:14:24 *** Blkt has quit IRC (Quit: ERROR: do not makunbound t please!) 2011-02-10T21:14:33 they were pretty well matched anyway just the two 2011-02-10T21:14:43 *** McLeopold has left #aichallenge 2011-02-10T21:25:28 Frontier: what do you mean by "visualized with a special overlay"? 2011-02-10T21:25:44 with the current parameters, it's not possible for enemy ants to land on the same square 2011-02-10T21:25:57 if the fight radius is below 2 that becomes an issue 2011-02-10T21:25:59 antimatroid: something like a flash 2011-02-10T21:26:18 Frontier: do whatever you like :P 2011-02-10T21:27:12 would that direction i just added for colliding ants help? 2011-02-10T21:27:34 i don't think you're going to get ant ids sorry, you can try and talk them into it, but i'm not doing the engine 2011-02-10T21:28:09 so C would be passed instead of W, and it'd mean fade as walk i guess? 2011-02-10T21:41:33 *** javagamer has quit IRC (Remote host closed the connection) 2011-02-10T21:43:59 *** javagamer has joined #aichallenge 2011-02-10T21:52:53 *** amstan has joined #aichallenge 2011-02-10T21:52:53 *** ChanServ sets mode: +o amstan 2011-02-10T21:53:38 antimatroid1: I guess I'll just pick up what you have written down and see if I run into problems. 2011-02-10T21:54:04 A sample output from the engine always helps :) 2011-02-10T21:54:18 Frontier: i think that is mostly sound, one thing, would you prefer "G" or "go" to indicate the end of input for a turn? 2011-02-10T21:54:42 go 2011-02-10T21:55:34 with viewRadius and attackRadius 2011-02-10T21:55:40 and should the ants fade out during the turn that kills them or afterwards? 2011-02-10T21:55:41 can take take the number in and sqrt it? 2011-02-10T21:56:02 i think mcleopold is doing that with bots 2011-02-10T21:56:15 umm... i think during the turn that kills them 2011-02-10T21:56:26 is it possible to sort of do it in increments 2011-02-10T21:56:30 it's not really smooth then though 2011-02-10T21:56:46 so if turn 1 kills them, they fade out from the start of the game to the second turn 2011-02-10T21:57:06 hmmm 2011-02-10T21:57:16 i think it's going to need to be "blocky" 2011-02-10T21:57:20 increments could be more fitting with this square theme of the game 2011-02-10T21:57:34 i'd say do those 3 parts i outlined 2011-02-10T21:57:40 some 8-bit soundtrack anyone? 2011-02-10T21:57:46 yes 2011-02-10T21:58:20 i'm not sure what you'll do about making food look different to ants? 2011-02-10T21:58:35 choose a different color 2011-02-10T21:58:51 i'd use maybe dark brown and light brown for walls/land, but do whatever you want 2011-02-10T21:59:23 are they walls? or can ants attack through non-walkable tiles? 2011-02-10T21:59:34 they can attack through them currently 2011-02-10T21:59:45 so what about water? 2011-02-10T21:59:50 yeah okay 2011-02-10T22:00:01 although they aren't really large patches 2011-02-10T22:00:11 and they can be diagonal? 2011-02-10T22:00:39 diagonal? can you explain that to me. the game is on a square grid 2011-02-10T22:00:49 %. 2011-02-10T22:00:49 .% 2011-02-10T22:01:00 wouldn't look like water is really folowing between those squares 2011-02-10T22:01:02 puddles? 2011-02-10T22:01:52 go with water for the moment 2011-02-10T22:02:01 it does make more sense with attacking like that 2011-02-10T22:04:36 oh, i can probably do it in reverse of the walls in the current visualizer 2011-02-10T22:05:30 Currently the land tiles connect in the situation you pictured out. But I can turn it around and draw land on water instead of walls on land 2011-02-10T22:05:47 cool :) 2011-02-10T22:06:17 i've no idea what size maps are going to be good yet 2011-02-10T22:06:58 i can't imagine it'd be above 200 with turn limits needed 2011-02-10T22:07:07 and realistically i think 100 is more likely 2011-02-10T22:10:28 That is good to know for the amount of detail I can put into every square 2011-02-10T22:10:50 ... basically none ^^ 2011-02-10T22:11:07 that's why i posed it as "sliding pixels" :P 2011-02-10T22:11:36 is it possible for it to show detail when someone zooms in? 2011-02-10T22:11:49 and not after a certain amount out? 2011-02-10T22:12:34 that would be possible, i thought about that. but without ant ids and all the goodies it is a lot of work to restore the current state 2011-02-10T22:13:31 maybe it could be just 2 levels of zoom: fit to screen with no detail and 1:1 with the current level of details 2011-02-10T22:13:49 that could work 2011-02-10T22:14:41 And the new ant game still has edge wrapping? 2011-02-10T22:14:53 very much yes 2011-02-10T22:15:32 it'd be very hard to make a "fair" map for n>4 players without wrapping 2011-02-10T22:37:45 I cannot really imagine games with > 4 players. 2011-02-10T22:37:45 Frontier: do you want information in [x][y] or [row][col] format? 2011-02-10T22:38:01 why not? 2011-02-10T22:38:05 i think it'd be cool 2011-02-10T22:38:07 Just as you like. 2011-02-10T22:38:43 I'd be cool, but ... I don't know it is just a feeling I have that someone sees 4 corners and then 4 players is suddenly the max 2011-02-10T22:38:47 i'm going with row,col, as it's superior 2011-02-10T22:39:43 it's just a matter of indexing the tokens when I build the objects from text input 2011-02-10T22:40:20 *** KP13 is now known as Kingpin13 2011-02-10T22:40:21 (I will use x, y internally because i'm used to them) 2011-02-10T22:42:19 Frontier: i'll get mcleopold to give you that then 2011-02-10T22:42:24 he is giving x,y to bots 2011-02-10T22:42:54 *** CIA-15 has quit IRC (*.net *.split) 2011-02-10T22:42:55 *** elimisteve has quit IRC (*.net *.split) 2011-02-10T22:42:55 *** Cyndre has quit IRC (*.net *.split) 2011-02-10T22:42:55 *** greghaynes has quit IRC (*.net *.split) 2011-02-10T22:43:11 i personally think you're all insane for using x,y 2011-02-10T22:43:46 when i had ant ids, there was no matrix to index you know ;) 2011-02-10T22:44:19 Frontier: does that sample game look alright? 2011-02-10T22:44:46 oh, there is no command for Collide ant without moving it 2011-02-10T22:44:58 for when something is walking into its square, how do you want that? 2011-02-10T22:46:59 Frontier: can you check the etherpad example for a sec? 2011-02-10T22:47:46 *** McLeopold has joined #aichallenge 2011-02-10T22:55:57 That should cover every corner case 2011-02-10T22:56:15 cool 2011-02-10T22:56:40 You could also omit the direction and I take that as a default value of 'no direction' 2011-02-10T22:56:56 but X is fine 2011-02-10T22:57:01 i just thought of a messed up game that would be lots of fun 2011-02-10T22:57:51 not sure how to resolve collisions, but each turn you can fill a square or a line with a colour, and only those squares change to your colour, or you can pick a square of the enemy and it fills outwards into your colour 2011-02-10T22:58:04 winner is the player that first fills the grid with their colour 2011-02-10T22:59:36 Isn't that go? 2011-02-10T22:59:42 Frontier: whatever you want can be done, so remove the x? 2011-02-10T22:59:47 not sure, never really played go 2011-02-10T23:00:08 other than ant ids :P 2011-02-10T23:00:14 you'd have to ask mcleopold for those 2011-02-10T23:00:27 yeah remove it, that is my vengence for no ant ids 2011-02-10T23:01:48 how is the visibility calculated? you said something about sqrt 2011-02-10T23:02:07 the parameter passed is vision^2 2011-02-10T23:02:12 McLeopold: is that right? 2011-02-10T23:02:52 and what metric is used? 2011-02-10T23:02:56 euclidean 2011-02-10T23:03:20 was that the 'normal' one? 2011-02-10T23:03:37 yeah, length of the line between them 2011-02-10T23:04:15 http://codepad.org/uMUiwQtG 2011-02-10T23:04:16 so 4 becomes 2, and the ant can see 2 squares ahead if no rounding errors occur 2011-02-10T23:04:19 that's my edist function 2011-02-10T23:04:25 that's correct 2011-02-10T23:04:44 oh wait, vision is 4 in this example 2011-02-10T23:04:47 fight radius is 2 2011-02-10T23:05:03 but vision radius is going to be ~9.6 i think 2011-02-10T23:05:09 i just used that because it's a smaller map 2011-02-10T23:06:02 then I wouldn't sqrt in the end and just use the squared distance to compare it with the squared viewDistance 2011-02-10T23:06:18 that was the intention i think 2011-02-10T23:06:23 probably 2011-02-10T23:06:35 i did that sometimes in my code 2011-02-10T23:06:38 i've just been making lots of functions for testing atm, i'll clean them up later 2011-02-10T23:09:46 *** Frontier_ has joined #aichallenge 2011-02-10T23:09:46 *** Frontier has quit IRC (Read error: Connection reset by peer) 2011-02-10T23:10:06 *** Frontier_ is now known as Frontier 2011-02-10T23:10:18 power cord slipped out 2011-02-10T23:12:02 antimatroid1: yeah, I'm trying to avoid floating point numbers 2011-02-10T23:12:17 it's not the most intuitive... 2011-02-10T23:12:47 I picked the vision that made the nicest looking circle 2011-02-10T23:12:56 yeah, i like your vision choice 2011-02-10T23:13:00 i hope it doesn't change 2011-02-10T23:13:40 *** Cyndre has joined #aichallenge 2011-02-10T23:13:40 *** CIA-15 has joined #aichallenge 2011-02-10T23:13:40 *** elimisteve has joined #aichallenge 2011-02-10T23:13:40 *** greghaynes has joined #aichallenge 2011-02-10T23:15:21 *** McLeopold has left #aichallenge 2011-02-10T23:16:17 *** Cyndre is now known as Guest70013 2011-02-10T23:17:12 *** McLeopold has joined #aichallenge 2011-02-10T23:17:14 damn hiccups 2011-02-10T23:17:33 *** Guest70013 has quit IRC (Read error: Operation timed out) 2011-02-10T23:17:37 You like upper case letters in every row :) 2011-02-10T23:17:39 I just switched computers 2011-02-10T23:17:48 *** Cyndre_ has joined #aichallenge 2011-02-10T23:17:56 Frontier: i was going with what mcleopold did 2011-02-10T23:18:25 do you want me to throw out 'I' and 'M'? they're fairly redundant? 2011-02-10T23:18:58 That were the ones I was wondering about, yeah. But how nit-picky am I? :/ 2011-02-10T23:19:18 can't be worse than i 2011-02-10T23:20:01 done 2011-02-10T23:20:19 cool 2011-02-10T23:20:46 how about a data version as the first number, just in case? 2011-02-10T23:21:12 I still you mean? 2011-02-10T23:21:19 so if we decide to change something the visualizer can still display both formats 2011-02-10T23:21:50 or like mcleopold's P parameterType value? 2011-02-10T23:22:23 That is more important for the bot<->server communication, but it couldn't harm 2011-02-10T23:22:23 for the maps, there is no 'D' or 'M' anymore, just a block of ascii 2011-02-10T23:23:04 2 formats? 2011-02-10T23:23:15 what are the 2 formats 2011-02-10T23:23:36 Frontier: what if i use the same parameter format as bot input for the visualiser? 2011-02-10T23:23:57 McLeopold: I mean, if the format evolves in the next weeks the visualizer can see that the version number changed and get it right 2011-02-10T23:24:19 Frontier: check etherpad 2011-02-10T23:24:37 I think you'd want map lines to have M again then? 2011-02-10T23:24:49 what line? 2011-02-10T23:25:02 where you get visualiser input parameters 2011-02-10T23:25:37 hmm, yeah 2011-02-10T23:25:55 96 2011-02-10T23:25:56 sorry 2011-02-10T23:26:13 ok, that looks good to me. can i still haz "P version 1" ? 2011-02-10T23:26:36 everyone has versions in their formats 2011-02-10T23:26:46 what do you mean? 2011-02-10T23:26:58 P all noPlayers width etc.? 2011-02-10T23:27:21 no, one parameter each line is fine 2011-02-10T23:27:51 ahh, okay 2011-02-10T23:28:44 I think I'm screwing up the fonts 2011-02-10T23:29:24 McLeopold: you're just playing well :P 2011-02-10T23:29:33 it would be fun to have "fights" on that 2011-02-10T23:29:38 all I want is monospace! 2011-02-10T23:29:54 the game was called core wars i think 2011-02-10T23:30:00 oh well, I'll let you fix it 2011-02-10T23:31:47 I think that's all fixed up? 2011-02-10T23:31:48 I'll add me a few water squares to the sample and update the visualizer on the weekend 2011-02-10T23:32:05 Frontier: I added a "go" between parameter lines and the char map, is that needed? 2011-02-10T23:32:09 antimatroid1: I thought of a solution to the vision issue. 2011-02-10T23:32:20 McLeopold: shoot 2011-02-10T23:32:38 I'll create a matrix at the beginning initialized to 1 2011-02-10T23:33:00 when an ant is created, I'll increment squares in it's vision by 1 2011-02-10T23:33:11 antimatroid1: That isn't needed. 2011-02-10T23:33:20 when it moves, there is a small set of about 17 squares to decrement on one side 2011-02-10T23:33:27 and about 17 to increment on the other 2011-02-10T23:33:48 then, if the number is > 0, the bot can see it 2011-02-10T23:34:07 also, I'll have a second matrix for each bot, which I already have 2011-02-10T23:34:34 if a number goes from 0 to 1, then that flag is set, as in they are seeing the spot for the first time, so send wall info 2011-02-10T23:35:05 so, I'm maintaining the vision mask throughout the game, and don't need to recalculate it each turn 2011-02-10T23:35:21 thumb up 2011-02-10T23:35:41 hmmm, why not just scan out from each players ant each turn and pass information about each square that's seeable? it means you don't need to store any information about who has seen what and people don't need to worry about hashing information of different things and calculating what information they implicitly now have 2011-02-10T23:35:52 *** Frontier has quit IRC (Read error: Connection reset by peer) 2011-02-10T23:36:22 *** Frontier has joined #aichallenge 2011-02-10T23:36:23 we don't want to pass wall info twice 2011-02-10T23:36:32 why not? 2011-02-10T23:36:59 it's more land info i would like repeatedly 2011-02-10T23:37:01 to keep amount of data sent small 2011-02-10T23:37:09 i think it makes everyones life unecessarily more complicated otherwise 2011-02-10T23:37:22 look at my starter bot, it's not too complicated 2011-02-10T23:37:34 clear food and ant data first, then place the new info 2011-02-10T23:37:51 okay but sure, say you want to walk back to where you saw a resource but lost sight while getting a closer one 2011-02-10T23:38:02 it's not straight forward to just say keep track of that square as food unless told otherwise 2011-02-10T23:38:15 you need to work out whether you implicitly know it's no longer food and is visible 2011-02-10T23:38:16 I know, in this scheme, the info disappears 2011-02-10T23:38:26 You have to write a better bot to try and remember 2011-02-10T23:38:43 that's one of the more simple things beginners could have been doing :P 2011-02-10T23:38:54 they will most likely just do it wrong or not at all now 2011-02-10T23:39:22 seen j3camero about? 2011-02-10T23:39:56 McLeopold: is it possible to mark food squares outside an ants field of vision as "unseen land" efficiently? 2011-02-10T23:48:19 when did all the search engines converge? http://cable-lynx.net/eg.png 2011-02-10T23:49:36 antimatroid1: I'll try both and see what the difference in amount of information sent is for a game. 2011-02-10T23:52:33 *** Frontier has left #aichallenge ("Ex-Chat") 2011-02-10T23:53:07 *** Frontier has joined #aichallenge 2011-02-10T23:54:38 I changed the version from "P version 1" to "V 1" at the beginning of the document. After all the "P ... ..." format could be subject to change itself 2011-02-10T23:56:09 Frontier: sure 2011-02-10T23:57:31 I just corrected the sample game 2011-02-10T23:57:42 that empty first turn would have been incorrect with the spawning of an ant 2011-02-10T23:58:35 McLeopold: your making food resolution radius different to battles yeah? 2011-02-10T23:58:45 should we add a parameter to everything for that? 2011-02-10T23:59:06 3 (1.73^2) gives the adjacent 8 square 2011-02-10T23:59:19 you're* 2011-02-10T23:59:59 if you set it at 1, it'd be impossible for food squares to die?