--- Log opened Sat Oct 13 00:00:43 2012 20121013 00:34:58-!- Alarantalara [~Adium@173.33.158.188] has joined #wesnoth-umc-dev 20121013 00:45:31< mattsc> Hi Alarantalara. Good timing. How do I make the current release the 1.10 branch? 20121013 00:45:39< mattsc> Do I need to do that from the command line? 20121013 00:45:59< Alarantalara> I can do that now if you like 20121013 00:46:22< mattsc> That would be cool, thanks! 20121013 00:46:27< Alarantalara> You shouldn't need to, and Ive created a few branches, but I don't remember well enough to tell you how 20121013 00:46:50< mattsc> I just put 0.11.2 on the 1.10 add-on server, so this would be the right time to branch it off. 20121013 00:47:14< Alarantalara> Well that was excessively easy 20121013 00:47:17< mattsc> Then I'll take the "development has been discontinued" note out of the description and release it as 0.11.3 for BfW 1.11/ 20121013 00:47:27< mattsc> Does that sound ok? 20121013 00:47:37< Alarantalara> Sounds fine to me 20121013 00:48:06< Alarantalara> If you're using github, then it's just a matter of going to the branches section, clicking the + beside the branch and entering a name 20121013 00:48:21< Alarantalara> Then once it has appeared, publish it 20121013 00:48:52< mattsc> On github for Mac or the website? 20121013 00:49:03< Alarantalara> Github for Mac 20121013 00:49:18< mattsc> Oh, yes, found it. Thanks. 20121013 00:49:27< mattsc> So did you do it or should I? 20121013 00:49:32< Alarantalara> I already did 20121013 00:49:50< Alarantalara> You could certainly delete it and replace it with your own for practice 20121013 00:50:17< mattsc> No, that's ok. But I don't see it on the website, that's why I'm asking. 20121013 00:51:26< mattsc> Hmm, interesting, I see it in the pulldown menu on the left, but not under "Branches" on the right... 20121013 00:52:54< Alarantalara> likely that's because they're the same right now 20121013 00:53:03< mattsc> Ah, good point. 20121013 00:53:33< mattsc> Btw, looking at things, I still have the fancy-recruit branch in my local repository. Can/should I delete that? 20121013 00:54:03< Alarantalara> yes 20121013 00:54:19< Alarantalara> I already have 20121013 00:55:19< Alarantalara> I even deleted it from the central repository, but I guess clients keep it in case you want to use it yourself 20121013 00:55:57< mattsc> ok, that makes sense 20121013 00:57:15< mattsc> Just made a commit to 'master' that makes 1.10 and master slightly different, but I still only see one of them in the "Branches" tab (even though there's a (2) behind it) 20121013 00:57:23< mattsc> Am I just too stupid to understand this? 20121013 00:58:26< Alarantalara> I think you would have to make a change to the 1.10 branch 20121013 00:58:40< Alarantalara> otherwise, there is nothing in it that is not also in the master 20121013 00:59:11< mattsc> Oh, I see. That also answers my questions (with a "yes") :) 20121013 00:59:14-!- shadowm_laptop [ignacio@wesnoth/developer/shadowmaster] has quit [Ping timeout: 265 seconds] 20121013 00:59:26< Alarantalara> If you switch to the 1.10 branch in the drop down menu, then it will show that the master branch is no longer merged with the 1.10 one 20121013 01:01:12< Alarantalara> Success! I'm now around 50% wins vs the ML recruiter 20121013 01:01:27< mattsc> Nice! 20121013 01:01:52< Alarantalara> Though I guess 60 trials isn't enough to say so for certain 20121013 01:02:51< mattsc> maybe not quite, but still... Nice job. 20121013 01:04:19< mattsc> May I ask you another stupid question how to deal with this branch thing as far as directories are concerned? 20121013 01:04:49< mattsc> So, in 1.10, I have a link from ~add-ons/ to the github directory 20121013 01:05:04< mattsc> I'll set that up for 1.11 now. 20121013 01:05:42< mattsc> To I change the link for 1.10 to something else (a different branch), or do I point it to the same directory and sync different branches as needed? 20121013 01:05:49< mattsc> * Do I ... 20121013 01:06:22< Alarantalara> In git hub for mac, just double click on the branch you want and it will switch it 20121013 01:06:32< Alarantalara> and all the files will be replaced 20121013 01:07:23< Alarantalara> You could copy all the files to another location if you want to leave the 1.10 one in place, but then you can get confused because you have two references to the same repository 20121013 01:07:24< mattsc> Yes, I've noticed that before. So that is the correct (recommended, whatever?) way to do it? 20121013 01:07:35< Alarantalara> No idea 20121013 01:07:47< Alarantalara> It certainly doesn't mind you keeping lots of copies 20121013 01:08:03< mattsc> Because it does mean that whenever I am synced to master, both BfW 1.11 and 1.10 will use that branch 20121013 01:08:48< Alarantalara> That is true 20121013 01:09:10< Alarantalara> I just copied the whole thing over and added the second local copy to what github knows about 20121013 01:09:36< mattsc> Ok. 20121013 01:09:44< Alarantalara> It's a bit confusing in the program, but there's no issue for me at all at the command line 20121013 01:10:04< Alarantalara> You might also just ask in wesnoth-dev, since there are lots of people there with more experience with git than me 20121013 01:10:45< mattsc> Ok, I'll do that later. I think for now I'll simply link Wesnoth 1.10 to my own local copy of the directory (which is separate from github). 20121013 01:13:32-!- zookeeper [~lmsnie@wesnoth/developer/zookeeper] has quit [Ping timeout: 255 seconds] 20121013 01:16:16-!- vultraz [~chatzilla@124.109.10.167] has quit [Ping timeout: 245 seconds] 20121013 01:19:00< mattsc> Alarantalara: Ok, now v0.11.2 is out for BfW 1.10 and v0.11.3 for BfW 1.11 (both locally and on the server) 20121013 01:19:24< mattsc> And the commits are there on github, so even if I screw up my branches from here on, we should be able to recover things. 20121013 01:20:03< mattsc> Now I just need to tell people the bad news. Ahem, good news, I mean. 20121013 01:27:45< Alarantalara> Apparently I now play worse as Loyalists (so far), but Rebels are near unstoppable 20121013 01:28:06< mattsc> As in, Ron playing Rebels? 20121013 01:28:26< Alarantalara> As in Ron's recruiter playing rebels (the rest is turned off in an attempt at fairness) 20121013 01:29:22< mattsc> We should try Ron as Rebels against Fred sometime then, because Fred always seems to have the easiest time against Rebels 20121013 01:29:48< mattsc> Which is why I do my default testing of Fred against Rebels. :) 20121013 01:30:06< Alarantalara> I should probably sync my changes then (I only haven't because of the disabling issue) 20121013 01:30:39< Alarantalara> I only have three games recorded for Rebels vs Northerners, so there's no clear sign there 20121013 01:32:42< Alarantalara> I think I need to find out how to change the turn limit too. I have games running into the 50 turn default 20121013 01:34:32< mattsc> It looks like the turn limit is one of the parameters you can choose from the MP lobby, so there might be a way of setting it from the command-line 20121013 01:34:52< Alarantalara> I expect there is. I just need to look it up 20121013 01:37:00-!- loonybot [~loonybot@wesnoth/bot/loonybot] has quit [Remote host closed the connection] 20121013 01:40:49-!- skyfaller [~skyfaller@wikipedia/Skyfaller] has quit [Remote host closed the connection] 20121013 01:48:44-!- noy [~Noy@wesnoth/developer/noy] has quit [Quit: noy] 20121013 01:56:52-!- noy [~Noy@wesnoth/developer/noy] has joined #wesnoth-umc-dev 20121013 01:58:18-!- vultraz [~chatzilla@124.109.10.167] has joined #wesnoth-umc-dev 20121013 02:23:44-!- noy [~Noy@wesnoth/developer/noy] has quit [Quit: noy] 20121013 03:05:16-!- shadowm_laptop [ignacio@wesnoth/developer/shadowmaster] has joined #wesnoth-umc-dev 20121013 04:19:10< mattsc> Hello again, Alarantalara 20121013 04:19:17< Alarantalara> hello 20121013 04:19:41< mattsc> So, I looked into the ai.get_attacks() function under 1.11 and unfortunately it won't make our job that much easier. 20121013 04:20:03< Alarantalara> oh? 20121013 04:20:21< mattsc> It does provide attacks, and attack combinations, but only what it considers the "best attack" for each pairing. 20121013 04:20:29< mattsc> "Pairing" being used loosely here. 20121013 04:20:49< Alarantalara> And we want to get to choose 20121013 04:20:51< Alarantalara> right 20121013 04:21:15< mattsc> So, for example, for grunt-1 on horseman-1, it gives exactly one attack, even if there are several attack hexes. 20121013 04:21:37< Alarantalara> Do we at least get to pick the hex? 20121013 04:21:40< mattsc> Same for grunt-1 + assasin-2 on horseman-1: exactly one attack combo. 20121013 04:21:42< mattsc> Nope. 20121013 04:22:02< mattsc> It gives us the attack from whichever hex it considers best. 20121013 04:22:38< Alarantalara> so we'd have to manually place units and steal their movement? That doesn't sound like it would work very well 20121013 04:23:16< mattsc> No - and it also doesn't update by itself, so that wouldn't work anyway. 20121013 04:23:38< mattsc> As in, it only updates when it determines a gamestate change has happened 20121013 04:23:54< mattsc> which manually placing units does not count as 20121013 04:24:07< mattsc> So, hmmm... 20121013 04:24:38< mattsc> Maybe I should have checked this before I told people that we're not working on 1.10 any more. :P 20121013 04:25:09< Alarantalara> Yeah, since I don't see the modifications letting us make the AI era independent yet either 20121013 04:25:19< mattsc> Actually, there are still other things that will come in handy, but this is the one feature I was most hoping for help from. 20121013 04:26:32< mattsc> Ugh, now what? 20121013 04:26:55< Alarantalara> Don't worry about it I guess 20121013 04:27:25< mattsc> I mean what do I do next with Fred now, since what I was hoping to do next isn't going to work as I had thought... 20121013 04:28:15< mattsc> I think I need to talk to Crab. Formula AI has a something that at least gives you all the options for single-unit attacks. So it must be possible to get to that information somehow. 20121013 04:28:25< Alarantalara> Make attack/retreat work on relative damage rather than time of day? It would help switch behaviours against undead where we want to attack during the day instead of the night 20121013 04:29:21< mattsc> Right, you suggested that (and I hadn't forgotten). That can certainly be done. 20121013 04:31:22< Alarantalara> I think that plus either the ML recruiter or what I'm currently doing might be enough that we can generalize from grunt rush to any rush on freelands side 1 20121013 04:32:05< mattsc> Thinking ... 20121013 04:33:19< mattsc> I suspect that that's true. There are a few things in the code that are specifically set up for Northerners, but I am slowly getting rid of them. And I believe that they won't break anything. 20121013 04:33:59< mattsc> For example: "give rating an extra bonus if the unit is a grunt" simply won't do anything if the side has no grunts. 20121013 04:35:46< mattsc> Oh well, I think I'll stop for today. I started coding at 4:40 this morning, that's enough for a day anyway. 20121013 04:36:50< Alarantalara> indeed 20121013 04:37:24< mattsc> And I'll be traveling again Sunday through Saturday, so that will give me some distance from this. Hopefully, when I come back I'll have new ideas. 20121013 04:38:07< mattsc> Anyways, thanks for letting me whine to/at you :) 20121013 04:38:14< mattsc> Talk to you later. 20121013 04:38:15< Alarantalara> It's fine. 20121013 04:38:19< Alarantalara> Later indeed 20121013 04:40:08< Alarantalara> Actually, I just checked and there is no grunt/goblin specific code anymore 20121013 04:40:42< Alarantalara> The closest appears to be the complaint about missing poison attacks as the assassin (which would be funny coming from a ghoul) 20121013 04:40:59< mattsc> :) indeed 20121013 04:41:40< mattsc> As I said, I'm getting rid of these things as I am coming across them, but I hadn't checked whether I had found them all yet. 20121013 04:42:18< Alarantalara> Only recruiting is left right now 20121013 04:42:38< mattsc> Cool - and we have two good alternative options for that. 20121013 04:43:05< Alarantalara> exactly 20121013 04:43:57< mattsc> The biggest specific thing left then (not faction specific, but map specific) is that it does north vs. south ratings all over the place. 20121013 04:44:25< mattsc> But that's conceptually pretty easy to take care of, it just takes a bit of work. 20121013 04:44:29< Alarantalara> yeah, we need to make those calculated byt the AI rather than hard-coded 20121013 04:45:03< mattsc> right. I just wanted to get Fred to work well on the Freelands map before doing that. 20121013 04:45:11< mattsc> It turns out to be (even) harder than I thought. 20121013 04:50:17-!- shadowm_laptop [ignacio@wesnoth/developer/shadowmaster] has quit [Quit: shadowm_laptop] 20121013 04:55:32< mattsc> I figure that replacing "south" by "toward enemy leader" and "north" by "toward own leader" should work pretty well. 20121013 04:55:47< mattsc> In fact, it will probably work better on Freelands than some of the current behavior. 20121013 04:56:14< Alarantalara> Sounds good to me 20121013 04:57:24< mattsc> But first I still want to mess with some of the attack stuff anyway, even if ai.get_attacks() is not as helpful as I thought. 20121013 06:16:35-!- noy [~Noy@wesnoth/developer/noy] has joined #wesnoth-umc-dev 20121013 06:35:25-!- mattsc [~mattsc@d154-20-32-241.bchsia.telus.net] has quit [Quit: bye] 20121013 07:04:28-!- skyfaller [~skyfaller@ool-43551e75.dyn.optonline.net] has joined #wesnoth-umc-dev 20121013 07:04:28-!- skyfaller [~skyfaller@ool-43551e75.dyn.optonline.net] has quit [Changing host] 20121013 07:04:28-!- skyfaller [~skyfaller@wikipedia/Skyfaller] has joined #wesnoth-umc-dev 20121013 08:51:05-!- skyfaller [~skyfaller@wikipedia/Skyfaller] has quit [Remote host closed the connection] 20121013 08:54:18-!- skyfaller [~skyfaller@wikipedia/Skyfaller] has joined #wesnoth-umc-dev 20121013 09:37:30-!- zookeeper [~lmsnie@wesnoth/developer/zookeeper] has joined #wesnoth-umc-dev 20121013 09:45:21-!- noy [~Noy@wesnoth/developer/noy] has quit [Quit: noy] 20121013 09:55:36-!- noy [~Noy@wesnoth/developer/noy] has joined #wesnoth-umc-dev 20121013 10:08:09-!- noy [~Noy@wesnoth/developer/noy] has quit [Quit: noy] 20121013 10:13:46-!- noy [~Noy@wesnoth/developer/noy] has joined #wesnoth-umc-dev 20121013 10:27:33-!- noy [~Noy@wesnoth/developer/noy] has quit [Quit: noy] 20121013 11:35:26-!- zookeeper [~lmsnie@wesnoth/developer/zookeeper] has quit [Ping timeout: 255 seconds] 20121013 13:34:01-!- loonybot [~loonybot@wesnoth/bot/loonybot] has joined #wesnoth-umc-dev 20121013 13:34:04-!- mode/#wesnoth-umc-dev [+v loonybot] by ChanServ 20121013 13:36:10-!- skyfaller_ [~skyfaller@ool-43551e75.dyn.optonline.net] has joined #wesnoth-umc-dev 20121013 13:36:19-!- skyfaller [~skyfaller@wikipedia/Skyfaller] has quit [Read error: Connection reset by peer] 20121013 13:37:51-!- noy [~Noy@wesnoth/developer/noy] has joined #wesnoth-umc-dev 20121013 14:49:05-!- fendrin_ [~fabi@88-134-63-8-dynip.superkabel.de] has joined #wesnoth-umc-dev 20121013 14:53:19-!- fendrin [~fabi@wesnoth/developer/fendrin] has quit [Ping timeout: 260 seconds] 20121013 14:56:58-!- zookeeper [~lmsnie@wesnoth/developer/zookeeper] has joined #wesnoth-umc-dev 20121013 17:49:45< Alarantalara> skyfaller_: What is having a zone of control worth? 20121013 17:50:19< Alarantalara> Or: how much better would a vampire bat be, if was exactly the same but level 1 20121013 17:52:29< Alarantalara> *if it were 20121013 18:33:42< skyfaller_> gosh 20121013 18:33:46-!- skyfaller_ is now known as skyfaller 20121013 18:33:47-!- skyfaller [~skyfaller@ool-43551e75.dyn.optonline.net] has quit [Changing host] 20121013 18:33:47-!- skyfaller [~skyfaller@wikipedia/Skyfaller] has joined #wesnoth-umc-dev 20121013 18:34:01< skyfaller> Alarantalara: the problem is that ZoC is balanced out by having upkeep 20121013 18:34:54-!- un214 [~un214@108.221.231.191] has joined #wesnoth-umc-dev 20121013 18:35:05< Alarantalara> I have a recruiter that is working reasonably well 20121013 18:35:25< Alarantalara> Right now it likes mages a little too much, level 0 units a lot, and adepts not quite enough 20121013 18:35:42< skyfaller> the real problem is that bats give you lousy HP for the price 20121013 18:36:10< skyfaller> there are situations where it is appropriate to spam bats, e.g. a huge map like Cynsaun Battlefield where they are good village grabbers 20121013 18:36:22< Alarantalara> It's true. They're getting recruited because they're cheap and fast 20121013 18:36:30< skyfaller> and in a situation like that you can build up a large force with no upkeep 20121013 18:36:48< skyfaller> but they have no HP and deal no damage 20121013 18:37:13< skyfaller> cheap HP and cheap dmg are what you want from your core units 20121013 18:37:45< skyfaller> DAs are the core of any Undead army, b/c they deliver lots of magic damage at night for a low cost 20121013 18:38:59< skyfaller> you don't want too many bats for the same reason that you don't want too many ghosts: they can't kill anything 20121013 18:39:01< Alarantalara> That's where some of the problem is coming from: goblins at least are cheap damage 20121013 18:39:24< Alarantalara> I think I can deal with the bats and ghost by making speed a bit less important 20121013 18:39:42< skyfaller> goblins can be good in some situations, but they are fragile damage dealers, you have to treat them like mages 20121013 18:39:42< Alarantalara> It's only where it is at them moment because there were too many Woses 20121013 18:40:16< Alarantalara> It has about 20% of its recruits being goblins right now... 20121013 18:40:35< skyfaller> the real problem with woses is that if you spam them, most factions can summon a cheaper counter unit, woses have some nasty vulnerabilities 20121013 18:40:59< un214> if you build lots of adepts, be prepared for lots of horemen 20121013 18:41:26< skyfaller> yeah, goblins can be good against pierce-vulnerable units or dodgy units, but they need shields otherwise they don't survive long enough to deal damage 20121013 18:41:31< Alarantalara> I'm mostly just trying to find parameters that get me to what I know is appropriate from what we've talked about before 20121013 18:42:38< skyfaller> or let's say you're fighting a bunch of cavalry, you buy archers to get the initial hits and goblins to do the finishing move 20121013 18:42:53< skyfaller> you don't want to use goblins for the initial hits b/c they take too much melee retal 20121013 18:43:06< Alarantalara> http://pastebin.com/vTjUKhTP 20121013 18:43:19< Alarantalara> That's what it's doing across all opponents at the moment 20121013 18:43:46< skyfaller> why does it hate Thunderers? 20121013 18:44:13< skyfaller> Thunderers are amazing against some factions, like Loys and Drakes 20121013 18:44:26< Alarantalara> I have no idea 20121013 18:44:49< skyfaller> you want thunderers against pierce-vulnerable units that can't dodge 20121013 18:45:03< Alarantalara> The opponent is the ML recruiter, which is at least better than the default AI for recruiting 20121013 18:45:29< skyfaller> they can also be shockingly effective against lvl0 units that they can kill in one strike, like zombies and bats, although I would not normally buy them against UD 20121013 18:46:20< skyfaller> I'm also shocked at the popularity of the bowman 20121013 18:46:35< skyfaller> for Loys, the bowman is a specialty unit that should only be recruited once in a blue moon 20121013 18:46:45< skyfaller> spearmen are almost always a better purchase 20121013 18:47:24< Alarantalara> I'm sure you also notice the insane number of ghosts and walking corpses 20121013 18:47:26< skyfaller> you use them like thunderers, against pierce-vulnerable units that can't dodge, like clashers or cavalry 20121013 18:47:52< skyfaller> I guess one thing I can't know is what the ML recruiter is doing 20121013 18:48:05< skyfaller> maybe these purchases make sense against the ML's purchases 20121013 18:48:30< skyfaller> the poor Shaman is getting no love, Shamans are essential against many factions 20121013 18:48:48< Alarantalara> I can show you what it likes as well 20121013 18:49:17< Alarantalara> I've mostly been trying to keep the mages under control 20121013 18:49:32< Alarantalara> At one point there were about 30% mages for loyalists 20121013 18:49:52< skyfaller> I think it's hard to talk about recruiting in complete isolation from the rest of your strategy / tactics 20121013 18:50:00< un214> I use thunderers against UD as hexblockers against adepts 20121013 18:50:50< Alarantalara> At the moment I'm just trying to get things to appear reasonable and able to respond appropriately 20121013 18:50:53< skyfaller> for instance, HODOR completely ignores dwarf recruits, focusing on cheapness and speed, but that works if you know how to use HODOR strategy 20121013 18:51:10< Alarantalara> HODOR actually works rather well for Ron right now 20121013 18:51:30< skyfaller> that makes sense, HODOR is offensive while dwarf tactics are more defensive 20121013 18:51:37< skyfaller> and Ron started life as a grunt rush :) 20121013 18:52:23< skyfaller> I dunno, I think that you have to respond with strategies, not just recruits 20121013 18:52:55< Alarantalara> It's true, but if you recruit utterly useless units, then it's hard to do any effective strategy 20121013 18:52:59< skyfaller> I think that eventually we'll want to teach Fred to respond to e.g. Wose spam with a certain mix of units *and* a certain way of using those units 20121013 18:53:25< skyfaller> e.g. with Loys against Wose spam, you get mages + cavalry to get in the finishing hits 20121013 18:54:36< un214> how do you deal with gryphon spam? 20121013 18:54:45< skyfaller> against what faction? 20121013 18:55:08< un214> let's just say loys since that's the topic right now 20121013 18:56:10< skyfaller> use cavalry to trap gryphons, mages to shoot them and HI for finishing blows 20121013 18:56:57< skyfaller> on a large map, skip the HI and just use cavalry + mages 20121013 18:57:11< loonycyborg> gryphons are expensive, not much spamming is possible with them :P 20121013 18:57:14< un214> I had a guy who should have been good enough try the cavalry+mages 20121013 18:57:18< un214> he lost so bad 20121013 18:57:37< skyfaller> gryphon spam works on large maps against certain factions... elves are a great target, for instance 20121013 18:57:53< skyfaller> but usually once you've gotten enough income to spam gryphons, you've already won, yes 20121013 18:58:30< un214> I'm the guy they changed weldyn channel for to prevent gryphon spam from winning 20121013 18:58:45< skyfaller> ha 20121013 18:58:49< skyfaller> do you play ladder? 20121013 18:58:54< un214> no 20121013 19:01:02< skyfaller> well, I'd be happy to face your gryphon spam with any faction except elves on any map 20121013 19:01:06< Alarantalara> I have played ladder, though not recently. I just realized you may not be aware of that 20121013 19:01:59< skyfaller> the problem with elves is that the scout can't stand up to gryphons, and elf fighters do a mediocre job of tanking against gryphons... even woses fail at night 20121013 19:02:00< un214> the older version of the map (without the unpassable mountain) was murderous against any faction other than orcs and mirror 20121013 19:02:53< skyfaller> elves just have trouble against melee, and dwarves have melee in spades 20121013 19:04:28< un214> the primary abuse of gryphon spam on that map was massing them in the middle so the opponent was hard-pressed to defend both sides 20121013 19:05:34< skyfaller> yeah, same thing used to happen on Hamlets and it's still possible to some degree 20121013 19:06:36< skyfaller> Alarantalara: we should play some ladder games sometime :) 20121013 19:07:35< Alarantalara> skyfaller: I suppose so. I'm well aware I'm not nearly as good a player though 20121013 19:08:06< skyfaller> didn't you beat me once in our practice games? 20121013 19:08:19< Alarantalara> Yes, after confusing you somewhat 20121013 19:08:32< skyfaller> ha, yeah, I was just being a whiner about that 20121013 19:08:55< skyfaller> it wouldn't have mattered if we weren't closely matched 20121013 19:09:26< Alarantalara> I seem to play relatively evenly against players at 1600 or so 20121013 19:10:30< Alarantalara> Which I suspect turns into being able to keep an advantage against you, but not necessarily get one in the first place 20121013 19:13:52< Alarantalara> I'm reasonably certain most of the bowmen recruited by the AI were versus drakes, but there was usually at least 1-2 in every game 20121013 19:15:12< skyfaller> they're just not a great unit for the cost in most matchups 20121013 19:16:32< Alarantalara> I think the problem is that I'm currently lumping every damage type together 20121013 19:16:49-!- mattsc [~mattsc@d154-20-32-241.bchsia.telus.net] has joined #wesnoth-umc-dev 20121013 19:16:55< skyfaller> bowmen have less HP and deal less damage 20121013 19:17:20< skyfaller> almost any time you want to buy a bowman, you should just get a spearman instead 20121013 19:17:27< Alarantalara> So it's willing to switch to less good sources of a damage type in an attempt to avoid doing things like spamming endless mages 20121013 19:17:49< skyfaller> yeah, it can be worthwhile to pair a mage with a bowman sometimes 20121013 19:18:15< Alarantalara> since mages always deal more damage, it would otherwise be hard to get them to stop after they start getting recruited 20121013 19:18:15< skyfaller> mostly against lvl0 spam or something like orcs that have no ranged retaliation 20121013 19:18:59< skyfaller> you can use the bowman to counter the cheap units you are facing, buying two mages would cost too much and leave you short on shields 20121013 19:19:24< Alarantalara> It's right now thinking: I have a lot of this unit - what would a good alternative be? 20121013 19:19:46< Alarantalara> And so it sees that it has lots of spearmen and picks a bowman (or a merfolk) 20121013 19:20:38< skyfaller> I would often prefer a merman to a bowman, since it can tank on rivers and even attack a village from a river hex without taking too much damage 20121013 19:20:45< skyfaller> obviously you need mermen on water maps 20121013 19:20:54< skyfaller> but there is no map that requires bowmen 20121013 19:22:29< Alarantalara> Indeed 20121013 19:22:41< Alarantalara> But merfolk in den of onis? 20121013 19:22:52< Alarantalara> All the water is out of the way 20121013 19:23:53< Alarantalara> Fortunately, the merfolk only appear when they can get to the enemy quickly, so they typically only appear on maps with enough water to be useful 20121013 19:24:23< Alarantalara> Which meant that the bowmen got extra numbers 20121013 19:24:42< un214> I see why a single merman in den of onis 20121013 19:24:42< Alarantalara> Which means I think I'm going to have to count units by damage type, not by unit type 20121013 19:24:44< un214> the rivers 20121013 19:25:11< Alarantalara> Would you recruit 2 on turn 1? It happened with an earlier version 20121013 19:26:03< Alarantalara> I've had some very amusing recruits getting to here, including 100% walking corpses 20121013 19:28:41< un214> I had one guy on hamlets who simply could not understand he had lost 20121013 19:28:55< skyfaller> a single fish can work in Den of Onis if you play it carefully, but more than one is ridiculous 20121013 19:28:56< un214> three rows thick of walking corpses did not daunt him 20121013 19:30:31-!- vultraz [~chatzilla@124.109.10.167] has quit [Read error: Connection reset by peer] 20121013 19:30:41< Alarantalara> I should save the sillier replays. You'd probably find many of them amusing. For the longest time I couldn't stop rebels from a turn 1 recruit of 3 mages 2 woses 20121013 19:31:13< Alarantalara> The worst of it is that that actually works rather well against the RCA AI 20121013 19:31:16< un214> haha 20121013 19:31:26< un214> of course it would 20121013 19:33:48-!- un214 [~un214@108.221.231.191] has quit [Remote host closed the connection] 20121013 20:16:17< mattsc> Hi, skyfaller. I don't know if you read my discussion with Alarantalara from last night, but the switch to 1.11 won't magically solve all of Fred's problems. :P 20121013 20:16:44< skyfaller> no? I guess we need more magic 20121013 20:17:07< mattsc> Yeah, but it has to be the hard kind, homemade magic ... 20121013 20:18:40< mattsc> In brief, the attack combination that the engine spits out is already down-selected to what the engine considers the "best" attack combination for each pairing of AI attacker(s) against a given enemy. 20121013 20:18:53< mattsc> Which is not necessarily the combo we want. 20121013 20:20:29< skyfaller> so what's the fix? 20121013 20:20:32< mattsc> So I'll have to use my home brewed combination generator after all, which is 1) slow and 2) approximate as far as things like CTK are concerned 20121013 20:21:45< mattsc> Which isn't _really_ a problem, but more difficult (read: time consuming) than I had hoped for. 20121013 20:23:20< mattsc> I think my next steps will be to teach Fred to use poisoners more effectively again, and to take XP into account for attacks. 20121013 20:52:02< Alarantalara> Well that was an amusing failure. 20121013 20:52:21< Alarantalara> I just tried getting the leader to move to better keeps, and the result was hilarious 20121013 20:53:48< skyfaller> what did it do? 20121013 20:53:56< Alarantalara> I'll send a replay 20121013 20:56:07< Alarantalara> It's for 1.11 20121013 21:04:03< Alarantalara> I've just committed a somewhat less insane version 20121013 21:06:32< Alarantalara> It's still excessively rough 20121013 21:10:37< mattsc> That's funny. :) 20121013 21:13:27-!- skyfaller [~skyfaller@wikipedia/Skyfaller] has quit [Remote host closed the connection] 20121013 21:24:49-!- vultraz [~chatzilla@124.109.10.167] has joined #wesnoth-umc-dev 20121013 23:11:15< mattsc> Alarantalara: do you have some time to brain storm on attack combo evaluation? 20121013 23:11:34< Alarantalara> Sure 20121013 23:12:24< mattsc> What I'd like to talk about is how to put together stats for an attack combination, which is done at the very end of ai_helper. 20121013 23:13:29< mattsc> I have a function that returns all the possible attack combinations of a number of units on the same enemy, but without an order of the individual attacks. 20121013 23:14:18< mattsc> That's done because otherwise the number of possible combinations is just too large to handle (which is the same reason why the C++ code only returns the "best attacks"). 20121013 23:14:55< mattsc> So, function ai_helper.attack_combo_stats() then takes a combo like that as input. 20121013 23:16:07< mattsc> Again, it's not possible to go through all the possible orders of individual attacks, so I rate those single attacks first, and evaluate them in order of that rating. 20121013 23:16:14< mattsc> Does that make sense so far? 20121013 23:16:16< Alarantalara> I see 20121013 23:17:27< Alarantalara> It might be worth evaluating in order of # of strikes -> If you're planning on killing a unit, you usually want to use the attacks with the most variance first so you have a chance to change your mind 20121013 23:17:52< Alarantalara> Something to check with skyfaller, anyway 20121013 23:18:35< mattsc> Hmm, maybe, but it can't be just number of strikes, it must include damage as well. 20121013 23:19:05< mattsc> Anyways, let's just say I have _a_ rating function for individual attacks (we can discuss later what that should be): 20121013 23:19:13< mattsc> Then, I want att_stats and def_stats for the overall attack combo, just as simulate_combat returns it for a single attack. But again, doing that right isn't possible (in a reasonable amount of time) 20121013 23:19:59< mattsc> So what I am doing is simulate the first attack, change the enemy HP to the expected (average) outcome, evaluate the next attack, and so on until the last attack. 20121013 23:20:21< mattsc> Then I take the outcome of that last attack for the enemy, and the outcome of all individual attacks for the AI units. 20121013 23:21:22< mattsc> That's not exact for things like CTK (unless it's a single-unit attack), but I think it's a reasonable approximation. I also couldn't come up with a better way of doing it. 20121013 23:22:10< mattsc> Any better ideas? 20121013 23:22:27< Alarantalara> You might be able to do some kind of recording, but it gets pretty nasty fast 20121013 23:22:46< Alarantalara> Average really doesn't work for the high variance attacks though 20121013 23:23:41< Alarantalara> Compare two thunderers actual results against what you calculate against an opponent with 20hp 20121013 23:24:37< mattsc> I know - but I don't see a way of doing the real thing in practice (as in: fast enough). 20121013 23:24:58< mattsc> What I'd have to do is use all possible outcomes, and simulated the next attack based on that. 20121013 23:25:29< Alarantalara> Maybe not 20121013 23:25:41< mattsc> ... based on each outcome. That's a lot of combinations again once you have more units involved. 20121013 23:26:54< Alarantalara> It might be better to change the evaluation depending on objective 20121013 23:27:45< Alarantalara> Some ideas: 20121013 23:27:59< Alarantalara> If we're looking for a chance to kill, limit it to 3 units 20121013 23:28:15< Alarantalara> If we can attack with more units than that, the result is almost by definition good 20121013 23:29:18< Alarantalara> Second, by doing attacks in order of strikes, we also minimize the rate of growth for evaluation 20121013 23:30:47< Alarantalara> Third, unless the attack has a chance to kill, we could look it up from a table and add 20121013 23:30:52< mattsc> Let me know when you're done with ideas. I have all kinds of comments on this already, but will wait for you to be done first. 20121013 23:32:59< Alarantalara> Fourth, we can short-circuit any attack in which 1 hit kills 20121013 23:33:08< Alarantalara> That's all I have for now 20121013 23:34:40< mattsc> On your first idea, the problem is that I also want to know _which_ of the 3-unit or 4-unit attacks to use. So I cannot just say a 4-unit attack is good. I want to know which of them I should use first. 20121013 23:35:42< mattsc> On 2. are you suggesting in going in ascending or descending order of strikes? 20121013 23:35:59< mattsc> (wow, that was bad grammar, even for me) 20121013 23:36:02< Alarantalara> Ascending order. It's the order in which they'ed be tried 20121013 23:36:24< mattsc> So, go with the 1-hit unit first? 20121013 23:36:47< Alarantalara> Unless the target has so little health that you could kill it in 1 strike 20121013 23:36:52< Alarantalara> regardless of unit 20121013 23:37:25< mattsc> Right (but high CTK attacks are dealt with separately anyway, so that's not really my concern here). 20121013 23:39:30< mattsc> ... I'm very uncomfortable with the idea of saying we should _always_ attack with the unit with the fewest strikes first. 20121013 23:39:58< mattsc> It just doesn't sound right. 20121013 23:40:09< Alarantalara> If you can't kill it with 1 unit, it makes sense 20121013 23:40:25< Alarantalara> I attack with 1 unit, it misses 20121013 23:40:53< Alarantalara> and I now don't have enough space to kill it becuase there was only one other location 20121013 23:40:56< Alarantalara> so I can move on 20121013 23:41:41< Alarantalara> If I'd gone the other way, it's possible that the multi-strike unit got it into the range that 1 hit kills, but it has to be that 1 hit unit 20121013 23:41:53< Alarantalara> so I'm now flipping a coin 20121013 23:42:00< Alarantalara> It's better to do that first 20121013 23:42:31< mattsc> But if I have a 3 or 4-strike unit that has a 60% CTK on that enemy with its 4 strikes vs. 0% for the one-strike unit, I'd go with the former first, right? 20121013 23:42:55< mattsc> Because it frees up the 1-strike unit to be used elsewhere 20121013 23:43:24< Alarantalara> Yes, but in that case you had a good chance to kill with a single unit 20121013 23:44:15< Alarantalara> Also, unless your single strike was something like a mage with a stick, you'd almost certainly have the same chance to kill with the single strike unit if the CTK was that high 20121013 23:44:54< mattsc> This is just chosen as an obvious example, I'm sure that there are other ones. 20121013 23:45:35< Alarantalara> The big exceptions I can think of are slowing attacks, which really want to go first 20121013 23:46:00< mattsc> I'm not saying you're wrong, just that I am not convinced yet... 20121013 23:47:10< mattsc> Btw, I still think that it will not be possible to calculate any of this exactly, even if we go with few-strikers first. 20121013 23:47:38< Alarantalara> Doing few-strikers first reduces the number of evaluations 20121013 23:47:46< mattsc> Sure. 20121013 23:48:01< mattsc> But have you noticed that long delay times sometimes? 20121013 23:48:11< Alarantalara> yes 20121013 23:48:26< mattsc> Those are mostly due to this. And that's with calculating a single outcome for each combo 20121013 23:49:32< mattsc> That's why I was hoping to be able to use the results coming from C++ with 1.11, because that's much faster. 20121013 23:50:57< mattsc> Now, maybe I'm not doing it the most efficient way, but let's just assume we have 3 3-strike units against an enemy (which shouldn't be unusual). 20121013 23:52:14< Alarantalara> If they're all the same unit, then copying results from the previous one works until a kill is reached 20121013 23:53:08< mattsc> Until _any_ hit/miss combination reaches a kill. 20121013 23:54:07< mattsc> And we particularly want the % chance of some of this happening, which might be different for attackers on different terrain. 20121013 23:54:21< Alarantalara> Only if the attackers could die 20121013 23:54:51< Alarantalara> or there is a leader nearby or a time_area 20121013 23:54:59< mattsc> True. But that's not unlikely in the middle of a battle. And we're already at a lot of ifs and buts... 20121013 23:55:48< mattsc> Hmm ... 20121013 23:56:24< Alarantalara> Or there is a unit with drain - aka what causes delays in the RCA AI 20121013 23:56:47< Alarantalara> Drain really hurts AIs 20121013 23:56:53< mattsc> Yeah. 20121013 23:57:16< mattsc> So ... do you think we can keep track of all of that? 20121013 23:57:54< mattsc> And if we can, I'd say meaning 10-times more calculations would not be an overestimate, do you agree? 20121013 23:58:17< mattsc> ... expecting 10-times more ... 20121013 23:58:31< Alarantalara> I think with the exception of drain, 5x or less should be possible 20121013 23:59:33< Alarantalara> And that would be with Rebels who have lots of strikes --- Log closed Sun Oct 14 00:00:46 2012