--- Log opened Fri Nov 02 00:00:56 2012 20121102 00:02:22-!- fendrin_ [~fabi@88-134-61-254-dynip.superkabel.de] has quit [Ping timeout: 244 seconds] 20121102 00:17:09-!- Crendgrim [~crend@port-92-204-42-193.dynamic.qsc.de] has quit [Ping timeout: 248 seconds] 20121102 01:17:52-!- Blueblaze [~Blueblaze@2602:306:394f:6a89:6233:4bff:fe0a:827b] has quit [Remote host closed the connection] 20121102 01:18:05-!- Blueblaze [~Blueblaze@adsl-99-148-246-168.dsl.hstntx.sbcglobal.net] has joined #wesnoth-umc-dev 20121102 01:54:59-!- csarmi [csarmi@85-238-89-15.pool.digikabel.hu] has quit [Ping timeout: 260 seconds] 20121102 02:08:35-!- mattsc [~mattsc@d154-20-32-241.bchsia.telus.net] has quit [Quit: bye] 20121102 02:12:46-!- faabumc [~vcr@wesnoth/developer/faabumc] has joined #wesnoth-umc-dev 20121102 02:36:19-!- mattsc [~mattsc@d154-20-32-241.bchsia.telus.net] has joined #wesnoth-umc-dev 20121102 02:37:21< mattsc> Alarantalara: I haven't gotten one step further with the attacker stats in attack combinations... (doing it in a time efficient way, I mean) 20121102 02:38:57< mattsc> I was going to use the fact that the structure outcomes of, say, a 3 strikes vs. 3 strikes attack where one unit needs 2 hits for a kill is always the same and one only has to multiply in powers of the hit/miss probability. 20121102 02:39:02-!- irker437 [~irker@ai0867.net] has joined #wesnoth-umc-dev 20121102 02:39:02< irker437> AI-Demos: Alarantalara master * r835f264 / lua/generic-rush_engine.lua : Consider alternate keeps even when there is only one - http://git.io/TOcmIw 20121102 02:39:40< Alarantalara> But it doesn't work well if both sides can kill each other? 20121102 02:39:42< mattsc> But when there are 2^6 to 2^8 combinations of powers to multiply, then that doesn't help a lot. 20121102 02:40:16< mattsc> Right, because the number of combinations blow up like that. 20121102 02:40:28< mattsc> When neither side can die, it's trivially easy. 20121102 02:41:16< mattsc> In that case, it's x^n + c1 * x^n-1 (1-x) + c2 * x^(n-2) (1-x)^2 ... 20121102 02:41:31< mattsc> Where the c_n's are given by Pascal's triangle... 20121102 02:42:16-!- Alarantalara [~Adium@CPEc0c1c09e8055-CM00252eac6d62.cpe.net.cable.rogers.com] has left #wesnoth-umc-dev [] 20121102 02:42:22-!- Alarantalara [~Adium@CPEc0c1c09e8055-CM00252eac6d62.cpe.net.cable.rogers.com] has joined #wesnoth-umc-dev 20121102 02:42:30< mattsc> Sorry, the '+''s should be ','s up there. 20121102 02:43:07< mattsc> Anyway, I don't even really have a question for you right now. Just venting and saying that I'm stuck. 20121102 02:44:07< Alarantalara> I've found some annoying problems with recruiting as well. I think I have some ideas, but I'll have to see if they work 20121102 02:44:10< mattsc> The best thing for now might be to go with the average defender HP after the previous attack(s) and just do one simulation under those conditions. That will only make things a factor 2 slower. 20121102 02:44:33< mattsc> Hmm. Good luck with that! 20121102 02:45:03< Alarantalara> We already know average is terrible with single strike attacks though 20121102 02:45:21< mattsc> I agree. But it's better than assuming that the defender has full HP. 20121102 02:46:01< mattsc> Or whatever he has at the beginning of the first attack... 20121102 02:46:39< mattsc> I'll do some more test with that general method tomorrow. Maybe I just need a really big hand-made look-up table. 20121102 02:46:39< Alarantalara> Could you evaluate twice instead? Doing the middle two possibilities? 20121102 02:47:01< mattsc> Sure. That would make it a factor 3 slower. 20121102 02:47:56< mattsc> Ugh... As I said, I'll keep trying. 20121102 02:48:20< Alarantalara> I'll tell you if I think of anything, but it does rather seem like a brute-force problem 20121102 02:49:03< mattsc> To do it exact, yes, it is. Maybe we need some approximate pre-selection and then exact brute-force for the best options found by that. 20121102 02:50:46-!- loonybot [~loonybot@wesnoth/bot/loonybot] has quit [Remote host closed the connection] 20121102 02:51:59-!- mnewton1 [~mnewton1@c-76-99-170-226.hsd1.de.comcast.net] has quit [Quit: Rice and Corn] 20121102 03:19:46-!- Blueblaze [~Blueblaze@adsl-99-148-246-168.dsl.hstntx.sbcglobal.net] has quit [Quit: Blueblaze] 20121102 03:23:59< Alarantalara> I don't suppose you simulate the attacks with the other units in place? I'm thinking of units with backstab/leadership affecting results (though it doesn't matter yet, since the Northerners have no such units) 20121102 03:32:20< mattsc> No, I'm not even close to that yet 20121102 03:36:49< Alarantalara> At any rate, I just finished a journal submission, so perhaps I'll have time this weekend to do something significant. 20121102 03:37:25-!- faabumc [~vcr@wesnoth/developer/faabumc] has quit [Quit: Ex-Chat] 20121102 03:37:29< skyfaller> it's somewhat disturbing to me that in order to contribute to this project that not only do I have to learn Lua and the Wesnoth codebase, it seems I will also have to learn math :P 20121102 03:38:02< skyfaller> or statistics? 20121102 03:39:04< Alarantalara> Statistics, regression (maybe), combinatorics and optimization, maybe some other things 20121102 03:40:17< skyfaller> I'm not sure I ever came across pascal's triangle before 20121102 03:40:42< skyfaller> and I don't know how mattsc derived that expression he wrote out above 20121102 03:40:44< mattsc> Hope the paper will be accepted easily! 20121102 03:41:10< Alarantalara> It's part of combinatorics. It's a visual representation of the number of way to choose k items from a set of n 20121102 03:41:30< skyfaller> yes, I just Wikipedia'd Pascal's Triangle :) 20121102 03:41:50< mattsc> skyfaller: the easy one is, say 3 misses out of three strikes. 20121102 03:42:08< mattsc> If the chance to miss is 0.4, then the chance to miss 3 times is 0.4^3 20121102 03:42:30< mattsc> In the same way, three hits are (1-0.4)^3 20121102 03:42:42< mattsc> Does that make sense? 20121102 03:43:25< mattsc> Now, for 2 misses out of 3 strikes, you have three option: 100, 010, 001 (1 being hit, 0 being miss) 20121102 03:43:27< skyfaller> I got the easy one 20121102 03:43:31< skyfaller> I didn't get the 2nd one 20121102 03:43:42< Alarantalara> If you want more information, look up the Binomial Theorem on Wikipedia 20121102 03:43:51< mattsc> If the chance to miss is 0.4, then the chance to hit is (1-0.4) 20121102 03:44:16< Alarantalara> Which is what mattsc's expression is 20121102 03:44:51< skyfaller> ohhhh 20121102 03:44:52< skyfaller> ok 20121102 03:44:54< skyfaller> got it 20121102 03:45:14< skyfaller> Alarantalara: could you actually explain your explanation of Pascal's triangle? 20121102 03:45:58< skyfaller> mattsc: continue :) 20121102 03:46:38< mattsc> ok, so two missed, one hit, there are three options: 100 010 001 20121102 03:46:55< mattsc> But the probabilty for each is the same: 0.4 * 0.4 * 0.6 20121102 03:47:17< mattsc> Thus, the probability of two misses and one hit is 3 * 0.4^2 * 0.6 20121102 03:47:40< mattsc> And the same for 2 hits, one miss, just with the 0.4 and 0.6 interchanged. 20121102 03:47:51< skyfaller> I'm trying to relate that to the expression you wrote above 20121102 03:48:14< Alarantalara> Pascal's triangle is an easy way to remember and view several interesting mathematical sequences, including the binomial coefficients used in the binomial theorem 20121102 03:48:43< Alarantalara> Each row corresponds to a value of n, starting at 0 and counting up 20121102 03:49:26< Alarantalara> Then count k from 0 to n in each row to get the result of the computation 20121102 03:50:16< Alarantalara> The numbers are all equal to n!/((n-k)!k!) 20121102 03:50:32< Alarantalara> but they look pretty that way 20121102 03:51:00< Alarantalara> Of course the Chinese used it centuries before Blaise Pascal was born 20121102 03:51:22< Alarantalara> and it was used in India to write poems 20121102 03:51:27< mattsc> I didn't know that until earlier today, actually... 20121102 03:51:29< skyfaller> Alarantalara: so if you're choosing 2 out of a set of 3, there are 3 ways to do it 20121102 03:51:53< mattsc> (that the Chinese were using it so long ago, I mean) 20121102 03:53:01< skyfaller> Alarantalara: and if you're choosing 2 out of a set of 5, there are 10 ways to do it? 20121102 03:53:07< Alarantalara> yeah, I have an illustration of a Chinese text from 1303 showing the first 9 rows 20121102 03:53:21< Alarantalara> skyfaller: yes 20121102 03:53:47< skyfaller> OK, I think I am starting to understand Pascal's triangle now 20121102 03:54:09< skyfaller> mattsc: I'm still stuck on the 2nd part of your expression 20121102 03:54:40< mattsc> skyfaller: which is the second part? 20121102 03:54:51< skyfaller> c1 * x^n-1 (1-x) 20121102 03:55:10< mattsc> So, that's missing a bracket: 20121102 03:55:15< skyfaller> or what you were explaining for 2 misses out of 3 strikes 20121102 03:55:20< mattsc> c1 * x^(n-1) (1-x) 20121102 03:55:27< skyfaller> ok 20121102 03:56:11< skyfaller> oh 20121102 03:56:16< skyfaller> I think I'm starting to get it 20121102 03:56:16< mattsc> Take the example of 2 out of 3: then n=3, c1 = 3 (from Alarantalara's expression up there) and x = 0.4 20121102 03:56:28< skyfaller> but could you just say what the variables stand for in our situation? 20121102 03:56:40< Alarantalara> http://en.wikipedia.org/wiki/Binomial_distribution 20121102 03:57:33< Alarantalara> You'll see the p(1-p) there, which matches the x that mattsc used 20121102 03:57:42< skyfaller> x is the chance to miss? 20121102 03:57:53< skyfaller> n is the number of strikes? 20121102 03:57:58< Alarantalara> yes 20121102 03:58:09< skyfaller> and... what is c1? 20121102 03:58:39< Alarantalara> n!/((k!(n-k)!) 20121102 03:58:58< Alarantalara> where k is 1 less than the term in the sequence 20121102 03:59:51< Alarantalara> We're counting the number of ways for 0 hits in the first term 20121102 03:59:55< Alarantalara> 1 hit in the second 20121102 03:59:58< mattsc> Alarantalara: btw, I haven't done anything like this in a _long_ time. I'm a bit rusty, but it's fun. 20121102 03:59:59< Alarantalara> 2 hits in the third 20121102 04:00:45< skyfaller> why is k 1 less than the term in the sequence? What is the term in the sequence? 20121102 04:01:10< Alarantalara> You may find it easier to understand in that last wiki link since they can use pretty notation we can't here 20121102 04:01:25< skyfaller> ok 20121102 04:01:55< skyfaller> I actually find a lot of the Wikipedia math articles impenetrable 20121102 04:02:04< skyfaller> I'm not sure who they are written for but I think it is not me :( 20121102 04:02:12< Alarantalara> mattsc: has to evaluate the formula once for each possible number of hits, generating n+1 formulas he has to evaluate 20121102 04:02:55< Alarantalara> so add k = number of hits we're checking this time 20121102 04:03:00< mattsc> As long as nobody dies ... 20121102 04:03:28< skyfaller> lol, fatal math 20121102 04:03:30< Alarantalara> and k is the 1, 2, 3 that comes after the c above (since he can't use a subscript here) 20121102 04:03:57< Alarantalara> there was a hidden c0, but since he knows it is always 1, he left it out 20121102 04:05:29< skyfaller> ok, what is n and k when calculating c1? 20121102 04:05:36< skyfaller> in this case? 20121102 04:05:51-!- Crendgrim [~crend@port-92-204-48-10.dynamic.qsc.de] has joined #wesnoth-umc-dev 20121102 04:05:55< Alarantalara> n is the number of strikes for the attack 20121102 04:06:12< Alarantalara> k = 1, meaning we're calculating the probability that we get 1 hit 20121102 04:06:20< skyfaller> ok 20121102 04:06:48< skyfaller> what was the term in the sequence that you said k was 1 less than? 20121102 04:07:12< Alarantalara> Ah, mattsc wrote the values for k =0, k=1, k=2 there 20121102 04:07:27< Alarantalara> so k was 1 less than the order they appeared in 20121102 04:07:51< skyfaller> oh, ok 20121102 04:07:53< skyfaller> got it 20121102 04:08:43< skyfaller> so let me try to calculate the last term of the expression 20121102 04:08:49< skyfaller> c2 * x^(n-2) (1-x)^2 20121102 04:09:08< skyfaller> n = 3 strikes 20121102 04:09:19< skyfaller> k = 2 [probability we get 2 hits] 20121102 04:10:13< skyfaller> 3! / (2!(3-2)!) = 3 20121102 04:10:39< skyfaller> so if the unit is on 60% defense, chance to miss is 0.4 20121102 04:10:58< skyfaller> x=0.4 20121102 04:11:01< skyfaller> c2=3 20121102 04:11:16< Alarantalara> so you get 3*0.4^1*0.6^2 20121102 04:11:18< skyfaller> n=3 20121102 04:11:54< mattsc> skyfaller: and here's your confirmation: http://imagebin.org/234293 20121102 04:12:06< mattsc> Grunt on Grunt on flat 20121102 04:12:41< mattsc> Oops, I'm an idiot... Sorry, let me do a 3x3 example. 20121102 04:13:19< skyfaller> 3*0.4^1*0.6^2 = 0.432 20121102 04:14:15< mattsc> http://imagebin.org/234295 20121102 04:14:33< Alarantalara> Correct! http://imagebin.org/234296 20121102 04:14:52< Alarantalara> Now you can do the Damage Calculations without clicking hte button 20121102 04:14:52< skyfaller> Alarantalara's picture is prettier ;-) 20121102 04:15:00< skyfaller> hahahahaha 20121102 04:15:01< mattsc> Alarantalara: argh, I'm doing everything the complicated way today! 20121102 04:15:13< skyfaller> I think it may be quicker to just set up a simulation and hit the button ;-) 20121102 04:15:33< skyfaller> but I'm happy to understand how that number is derived 20121102 04:15:37< skyfaller> "understand" 20121102 04:15:40< mattsc> But not if you have to do the simulation a million times, that's the problem I am having at the moment 20121102 04:15:51< skyfaller> right :( 20121102 04:16:30< skyfaller> thanks for explaining everything to me, guys 20121102 04:16:49< skyfaller> what's the last expression look like for 3 hits out of 3 hits? 20121102 04:17:26< Alarantalara> n =3, k =3, x=0.4 20121102 04:17:32< Alarantalara> c3 = 1 20121102 04:17:55< Alarantalara> and you get 1 * 0.4^0 * o.6^3 20121102 04:18:06< Alarantalara> = 0.6^3 20121102 04:18:10< Alarantalara> = 0.216 20121102 04:18:56< Alarantalara> well c3 = 3!/3! = 1 20121102 04:19:15< skyfaller> right 20121102 04:20:08< mattsc> Alarantalara: now if you could come up with an expression for when one or both of the units can die ... 20121102 04:22:01< Alarantalara> That's going to look ugly 20121102 04:22:14< mattsc> Yep. 20121102 04:22:20< skyfaller> aren't the equations in the Wesnoth source code? 20121102 04:22:28< skyfaller> how are they running the numbers? 20121102 04:22:33< mattsc> So I was going to let the computer do it for me. 20121102 04:22:34< Alarantalara> Wesnoth iterates and does it the hard way 20121102 04:23:34-!- un214 [~un214@108.221.231.191] has joined #wesnoth-umc-dev 20121102 04:23:40< Alarantalara> mostly because eventually you add in berserk and drain, at which point the math becomes ridiculous 20121102 04:23:56< mattsc> The problem is that the computer is not very good at combining terms like stuff * x + stuff * (1-x) and then you end up with a lot of terms, which kind of defeats the purpose of what I am trying to do. 20121102 04:24:08< Alarantalara> so they covered the easy cases, then threw their hands in the air 20121102 04:24:16< mattsc> Right. 20121102 04:25:10 * vultraz wishes he understood any of this 20121102 04:25:45< skyfaller> vultraz: but they just explained it very slowly for me! ;-) 20121102 04:26:05< vultraz> I still don't understand it ;) 20121102 04:28:21< vultraz> I;m not very good with probability, 20121102 04:29:35-!- Crendgrim [~crend@port-92-204-48-10.dynamic.qsc.de] has quit [Ping timeout: 255 seconds] 20121102 04:30:06< skyfaller> I did learn some of this stuff back in high school, but I had forgotten all of it 20121102 04:30:17< skyfaller> maybe it is like riding a bike 20121102 04:30:40-!- csarmi [csarmi@94-21-80-94.pool.digikabel.hu] has joined #wesnoth-umc-dev 20121102 04:30:52< vultraz> riding a bike is easy :P 20121102 04:31:05< skyfaller> once you know how to do it 20121102 04:31:12< skyfaller> same thing with combinatorics! :D 20121102 04:31:34< vultraz> calculating the probability of a kill when you have like a dozen variables, is...not 20121102 04:31:57< skyfaller> yeah, I don't know what drain / beserk does to the math 20121102 04:32:05< skyfaller> and I don't think I want to know 20121102 04:32:17< Alarantalara> If you won't die, it's easy since you can just do the above and add all the <= 0 results 20121102 04:32:59< skyfaller> ... how can a beserker know he won't die unless he is attacking a DA? 20121102 04:33:14< skyfaller> and in that case the ctk is just 100% 20121102 04:33:30< skyfaller> in any other situation there is a tiny chance that a beserker will die 20121102 04:33:44< Alarantalara> It's not actually 100% 20121102 04:33:57< skyfaller> whatever the wesnoth engine claims, it is 100% 20121102 04:34:07< skyfaller> eventually the beserker will land a hit 20121102 04:34:16< skyfaller> unless we stop the beserker after a set number of turns 20121102 04:34:23< Alarantalara> There is a 0.4^120 chance that the berserker never hits 20121102 04:34:38< Alarantalara> since berserk actually means repeat until death or 30 rounds of combat 20121102 04:34:45< skyfaller> oh, I didn't know that 20121102 04:34:55< skyfaller> so the DA just has to dodge for 30 rounds? Easy as pie! ;-) 20121102 04:35:06< vultraz> I dunno, I'd think beserk would be like, currentHP / amount of hp opponent can inflict * strikes per attack 20121102 04:35:24< Alarantalara> Apparently a few people have seen a DA live on a mountain once 20121102 04:35:38< skyfaller> no way, I'd want to see the replay 20121102 04:35:59< skyfaller> the person with the ulf must have been SO disappointed 20121102 04:36:19< Alarantalara> indeed 20121102 04:36:42< un214> I figured it for cavewall (80%) awhile ago. It really is harder than lottery even then. 20121102 04:37:23< vultraz> and drain would be...currentHP / amount of dmg opponent can incflict * strikes per attack + drainHP 20121102 04:37:42< vultraz> but ignore me, as I have no idea what I'm talking about 20121102 04:37:53< skyfaller> Alarantalara: what's the math for drain? :) 20121102 04:38:42< Alarantalara> A silly mess 20121102 04:39:02< skyfaller> assume nobody dies 20121102 04:39:18< un214> yeah. Data-driven code still makes it O(N^2) 20121102 04:39:24< un214> assuming nobody dies does not help 20121102 04:39:32< skyfaller> really? 20121102 04:40:23< Alarantalara> assuming nobody dies does mean that the equation is reasonably simple, but yes, you need to take the above for both sides 20121102 04:40:38-!- ancestral [~ancestral@75-161-178-116.mpls.qwest.net] has joined #wesnoth-umc-dev 20121102 04:40:41< Alarantalara> and combine every pair, subtracting for damage and adding for drain 20121102 04:40:49< vultraz> What happens when you have beserk and drain vs and opponent with beserk and drain 20121102 04:41:13< Alarantalara> Then you usually have to simulate all 30 rounds and wesnoth becomes really slow 20121102 04:41:20< mattsc> Then even the C++ code can take forever 20121102 04:41:34< Alarantalara> see forum complaints about slow AIs in survival extreme 20121102 04:41:39-!- Crendgrim [~crend@port-92-204-48-10.dynamic.qsc.de] has joined #wesnoth-umc-dev 20121102 04:41:48< mattsc> I once wrote a special AI for somebody just to avoid that calculation. :) 20121102 04:42:01< vultraz> oh it's the AI that's slow??? 20121102 04:42:13< vultraz> I thought it was my computer being an asshole ._. 20121102 04:42:14< un214> there's a first order approximation that works well 20121102 04:42:27< mattsc> No, it's the combat outcome calculation that takes the time, but the AI uses that 20121102 04:43:09< mattsc> un214: do tell, please 20121102 04:44:20< un214> we accept for normal attacks: att-strike * att-dam * def-evade - def-strike * def-dam * att-evade 20121102 04:44:43< un214> therefore adjust for drain by multiplying side with drain by 1.5 20121102 04:46:13< un214> for all base units with drain, this works even for ulf 20121102 04:46:51< mattsc> this is for average attack outcome? 20121102 04:47:04< un214> yeah, it gets close enough 20121102 04:47:21< mattsc> ok. 20121102 04:47:43< mattsc> the more strikes, the better it is, I presume? 20121102 04:47:45< un214> I don't use best-worst with draining units. It rarely does the right thing. 20121102 04:47:48< un214> yes 20121102 04:47:58< mattsc> cool 20121102 04:48:17< un214> you still have to adjust for relative hitpoint values 20121102 04:48:26< Alarantalara> Alternatively, 90-120 strikes is enough that you could treat it as continuous and evaluate according to the normal distribution instead 20121102 04:48:57< mattsc> Hmm, makes sense. 20121102 04:50:14< Alarantalara> It's n^2 calculations for each possible hp value, but it's way better than doing the whole thing 20121102 04:50:40< Alarantalara> It does require both units to likely survive the whole thing though 20121102 04:51:17< mattsc> which is not very likely 20121102 04:51:30< ancestral> Why not just round to the nearest percent while we're at it? 20121102 04:51:40< ancestral> I mean that seriously, actually 20121102 04:51:50< Alarantalara> not with normal units, but it might be useful for the survival extreme ai 20121102 04:52:02< mattsc> Oh, I see. Yes. 20121102 04:52:33< ancestral> If a complex calculation cannot be guaranteed precise, why try to fool people with 1/10 of a percent of precision 20121102 04:54:21-!- csarmi [csarmi@94-21-80-94.pool.digikabel.hu] has quit [] 20121102 04:54:28< mattsc> ancestral: you mean in the damage calculations display? 20121102 04:54:33< ancestral> Right 20121102 04:54:58< mattsc> That one is precise, as far as a I know. 20121102 04:55:00< ancestral> Yes, not during the calculations. 20121102 04:55:17< mattsc> We are talking about alternative, faster methods here. 20121102 04:55:27< ancestral> Fair enough 20121102 04:55:37< mattsc> Which doesn't mean that it has to be display to more than full %, I'm not arguing that. 20121102 04:55:48< mattsc> *displayed 20121102 04:56:21< mattsc> One problem I could see is that the numbers, after being rounded, might not add up to 100, and then people would complain. :) 20121102 04:56:29< ancestral> Oh sure 20121102 04:56:44< ancestral> Though people already complain about the math ;-) 20121102 04:56:56< Alarantalara> By the way, the average DA has about a 1 in 1,204,794,300,000,000,000 chance of living on a village when attacked by a berserker 20121102 04:57:18< Alarantalara> unless the berserker is strong 20121102 04:57:41< skyfaller> yeah, I have trouble believing that anyone has witnessed a DA surviving an ulf attack 20121102 04:57:47< ancestral> It's not currently possible to override/turn off calculations as a game toggle, right? 20121102 04:58:04< ancestral> Or better via WML/Lua code 20121102 04:58:49< ancestral> skyfaller: Maybe after seeing over a quintillion battles you might 20121102 04:59:34< ancestral> Of course, just because it's 1 in 1.2 quintillion (did I count that right?) doesn't mean you'd have to watch that many. Heck, you might see it happen after a couple billion iterations 20121102 04:59:55< skyfaller> nobody has seen a billion Wesnoth battles 20121102 05:00:04< ancestral> A computer could 20121102 05:00:14< ancestral> But right, not a human 20121102 05:00:19< mattsc> ancestral: turning it off where? In the AI? 20121102 05:00:24< skyfaller> but Alarantalara claimed humans had witnessed this almost impossible event 20121102 05:00:25< ancestral> mattsc: If so that would be amazing 20121102 05:00:34-!- Crendgrim [~crend@port-92-204-48-10.dynamic.qsc.de] has quit [Ping timeout: 240 seconds] 20121102 05:00:40< un214> it was mountain, and he claimed multiple times 20121102 05:00:41< Alarantalara> Also, when looking for it to happen, you only need one person out of all players to see it 20121102 05:00:42< ancestral> amazingly useful for "aggresive" mods 20121102 05:00:45< ancestral> *aggressive 20121102 05:01:01< un214> what happens if the beserker was slowed? 20121102 05:01:41< mattsc> ancestral: I don't think you can turn it off in the default AI. As I said, I once wrote a "simple AI" for a campaign so that it could deal with the super units in it. 20121102 05:01:46< ancestral> What happens if the ulfserker was at half hit points? 20121102 05:01:49< ancestral> :-P 20121102 05:01:53< un214> irrelevant 20121102 05:02:00< ancestral> mattsc: I see 20121102 05:02:09< skyfaller> I have personally played 1181 ladder games, and I am one of the most diligent ladder players in the game. I think few people have played more Wesnoth games than me, I've been playing since maybe 2004 20121102 05:03:03< ancestral> To watch a billion battles, let's say 3 seconds (maybe you could find some way to freeze the game state in a virtual machine, and then reload with a keystroke)… 20121102 05:03:06< skyfaller> I'm willing to bet that no human has played more than 5000 Wesnoth games 20121102 05:03:31< un214> oh DUH 20121102 05:03:45< un214> I saw adept survive ulf in colesseum 20121102 05:04:01< ancestral> 3 billion seconds = 95 years 20121102 05:04:02< ancestral> :-P 20121102 05:04:06< skyfaller> oh, doesn't it quit after only like 6 rounds or something? 20121102 05:04:06< ancestral> Nonstop, no sleeping 20121102 05:04:17< un214> I don't think so. 20121102 05:04:32< un214> The adept had something like 300 hp 20121102 05:04:34< ancestral> un214: Depends on the number of HPs they're both at 20121102 05:04:36< ancestral> Yeah 20121102 05:04:50< skyfaller> I know that beserk is nerfed in a lot of Wesnoth variants 20121102 05:05:30< ancestral> Berserk is nerfed in general, imo 20121102 05:05:43< Alarantalara> ancestral: The real goal is to get everyone doing it. If it takes 10,000 players an hour each, you're suddenly down to an average 0.3 seconds/game 20121102 05:06:22< ancestral> That's how people solve ultra high numbered primes 20121102 05:06:31< skyfaller> if only it were impossible to cheat at Wesnoth, we could give a prize to the first person to witness a DA surviving an ulf 20121102 05:06:31< ancestral> Millions of computers in parallel 20121102 05:06:43< skyfaller> but someone would just tweak the code or something to make it happen 20121102 05:06:48< ancestral> Hehe 20121102 05:07:17< skyfaller> how many people play Wesnoth? 20121102 05:07:25< ancestral> There are better pursuits in life 20121102 05:07:27< skyfaller> how many active users does Wesnoth have? 20121102 05:07:48< ancestral> High estimate? 1,000? 20121102 05:07:48< Alarantalara> While I don't know the number of Linux players, there have been 4973 downloads of the windows version, 996 of the mac os and 831 source downloads 20121102 05:07:53< Alarantalara> so 7000+ 20121102 05:08:02< ancestral> Recently? 20121102 05:08:03< skyfaller> you're talking about the latest stable version? 20121102 05:08:06< Alarantalara> though some are likely duplicates 20121102 05:08:10< Alarantalara> 1.10.4, yes 20121102 05:08:16-!- ancestral [~ancestral@75-161-178-116.mpls.qwest.net] has quit [Quit: i go nstuf kthxbai] 20121102 05:08:42< skyfaller> hm, that doesn't seem like that many for such a mature game 20121102 05:08:49< Alarantalara> This skips everyone who gets it through one of the Linux package managers 20121102 05:09:11< skyfaller> Wesnoth has to be one of the most mature open source games in existence 20121102 05:09:32< skyfaller> I can't think of anything comparable 20121102 05:09:55< Alarantalara> Sorry, that's recent only 20121102 05:10:10< Alarantalara> 46,000 total windows for 1.10.4 20121102 05:10:20< Alarantalara> 7,000 Mac OS 20121102 05:10:28< Alarantalara> 9,000 source 20121102 05:10:36< skyfaller> those numbers sound much more reasonable 20121102 05:10:41< Alarantalara> 88 Pandora 20121102 05:11:04< skyfaller> I feel like there are 7000 developers for Wesnoth, if you count all of the add-ons and scenarios :P 20121102 05:12:04< Alarantalara> Again the 64,000 is an underestimate thanks to the Unbuntu and other package repositories 20121102 05:12:10< Alarantalara> *Ubuntu 20121102 05:12:38< skyfaller> people actually play Wesnoth on http://openpandora.org/ ??? 20121102 05:12:45< skyfaller> that screen looks unacceptably tiny 20121102 05:12:56< Alarantalara> Ivanovic presumably does since he builds the distribution 20121102 05:13:53< skyfaller> I mean, Wesnoth is one of the images displayed on the front page, so it must run OK for them to feature it 20121102 05:14:15< skyfaller> but it would definitely not be my first choice for playing Wesnoth 20121102 05:14:26-!- Crendgrim [~crend@port-92-204-48-10.dynamic.qsc.de] has joined #wesnoth-umc-dev 20121102 05:16:56< Alarantalara> A quick check shows 381 addons for 1.10 and 383 for 1.8, so sadly not 7000 developers 20121102 05:17:08< Alarantalara> unless there are over 10 per addon 20121102 05:17:28< skyfaller> well, how many people have contributed to the Wesnoth codebase? 20121102 05:17:35< un214> I'm one of them. 20121102 05:18:25< Alarantalara> 139, though that skips people who submit patches and art 20121102 05:19:37< un214> well I'm skipped then becuse I just submitted a few patches 20121102 05:19:44< Alarantalara> The total is likely less than 200 20121102 05:19:46< un214> boy are the features I added popular in the add-ons 20121102 05:20:18< skyfaller> it seems like there would be more people who submit patches than regular developers 20121102 05:20:35< skyfaller> isn't it easier to just send in a patch than to become a regular contributor? 20121102 05:21:25< un214> yes 20121102 05:21:29< Alarantalara> Yes, but even then there only 823 patch submissions on gna, and a good number of those were submitted by people who become one of the 139 20121102 05:21:48< skyfaller> good point, it does often lead to becoming a regular contributor 20121102 05:21:51-!- Crendgrim [~crend@port-92-204-48-10.dynamic.qsc.de] has quit [Ping timeout: 260 seconds] 20121102 05:21:51< Alarantalara> Even if you assume that every one was by a different person, you're still under 1,000 20121102 05:21:51-!- ancestral [~ancestral@75-161-178-116.mpls.qwest.net] has joined #wesnoth-umc-dev 20121102 05:22:17< un214> I submitted 2 20121102 05:22:25< skyfaller> so it is very likely that fewer than 1,000 people are responsible for all of Wesnoth and its add-ons 20121102 05:22:27< un214> (+1 that didn't make it) 20121102 05:22:36< Alarantalara> Apart from the first few developers, there should be at least 2 for every developer 20121102 05:23:20-!- un214 [~un214@108.221.231.191] has quit [Remote host closed the connection] 20121102 05:23:47< Alarantalara> <1,000 is probably a good estimate 20121102 05:24:46< Alarantalara> 1000 people is still a crazy number when you compare it to the credits for a commercial game though 20121102 05:25:32< skyfaller> well, what if you compare it to a commercial game with lots of add-ons? Say Warcraft 3. 20121102 05:25:58< skyfaller> DOTA alone must have had a lot of developers over time. 20121102 05:27:30< Alarantalara> The hive workshop has 100x the number of forums members as wesnoth 20121102 05:27:50< Alarantalara> The Hive being a WC3 map makers forum 20121102 05:28:10< skyfaller> ha 20121102 05:28:27< Alarantalara> Assuming a similar proportion of people making mods, I suppose that means 100,000 add-on creators for WC3 20121102 05:29:49< Alarantalara> They do have 4500 maps 20121102 05:30:31< skyfaller> and there are competitive Warcraft III players in like Korea I think 20121102 05:30:41< skyfaller> so there must be enough of an audience to support that 20121102 05:34:12-!- Alarantalara [~Adium@CPEc0c1c09e8055-CM00252eac6d62.cpe.net.cable.rogers.com] has quit [Quit: Leaving.] 20121102 05:39:08-!- irker437 [~irker@ai0867.net] has quit [Quit: transmission timeout] 20121102 06:24:45-!- mattsc [~mattsc@d154-20-32-241.bchsia.telus.net] has quit [Quit: bye] 20121102 06:30:47-!- irker372 [~irker@ai0867.net] has joined #wesnoth-umc-dev 20121102 06:30:47< irker372> wesnoth-umc-dev: faabumc * r16137 /trunk/Nightmares_of_Meloen/devel/utils/upkeep_band.cfg: 20121102 06:30:47< irker372> NoM DVL: do not count upkeep for banding group around loyal creepers. 20121102 06:34:52-!- Blueblaze [~Blueblaze@adsl-99-148-246-168.dsl.hstntx.sbcglobal.net] has joined #wesnoth-umc-dev 20121102 06:36:01-!- SeattleDad [~SeattleDa@c-67-171-51-0.hsd1.wa.comcast.net] has joined #wesnoth-umc-dev 20121102 07:13:50-!- Blueblaze [~Blueblaze@adsl-99-148-246-168.dsl.hstntx.sbcglobal.net] has quit [Quit: Blueblaze] 20121102 07:39:03-!- Lukc [~Lukc@natsu.upyum.com] has quit [Ping timeout: 260 seconds] 20121102 07:39:30-!- Lukc [~Lukc@natsu.upyum.com] has joined #wesnoth-umc-dev 20121102 07:41:28-!- SeattleDad [~SeattleDa@c-67-171-51-0.hsd1.wa.comcast.net] has quit [] 20121102 07:50:01-!- ancestral [~ancestral@75-161-178-116.mpls.qwest.net] has quit [Quit: i go nstuf kthxbai] 20121102 07:53:47-!- zookeeper [~lmsnie@wesnoth/developer/zookeeper] has joined #wesnoth-umc-dev 20121102 08:22:14-!- faabumc [~vcr@wesnoth/developer/faabumc] has joined #wesnoth-umc-dev 20121102 08:42:56-!- zookeeper [~lmsnie@wesnoth/developer/zookeeper] has quit [Ping timeout: 255 seconds] 20121102 09:30:12-!- shadowm [~ignacio@wesnoth/developer/shadowmaster] has quit [Read error: Operation timed out] 20121102 09:30:22-!- shadowm [~ignacio@wesnoth/developer/shadowmaster] has joined #wesnoth-umc-dev 20121102 09:30:46-!- irker372 [~irker@ai0867.net] has quit [Quit: transmission timeout] 20121102 09:42:38-!- Cookie [~quassel@60-240-54-150.tpgi.com.au] has joined #wesnoth-umc-dev 20121102 09:42:38-!- Cookie [~quassel@60-240-54-150.tpgi.com.au] has quit [Changing host] 20121102 09:42:38-!- Cookie [~quassel@unaffiliated/cookiee] has joined #wesnoth-umc-dev 20121102 10:09:08-!- Crendgrim [~crend@port-92-204-48-10.dynamic.qsc.de] has joined #wesnoth-umc-dev 20121102 10:23:34-!- faabumc [~vcr@wesnoth/developer/faabumc] has quit [Quit: Ex-Chat] 20121102 11:02:35-!- Crendgrim [~crend@port-92-204-48-10.dynamic.qsc.de] has quit [Quit: ...] 20121102 11:15:13-!- fabi_ [~fabi@88-134-61-254-dynip.superkabel.de] has joined #wesnoth-umc-dev 20121102 11:15:13-!- fabi_ [~fabi@88-134-61-254-dynip.superkabel.de] has quit [Changing host] 20121102 11:15:13-!- fabi_ [~fabi@wesnoth/developer/fendrin] has joined #wesnoth-umc-dev 20121102 11:16:22-!- mnewton1 [~mnewton1@c-76-99-170-226.hsd1.de.comcast.net] has joined #wesnoth-umc-dev 20121102 11:18:29-!- fabi [~fabi@wesnoth/developer/fendrin] has quit [Ping timeout: 260 seconds] 20121102 13:11:40-!- Cookie [~quassel@unaffiliated/cookiee] has quit [Remote host closed the connection] 20121102 13:15:22-!- zookeeper [~lmsnie@wesnoth/developer/zookeeper] has joined #wesnoth-umc-dev 20121102 14:24:23-!- mnewton1 [~mnewton1@c-76-99-170-226.hsd1.de.comcast.net] has quit [Quit: Rice and Corn] 20121102 14:55:41-!- Crendgrim [~crend@port-92-204-48-10.dynamic.qsc.de] has joined #wesnoth-umc-dev 20121102 15:08:54-!- loonybot [~loonybot@46.138.65.68] has joined #wesnoth-umc-dev 20121102 15:08:54-!- loonybot [~loonybot@46.138.65.68] has quit [Changing host] 20121102 15:08:54-!- loonybot [~loonybot@wesnoth/bot/loonybot] has joined #wesnoth-umc-dev 20121102 15:08:57-!- mode/#wesnoth-umc-dev [+v loonybot] by ChanServ 20121102 15:10:48-!- Crendgrim [~crend@port-92-204-48-10.dynamic.qsc.de] has quit [Remote host closed the connection] 20121102 15:11:50-!- Crendgrim [~crend@port-92-204-48-10.dynamic.qsc.de] has joined #wesnoth-umc-dev 20121102 15:34:55-!- mnewton1 [~mnewton1@c-76-99-170-226.hsd1.de.comcast.net] has joined #wesnoth-umc-dev 20121102 16:35:41-!- ancestral [~ancestral@75-161-178-116.mpls.qwest.net] has joined #wesnoth-umc-dev 20121102 16:36:06-!- ancestral [~ancestral@75-161-178-116.mpls.qwest.net] has quit [Client Quit] 20121102 17:30:39-!- mattsc [~mattsc@d154-20-32-241.bchsia.telus.net] has joined #wesnoth-umc-dev 20121102 18:23:31-!- faabumc [~vcr@wesnoth/developer/faabumc] has joined #wesnoth-umc-dev 20121102 18:44:22-!- faabumc [~vcr@wesnoth/developer/faabumc] has quit [Quit: Ex-Chat] 20121102 19:46:05-!- csarmi [~csarmi@80-95-86-9.pool.digikabel.hu] has joined #wesnoth-umc-dev 20121102 20:26:51-!- mnewton1 [~mnewton1@c-76-99-170-226.hsd1.de.comcast.net] has quit [Quit: Rice and Corn] 20121102 20:53:29-!- irker246 [~irker@ai0867.net] has joined #wesnoth-umc-dev 20121102 20:53:29< irker246> wesnoth-umc-dev: shikadilord * r16138 /trunk/AtS_Music/ (music/overlive.ogg _main.cfg): 20121102 20:53:29< irker246> AtSM: add Overlive by Telaron 20121102 20:56:02< irker246> wesnoth-umc-dev: shikadilord * r16139 /trunk/AtS_Music/_main.cfg: 20121102 20:56:02< irker246> AtSM: the workaround for bug #16544 is only needed on Wesnoth 1.10.2 and earlier 20121102 21:14:02-!- mnewton1 [~mnewton1@c-76-99-170-226.hsd1.de.comcast.net] has joined #wesnoth-umc-dev 20121102 21:49:59-!- csarmi [~csarmi@80-95-86-9.pool.digikabel.hu] has quit [Ping timeout: 255 seconds] 20121102 22:14:09< irker246> wesnoth-umc-dev: shikadilord * r16140 /trunk/AtS_Music/ (_main.cfg music/end.ogg): 20121102 22:14:09< irker246> AtSM: add End by Telaron 20121102 22:17:29< skyfaller> mattsc: do you know why we are considering alternate keeps even when there is only one? 20121102 22:33:38< mattsc> skyfaller: no. TBH, I haven't been paying that much attention to exactly what Alaralantara has done there. 20121102 22:33:58< mattsc> ... too preoccupied with combinatorics ... 20121102 22:36:21< skyfaller> :) 20121102 22:37:24< mattsc> I do have results for things like 4 strikes vs. 4 strikes when either unit dies if it gets hit twice. 20121102 22:37:52< skyfaller> that sounds exciting 20121102 22:37:58< skyfaller> are you writing this math down anywhere? :) 20121102 22:38:00< mattsc> I've tested it against the Wesnoth damage calc. display and it seems to work. I'm in the process of cleaning it up. 20121102 22:38:13< mattsc> That's what I am in the process of doing. 20121102 22:38:18< skyfaller> hooray! 20121102 22:38:40< mattsc> Actually, I am doing "empirical math" here. I let my program figure it all out. :) 20121102 22:38:59< skyfaller> ha! 20121102 22:39:59< mattsc> It's easy enough up to 3x3 or so, there are only 16 possibilities for that, but I really don't want to do it by hand for larger combinations... 20121102 22:40:14< mattsc> And the computer seems to do a decent job reducing the number of terms. 20121102 22:40:59< mattsc> Give me half an hour to an hour and I might have some results to show. 20121102 22:56:16-!- shadowm_laptop [ignacio@wesnoth/developer/shadowmaster] has joined #wesnoth-umc-dev 20121102 23:14:46< mattsc> skyfaller, Alarantalara: http://pastebin.com/cs7zZVAr 20121102 23:14:54< mattsc> What to take away from this: 20121102 23:15:35< mattsc> 1. Even though some of those combinations are pretty massive, they have much fewer terms (max 15 or so) than the total of 8*8=64 combinations. 20121102 23:16:31< mattsc> 2. We can further reduce this by using the fact that the sum of all terms for a case has to be 100% -> we can eliminate the outcome with the most terms for each case. 20121102 23:17:31< mattsc> 3. Most likely (haven't tested yet), calculating these terms is not much slower than a full battle simulation. But we only have to do this once for each attack type. After that it's simply adding up the sums. 20121102 23:18:17< mattsc> So, overall, I think that this can work and will likely be faster for attacks with non-complicating circumstances (drain, slow etc.) 20121102 23:18:48< skyfaller> nice :) 20121102 23:19:36< mattsc> I've checked a good number of those combinations and always get the same result as the wesnoth damage calculations outcome. 20121102 23:53:02-!- Alarantalara [~Adium@CPEc0c1c09e8055-CM00252eac6d62.cpe.net.cable.rogers.com] has joined #wesnoth-umc-dev 20121102 23:53:25< Alarantalara> skyfaller: I only have about 10 minutes, but I can answer your question about checking only 1 keep 20121102 23:54:07< Alarantalara> In order to allow the leader to move between two keeps that are within 1 turn's movement from each other 20121102 23:55:02< Alarantalara> I need to check if there is another nearby keep but also ignore the keep the leader may currently be on, since if it is closer then the AI will not move off of it 20121102 23:56:05< Alarantalara> However, on some maps (siege castles), there is exactly 1 possible keep to move to that is not occupied and player 2 must move back and forth between the keeps to get a full recruit 20121102 23:56:39< Alarantalara> So I have to check if there is even 1 unoccupied keep 20121102 23:57:11< skyfaller> oh, I see 20121102 23:57:38< Alarantalara> I was very disappointed when I discovered that 20121102 23:57:49< skyfaller> why? 20121102 23:59:40< Alarantalara> Because it meant I had to spend more time checking things and the leader now moves between the two keep in the Freelands castle --- Log closed Sat Nov 03 00:00:06 2012