2011-02-03T00:11:28 *** sigh has quit IRC (Ping timeout: 265 seconds) 2011-02-03T00:13:10 *** sigh has joined #aichallenge 2011-02-03T00:25:44 *** chris___0076 has joined #aichallenge 2011-02-03T00:28:34 *** chris__0076 has quit IRC (Ping timeout: 240 seconds) 2011-02-03T00:38:23 *** antimatroid has joined #aichallenge 2011-02-03T00:39:30 amstan: much happened since saturday? 2011-02-03T00:39:38 amstan_: ^^ 2011-02-03T00:39:50 umm 2011-02-03T00:39:54 it's on the forums 2011-02-03T00:40:50 pretty much jbroman coming up with ideas about the contest; more people looking at the repo; some other people playing with ants, trying to convert it to stratego 2011-02-03T00:41:18 oh and me winning my battle against spam 2011-02-03T00:41:25 s/battle/war 2011-02-03T00:41:41 congrats on beating the spam war 2011-02-03T00:41:46 reading forum posts atm 2011-02-03T00:45:27 amstan_: can i suggest a forum poll about games? 2011-02-03T00:45:39 how hard is it to add options to a poll once it's created? 2011-02-03T00:45:42 antimatroid: you're free to make one 2011-02-03T00:45:59 you can edit it just fine, problem is that each time you change the options, all votes are reset 2011-02-03T00:46:14 hmmm okay 2011-02-03T00:48:59 if you cold just edit without it resetting that would be awesome for trolling 2011-02-03T00:49:13 *** Accoun has joined #aichallenge 2011-02-03T00:52:19 sigh: true 2011-02-03T00:52:27 i still think my ants game was pretty cool 2011-02-03T00:52:48 and allowed for simple strategies to be implemented and improved on, as well as plenty of room for variation at the top of the leaderboard 2011-02-03T00:54:04 how did it work? 2011-02-03T00:54:57 antimatroid: which one? 2011-02-03T01:06:32 amstan: the one that frontier wrote a visualiser for 2011-02-03T01:06:50 ants had to attack each other, harvest grains and return them to base to spawn new ants and you could invade their base to win 2011-02-03T01:07:06 and the rules are all fleshed out 2011-02-03T01:07:12 amtan_* 2011-02-03T01:07:16 amstan_** 2011-02-03T01:07:46 the issue with that was that it was hard to visualize 2011-02-03T01:07:58 since you had HP for each ant 2011-02-03T01:08:06 and bases had the food stores 2011-02-03T01:08:08 and so on 2011-02-03T01:08:30 also, getting food and returning the base took too long, games are already superlong 2011-02-03T01:08:33 anyway 2011-02-03T01:08:37 i'm out to sleep 2011-02-03T01:09:52 the visualisation worked quite well for it anyway 2011-02-03T01:10:22 an alternative to speed it up would be to have harvested grains not need to be returned and deoposited 2011-02-03T01:10:36 or even just start people with X ants and have grains increase their hp by 1 2011-02-03T01:11:05 you still have to scout the map out, defend your base, attack them and try to invade them 2011-02-03T01:11:22 it offers quite a lot to do while it's easy to pick up 2011-02-03T01:11:33 anyway, night :) 2011-02-03T01:19:16 *** Mathnerd314 has quit IRC (Remote host closed the connection) 2011-02-03T02:44:22 *** Chris_0076 has joined #aichallenge 2011-02-03T02:45:47 *** chris___0076 has quit IRC (Ping timeout: 240 seconds) 2011-02-03T02:54:38 *** boegel has joined #aichallenge 2011-02-03T02:55:17 *** boegel has joined #aichallenge 2011-02-03T02:59:08 *** fgump has quit IRC (Quit: Leaving) 2011-02-03T03:06:46 *** boegel has quit IRC (Ping timeout: 255 seconds) 2011-02-03T03:11:47 *** amstan_ has quit IRC (Ping timeout: 240 seconds) 2011-02-03T03:23:19 *** mega1 has joined #aichallenge 2011-02-03T03:48:12 *** pyro- has quit IRC (Changing host) 2011-02-03T03:48:12 *** pyro- has joined #aichallenge 2011-02-03T03:49:32 *** boegel has joined #aichallenge 2011-02-03T03:49:33 *** aerique has joined #aichallenge 2011-02-03T04:29:26 *** Naktibalda has joined #aichallenge 2011-02-03T04:40:23 *** Palmik has joined #aichallenge 2011-02-03T04:43:32 *** dr`away has quit IRC (Ping timeout: 255 seconds) 2011-02-03T04:43:39 *** dr`away has joined #aichallenge 2011-02-03T05:03:34 *** delt0r___ has joined #aichallenge 2011-02-03T05:05:03 *** delt0r_ has quit IRC (Ping timeout: 255 seconds) 2011-02-03T05:21:48 McLeopold: looks nice that last ant post with 8 player goodness 2011-02-03T05:43:36 *** Accoun has quit IRC (Ping timeout: 240 seconds) 2011-02-03T05:43:54 *** delt0r___ has quit IRC (Read error: Operation timed out) 2011-02-03T05:48:03 *** Accoun has joined #aichallenge 2011-02-03T06:13:25 *** sigh has quit IRC (Remote host closed the connection) 2011-02-03T06:32:35 *** pyro- has quit IRC (Quit: gute nacht) 2011-02-03T08:33:19 *** Meatkat has quit IRC (Ping timeout: 246 seconds) 2011-02-03T09:15:51 anyone about want to talk simplified multiplayer ants? 2011-02-03T09:16:04 McLeopold? 2011-02-03T09:22:30 *** Frontier has joined #aichallenge 2011-02-03T09:44:25 *** boegel has quit IRC (Ping timeout: 241 seconds) 2011-02-03T09:47:01 *** boegel has joined #aichallenge 2011-02-03T10:11:23 Has there been any talk here recently that I missed? 2011-02-03T10:18:08 Frontier: depends on your value of recently 2011-02-03T10:18:41 aerique: The last two weeks 2011-02-03T10:25:59 *** marek_z has joined #aichallenge 2011-02-03T10:28:04 hey i just found out about this contest, are people still playing this game? can i still write a bot for fun? 2011-02-03T10:29:01 people are waiting for another contest 2011-02-03T10:30:42 marek_z: You can of course. You will have to set up some software on your computer and then test your bot against the bots that were released after the contest ended. 2011-02-03T10:31:25 so there's no server still online, but the game engine is available to run locally? 2011-02-03T10:31:37 Actually you can just use the starter pack and replace the bots in it with some of the other bots :) 2011-02-03T10:31:42 correct 2011-02-03T10:36:15 cool 2011-02-03T10:45:14 *** aerique has quit IRC (Quit: ...) 2011-02-03T11:08:07 *** Kingpin13 has joined #aichallenge 2011-02-03T11:16:33 antimatroid: you there? 2011-02-03T11:39:46 *** boegel has quit IRC (Ping timeout: 255 seconds) 2011-02-03T11:47:18 *** sugarshark has joined #aichallenge 2011-02-03T12:49:47 *** klih has joined #aichallenge 2011-02-03T13:02:04 *** Naktibalda has quit IRC (Quit: ChatZilla 0.9.86 [Firefox 3.6.8/20100722155716]) 2011-02-03T13:13:08 *** bhasker has joined #aichallenge 2011-02-03T13:27:14 jmcarthur: you there? 2011-02-03T13:27:30 hey 2011-02-03T13:27:42 so, our idea does cause blocking 2011-02-03T13:27:48 even with ties causing deaths 2011-02-03T13:27:50 xx00 2011-02-03T13:27:57 oh? 2011-02-03T13:28:16 the x on the front has 1 support and 1 enemy. including himself, it's 2 to 1, so he lives 2011-02-03T13:28:21 same with the 0 on the front 2011-02-03T13:28:24 btw, i noticed that movement is dependent on the ordering of the orders you give the engine. :\ 2011-02-03T13:28:36 yeah, that's my next fix, but it's complicated 2011-02-03T13:28:44 yeah, quite complicated 2011-02-03T13:28:58 you have to look for cycles and junk. it's basically this crazy graph algorithm... 2011-02-03T13:29:05 yep 2011-02-03T13:29:12 i'm don't really like that 2011-02-03T13:29:15 *i don't 2011-02-03T13:29:24 unless, the bot is allowed to give the ordering 2011-02-03T13:29:40 then, just use that, and if the bot messes up, it's their fault 2011-02-03T13:29:46 yeah... 2011-02-03T13:29:55 as long as range is used for combat then that works 2011-02-03T13:30:03 ? 2011-02-03T13:30:08 i'm about for a minute 2011-02-03T13:30:14 yeah! 2011-02-03T13:30:16 if there's ever a chance that two opposing ants might try to move to the same space, then that rule doesn't work 2011-02-03T13:30:22 can't you just revert collisions? 2011-02-03T13:30:29 I thought about that. 2011-02-03T13:30:39 antimatroid: then you have to be willing to do that recursively 2011-02-03T13:30:47 jmcarthur: yes.. 2011-02-03T13:31:10 I figured each bot's ants would move with bumps failing for an individual bot 2011-02-03T13:31:14 i'm just saying it gets complicated to reason about 2011-02-03T13:31:19 is there a view radius atm? or can you see everything? 2011-02-03T13:31:24 then if opponents occupy the same space, the ants die 2011-02-03T13:31:27 atm you can see everything i think 2011-02-03T13:31:35 but i think we intend to change that 2011-02-03T13:31:35 death is the next phase anyway, so it works 2011-02-03T13:31:54 i'm going to think about the combat rules a bit more 2011-02-03T13:32:07 *** Palmik has quit IRC (Read error: Connection reset by peer) 2011-02-03T13:32:07 i find the original rules boring and silly 2011-02-03T13:32:11 actually, I don't know, I haven't even looked at the bot code or how orders work 2011-02-03T13:32:12 but maybe the bodies thing would change that 2011-02-03T13:32:28 McLeopold: basically the bots just give orders to the engine one at a time 2011-02-03T13:32:47 McLeopold: each bot gives all orders in sequentially before moving on to the next bot 2011-02-03T13:32:52 *orders sequentially 2011-02-03T13:33:02 Okay, so, with 2 ants defeating 1 ant and the 2 survive, we will have blocking happen. No way around that. 2011-02-03T13:33:46 are maps symmetric at the start? and is replenishment of resources at least symmetric to starting positions/ 2011-02-03T13:33:59 antimatroid: haven't got that far yet 2011-02-03T13:34:03 and if so, i think 8 player games could be reasonably symmetric if played on a torus 2011-02-03T13:34:23 antimatroid: symmetric at start, plans are currently to go for a "fair but random" distribution of resources, for some definition of "fair" 2011-02-03T13:34:42 the randomness is only replenishment 2011-02-03T13:34:57 antimatroid: but nothing in stone 2011-02-03T13:35:03 "fair" i think would have to be from it being symmetric to starting positions 2011-02-03T13:35:11 jmcarthur: so, do we want blocking walls of ants? 2011-02-03T13:35:19 *** klih has quit IRC (Quit: Page closed) 2011-02-03T13:35:22 McLeopold: bodies or combat lock? 2011-02-03T13:35:27 combat lock 2011-02-03T13:35:42 if we have bodies i think combat lock is a bad thing 2011-02-03T13:35:53 but i'd like combat to have *some* sort of strategy 2011-02-03T13:35:58 then we have to go with if any ant is nearby, you die 2011-02-03T13:35:59 i'm going to consider the issue a bit more 2011-02-03T13:36:06 which means formations are out 2011-02-03T13:36:07 an option for colliding friend ants is to merge them into 1 ant 2011-02-03T13:36:12 and have it considered a stupid move 2011-02-03T13:36:28 send in lone ants to kill more than one at a time is the best strategy 2011-02-03T13:37:07 i started my own engine in an attempt to get a better grasp on some of these ideas 2011-02-03T13:37:16 with the same comonadic approach i applied to stratego 2011-02-03T13:37:25 hopefully it leads me to something simple 2011-02-03T13:37:26 *** Palmik has joined #aichallenge 2011-02-03T13:37:26 anyway, i'm back to bed 2011-02-03T13:37:33 cya 2011-02-03T13:37:33 i'll play around with maps in the next few days 2011-02-03T13:38:15 i'd be interested in having open maze like maps on a torus that are somewhat symmetric 2011-02-03T13:38:25 yes, that would be fun 2011-02-03T13:39:14 so if you have a solid mass of ants against another mass, with a distance of 1 counting for death rules, then an ant on the front is facing 3 enemies with 6 support 2011-02-03T13:40:16 with a distance of 2 (not including corners) it becomes 9 to 4 2011-02-03T13:41:06 i'm considering what it might be like to consider the situation of the opponent ants when determining their combative strength against you, somehow 2011-02-03T13:41:21 if we don't include the ant itself, distance 1, it's 5 to 3 2011-02-03T13:41:24 might lead to a complicated graph algorithm if done "right" though 2011-02-03T13:42:36 maybe help is only orthogonal, but attack is diagonal? 2011-02-03T13:42:45 then it would be 3 v 3, killing the ant 2011-02-03T13:43:23 maybe blocking lines of ants is good? 2011-02-03T13:43:26 i was thinking what if we counted "support" only for ants in range of your *opponents* 2011-02-03T13:43:31 and no bodies? 2011-02-03T13:43:50 hmm... 2011-02-03T13:43:57 locking might still happen. didn't think enough yet 2011-02-03T13:44:32 that would work 2011-02-03T13:44:47 two solid masses... with distance=1, ant on front is facing three and has.... four support :\ 2011-02-03T13:44:53 not counting himself 2011-02-03T13:45:01 and we could still use the ant itself for support 2011-02-03T13:45:08 deadlock 2011-02-03T13:45:11 no, just 3 support 2011-02-03T13:45:27 err, right 2011-02-03T13:45:34 hmm 2011-02-03T13:45:37 more complicated here... 2011-02-03T13:45:49 the support isn't effective against *all* the enemy ants in this case 2011-02-03T13:45:55 it's an intersection of friendly ants within 1 of the ant that may die, and that ants enemies in range 2011-02-03T13:45:59 some support is effective against some, and some against some others 2011-02-03T13:46:47 if you've ever played diplomacy, and tried to adjucate a move, it gets hard. 2011-02-03T13:47:04 so what's necessary is to iterate over each enemy ant in range, then count the number of friendlies in range of that enemy... 2011-02-03T13:47:13 I'd try to stick with totals, and keep the algorithm simple, if possible. 2011-02-03T13:47:29 if range of that enemy, and the ant in question 2011-02-03T13:47:31 and if that number, counting yourself, is < 2, you die 2011-02-03T13:47:49 eh 2011-02-03T13:47:54 i don't understand my own idea 2011-02-03T13:48:04 *** sigh has joined #aichallenge 2011-02-03T13:48:14 we need a whiteboard 2011-02-03T13:49:48 okay, simplified rule: 2011-02-03T13:50:35 let a = how many units i'm fighting. let bs = how many units are each of my opponents fighting. if any b in bs is >= a, i die 2011-02-03T13:50:39 oops 2011-02-03T13:50:43 backward in the end 2011-02-03T13:50:53 http://ietherpad.com/TR0zbEqvx1 2011-02-03T13:50:58 let a = how many units i'm fighting. let bs = how many units are each of my opponents fighting. if any b in bs is <= a, i die 2011-02-03T14:18:14 *** sigh has quit IRC (Remote host closed the connection) 2011-02-03T14:29:06 *** boegel has joined #aichallenge 2011-02-03T14:31:29 *** marek_z has quit IRC (Ping timeout: 240 seconds) 2011-02-03T14:56:16 jmcarthur: I've got something. But I might have messed up. 2011-02-03T14:56:43 http://imgur.com/3JSyU 2011-02-03T14:58:10 lol 2011-02-03T14:58:13 *** marek_z has joined #aichallenge 2011-02-03T14:58:52 those are some tough ants 2011-02-03T14:59:27 wow that doesn't look at all like what i expected 2011-02-03T14:59:33 yeah, it's a bug 2011-02-03T14:59:34 something must be messed up 2011-02-03T14:59:36 okay 2011-02-03T14:59:47 but it still looks cool! 2011-02-03T15:00:03 heh 2011-02-03T15:02:18 *** marek_z has quit IRC (Ping timeout: 240 seconds) 2011-02-03T15:23:09 *** Accoun has quit IRC () 2011-02-03T15:23:56 *** nullkuhl has joined #aichallenge 2011-02-03T15:24:41 jmcarthur: I found my bug 2011-02-03T15:24:50 yay! 2011-02-03T15:25:16 *** Naktibalda has joined #aichallenge 2011-02-03T15:26:51 I was "marking" ants as dead, but didn't include the code to remove them. 2011-02-03T15:26:55 whoops 2011-02-03T15:27:08 The upside is I now have some unit testing stuff. 2011-02-03T15:27:25 heh 2011-02-03T15:28:02 honestly, i think it would make more sense to just copy ants to a new AntList as they are determined to survive. that would prevent all this deep copying and weirdness 2011-02-03T15:28:18 not even copy. just add them to the new AntList 2011-02-03T15:28:38 yeah 2011-02-03T15:28:40 probably 2011-02-03T15:28:43 but whatever. it's a prototype 2011-02-03T15:28:56 (hopefully) 2011-02-03T15:29:19 it looks pretty good, I'm running a large map now 2011-02-03T15:29:24 but it is a lot slower 2011-02-03T15:29:40 there's probably a lot of room for optimization 2011-02-03T15:29:47 I don't even like the idea of a list of ants 2011-02-03T15:29:53 nor do it 2011-02-03T15:29:55 *do i 2011-02-03T15:29:58 I'm thinking it should just be a grid. 2011-02-03T15:30:00 there's no point 2011-02-03T15:30:02 exactly 2011-02-03T15:30:06 that's how my code is doing it 2011-02-03T15:30:12 It's the java programmer in jeff that creates this stuff. 2011-02-03T15:30:38 traversing an entire list over and over just to find nearby ants is soooo wasteful 2011-02-03T15:31:18 yay for comonads! :D 2011-02-03T15:31:27 ? 2011-02-03T15:33:19 comonads are pretty general, but the way i'm using them is: i have the map with a focus. i can move the focus around and extract the value at the current position. if i define a function (Focus a -> b), then i have a way to transform it into a function (Focus a -> Focus b). and i can transform that into (Map a -> Map b). so basically i just have a way to define the new state of each position in 2011-02-03T15:33:21 isolation of all others 2011-02-03T15:33:58 in terms of its context 2011-02-03T15:35:04 comonad is monad's evil step brother 2011-02-03T15:35:45 still lost 2011-02-03T15:36:16 *** Palmik_ has joined #aichallenge 2011-02-03T15:36:20 some memoization would be useful for this new set of rules 2011-02-03T15:36:41 I'm finding lists of enemies for an ant many times over 2011-02-03T15:36:48 yes 2011-02-03T15:36:49 almost done 2011-02-03T15:37:20 if i ever bother finishing this code, i'll document it throughly and show you what the crap i'm talking about 2011-02-03T15:38:22 *** Palmik has quit IRC (Ping timeout: 272 seconds) 2011-02-03T15:41:20 http://imgur.com/HZzA5 2011-02-03T15:42:35 there are a few examples of defensive ants, so it's a little better 2011-02-03T15:42:50 meaning, you can attempt a better survival rate with formations 2011-02-03T15:43:39 yeah 2011-02-03T15:43:58 with this particular AI it's a bit hard to follow whether there's much potential strategy here 2011-02-03T15:44:00 hello, any one have an idea about rectangle detection algorithms ? 2011-02-03T15:44:13 like, *i* think there would be. it's just not well demonstrated by this, i think 2011-02-03T15:44:40 no, a few contrived scenarios would be needed to demonstrate it 2011-02-03T15:45:05 But, if the powers that be will accept this rule change, finding useful formations will be part of the fun 2011-02-03T15:45:23 yep 2011-02-03T15:45:32 so,about lists 2011-02-03T15:46:23 with a sparse map (few ants) looping through the entire map looking for ant might be less time then looping through lists of ants looking for neighbors? 2011-02-03T15:46:56 no need to loop through the whole map 2011-02-03T15:47:00 just look nearby 2011-02-03T15:47:03 maybe we could efficiently keep track of both 2011-02-03T15:47:10 it could be a dense map, really 2011-02-03T15:47:25 okay, but for the do_death routine, I need a list of ants to start killing off 2011-02-03T15:47:35 data Tile = Water | Land | Body | Ant Player 2011-02-03T15:47:51 hmm, should add a Maybe Body to the Ant constructor 2011-02-03T15:48:00 but yeah, there's my tile type for a dense map 2011-02-03T15:48:17 Array (Word, Word) Tile 2011-02-03T15:48:24 haskell? 2011-02-03T15:48:25 that's my map 2011-02-03T15:48:28 yeah 2011-02-03T15:48:48 haskell is sooo different 2011-02-03T15:48:53 data Tile = Water | Land | Body | Ant Player Bool -- added a Bool for whether an ant is carrying a body 2011-02-03T15:49:20 what's a word ? 16bit number? 2011-02-03T15:49:38 machine dependent. either 32 bit or 64 bit. could go with a Word16 or something though 2011-02-03T15:50:02 it's just that the Array type i'm using right now is unboxed already, so it wouldn't pack it anyway 2011-02-03T15:50:05 *is boxed already 2011-02-03T15:50:15 meaning? 2011-02-03T15:50:47 well, for reasoning having to do with laziness, we have so-called boxed types. that basically means that it's represented by a thunk. in a collection, that means a level of indirection 2011-02-03T15:50:53 so it's an array of pointers 2011-02-03T15:51:19 i could go for an unboxed array, but it's a little more work, for the same reason that it's more work in any other language, really 2011-02-03T15:51:36 well, at least for complex types 2011-02-03T15:54:05 but anyway, the point is that we can just have a dense array and just look around for ants nearby 2011-02-03T15:54:37 we could do a prepass over the array to compute an array storing just the number of opponents near each ant 2011-02-03T15:54:39 haskell's doing all the heaving lifting for you then? 2011-02-03T15:54:56 and then look into that array so we don't have to recompute it every time 2011-02-03T15:55:06 what heavy lifting are you talking about? 2011-02-03T15:55:21 the indirection and such? 2011-02-03T15:55:25 yeah 2011-02-03T15:55:27 I guess 2011-02-03T15:55:35 yeah, the indirection is kind of an operational detail 2011-02-03T15:55:38 I'm not use to lazy evaluation 2011-02-03T15:55:48 there's a cost model for it, but it's not something you have to worry about directly 2011-02-03T15:56:18 so, with a 10x10 board, with 2 ants, how do you know where the ants are? 2011-02-03T15:56:24 i'm actually going to make the type strict anyway, so i could really just have a packed array if i wanted to bother with that 2011-02-03T15:56:41 you would have to make a pass over the board, but only once 2011-02-03T15:56:45 not for each ant 2011-02-03T15:57:02 right, that's what I was talking about when I said loop through the board 2011-02-03T15:57:31 ah, i meant for each ant 2011-02-03T15:57:36 we're on the same page then 2011-02-03T15:57:39 okay 2011-02-03T15:57:57 For a minute, I thought haskell was "really" good at matricies 2011-02-03T15:58:12 why wouldn't it be? 2011-02-03T15:58:18 i think i don't understand what you mean 2011-02-03T15:58:33 in some ways it is. :) 2011-02-03T15:58:42 Knowing where the ants are without doing a pass over the board. 2011-02-03T15:58:54 it can eliminate intermediate arrays and fuse them into tighter loops and stuff, for example 2011-02-03T15:59:09 ah 2011-02-03T15:59:15 well, it's not magic ^_^ 2011-02-03T16:01:04 you could have a separate list of the ant positions as an optimization, but i really think effort would be better spent elsewhere 2011-02-03T16:01:10 I think maintaining a list of ants, and a matrix, and keeping them in sync, would allow for the best performance 2011-02-03T16:01:26 it would 2011-02-03T16:01:56 If it's a single class, with the proper functions, you don't have to worry about keeping them in sync, you just request changes. 2011-02-03T16:02:16 sure. i just mean... i don't think the outer loop is going to be a big deal at all 2011-02-03T16:02:32 Okay, then we really are on the same page. 2011-02-03T16:02:43 so what if i increment a number a couple hundred times too many? 2011-02-03T16:02:58 overflow? 2011-02-03T16:04:21 heh 2011-02-03T16:04:35 then use a Word64 or a bignum type of some sort 2011-02-03T16:04:50 and that's overkill 2011-02-03T16:05:41 the pass to calc enemy counts into a matrix is a good idea, that's the memoization I was talking about 2011-02-03T16:06:01 as long as we aren't iterating over all ants (or worse, over all positions) for every single ant on every single turn, i'm happy 2011-02-03T16:06:11 and, maybe a good way to explain the rules to others 2011-02-03T16:06:26 yeah it turns it into sort of a heat map 2011-02-03T16:06:59 you need to iterate over all ants every turn anyway, to determine if they will live 2011-02-03T16:07:19 over every turn yes, for every *ant*, no 2011-02-03T16:07:25 O(n) vs. O(n^2) 2011-02-03T16:07:43 (and it's even worse, currently) 2011-02-03T16:07:51 i suspect that right now it's O(n^3) 2011-02-03T16:08:01 so, which ants do you ignore? ones not within 2 of an enemy? 2011-02-03T16:08:11 sure 2011-02-03T16:08:18 i don't have the code for that yet 2011-02-03T16:08:20 how would you keep track of that? 2011-02-03T16:08:30 it's an array. just check nearby positions 2011-02-03T16:08:42 but then, your iterating 2011-02-03T16:08:47 over positions, not over ants 2011-02-03T16:08:52 and only near positions 2011-02-03T16:08:58 what's the difference? 2011-02-03T16:09:07 it's a constant, and it's small 2011-02-03T16:09:31 you lost me 2011-02-03T16:09:39 an ant is at a position (x,y) 2011-02-03T16:10:00 check all positions in radius 2 of (x,y) 2011-02-03T16:10:08 that's a constant number of positions 2011-02-03T16:10:15 * Frontier smiles wondering 2011-02-03T16:10:33 heh, i could have just written the code in this amount of time :P 2011-02-03T16:17:33 *** Naktibalda has quit IRC (Remote host closed the connection) 2011-02-03T16:20:02 *** Accoun has joined #aichallenge 2011-02-03T16:42:08 *** amstan_ has joined #aichallenge 2011-02-03T16:42:08 *** ChanServ sets mode: +o amstan_ 2011-02-03T16:42:22 *** Meatkat has joined #aichallenge 2011-02-03T16:59:28 *** marek_z has joined #aichallenge 2011-02-03T17:24:34 *** sugarshark has quit IRC (Quit: ERC Version 5.3 (IRC client for Emacs)) 2011-02-03T17:37:06 *** nano` has joined #aichallenge 2011-02-03T17:38:43 *** marek_z has quit IRC (Ping timeout: 240 seconds) 2011-02-03T17:51:19 *** boegel has quit IRC (Quit: Leaving) 2011-02-03T17:56:33 *** nano` has quit IRC (Quit: Leaving) 2011-02-03T18:16:42 *** Palmik_ has quit IRC (Remote host closed the connection) 2011-02-03T18:47:53 *** dlila has joined #aichallenge 2011-02-03T19:17:34 *** amstan_ has quit IRC (Remote host closed the connection) 2011-02-03T19:18:06 *** mega1 has quit IRC (Ping timeout: 245 seconds) 2011-02-03T19:19:43 *** amstan has joined #aichallenge 2011-02-03T19:19:44 *** ChanServ sets mode: +o amstan 2011-02-03T19:32:59 *** bhasker_ has joined #aichallenge 2011-02-03T19:33:24 *** bhasker has quit IRC (Ping timeout: 250 seconds) 2011-02-03T19:49:35 *** Meatkat has quit IRC (Ping timeout: 246 seconds) 2011-02-03T19:52:53 are ants allowed to stand still on a given move? or do they have to issue a move? 2011-02-03T19:53:11 if so, then adding in collision reversion adds the ability to do "more" moves 2011-02-03T20:03:28 *** smellyhippy has quit IRC (Ping timeout: 240 seconds) 2011-02-03T20:04:51 *** bhasker has joined #aichallenge 2011-02-03T20:07:00 *** bhasker_ has quit IRC (Ping timeout: 240 seconds) 2011-02-03T20:14:02 antimatroid: what is collision reversion? 2011-02-03T20:14:29 McLeopold: if two ants move to the same square the move just fails 2011-02-03T20:14:35 i think that is what he means, anyway 2011-02-03T20:15:59 oh, I was going to kill the ants 2011-02-03T20:16:27 IMO that is the most sensible 2011-02-03T20:16:34 unless they are friendly, then they bumb? 2011-02-03T20:16:36 bump 2011-02-03T20:16:57 it should only be possible if they are friendly unless the combat radius is low, no? 2011-02-03T20:17:39 yes, and the combat radius is low 2011-02-03T20:18:00 I could still kill them. 2011-02-03T20:18:06 It funnier that way. 2011-02-03T20:19:00 *** Accoun has quit IRC (Ping timeout: 265 seconds) 2011-02-03T20:19:01 the way i see it, it's an error to make two of your own ants end up on the same square, so turning that case into a noop is just making things complicated. the question of merging vs. killing isn't really that important, i guess 2011-02-03T20:19:28 *** Accoun has joined #aichallenge 2011-02-03T20:21:13 can't enemy ants be adjacent if they have equal enemy numbers within r? 2011-02-03T20:21:21 then presumably they can move into the same square 2011-02-03T20:22:01 also, what order are you processing? are you spawning new ants before or after killing off others? 2011-02-03T20:22:38 and am i getting it right that if there are 3 opponents, but only 1 on each team all in the same radius section, they all die? 2011-02-03T20:23:00 would it be better to have it that you die if you have more enemy ants of a particular team within the radius? 2011-02-03T20:27:19 antimatroid: good questions, I'm trying out different rules to see what makes the game play the best 2011-02-03T20:27:51 my example games from yesterday lead to the possibility of creating blocking walls of live ants 2011-02-03T20:27:53 McLeopold: I know, I'm just trying to get a feel for it myself :) 2011-02-03T20:28:04 We are now trying a different rule set to prevent that 2011-02-03T20:28:10 if you allowed ants to kill by walking onto them, you could "bomb" their walls 2011-02-03T20:28:17 that would be cool 2011-02-03T20:28:17 I'm still not sure if it is desirable or not 2011-02-03T20:28:36 good point 2011-02-03T20:28:59 that may bring back the semi blocking rules then 2011-02-03T20:29:24 we are working on rules in general where a good formation of ants can survive without losses 2011-02-03T20:29:54 otherwise, you have suicide ants that can take out multiple ants easily 2011-02-03T20:30:07 again, not sure what is best, but I'm leaning against the suicide ants 2011-02-03T20:30:25 so like a glider in game of life? 2011-02-03T20:30:25 Order processing is move, death, birth, food placement 2011-02-03T20:30:32 it can roam around without dying? 2011-02-03T20:30:53 well,not exactly, but it can defend against a lone ant 2011-02-03T20:31:08 gliders just move, they don't repair 2011-02-03T20:31:15 that should already be possible? 2011-02-03T20:31:31 not in jeff's version 2011-02-03T20:31:41 can ants move diagonally? 2011-02-03T20:33:20 hmmm crap, you also have to resolve situations like if 2 of player 3's ants and 1 of player 4's ants land on the one square 2011-02-03T20:33:35 anyway, i'm going out for a while, i'll keep poking around later 2011-02-03T20:34:27 I'm thinking I will crank out an ants/zombies engine this weekend, unless someone has already started/ 2011-02-03T20:35:07 *** Kingpin13 has quit IRC (Quit: You're a kitty!) 2011-02-03T20:35:10 j3camero: i think mcleopold is playing around with rules atm 2011-02-03T20:35:17 i think it'd be best to flesh that out first 2011-02-03T20:35:22 That is a good thing. 2011-02-03T20:35:25 can i put in a request for a turn 0 as well? 2011-02-03T20:36:01 where players are passed game dimensions, number of players etc. and given x amount of time to set up before returning go to actually move onto the first turn 2011-02-03T20:36:19 Yeah I am down. 2011-02-03T20:36:27 that also gives the java people etc. time for them to set up before anyone receives important information about the game 2011-02-03T20:36:34 j3camero: nice to see you 2011-02-03T20:36:36 and people can assign memory etc. 2011-02-03T20:37:31 j3camero: how do you feel about maps being on a torus (edges wrapped), symmetric other than positioning relative to other players and resource placement being symmetric to everyone's starting positions? 2011-02-03T20:37:34 j3camero: I've forked the github repo, so you can watch the changes I'm making 2011-02-03T20:38:14 the engine would need to just wrap around the coordinates 2011-02-03T20:38:36 If you didn't want a torus, you could just put a barrier around the edge of the map 2011-02-03T20:41:22 well i'll put a map generator together later 2011-02-03T20:41:37 I do love the toroid maps. Torus is also awesome because then you can create maps without corners. 2011-02-03T20:42:28 the map gen i'll make will give you large open maze like regions 2011-02-03T20:43:21 i'm just planning to change the one i made for the other ants game 2011-02-03T20:43:35 j3camero: I'll work on wrapping the coordinates tonight. 2011-02-03T20:43:59 I'm also working on performance right now, which means I may ditch your AntList class... 2011-02-03T20:44:09 and let the number of players vary, then put them along a torus with 2 players on each ring section 2011-02-03T20:44:34 McLeopold: just have an old and new grid 2011-02-03T20:44:48 i'm a bit iffy about the most efficient way to work out deaths atm 2011-02-03T20:44:53 i'll play around later if you haven't got it 2011-02-03T20:44:59 http://imgur.com/2RfZ3 2011-02-03T20:45:30 my suggestion : make the walls the resource colour, and resources light yellow or green 2011-02-03T20:45:33 on that game, at the top, you can see red take out a lot of yellow ants without much loss 2011-02-03T20:45:38 i like the brown floor 2011-02-03T20:46:10 it's dirt color 2011-02-03T20:46:25 walls and resources are shades of gray 2011-02-03T20:46:28 McLeopold: awesome. I have to head out now but I'll be hacking all weekend. Hopefully see you here. 2011-02-03T20:46:43 the map file itself defines the player colors 2011-02-03T20:46:44 Don't worry about ditching my code. I can't believe you're even using it :-) 2011-02-03T20:46:53 well then... 2011-02-03T20:46:56 what about no explicit walls? each square has a given height, you can only walk to an adjacent square if the height difference is <= h 2011-02-03T20:47:04 and you are guaranteed to be able to walk to every square 2011-02-03T20:47:22 antimatroid, maybe, jmcarthur and I discussed it, but we are trying to keep it simple 2011-02-03T20:47:40 i really like that way of breaking up a grid 2011-02-03T20:47:51 anyway, gotta run 2011-02-03T20:48:00 cya 2011-02-03T20:49:43 you could totally do something like if you have 3 ants adjacent to one of theirs, it becomes yours 2011-02-03T20:53:33 i'm beginning to learn toward simple adjacency rules for combat instead of distance 2011-02-03T20:53:39 it would make things sooooo much simpler 2011-02-03T20:54:22 or maybe instead of euclidean distance it could be manhattan distance, or even just "within this square" 2011-02-03T20:54:22 you could go to hp and require attacking, but yeah 2011-02-03T20:54:55 straight up adjacency with hp is not what i meant :P 2011-02-03T20:55:32 also, requiring adjacency actually mucks up the rules when you consider simultaneous movement. means you have to do weird fusion things when they just move to the same spot instead of allowing them to fight with a square between them 2011-02-03T20:55:47 "within a square" seems good to me though, really 2011-02-03T20:55:58 *** Mathnerd314 has joined #aichallenge 2011-02-03T20:56:33 i guess distance 1 would still have the same issues as adjacent only 2011-02-03T20:57:01 a 5x5 square where you are in the center is probably the easiest 2011-02-03T20:57:22 anything within that square is "in range" 2011-02-03T20:59:01 manhattan distance? 2011-02-03T20:59:30 you count horizontal and vertical distance only, not arbitrary angles 2011-02-03T20:59:42 that's actually probably harder than euclidean 2011-02-03T20:59:46 so, diamond patterns 2011-02-03T20:59:53 yeah, i guess it would be that 2011-02-03T21:00:34 the range can be any shape, once we pick it, we can hard code it 2011-02-03T21:01:19 well, if we are to have a variable for the size of that shape, then the choice of shape can have a bigger effect on complexity. if we hard code it for the entirety of the contest, then sure, whatever shape doesn't really matter 2011-02-03T21:01:51 heh, what if the shape and size was chosen by the engine on a per game basis? :P 2011-02-03T21:01:53 that would be crazy 2011-02-03T21:02:14 I'd say hard code it. Right now, I'm leaning toward the eight spaces around an ant, which make map generation more fun. 2011-02-03T21:02:26 "for this game, your ants will be able to fight in a triangular area" 2011-02-03T21:02:27 no wondering how to fight over a gap and such 2011-02-03T21:03:04 the only issue with the eight spaces one is that you have to have a rule for two opposing ants moving to the same square 2011-02-03T21:03:17 what if death and birth rules changed? then you would need real ai 2011-02-03T21:03:23 ha 2011-02-03T21:03:26 they die 2011-02-03T21:03:32 that's the rule 2011-02-03T21:03:44 friendlies die too 2011-02-03T21:03:46 i guess that's okay, but it kind of sidesteps this other nice combat rule we're coming up with 2011-02-03T21:03:56 don't piss of you ants by making them attack each other 2011-02-03T21:04:25 what's the other rule? 2011-02-03T21:04:26 i mean if you have two opposing ants with a gap between them then they can kill each other regardless of backup forces 2011-02-03T21:04:55 whereas if the range is larger then the backup forces can always work 2011-02-03T21:05:24 what if they are both backed up? 2011-02-03T21:05:31 then they both die anyway 2011-02-03T21:05:40 no deadlocking with these rules i think 2011-02-03T21:06:01 antimatroid mentioned something else earier 2011-02-03T21:06:27 if we went with the rules that allow blocking walls, you can still order an ant into the wall to kill it 2011-02-03T21:06:34 but basically having the collision kills rule with a short range like that means that one ant could kill another even if the other has backup 2011-02-03T21:06:40 I just didn't have that implemented yet 2011-02-03T21:07:12 although i guess that would require some stupidity on part of the bot that has the two ants 2011-02-03T21:07:39 a collision kill rules helps prevent blocking 2011-02-03T21:07:42 maybe it's not as big a deal as i thought 2011-02-03T21:07:59 here's another thought on bodies, btw 2011-02-03T21:08:05 *** bhasker has quit IRC (Quit: bhasker) 2011-02-03T21:08:09 there's another way to pick one up... move onto its space 2011-02-03T21:08:20 instead of having a separate pickup command requiring you to be adjacent 2011-02-03T21:08:35 i guess putting it down still requires something special though... 2011-02-03T21:10:41 I thought of that too 2011-02-03T21:10:46 it makes the rules simpler 2011-02-03T21:10:59 you have ants, you give them direction orders, thats it 2011-02-03T21:11:07 but, ant can push blocks around 2011-02-03T21:11:19 hmm... pushing... 2011-02-03T21:11:28 that defeats the purpose of the wall though 2011-02-03T21:11:28 more collision code 2011-02-03T21:11:44 not if you have an ant behind it 2011-02-03T21:11:47 eh 2011-02-03T21:11:54 then you can lock them out entirely 2011-02-03T21:12:12 i think i like the pickup behavior 2011-02-03T21:12:14 yeah, it didn't totally think it through 2011-02-03T21:12:29 I'm not implementing bodies atm 2011-02-03T21:12:42 did you see the latest example game? 2011-02-03T21:13:00 http://imgur.com/2RfZ3 2011-02-03T21:13:13 It has a very good example of positioning 2011-02-03T21:13:23 watch the red ants at the top center 2011-02-03T21:18:44 yeah, they just dominate a huge group of yellows 2011-02-03T21:18:58 *** dmj111` has quit IRC (Remote host closed the connection) 2011-02-03T21:21:13 another reason i think i don't like just having the eight squares around an ant being its attack range is that it means the best possible formation is just a straight line perpendicular to your direction of travel. a moving rectangle or octogon would be just about ideal, and there isn't really much of a counter for it aside from just doing the same thing and killing each other at the same time 2011-02-03T21:21:25 it gets a little more complex when the range is larger 2011-02-03T21:22:15 hmm, maybe i'm wrong 2011-02-03T21:22:32 it occurs to me that for large ranges, thicker-bordered rectangles/octogons would be the ideal 2011-02-03T21:23:04 or maybe even just filled in ones 2011-02-03T21:23:41 oh cool, you can use barriers in order to force an opponent to break formation 2011-02-03T21:24:00 in order to fit somewhere or tear down the barrier 2011-02-03T21:36:41 *** pyro- has joined #aichallenge 2011-02-03T21:42:45 yeah, I think I mentioned earlier that the range just make you need a thicker line 2011-02-03T21:43:03 but, if we allow collision attacks, then it doesn't matter, you can still break through 2011-02-03T22:04:02 * jmcarthur benalene http://vimeo.com/19368587 2011-02-03T22:06:39 holy crap that was meant as a msg :P 2011-02-03T22:06:45 but it's awesome anyway :D 2011-02-03T22:19:31 *** dlila has quit IRC (Quit: Leaving) 2011-02-03T23:03:10 pushing walls could be awesome 2011-02-03T23:03:28 you can only push a wall if it ends up in an empty square 2011-02-03T23:06:14 yeah, it may have too many exceptions or edge cases though 2011-02-03T23:09:33 http://kevan.org/proce55ing/zombies/ 2011-02-03T23:47:08 jmcarthur: was that video meant as a joke, or what? 2011-02-03T23:58:47 *** Cyndre_ has quit IRC (Quit: Leaving)