--- Log opened Sat May 09 00:00:41 2009 20090509 00:03:23-!- alink [n=alink@wesnoth/developer/alink] has joined #wesnoth-dev 20090509 00:08:22-!- silene [n=plouf@wesnoth/developer/silene] has quit ["Leaving."] 20090509 00:10:36-!- zookeeper [n=l@wesnoth/developer/zookeeper] has quit [] 20090509 00:15:53< Ivanovic> off to bed, n8 20090509 00:16:20-!- grzywacz [n=grzywacz@wesnoth/developer/grzywacz] has quit [Remote closed the connection] 20090509 00:27:11-!- loonycyborg [n=sergey@wesnoth/developer/loonycyborg] has quit ["Zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"] 20090509 00:27:52-!- loonybot [n=loonybot@wesnoth/bot/loonybot] has quit [Remote closed the connection] 20090509 00:46:52-!- Gnutoo [n=gnutoo@host109-10-dynamic.54-79-r.retail.telecomitalia.it] has quit [Read error: 113 (No route to host)] 20090509 00:47:22-!- Sirp [n=me@wesnoth/developer/dave] has quit [Read error: 60 (Operation timed out)] 20090509 00:55:35-!- busfahrer [n=busfahre@unixboard/user/busfahrer] has joined #wesnoth-dev 20090509 01:11:55-!- busfahrer [n=busfahre@unixboard/user/busfahrer] has quit ["leaving"] 20090509 01:12:13-!- fendrin [n=fabi@wesnoth/developer/fendrin] has joined #wesnoth-dev 20090509 01:15:03-!- Espreon [n=espreon@wesnoth/developer/espreon] has quit ["Tengo que ir... Yeahzorz..."] 20090509 01:26:47-!- Sir_Konrad [n=Sir_Konr@dpclt034064.direcpc.com] has joined #wesnoth-dev 20090509 01:27:12< Sir_Konrad> Hey everyone, I'm developing a Fellowship of the Ring Mod. ;) 20090509 01:28:52-!- alink is now known as Frodo 20090509 01:29:07< Frodo> And I am hunting bug in the "Heir to the Throne" campaign ;) 20090509 01:29:25-!- Frodo is now known as alink 20090509 01:29:25< Sir_Konrad> Frodo, ;) 20090509 01:30:00< Sir_Konrad> But I have a question. In Heir to the Throne's "utils" folder, there's a file called "bigmap.cfg". What is that thing for? 20090509 01:31:23< alink> it seems to draw the dots and cross indicating the journey in story screen 20090509 01:31:55< Sir_Konrad> What would happen if I left that file out of FoTR? 20090509 01:32:57< alink> no nice journey indicated on a nice map. Which is a bit sad for such story ;-) 20090509 01:33:30< alink> btw you are aware that the our Addon-server doesn't allow copyrighted stuff ? 20090509 01:33:34< Sir_Konrad> I'd like to have that, but it seems as if those numbers are on an XY axis. Right? 20090509 01:33:47< Shadow_Master> what alink said, plus forum and wiki 20090509 01:34:23< Sir_Konrad> Probably so, but this is kind of homebrew. ;)\ 20090509 01:34:29< Sir_Konrad> * ;) 20090509 01:34:42< Sir_Konrad> Could I post it on the forums? 20090509 01:34:50< Shadow_Master> no. I said no. 20090509 01:35:07< Sir_Konrad> Hmm.... anywhere I could post it? 20090509 01:35:08< alink> Sir_Konrad: no copyrighted stuff in our servers 20090509 01:35:13< Sir_Konrad> my website? 20090509 01:35:15-!- Chusslove [n=caslav@brsg-d9bee7d6.pool.mediaWays.net] has quit [Read error: 60 (Operation timed out)] 20090509 01:35:31< Shadow_Master> probably. Just make sure it never gets to add-ons.wesnoth.org or forum.wesnoth.org or *.wesnoth.org 20090509 01:35:58< Sir_Konrad> So I could create a website for the mod and just state that it uses the Wesnoth engine. 20090509 01:36:00< Shadow_Master> we aren't responsible if Chris Tolkien starts legal actions against you when you start making big money out of it ;) 20090509 01:36:33< Sir_Konrad> Shadow_Master, it would be open-source free software. ;) 20090509 01:37:54< Sir_Konrad> Shadow_Master, I suppose I would get in trouble if I started an IRC called #wesnoth-fotr, wouldn't I? 20090509 01:40:11-!- ikarius [n=ross@smtp.gridironsystems.com] has quit [] 20090509 01:41:19< Soliton> no. 20090509 01:41:41< Sir_Konrad> Soliton, good. :) 20090509 01:44:12< Sir_Konrad> So anyway, on the bigmap.cfg. Is that an XY axis scale? 20090509 01:45:17< alink> if it's for fotr development ask on #wesnoth-fotr <:-) 20090509 01:45:18-!- Elvish_Pillage2 [n=eli@71-10-228-131.dhcp.oxfr.ma.charter.com] has joined #wesnoth-dev 20090509 01:45:56< Sir_Konrad> alink, :D 20090509 01:46:14< Soliton> well, what else would it be then XY? 20090509 01:46:14< alink> Sir_Konrad: more seriously, if you want to code a mod, better start to read the wiki and figure simple stuff by yourself 20090509 01:46:42< Sir_Konrad> alink, oh... 20090509 01:46:48< Sir_Konrad> where is the wiki? 20090509 01:46:54< alink> lol 20090509 01:46:59< Soliton> wiki.wesnoth.org 20090509 01:47:41-!- Elvish_Pillager [n=eli@71-10-228-131.dhcp.oxfr.ma.charter.com] has quit [Read error: 60 (Operation timed out)] 20090509 01:48:24< Sir_Konrad> haha I'm trying to develop a mod and don't know where to start. :P 20090509 01:58:30< Shadow_Master> Sir_Konrad: name it ##wesnoth-fotr 20090509 01:58:41< Sir_Konrad> Shadow_Master, why? 20090509 01:58:42< alink> Sir_Konrad: And if you are really interested to learn how to write wesnoth add-on/mod, probably better to start with non-copyrighted stuff, so you can post your work on our add-on server, get users + feed-back and ask questions on our forum 20090509 01:58:43-!- Espreon [n=espreon@wesnoth/developer/espreon] has joined #wesnoth-dev 20090509 01:58:50< Shadow_Master> since it would not be affiliated with the main wesnoth project. This is the Freenode channel naming convnetion 20090509 01:58:55< Shadow_Master> *convention. 20090509 01:59:09< alink> #fotrnoth ? 20090509 01:59:22< Sir_Konrad> freenode channel naming convention? what's that? 20090509 01:59:27< alink> #wesfotr 20090509 01:59:34-!- noy [n=Noy@wesnoth/developer/noy] has quit [Read error: 110 (Connection timed out)] 20090509 01:59:44< Shadow_Master> freenode is the IRC network you are on. 20090509 02:00:00< alink> why did you already need an IRC channel anyway 20090509 02:00:05< Sir_Konrad> Shadow_Master, yeah I know. Is that their standard or something 20090509 02:00:05< Shadow_Master> http://blog.freenode.net/2008/04/registering-a-channel-on-freenode/ 20090509 02:00:13< Sir_Konrad> Oh.... 20090509 02:00:58< alink> Shadow_Master: so wesnoth is sort of copyrighted by us on freenode ? 20090509 02:01:20< Sir_Konrad> alink, I'd like to get a few more developers for certain things but I think I just created it today for the fun of it. ;) 20090509 02:01:24< Shadow_Master> the wesnoth namespace belongs to the Mainline Wesnoth Project, yes 20090509 02:01:49-!- Sir_Konrad [n=Sir_Konr@dpclt034064.direcpc.com] has quit ["Leaving"] 20090509 02:01:54< Shadow_Master> this was my main concern with #wesnoth-umc-dev (staff even refused giving me technical assistance back then) 20090509 02:02:18< Shadow_Master> it was solved when we became an official group. 20090509 02:02:26-!- Sir_Konrad [n=Sir_Konr@dpclt034064.direcpc.com] has joined #wesnoth-dev 20090509 02:02:33< alink> and what about using wesnoth's contents, like Konrad's name ;-) 20090509 02:02:38< Shadow_Master> * #wesnoth-es, not #wesnoth-umc-dev 20090509 02:03:11< Sir_Konrad> alink, well that's like saying Shadow_Master's name is out because it's too much like Shadow The Hedgehogs. ;) 20090509 02:03:26< alink> Shadow_Master: #wesnoth-es for Espagnol ? 20090509 02:03:40< Shadow_Master> español, yes 20090509 02:03:43-!- Sirp [n=me@wesnoth/developer/dave] has joined #wesnoth-dev 20090509 02:04:33< alink> (Espagnol is the french version, no idea my spelling corrector allowed that) 20090509 02:04:51< alink> french version of the word 20090509 02:04:56< Shadow_Master> ah, I thought you were trying to emulate the ñ on a incompatible keybaord 20090509 02:05:02< Shadow_Master> I don't know french :) 20090509 02:05:32< Sir_Konrad> alink, check out #fotrnoth 20090509 02:08:39-!- Espreon [n=espreon@wesnoth/developer/espreon] has quit ["Tengo que ir... Yeahzorz..."] 20090509 02:13:08-!- Espreon [n=espreon@wesnoth/developer/espreon] has joined #wesnoth-dev 20090509 02:13:22< alink> I recently hack-installed this spelling correction on Konversation, but I already start to rely too much on it 20090509 02:15:43-!- Sir_Konrad is now known as Sir_Konrad[willb 20090509 02:18:09-!- Polarina [n=polarina@wesnoth/translator/Polarina] has quit ["Leaving."] 20090509 02:21:21-!- DDR [n=chatzill@66.183.125.196] has joined #wesnoth-dev 20090509 02:27:00-!- Tigge [n=tigge@bacchus.olf.sgsnet.se] has quit [Read error: 60 (Operation timed out)] 20090509 02:34:48-!- mjs-de [n=mjs-de@129.217.129.134] has quit [Read error: 148 (No route to host)] 20090509 02:45:38-!- ardesh_ [n=ardesh@port-92-206-93-183.dynamic.qsc.de] has joined #wesnoth-dev 20090509 02:55:14< happygrue> alink: do you like konversation? 20090509 02:55:36< alink> yes, but i am not a heavy IRC user 20090509 02:56:05< alink> I mainly like the KDE integration :) 20090509 02:56:22< happygrue> ah 20090509 02:56:36< happygrue> I am really liking quassel (also KDE integrated) 20090509 02:56:46< happygrue> it is the default on kubuntu 9.04 20090509 02:57:11< alink> never heard of it, I must remember to check it 20090509 02:57:29< happygrue> http://quassel-irc.org/ 20090509 02:57:48< happygrue> I was unimpressed with konversation, which is why I ask :) 20090509 02:58:01< happygrue> but perhaps I just didn't give it enough time 20090509 02:58:29< alink> well, it has probably some flaws 20090509 02:59:01< alink> the hack needed to activate spelling highlight is one, but maybe debian specific 20090509 02:59:14< happygrue> still, as you say, if a casual user you really don't need much functionality. 20090509 02:59:17-!- Espreon [n=espreon@wesnoth/developer/espreon] has quit ["Tengo que ir... Yeahzorz..."] 20090509 02:59:45< happygrue> I used the opera built-in IRC client for years before caring enough to upgrade to a nicer program :) 20090509 02:59:53< happygrue> and that was pretty basic ;) 20090509 03:00:51< alink> there is some advanced features that i use a little, but i didn't compared to others 20090509 03:00:58-!- ardesh [n=ardesh@port-92-206-79-84.dynamic.qsc.de] has quit [Read error: 110 (Connection timed out)] 20090509 03:02:31< happygrue> quassel is still a work in progress, but I like where it is going. It also lacks spellchecking currently for example, so maybe you don't want to switch yet ;) 20090509 03:02:34< alink> quassel settings seems less rich, for example 20090509 03:03:25< happygrue> perhaps so. I didn't like the feel of konversation, perhaps it has some nicer functionality that I did not stick around to discover 20090509 03:05:20-!- BenUrban [n=benurban@c-68-55-19-224.hsd1.md.comcast.net] has joined #wesnoth-dev 20090509 03:06:42-!- noy [n=Noy@wesnoth/developer/noy] has joined #wesnoth-dev 20090509 03:08:42< alink> important Konversation features for me: tabs (supporting mousewheel), OSD pop-up, configurable look and hotkeys, various configurable highlight functions, and manage the connection stuff correctly 20090509 03:12:33< happygrue> OSD? 20090509 03:12:34-!- ardesh_ is now known as ardesh 20090509 03:12:54< alink> On-Screen-Display 20090509 03:13:38< alink> or a little pop-up that i can place and configure 20090509 03:14:12< alink> (to follow chat when the window is not visible) 20090509 03:14:25< happygrue> I see 20090509 03:14:39< alink> but I guess most clients have that 20090509 03:16:29-!- ancestral [n=masterpr@97-116-120-23.mpls.qwest.net] has joined #wesnoth-dev 20090509 03:17:10< alink> now that i think about it, it miss a transparency setting 20090509 03:17:45-!- Espreon [n=espreon@wesnoth/developer/espreon] has joined #wesnoth-dev 20090509 03:17:48-!- noy [n=Noy@wesnoth/developer/noy] has quit [Read error: 145 (Connection timed out)] 20090509 03:23:13-!- Sir_Konrad[willb is now known as Sir_Konrad 20090509 03:23:25-!- AndreLuiz [n=deko__@unaffiliated/andreluiz] has joined #wesnoth-dev 20090509 03:26:30-!- Espreon [n=espreon@wesnoth/developer/espreon] has quit ["Tengo que ir... Yeahzorz..."] 20090509 03:26:50< Sir_Konrad> ok thanks for the help. I'm going now 20090509 03:39:12-!- ardesh_ [n=ardesh@port-92-206-117-7.dynamic.qsc.de] has joined #wesnoth-dev 20090509 03:46:46-!- fabi [n=fabi@f051111133.adsl.alicedsl.de] has joined #wesnoth-dev 20090509 03:46:47-!- noy [n=Noy@wesnoth/developer/noy] has joined #wesnoth-dev 20090509 03:48:41-!- Elvish_Pillage2 [n=eli@71-10-228-131.dhcp.oxfr.ma.charter.com] has quit ["Hi! I'm a quit message virus vaccine. If you see a quit message virus, don't replace your quit message with it!"] 20090509 03:54:30-!- ardesh [n=ardesh@port-92-206-93-183.dynamic.qsc.de] has quit [Read error: 110 (Connection timed out)] 20090509 03:55:09-!- thespaceinvader [n=chatzill@wesnoth/artist/thespaceinvader] has quit ["ChatZilla 0.9.84 [Firefox 3.0.10/2009042316]"] 20090509 04:01:30-!- Espreon [n=espreon@wesnoth/developer/espreon] has joined #wesnoth-dev 20090509 04:02:46-!- fendrin [n=fabi@wesnoth/developer/fendrin] has quit [Read error: 110 (Connection timed out)] 20090509 04:07:52-!- noy [n=Noy@wesnoth/developer/noy] has quit [] 20090509 04:15:09-!- Ivanovic_ [n=ivanovic@dtmd-4db2a55a.pool.einsundeins.de] has joined #wesnoth-dev 20090509 04:21:36-!- Espreon [n=espreon@wesnoth/developer/espreon] has quit ["Tengo que ir... Yeahzorz..."] 20090509 04:27:50-!- Espreon [n=espreon@wesnoth/developer/espreon] has joined #wesnoth-dev 20090509 04:31:09-!- Ivanovic [n=ivanovic@wesnoth/developer/ivanovic] has quit [Read error: 113 (No route to host)] 20090509 04:33:07-!- Ivanovic_ is now known as Ivanovic 20090509 04:53:09< CIA-30> alink * r35494 /trunk/src/unit_types.cpp: 20090509 04:53:09< CIA-30> Simple optimization about accessing unit_type, speed-up AI recruiting. 20090509 04:53:09< CIA-30> Impact linearly depend to the number of unit types, so help a lot when few eras are installed. 20090509 04:53:09< CIA-30> Also help a little big-keep scenario like in NR. 20090509 04:54:38< alink> I will backport it to 1.6 tomorrow, there is only a tiny change of the code flow, seems valid but I prefer check that with fresh eyes 20090509 04:56:21< alink> here with 3 eras, I win seconds of AI thinking time when recruiting :) 20090509 04:56:53< Soliton> cool. 20090509 04:56:54< alink> but the improvement is much smaller with only mainline units 20090509 04:57:32< alink> btw about mainline MP, does the recruitment formula AI stuff is supposed working ? 20090509 04:58:09< alink> here it seems to take >1sec by side 20090509 04:58:51< alink> and if I understand correctly it still let the c++ AI code do the recruiting 20090509 04:59:24< Soliton> what recruitment formulaAI stuff? 20090509 04:59:38< alink> in mainline MP factions cfg files 20090509 05:00:11< alink> ah sorry in 1.6 20090509 05:00:37< alink> rulebase="{ai/formula/recruitment.fai}" 20090509 05:01:07< alink> in each faction file 20090509 05:01:08< Soliton> no, that does nothing. 20090509 05:01:25< alink> well that seems to execute slow code 20090509 05:01:52< alink> plus it show up in savegame 20090509 05:01:57< Soliton> well, without ai_algorithm set to formula_ai it shouldn't do anything. 20090509 05:02:36< Soliton> yeah, that's a bit annoying. 20090509 05:02:48 * alink doesn't know about ai_algorithm 20090509 05:03:19< alink> I check the line number of this slow call 20090509 05:05:32< alink> mmh wait i doublecheck if it was in 1.6 or trunk 20090509 05:08:20< CIA-30> soliton * r35495 /branches/1.6/data/multiplayer/factions/ (12 files): removed dormant team_formula since it just clutters up savegames 20090509 05:09:30-!- Sir_Konrad [n=Sir_Konr@dpclt034064.direcpc.com] has left #wesnoth-dev ["Leaving"] 20090509 05:11:23< alink> yes in 1.6, that fai code was called at least once by side, usually at the beginning of the game when the main recruiting is done 20090509 05:11:58< alink> returned false and let the c++ code work, so I assume it did nothing 20090509 05:12:26< Soliton> and that's slow? 20090509 05:12:28< alink> but still, when tested, cost 1.3 sec per side here 20090509 05:12:58< alink> on my Athlon XP 2600+ 20090509 05:14:28< alink> in ai.cpp:1905 1.6 20090509 05:20:31< alink> I suppose that when FAI will replace the c++ AI, it's an acceptable time 20090509 05:22:55< alink> is it possible that, under some special conditions, this FAI code did the recruiting in 1.6 and caused bad recruit choice or AI bug (like the ones about WML ai setting)? 20090509 05:30:46-!- Espreon [n=espreon@wesnoth/developer/espreon] has quit ["Tengo que ir... Yeahzorz..."] 20090509 05:39:46-!- Espreon [n=espreon@wesnoth/developer/espreon] has joined #wesnoth-dev 20090509 05:50:17-!- crimson_penguin [n=ben@wesnoth/developer/crimsonpenguin] has quit [] 20090509 05:55:34-!- Appleman1234 [n=Appleman@131.181.47.8] has joined #wesnoth-dev 20090509 06:03:03-!- [Relic] [n=[Relic]@76.229.202.137] has joined #wesnoth-dev 20090509 06:04:00< [Relic]> Hello :) 20090509 06:09:13-!- wesbot changed the topic of #wesnoth-dev to: stringfreeze for branches/1.6, 1.6.2 planned for next Sunday (10 May) | 56 bugs, 237 feature requests, 9 patches | logs: http://irclogs.wesnoth.org/ | Don't paste on IRC! Use a pastebin: http://wesnoth.pastebin.com | http://imagebin.org 20090509 06:52:57-!- [Relic] [n=[Relic]@76.229.202.137] has quit ["Leaving"] 20090509 07:16:40-!- alink [n=alink@wesnoth/developer/alink] has quit [Remote closed the connection] 20090509 07:32:02-!- Blueblaze [n=nick@c-98-199-143-139.hsd1.tx.comcast.net] has quit [Remote closed the connection] 20090509 07:34:23-!- PK [n=pk@r74-192-44-206.vctrcmta01.vctatx.tl.dh.suddenlink.net] has joined #wesnoth-dev 20090509 07:34:44-!- PK [n=pk@r74-192-44-206.vctrcmta01.vctatx.tl.dh.suddenlink.net] has quit [Client Quit] 20090509 07:37:53-!- Doppp [i=Doppp@128.2.25.136] has quit [Read error: 131 (Connection reset by peer)] 20090509 07:48:17-!- Doppp [i=Doppp@DOPPP.RES.CMU.EDU] has joined #wesnoth-dev 20090509 08:03:46-!- silene [n=plouf@wesnoth/developer/silene] has joined #wesnoth-dev 20090509 08:03:55< silene> hi 20090509 08:05:32-!- Crab_ [n=Crab_@wesnoth/developer/crab] has joined #wesnoth-dev 20090509 08:05:40< Crab_> hi 20090509 08:11:00< silene> Crab_: i have decided to put a garbage-collected type for units, so it will solve the segfaults for sighted/moveto conflicts (and a few others); it won't prevent the conflicts though (and whatever they may mean), so feel free to rework sighted events anyway 20090509 08:12:52< Crab_> silene: so, unit iterator will stay *valid* even after units->erase(unit) ? 20090509 08:13:31-!- Sirp [n=me@wesnoth/developer/dave] has quit ["leaving"] 20090509 08:14:27< silene> Crab_: yes, and as a matter of fact, i would even get rid of these iterators; having iterators that are other things than the result of a find function or the bound of a range has always seemed fragile to me (and experience has shown that it indeed is) 20090509 08:18:23< Crab_> silene: ok. (note that https://gna.org/bugs/?13256 will still cause an assertion failure because it tries to refresh the iterator by units.find(un->affected_unit.underlying_id()); before asserting assert(unit_itor != units.end()); ) 20090509 08:19:32< Crab_> silene: in my opinion, iterators are ok by themselves, but they are error-prone because they are stored for longer then necessary. 20090509 08:21:22< silene> Crab_: no, the assert won't be caused any longer, because there won't be iterators there: the unit will directly be stored inside the undo list 20090509 08:21:30< Crab_> good ) 20090509 08:23:25< silene> Crab_: that being said, there may be another assert instead, like "assert(un.state() == ON_MAP)" ;-) we will see how the implementation goes 20090509 08:26:43-!- loonybot [n=loonybot@79.139.247.143] has joined #wesnoth-dev 20090509 08:27:47-!- loonycyborg [n=sergey@79.139.247.143] has joined #wesnoth-dev 20090509 08:32:10< Crab_> silene: the most common use cases of unit iterators (in ai) are: 1) 'find a unit at location', then 'check that it is successfully found', then 'do something with it'. 2) iterate over all units [matching a filter, such as 'our units and not incapacitated'. filter implemented as if (!..) continue ] 20090509 08:36:04< Ivanovic> moin 20090509 08:36:43-!- maxy [n=maxy@80-219-0-199.dclient.hispeed.ch] has joined #wesnoth-dev 20090509 08:36:45< Crab_> hello, Ivanovic 20090509 08:41:13< silene> Crab_: for the ai, there are possible improvements; for instance, instead of constantly looking for the leader, some smarter system could be used (like caching a pointer to the leader, and when asking about it, checking that it is on map and still able to recruit) 20090509 08:42:24< Crab_> silene: it's better to 'profile' the ai first, and see what are the problems. 20090509 08:44:25< silene> Crab_: i'm sure this one is a problem: the find_leader function is constantly called, and it is linear in the number of units 20090509 08:45:12-!- maxy [n=maxy@80-219-0-199.dclient.hispeed.ch] has quit [Read error: 104 (Connection reset by peer)] 20090509 08:48:13-!- maxy [n=maxy@80-219-0-199.dclient.hispeed.ch] has joined #wesnoth-dev 20090509 08:59:27< Crab_> silene: please see ftp://ftp.terraninfo.net/wesnoth/ai_01.jpeg it's one turn of the ai on "Showdown in Northern rebirth" 20090509 09:00:23-!- stikonas [n=quassel@ctv-213-164-108-14.vinita.lt] has joined #wesnoth-dev 20090509 09:01:43< silene> Crab_: what's the meaning of the numbers? 20090509 09:03:00< Crab_> it is google perfomance tools (same as used by cjhopman). They, basically, 'check where we are now ~100 times per second' 20090509 09:03:54< Crab_> so, 7296 checks were done, and the number of times we got to certain functions is noted. 20090509 09:04:10< silene> but why are there two numbers pex box? 20090509 09:04:33< Crab_> second is the 'parent number' 20090509 09:04:50< Crab_> note the numbers on the arrows 20090509 09:06:35< silene> hmm... so it seems to be quite useless, 70% of the samples where taken during raise_user_interact; this won't tell anything about the ai: or am i interpreting it wrong? 20090509 09:07:31< Crab_> yes, you are right. we can just ignore those 71%. but I think that it is wrong to exclude them from profiling 20090509 09:07:36< Crab_> see http://www.wesnoth.org/forum/viewtopic.php?f=10&t=2539 20090509 09:07:55< silene> The requested topic does not exist. 20090509 09:08:12< Crab_> oops http://www.wesnoth.org/forum/viewtopic.php?f=10&t=25390 20090509 09:09:02< silene> i'm not sating to exclude them; but if the graph is actually faithful, we should simply get rid of most of the calls to this function and see a massive imprvement to the AI 20090509 09:09:08< Crab_> my guess is that his problem is because his machine is so low-end, that his ai basically spends 'almost all' time in raise_user_interact. 20090509 09:09:13< Crab_> note the raise_user_interact algorithm 20090509 09:10:03< Crab_> http://wesnoth.pastebin.com/m3d35a674 20090509 09:10:54< Crab_> ( SDL_GetTicks -- Gets the number of milliseconds since SDL library initialization. ) 20090509 09:11:36< Crab_> so, what will happen if "user_interact_.notify_observers();" is slow ? 20090509 09:13:36< silene> do i need to answer this question? :-) 20090509 09:15:13< Crab_> silene: I'm having an idea that, in case "user_interact_.notify_observers();" is slow, it will take >30 ms to run, so *each* call to raise_user_interact will result in "user_interact_.notify_observers();" call, so, the ai will spend most of the cpu cycles in drawing animations 20090509 09:15:31< silene> sure 20090509 09:16:29< Crab_> silene: and I suggest we change user_interact_.notify_observers(); algorithm somehow 20090509 09:17:41< Crab_> especially for low-end machines 20090509 09:18:44< Crab_> the question is: how ? 20090509 09:20:23< silene> no, i don't think we need to change it; if the graph is meaningful, there is a bug lower (which would surprise mean, since the last time i ran wesnoth under xephyr, the screen was flashing like crazy) 20090509 09:20:35< silene> not surprise me* 20090509 09:21:51< Crab_> so, you're saying that 'screen redraw' should take <<30ms ? even on very-low-end machine ? 20090509 09:22:43< silene> Crab_: yes, animating a few flags shouldn't take that much time 20090509 09:23:02< Crab_> 'a few flags' ? 20090509 09:23:41< silene> Crab_: when the AI is computing, nothing is supposed to change on the map; so except for flags and bored units, there shouldn't be any animation 20090509 09:23:47< Crab_> what about 80 wing-flapping vampire bats :) ? 20090509 09:25:37< silene> good point, still it shouldn't take that much time; hell, my first computer was running at 8MHz, and it could already do that much 20090509 09:26:42-!- noy [n=Noy@wesnoth/developer/noy] has joined #wesnoth-dev 20090509 09:28:00< Crab_> silene: on my 2GHz computer, wesnoth drops from 50 to 11 fps upon seeing ~80 bats :) Since those bats flap wings all the time... 20090509 09:31:57< silene> Crab_: could you send me a savefile? i would be interested to run it under oprofile, just to be sure different tools give compatible results 20090509 09:32:01< maxy> your first computer ran better optimized programs that had direct hardware access 20090509 09:32:12< Crab_> silene: and the most interesting point is that those bats do not have to be on screen to drop fps :) 20090509 09:33:37< silene> Crab_: that doesn't surprise me, on your graph, the actual display only account for 25% of the time; the time is waster in unit::invalidate 20090509 09:33:55< Crab_> ftp://ftp.terraninfo.net/wesnoth/showdown_bats.gz 20090509 09:37:28< Crab_> silene: yes, but what is the point of invalidating animations that weren't displayed for a long time ? 20090509 09:38:29< silene> that's one of the questions, i guess 20090509 09:51:41< silene> i hate to have to remember that i should compile with -fno-omit-frame-pointer to get callgraphs from oprofile... 20090509 09:51:43-!- stikonas_ [n=quassel@213.164.108.14] has joined #wesnoth-dev 20090509 09:54:44< Crab_> silene: what do you think about making raise_user_interact delay (30ms) a command-line parameter, with 30ms as default ? 20090509 09:56:03< Crab_> silene: it will allow users with very-low-end hardware to speed up ai turn at the expense of having less 'interactivity' during ai turn. 20090509 09:56:31< silene> i don't think it is worth it; if a user needs this parameter, he should just disable spurious animations in the preferences, it will be a much bigger win 20090509 09:57:48< Crab_> silene: well, imagine two calls of raise_user_interact separated by 29 ms of time - user interaction will be raised each 58 seconds. And imagine two calls of raise_user_interact separated by 30 ms of time - user interaction will be raised each 30 seconds 20090509 09:58:12-!- mjs-de [n=mjs-de@vpw.wh.uni-dortmund.de] has joined #wesnoth-dev 20090509 09:58:28< Crab_> silene: there's a "magic point" at which things start to get substantially slower (if user interaction code is slow) 20090509 09:58:47< Crab_> s/seconds/milliseconds 20090509 09:58:47-!- Appleman1234 [n=Appleman@131.181.47.8] has quit ["Leaving"] 20090509 09:58:51< silene> Crab_: i understand; but what i'm saying is that he can get a much better result by just disabling some animations 20090509 09:59:29< Crab_> silene: ok, I'll ask ldemanet about animations 20090509 10:01:29-!- DDR [n=chatzill@66.183.125.196] has quit [Read error: 110 (Connection timed out)] 20090509 10:08:43-!- EdB [n=edb@79.95.12.144] has joined #wesnoth-dev 20090509 10:08:50< Crab_> silene: can you look at http://wesnoth.pastebin.com/m57f9c009 ? 20090509 10:08:50-!- stikonas [n=quassel@wesnoth/translator/stikonas] has quit [Read error: 110 (Connection timed out)] 20090509 10:08:57< Crab_> silene: why call   gui_->draw(); ? 20090509 10:09:20-!- stikonas_ [n=quassel@213.164.108.14] has quit [Read error: 110 (Connection timed out)] 20090509 10:10:06< Crab_> isn't it duplication of get_display().draw(); call ? 20090509 10:11:27< silene> Crab_: no idea, this code is relatively new, i don't know it; (but note that there is an early exit in play_slice, not sure whether it matters) 20090509 10:12:38-!- stikonas [n=quassel@ctv-213-164-108-14.vinita.lt] has joined #wesnoth-dev 20090509 10:13:20< Crab_> silene: imo, it shouldn't matter (since if user has pressed a menu, there's no need to draw a map - we have to draw a menu) 20090509 10:13:49< Crab_> silene: but this duplication leads to display::draw called x2 as much. 20090509 10:13:51< silene> Crab_: i don't think display::draw only draws the map 20090509 10:18:01< Crab_> silene: ok. I was trying to say " if user has pressed a menu, there's no need to 'get_display().draw();' - we pass control (and a reference to display) to the code that will show the menu ) 20090509 10:18:33< Crab_> I'll ask Mordante when he's around 20090509 10:18:47< Crab_> and, if it's ok, i'll remove that gui_->draw(); call. 20090509 10:20:36< Crab_> in my case (on that NR Showdown map), it lead to calling display_draw 2500 times less per ai turn :) 20090509 10:25:31-!- EdB [n=edb@79.95.12.144] has quit [Remote closed the connection] 20090509 10:29:24-!- zookeeper [n=l@wesnoth/developer/zookeeper] has joined #wesnoth-dev 20090509 10:29:58-!- Chusslove [n=caslav@brsg-d9beebd9.pool.mediaWays.net] has joined #wesnoth-dev 20090509 10:30:21< silene> Crab_: for the record, this is the graph i obtain: http://www.lri.fr/~melquion/divers/output.png 20090509 10:31:20< Crab_> on that save ? or on ai-vs-ai ? 20090509 10:31:56-!- stikonas_ [n=quassel@ctv-213-164-108-14.vinita.lt] has joined #wesnoth-dev 20090509 10:32:20< silene> Crab_: on that save; i start profiling when i press endturn, and i stop when it gives me back control 20090509 10:32:43< Crab_> ok 20090509 10:33:42< silene> and it doesn't appear on the graph, but there are 135k samples, so it's a bit more precise than yours 20090509 10:34:39< Crab_> yes 20090509 10:35:45< Crab_> and note how raise_user_interact takes 'less %time' for you - probably because of that 30ms between-calls limit 20090509 10:39:23< Crab_> it will be interesting to log 'how many times raise_user_interact is called' 20090509 10:41:39-!- stikonas_ [n=quassel@ctv-213-164-108-14.vinita.lt] has quit [Read error: 60 (Operation timed out)] 20090509 10:51:00-!- stikonas [n=quassel@wesnoth/translator/stikonas] has quit [Read error: 110 (Connection timed out)] 20090509 11:00:17-!- busfahrer [n=busfahre@unixboard/user/busfahrer] has joined #wesnoth-dev 20090509 11:04:29-!- noy [n=Noy@wesnoth/developer/noy] has quit [] 20090509 11:07:51-!- silene [n=plouf@wesnoth/developer/silene] has quit [Read error: 145 (Connection timed out)] 20090509 11:12:52-!- alink [n=alink@wesnoth/developer/alink] has joined #wesnoth-dev 20090509 11:15:49-!- silene [n=plouf@ASte-Genev-Bois-152-1-98-154.w86-203.abo.wanadoo.fr] has joined #wesnoth-dev 20090509 11:56:42-!- busfahrer is now known as nomnomfahrer 20090509 11:58:17< CIA-30> crab * r35496 /trunk/src/ai/ (ai_manager.cpp ai_manager.hpp): Added logging of count of raise_user_interact events fired, to --log-debug=ai/manager 20090509 12:00:17< Crab_> silene: if you have time, can you profile orc players turn (in ftp://ftp.terraninfo.net/wesnoth/showdown_bats_orcturn.gz ), noting the number of user interactions per side ( available from --log-debug=ai/manager with ^^^ commit) ? 20090509 12:02:55-!- ardesh_ is now known as ardesh 20090509 12:03:29< silene> i hope there isn't too much things in this debug domain, because logging is incredibly costly and it defeats the point of profiling 20090509 12:03:42< Crab_> 4 lines per turn 20090509 12:05:48< silene> good 20090509 12:06:16< Crab_> and since ai turn there takes ~5-6 minutes per side (for me, in a windowed mode, with all animation enabled), it shouldn't affect things much. 20090509 12:07:02-!- Elvish_Pillager [n=eli@71-10-228-131.dhcp.oxfr.ma.charter.com] has joined #wesnoth-dev 20090509 12:15:04-!- silene1 [n=plouf@ASte-Genev-Bois-152-1-98-154.w86-203.abo.wanadoo.fr] has joined #wesnoth-dev 20090509 12:15:14-!- silene [n=plouf@wesnoth/developer/silene] has quit [Nick collision from services.] 20090509 12:15:19-!- silene1 is now known as silene 20090509 12:16:51< silene> Crab_: hard hang (this may be related to the fact it was the first time i was letting oprofile run that long, i may have missed some buffer flushing command) 20090509 12:17:30< Crab_> silene: ok. for me, ai is still moving... ) 20090509 12:24:49< Crab_> silene: that's a number of user interactions: http://wesnoth.pastebin.com/m693af80e 20090509 12:25:14< silene> how long did it run? 20090509 12:25:25< Crab_> see the times. ~6 minutes per side, 5 sides. 20090509 12:25:34< silene> ah sorry 20090509 12:26:52< silene> so, it is called only 5 times per second? doesn't seem excessive 20090509 12:26:53-!- maxy [n=maxy@80-219-0-199.dclient.hispeed.ch] has quit [Read error: 104 (Connection reset by peer)] 20090509 12:27:41< Crab_> silene: yes. but 6 minutes per side is slow, so there must be some other reason for it.. 20090509 12:30:04-!- alink [n=alink@wesnoth/developer/alink] has quit [Remote closed the connection] 20090509 12:33:39-!- Elvish_Pillage2 [n=eli@71-10-228-131.dhcp.oxfr.ma.charter.com] has joined #wesnoth-dev 20090509 12:35:19< silene> Crab_: also, note that our interpretation was wrong; notify_observers is not called every 30ms, but every 30ms of AI time; so it increases the total time, but only linearly with respect to the AI 20090509 12:35:59< Crab_> ah, yes 20090509 12:37:22-!- fabi [n=fabi@wesnoth/developer/fendrin] has quit [Remote closed the connection] 20090509 12:37:26< silene> that being said, notify_observers is nonetheless utterly slow, which doesn't help 20090509 12:37:47< Crab_> silene: "if I have 10 fps, then each redraw is 100ms". am I right ? 20090509 12:38:28< silene> yes, 30ms allows for a 50Hz refresh, assuming the function is called often enough 20090509 12:38:43< silene> 30Hz* 20090509 12:39:36< Crab_> so, ~1800 user interactions per 6 minutes = 180 seconds = 3 minutes = 50% of time spent in redrawing the map 20090509 12:40:01< Crab_> s/redrawing the map/redrawing 20090509 12:40:09< silene> isn't that what your profile was saying anyway? 20090509 12:40:15< silene> (and mine too) 20090509 12:40:27< Crab_> silene: yes, but I'm double-checking 20090509 12:42:31-!- nomnomfahrer is now known as busfahrer 20090509 12:42:44-!- Polarina [n=polarina@wesnoth/translator/Polarina] has joined #wesnoth-dev 20090509 12:44:17< silene> game_display::invalidate_animations seems quadratic in the number of units 20090509 12:44:27-!- fendrin [n=fabi@wesnoth/developer/fendrin] has joined #wesnoth-dev 20090509 12:49:05-!- Tigge [n=tigge@bacchus.olf.sgsnet.se] has joined #wesnoth-dev 20090509 12:50:30-!- Elvish_Pillager [n=eli@71-10-228-131.dhcp.oxfr.ma.charter.com] has quit [Read error: 110 (Connection timed out)] 20090509 12:51:10< fendrin> Can I sync low stable with low trunk just by copying over? 20090509 12:54:00< Soliton> depends whether trunk specific changes have been made... 20090509 12:55:34< fendrin> Soliton: No that wasn't the case. The point of my question is: I want to have them both in sync and I am sure that they work with both versions fine. But I am not aware how to perform the task in detail. 20090509 12:58:51< Soliton> well, the proper approach is to commit every change to both 1.6 and trunk. but if you're sure copying over will work and nothing will have to be reverted ever, you can do that, too. 20090509 13:01:56-!- maxy [n=maxy@80-219-0-199.dclient.hispeed.ch] has joined #wesnoth-dev 20090509 13:05:29-!- Dragonking [n=dk@wesnoth/developer/dragonking] has quit [] 20090509 13:18:54-!- jmunro[a] is now known as jmunro 20090509 13:25:29-!- busfahrer is now known as busfahrer|HIMYM 20090509 13:26:31< CIA-30> fendrin * r35497 /trunk/data/campaigns/Legend_of_Wesmere/maps/16_The_Chief_must_die.map: LoW 16: Exchanged villages with new orcish versions. 20090509 13:33:12-!- Espreon [n=espreon@wesnoth/developer/espreon] has quit ["Tengo que ir... Yeahzorz..."] 20090509 13:38:53-!- elias [n=allefant@allegro/developer/allefant] has joined #wesnoth-dev 20090509 14:05:28-!- busfahrer|HIMYM is now known as busfahrer 20090509 14:13:44-!- busfahrer is now known as buzZzZzfahrer 20090509 14:14:03-!- Gnutoo [n=gnutoo@host109-10-dynamic.54-79-r.retail.telecomitalia.it] has joined #wesnoth-dev 20090509 14:14:14-!- silene1 [n=plouf@ASte-Genev-Bois-152-1-76-83.w86-203.abo.wanadoo.fr] has joined #wesnoth-dev 20090509 14:15:55-!- silene [n=plouf@wesnoth/developer/silene] has quit [Read error: 110 (Connection timed out)] 20090509 14:36:16-!- Polarina [n=polarina@wesnoth/translator/Polarina] has quit [Read error: 110 (Connection timed out)] 20090509 14:37:21-!- Polarina [n=polarina@wesnoth/translator/Polarina] has joined #wesnoth-dev 20090509 14:51:44-!- crimson_penguin [n=ben@64.201.60.216] has joined #wesnoth-dev 20090509 15:13:42-!- zookeeper [n=l@wesnoth/developer/zookeeper] has quit [] 20090509 15:28:49< CIA-30> ivanovic * r35498 /trunk/po/ (9 files in 9 dirs): updated Lithuanian translation 20090509 15:28:50< CIA-30> ivanovic * r35499 /branches/1.6/po/ (9 files in 9 dirs): updated Lithuanian translation 20090509 15:41:10< CIA-30> silene * r35500 /trunk/src/ (unit.cpp unit.hpp): Hid some implementations away from the interface. 20090509 15:41:15-!- jmunro is now known as jmunro[a] 20090509 15:41:32< CIA-30> silene * r35501 /trunk/src/game_display.cpp: Prevented invalidation of out-of-screen units. 20090509 15:42:37< silene1> Crab_: it doesn't help much for reducing the AI time (but it is mostly animation-bound here), but it improves my fps; could you give it a try? 20090509 15:42:40-!- BenUrban [n=benurban@unaffiliated/benurban] has quit ["Power failu"] 20090509 15:42:44-!- silene1 is now known as silene 20090509 15:43:40< Crab_> ok 20090509 15:49:18-!- buzZzZzfahrer is now known as busfahrer 20090509 15:49:35< Crab_> silene: note about r35501 (disclaimer: I don't know much about animation code) - can out-of-screen-unit animation affect units on screen ? for example, 1-hex-out-of-screen Mage of Light with Illuminate, or Delfadors lightning bolt attack 20090509 15:51:04< silene> Crab_: most certainly, but i couldn't think of a single case of an animation outside the screen impacting a unit on the screen, so didn't mind braking it 20090509 15:55:06< Crab_> silene: I have all 50fps with those bats flapping their wings off-screen :) good. 20090509 15:55:35< silene> Crab_: then i really don't care having broken these theoretical animations ;-) 20090509 15:56:40< silene> i will backport it to 1.6 20090509 15:57:09< Crab_> silene: if somebody cares, we'll have a bug report someday later :) 20090509 15:57:24< Crab_> silene: but it is a very good thing for now. 20090509 15:58:23-!- Gnutoo [n=gnutoo@host109-10-dynamic.54-79-r.retail.telecomitalia.it] has quit [Read error: 60 (Operation timed out)] 20090509 16:02:09< CIA-30> soliton * r35502 /branches/1.6/src/server/game.cpp: only print the comma when necessary 20090509 16:04:02< CIA-30> soliton * r35503 /trunk/src/server/game.cpp: only print the comma when necessary 20090509 16:07:18< CIA-30> silene * r35504 /branches/1.6/src/game_display.cpp: 20090509 16:07:18< CIA-30> Backport of revision 35501. 20090509 16:07:18< CIA-30> Prevented invalidation of out-of-screen units. 20090509 16:21:49< Crab_> silene: tested with disabled 'scroll tracking of unit actions', scrolled to empty area of a map. ai turn (those 5 orc sides) took 19 minutes instead of 33 minutes. 20090509 16:25:14< silene> i was hoping for a speedup a bit more dramatic on an empty area; but still, 50% faster is not that bad 20090509 16:25:59< Soliton> standing animations stop at the border of the screen now. 20090509 16:26:44< silene> Soliton: yes, that was the goal; did you notice a glitch? 20090509 16:26:56< Soliton> that is the glitch. 20090509 16:27:14< Soliton> at the border of the screen but still visible is what i mean. 20090509 16:27:32< Crab_> Soliton: with what unit ? 20090509 16:27:44< Soliton> i tried with a bat. 20090509 16:28:06< Crab_> for me, bats happily flap wings when they're half-visible :) 20090509 16:28:13< Soliton> maybe a hex that is not fully visible is already considered out of screen. 20090509 16:28:18< Soliton> well, not here. 20090509 16:28:43< Soliton> they animate a bit randomly when i mouse over but that's it. 20090509 16:29:37< Crab_> Soliton: strange 20090509 16:29:43< Soliton> ah they also animate when other things happen. 20090509 16:29:43< silene> indeed, i can reproduce the issue, i guess the function tile_on_screen is broken, i will take a look at it later 20090509 16:29:57< Soliton> Crab_: maybe you have other animations constantly running. 20090509 16:30:06< Soliton> i have map animations turned off. 20090509 16:30:36< Crab_> Soliton: bats,bats,and nothing but bats ) but map animations on. 20090509 16:30:37< Ivanovic> silene: for your last commit, could you add some changelog entry? 20090509 16:30:43< Ivanovic> since this speedup should be very notable 20090509 16:31:24< silene> nice, a tile is considered on screen only if its center is visible; that's idiotic... 20090509 16:32:31< Ivanovic> interesting approach... 20090509 16:33:15< Crab_> got a segfault ( 20090509 16:34:09< silene> in fact, it's even worse, rightmost and downmost tiles are not even considered on screen 20090509 16:34:23< silene> someone got his logic backward... 20090509 16:53:18-!- giusef [n=giusef@unaffiliated/giusef] has joined #wesnoth-dev 20090509 16:56:38-!- Sirp [n=me@wesnoth/developer/dave] has joined #wesnoth-dev 20090509 16:58:56< CIA-30> fendrin * r35505 /trunk/data/campaigns/Legend_of_Wesmere/scenarios/04_Elvish_Treasury.cfg: LoW 04: Code cleanup. 20090509 17:01:51< CIA-30> fendrin * r35506 /trunk/data/campaigns/Legend_of_Wesmere/scenarios/ (3 files): LoW: More code cleanups. 20090509 17:09:48< happygrue> last night I crashed several times (different games and replays of those games) with this error: http://imagebin.org/48424 20090509 17:10:47< happygrue> I can't seem to reproduce it, and I haven't seen it before until last night 20090509 17:11:25< happygrue> I *think* that both games that this happened in where hosted by players using 1.6a (I am on 1.6.1). Does this ring any bells for anyone? 20090509 17:18:40< happygrue> I also recently got a new computer, and so far I have only noticed this on Vista (XP and Kubuntu seem(ed) to be fine) 20090509 17:19:03-!- Gnutoo [n=gnutoo@host109-10-dynamic.54-79-r.retail.telecomitalia.it] has joined #wesnoth-dev 20090509 17:22:55-!- Zen_Clark [n=user@99-136-80-191.lightspeed.rcsntx.sbcglobal.net] has joined #wesnoth-dev 20090509 17:23:06< Soliton> well, it means an invalid unit was accessed but why that happened is hard to say... 20090509 17:23:39< Soliton> where those games where units get killed by WML or something? 20090509 17:24:00< happygrue> one was a regular 1v1, the other was a WC 20090509 17:26:53-!- PK0 [n=pk@r74-192-44-206.vctrcmta01.vctatx.tl.dh.suddenlink.net] has joined #wesnoth-dev 20090509 17:27:50-!- PK0 [n=pk@r74-192-44-206.vctrcmta01.vctatx.tl.dh.suddenlink.net] has left #wesnoth-dev [] 20090509 17:28:55-!- elias [n=allefant@allegro/developer/allefant] has quit ["Leaving"] 20090509 17:29:30< happygrue> Well, until there are other reports or a way for me to duplicate it I guess I will assume that it has something to do with my system. Other players/observers were ok AFAIK. 20090509 17:40:10-!- giusef [n=giusef@unaffiliated/giusef] has quit ["exit (-1);"] 20090509 17:53:06-!- alink [n=alink@wesnoth/developer/alink] has joined #wesnoth-dev 20090509 18:12:01-!- Polarina1 [n=polarina@85-220-26-48.dsl.dynamic.simnet.is] has joined #wesnoth-dev 20090509 18:14:28-!- Elvish_Pillager [n=eli@71-10-228-131.dhcp.oxfr.ma.charter.com] has joined #wesnoth-dev 20090509 18:16:35-!- Elvish_Pillage2 [n=eli@71-10-228-131.dhcp.oxfr.ma.charter.com] has quit [Read error: 110 (Connection timed out)] 20090509 18:16:47-!- Polarina [n=polarina@wesnoth/translator/Polarina] has quit [Read error: 60 (Operation timed out)] 20090509 18:18:56< CIA-30> silene * r35507 /trunk/src/ (display.cpp display.hpp game_display.cpp): Fixed units not being animated when partly out of the screen. 20090509 18:19:13< CIA-30> silene * r35508 /trunk/changelog: Added some changelog entries. 20090509 18:25:27< CIA-30> silene * r35509 /branches/1.6/ (4 files in 2 dirs): 20090509 18:25:27< CIA-30> Backport of revisions 35507 and 35508 20090509 18:25:27< CIA-30> Fixed units not being animated when partly out of the screen. 20090509 18:25:27< CIA-30> Added some changelog entries. 20090509 18:31:07< Zen_Clark> Does anyone here know how to create a .pot file for a user made campaign? 20090509 18:32:17< CIA-30> silene * r35510 /branches/1.6/src/display.cpp: Typo. 20090509 18:37:26-!- giusef [n=giusef@unaffiliated/giusef] has joined #wesnoth-dev 20090509 18:39:28< CIA-30> silene * r35511 /trunk/src/display.cpp: Typo. 20090509 18:41:41< CIA-30> silene * r35512 /branches/1.6/src/display.cpp: Typo (again). 20090509 19:16:45-!- DDR [n=chatzill@66.183.125.196] has joined #wesnoth-dev 20090509 19:28:36-!- grzywacz [n=grzywacz@wesnoth/developer/grzywacz] has joined #wesnoth-dev 20090509 20:00:45-!- noy [n=Noy@wesnoth/developer/noy] has joined #wesnoth-dev 20090509 20:19:00-!- busfahrer is now known as badfahrer 20090509 20:19:49-!- Polarina1 [n=polarina@85-220-26-48.dsl.dynamic.simnet.is] has quit [Read error: 110 (Connection timed out)] 20090509 20:31:19-!- giusef [n=giusef@unaffiliated/giusef] has quit ["exit (-1);"] 20090509 20:32:55< CIA-30> alink * r35513 /branches/1.6/src/unit_types.cpp: backport r35494 (optimize unit_type access, help AI recruiting) 20090509 20:41:31-!- badfahrer is now known as busfahrer 20090509 20:50:02-!- AndreLuiz [n=deko__@unaffiliated/andreluiz] has quit [Read error: 110 (Connection timed out)] 20090509 21:14:57-!- silene1 [n=plouf@ASte-Genev-Bois-152-1-58-55.w83-114.abo.wanadoo.fr] has joined #wesnoth-dev 20090509 21:14:59-!- silene [n=plouf@wesnoth/developer/silene] has quit [Read error: 110 (Connection timed out)] 20090509 21:16:27-!- boucman [n=rosen@2.117.71-86.rev.gaoland.net] has joined #wesnoth-dev 20090509 21:25:04-!- AndreLuiz [n=deko__@unaffiliated/andreluiz] has joined #wesnoth-dev 20090509 21:40:15-!- Noyga [n=lame-z@wesnoth/developer/noyga] has joined #wesnoth-dev 20090509 21:49:56-!- alink_ [n=alink@78.129.18.215] has joined #wesnoth-dev 20090509 21:50:40< Noyga> hi 20090509 21:50:41< CIA-30> alink * r35514 /trunk/src/ (unit_types.cpp unit_types.hpp): 20090509 21:50:41< CIA-30> Generate and cache advance_from info needed a lot of tricky work during lazy-loading. 20090509 21:50:41< CIA-30> Since it's only used when displaying a unit's help page, just calculate it there (fast) 20090509 21:50:56< alink_> hi Noyga 20090509 21:51:30< CIA-30> noyga * r35515 /branches/1.6/ (6 files in 5 dirs): French translation update ... Looks i'm back :) 20090509 21:51:31-!- zookeeper [n=l@wesnoth/developer/zookeeper] has joined #wesnoth-dev 20090509 21:52:14< boucman> hey all 20090509 21:52:20< grzywacz> hi 20090509 21:52:23 * boucman is back from vacations 20090509 21:52:26< Crab_> hi boucman 20090509 21:52:26< alink_> hello boucman 20090509 21:52:32< boucman> hey both of you... 20090509 21:53:07< boucman> Crab_: I havn't caught up on wesnoth stuff yet, I'll talk to you once Ive read all the commit logs etc... 20090509 21:53:20< Crab_> boucman: ok 20090509 21:54:24-!- thespaceinvader [n=chatzill@wesnoth/artist/thespaceinvader] has joined #wesnoth-dev 20090509 21:54:33< zookeeper> yo tsi 20090509 21:54:53< zookeeper> thespaceinvader, are you handling the committing of all that new village/house stuff? 20090509 21:55:13< zookeeper> (some of the loghouse variations don't seem to be in, just wondering whether it's intentional) 20090509 21:55:20< Noyga> i haven't caught up too ... well there is too much to read :p 20090509 21:55:26< thespaceinvader> zookeeper: i'm essentially on a break from anything more than forums until june 20090509 21:55:35< boucman> Noyga: hehe 20090509 21:55:36< zookeeper> ah, ok 20090509 21:55:38< thespaceinvader> i'll take care of it then, if noone else has 20090509 21:55:48< thespaceinvader> but now, i'm in working mode 20090509 21:56:19< Shadow_Master> IIRC AI0867 did the last related commits 20090509 21:58:09< Ivanovic> hi Noyga 20090509 21:58:13< Ivanovic> nice to see you around again 20090509 21:58:43< Ivanovic> Noyga: some days ago someonw posted in the forums willing to help with the french translation 20090509 22:00:10-!- busfahrer [n=busfahre@unixboard/user/busfahrer] has quit ["leaving"] 20090509 22:02:23-!- alink [n=alink@wesnoth/developer/alink] has quit [Read error: 110 (Connection timed out)] 20090509 22:05:22< CIA-30> silene * r35516 /branches/1.6/po/ (6 files in 6 dirs): Updated French translation. 20090509 22:07:32< loonycyborg> Ivanovic: IIRC you've said that you're planning to release on sunday. Did you already release? 20090509 22:07:46< Ivanovic> loonycyborg: today is still saturday 20090509 22:07:52< Ivanovic> i plan to tag in about 22 hours 20090509 22:08:01-!- silene1 [n=plouf@ASte-Genev-Bois-152-1-58-55.w83-114.abo.wanadoo.fr] has quit ["Leaving."] 20090509 22:08:35< Shadow_Master> damn 20090509 22:08:47< Shadow_Master> I wish I could finish my storyscreen stuff 20090509 22:09:21< Ivanovic> Shadow_Master: that is trunk, right? 20090509 22:09:25< Ivanovic> you got one more week for this 20090509 22:09:26< Shadow_Master> yep 20090509 22:09:38< Shadow_Master> ah, wait, 10 May is tomorrow? 20090509 22:09:50< CIA-30> noyga * r35517 /trunk/ (6 files in 5 dirs): French translation update 20090509 22:10:06< Noyga> yes 20090509 22:10:18< Shadow_Master> I thought the topic was announcing a 1.6 release next week, and that you were talking about a 1.7 release tomorrow. duh 20090509 22:10:25< Shadow_Master> n 20090509 22:10:41< Shadow_Master> I haven't even had time to look at a damn calendar 20090509 22:10:55 * loonycyborg has no idea why he though that sunday is today, i.e. yesterday :P 20090509 22:11:22< loonycyborg> *thought 20090509 22:13:15< Shadow_Master> consider me completely inactive except for the very rare occassions on which I can go on coding sprees for a few hours 20090509 22:13:15-!- maxy [n=maxy@80-219-0-199.dclient.hispeed.ch] has quit [] 20090509 22:15:08< Shadow_Master> but if you happen to find a blocker bug I should take care of, feel free to flood my email 20090509 22:22:31-!- alink_ [n=alink@78.129.18.215] has quit [Read error: 110 (Connection timed out)] 20090509 22:34:40-!- noy [n=Noy@wesnoth/developer/noy] has quit ["GO, GET TO THE CHOPPAH!!!"] 20090509 22:37:49-!- alink [n=alink@wesnoth/developer/alink] has joined #wesnoth-dev 20090509 22:41:07< boucman> Crab_: please have a look at bug 13491 (and probably assign to yourself) 20090509 22:44:27< Crab_> boucman: ok. note that .fai floating point support is in 2nd milestone for me, so it won't be done before I finish 1st milestone, so I mark it 'postponed'. 20090509 22:44:55< boucman> Crab_: that's fine, it was more to have a clean bookkeeping of bugs than to pressure you into doing it right away 20090509 22:45:11< boucman> (I personally think tha floating points are handy, but not the most needed feature 20090509 22:45:49< Crab_> and theres math module in lua already, which covers some use cases. 20090509 22:46:26< boucman> and when comparing distances, you don't need square roots, since the square of the distance is usually good enought 20090509 22:46:54< Crab_> boucman: Ai seldom compares distances. 20090509 22:47:26< Crab_> boucman: it uses dist(x,y)< x+y estimate in some cases. in other cases, it uses pathfinding which, in turn, uses A*. 20090509 22:47:56< boucman> no, I was trying to figure out when formulas would need sqrt 20090509 22:48:25< boucman> but on an hexagonal dst != x²+y² so we need a special c++ function for that 20090509 22:48:37< boucman> (if we need it, our current pathfinding helpers might be good enough) 20090509 22:52:31-!- AndreLuiz [n=deko__@unaffiliated/andreluiz] has quit [Remote closed the connection] 20090509 22:52:32-!- giusef [n=giusef@unaffiliated/giusef] has joined #wesnoth-dev 20090509 22:52:58< boucman> Crab_: ok, I caught up with wesnoth commit log 20090509 22:53:03< boucman> so, how was your week ? 20090509 22:53:06< boucman> :) 20090509 22:54:43< Crab_> I've completed my composite ai - ai which consists of a number of phases configurable from .cfg (ready, but need to update other buildsystems before committing) and I have a proposed refactoring of ai interface hierarchy which needs discussion. 20090509 22:55:54< boucman> Crab_: I can't help with the compile stuff, but if you want to discuss the interface now... 20090509 22:56:38< Crab_> boucman: compile stuff is np, I'll commit all that tomorrow. Yes, I want to discuss the interface 20090509 22:57:33< Crab_> boucman: at first, take a look at example composite ai configuration. http://wesnoth.pastebin.com/m2bb3e31f 20090509 22:57:42-!- thespaceinvader_ [n=chatzill@91.108.153.25] has joined #wesnoth-dev 20090509 22:58:09-!- thespaceinvader [n=chatzill@wesnoth/artist/thespaceinvader] has quit [Nick collision from services.] 20090509 22:58:17< Crab_> boucman: this is composite ai which consists of two stages. 20090509 22:58:19-!- thespaceinvader_ is now known as thespaceinvader 20090509 22:58:30< boucman> ok, I understand what's in there 20090509 22:58:42< Crab_> boucman: the stage (in addition to all the stuff that the 'normal' ai has), has the list of engines 20090509 22:59:11< boucman> quick question ist the engine= in [stage] and the engine= in [candidate_action] handled by the same code ? or is it a name collision ? 20090509 22:59:25< Crab_> an engine is the thing that abstracts a particular implementation of config parser. for example 'cpp engine', 'formula ai engine', 'lua engine', 'python engine', etc... 20090509 22:59:30-!- fendrin [n=fabi@wesnoth/developer/fendrin] has quit [Remote closed the connection] 20090509 23:00:01< boucman> Crab_: how can a given [stage] have more than one engine (you mentionned it was a list of engine) 20090509 23:00:16< Crab_> oops, ;) 20090509 23:00:23< Crab_> boucman: the composite AI (in addition to all the stuff that the 'normal' ai has), has the list of engines 20090509 23:00:29< Crab_> i meant that ;) 20090509 23:00:35< boucman> ok, makes more sense :) 20090509 23:01:06< boucman> Crab_: overall, I like that syntax, I understand right away what it means, and it makes sense to me... 20090509 23:01:13< Crab_> basically, an ai gets all the stages, and asks the corresponding engines to parse the stage 20090509 23:01:48< boucman> my only (little) worry is that you used the "engine=" key at two different but very close places (which might be slightly confusing, but that's no big deal) 20090509 23:02:02< Noyga> n8 20090509 23:02:05-!- Noyga [n=lame-z@wesnoth/developer/noyga] has quit ["Quitte"] 20090509 23:02:15< Crab_> and 1st stage is a candidate action evaluator loop which has candidate actions, so, it asks the corresponding engine to parse those 20090509 23:03:37< Crab_> see (hypothetical) example: http://wesnoth.pastebin.com/m640e3426 20090509 23:03:59< Crab_> engine="" means the same thing both in [candidate_action] and in [stage] 20090509 23:04:10< Crab_> it means 'the engine that will parse this part of the config' 20090509 23:04:25< Crab_> (and create a corresponding object pointer from it) 20090509 23:04:41< boucman> Crab_: ok 20090509 23:05:01< Crab_> so, I've written that config, and then I had a problem of passing information around that component hierarchy 20090509 23:05:12< boucman> Crab_: ok, that config syntax looks good, I like it 20090509 23:05:29-!- Polarina [n=polarina@wesnoth/translator/Polarina] has joined #wesnoth-dev 20090509 23:05:40< Crab_> for example, a stage is *a part* of the composite ai, so it needs access to all ai stuff, and it needs access to composite_ai specific stuff 20090509 23:06:07< boucman> what composite_ai stuff does it need ? 20090509 23:06:10< Crab_> a candidate action is both a part of stage, and it is a part of candidate action evaluation loop 20090509 23:06:16< Crab_> get_engine_by_name 20090509 23:06:24< boucman> ok 20090509 23:06:30< Crab_> and (in future), some more interesting stuff i think of. 20090509 23:06:54< Crab_> so, candidate action needs access to both stage and candidate action evaluation loop stuff. 20090509 23:07:38< Crab_> basically, I can say that "candidate action is *in context* of the candidate_action_evaluation_loop (stage), which is in context of composite_ai (ai) which is in context of specific side (by side number) 20090509 23:08:05< Crab_> so, after I said that, I've looked for a way to express this in c++ 20090509 23:08:55< Crab_> one of the solutions is 'solution by composition' - provide references to all underlying contexts during construction or initialization 20090509 23:10:01< boucman> ok 20090509 23:11:55< Crab_> but this has at least two disadvantages - 1) constructor calls look a bit ugly - they need to reference all 'upper' contexts. for example -constructor such as candidate_action(side,composite_ai,candidate_action_evaluation_loop); 2) we need to call specific functions from upper contexts using those helpers, such as "ai_->get_info()", composite_ai_->get_engine_by_name("foo") , etc 20090509 23:14:20< Crab_> another solution is 'solution by inheritance' - make a hierarchy of contexts, such as "candidate action context", "candidate_action_evaluation_loop_context", "composite_ai_context", "readwrite_ai_context", "readonly_ai_context", "side_context", ... and inherit all those helper methods from upper contexts. 20090509 23:14:23< crimson_penguin> Ivanovic: I have two problems: one, I'm gonna be gone most of tomorrow, probably starting early afternoon, and two, we just went over our 20GB/month bandwidth cap, and it costs $2/gb over that 20090509 23:15:10< crimson_penguin> so I guess it'd cost close to $1, which I suppose isn't much of an issue... I wish they'd warned me like they did last time 20090509 23:15:42-!- noy [n=Noy@wesnoth/developer/noy] has joined #wesnoth-dev 20090509 23:16:10< boucman> Crab_: taht's a lot of bookkeeping too... 20090509 23:16:16< Crab_> boucman: this has the advantage of writing " get_engine_by_name("foo") or get_info() ", and simpler creation of child objects. if candidate_action_evaluation_loop wants to create a candidate action, all it needs is to pass this to constructor 20090509 23:17:02< Crab_> boucman: but this has the disadvantage of having to reimplement those methods somehow. since "candidate_action" is not ai ai, it is *a part* of the ai, which lies in the ai context 20090509 23:17:51< Crab_> boucman: one of the solutions I've thought of is to use inheritance but proxy the inherited methods away to proxy classes. 20090509 23:18:06< Crab_> see ftp://ftp.terraninfo.net/wesnoth/class_hier.cpp 20090509 23:18:55-!- Elvish_Pillage2 [n=eli@71-10-228-131.dhcp.oxfr.ma.charter.com] has joined #wesnoth-dev 20090509 23:19:24< Crab_> boucman: it's a small 500-line test of that approach (thanks to YogiHH, I know that MSVC compiles it fine, too) 20090509 23:19:37-!- Polarina1 [n=polarina@85-220-26-48.dsl.dynamic.simnet.is] has joined #wesnoth-dev 20090509 23:19:45< boucman> looking 20090509 23:19:54< Crab_> take your time 20090509 23:22:42< boucman> Crab_: small bug line 204 you seem to miss initializing master_ (no biggy) 20090509 23:24:48-!- Polarina [n=polarina@wesnoth/translator/Polarina] has quit [Read error: 60 (Operation timed out)] 20090509 23:25:04< Crab_> boucman: it's ok, the main point is the design of class hierarchy. I will initialize master_ properly if this solution is chosen ) 20090509 23:25:23< boucman> just making sure I understood correctly :) 20090509 23:26:05< boucman> ok, I think I understand the gist of it 20090509 23:26:29< boucman> it seems pretty complicated, but I'm afraid that's the way it's done in c++ 20090509 23:28:02< Crab_> boucman: well, there may be other approaches. This is just one of them which works and has good enough usability. 20090509 23:28:38< boucman> ok 20090509 23:29:02< Crab_> boucman: if I add a function to one of 'upper' contexts, I need to declare it 3 times (in the context, in the context proxy, and in the implementation) 20090509 23:29:20< Crab_> boucman: but other contexts (and users) are unchanged 20090509 23:29:55< Crab_> (and the compiler will complain if I do not do so) 20090509 23:30:20-!- noy [n=Noy@wesnoth/developer/noy] has quit ["GO, GET TO THE CHOPPAH!!!"] 20090509 23:30:39< Crab_> but there's interesting aspects here, as well. for example, I can change my lower contexts implementation at runtime, during construction of the ai 20090509 23:31:08-!- AndreLuiz [n=deko__@unaffiliated/andreluiz] has joined #wesnoth-dev 20090509 23:31:45< Crab_> but the best thing here is that "users" of those contexts are simple to write. 20090509 23:32:38< Crab_> it has access to all of the stuff from those contexts which are 'upper' in the class hierarchy 20090509 23:33:04< boucman> all that sounds good, where's the trap ? 20090509 23:33:07< boucman> :) 20090509 23:33:37< Crab_> I think there's none ) even MSVS agreed to compile this :) 20090509 23:34:07< boucman> hehe 20090509 23:34:13< boucman> ok, let's go, then :) 20090509 23:34:42< Crab_> boucman: and I've run into another problem, with c++ linker, when implementing the 'singleton registry' pattern 20090509 23:35:03< boucman> Crab_: I don't know that pattern, any pointer/example ? 20090509 23:35:09-!- Elvish_Pillager [n=eli@71-10-228-131.dhcp.oxfr.ma.charter.com] has quit [Read error: 110 (Connection timed out)] 20090509 23:35:30< Crab_> /src/log.cpp 20090509 23:36:18< Crab_> boucman: silene used this pattern to register log domains dynamically 20090509 23:37:09< Crab_> boucman: for example, we write static lg::log_domain log_ai("ai/general"); in a .cpp file, and, when the constructor of the static object is initialized, it adds itself to a list of log domains. 20090509 23:38:09< boucman> ok, I think I get the basic idea, what is the linker problem ? 20090509 23:38:25< Crab_> the catch is: if you add a .cpp file with a new log domain, it will *register itself* ONLY if that cpp file is referenced from other place 20090509 23:39:06-!- BenUrban [n=benurban@c-68-55-19-224.hsd1.md.comcast.net] has joined #wesnoth-dev 20090509 23:39:11< Crab_> this is np with log, since it is only useful if the code is actually used 20090509 23:39:56< Crab_> but I wanted to use the same pattern with ai components (for example, to make ai engines, candidate actions, stages, register themselves) 20090509 23:40:21< Crab_> so I've read http://sources.redhat.com/ml/binutils/2003-02/msg00158.html , and I had to implement hack #4 from there to make it work 20090509 23:40:49< Crab_> this is: "Create a container object that somehow references all the modules you want to force in, then ensure that this contains a symbol that is referenced from elsewhere. " 20090509 23:41:21< boucman> Crab_: just a sec... 20090509 23:41:42< boucman> why doest the C++ file needs to be referenced ? isn't it sufficiant to have it linked in ? 20090509 23:42:14< Crab_> boucman: it will not be picked up by a linker when compiling a static .a 20090509 23:42:14< boucman> I thought all those constructors would be called before main() is called in the order they were declared... 20090509 23:42:24< Crab_> boucman: IF they're linked. 20090509 23:42:53< Crab_> so, basically, my hack amounted to http://wesnoth.pastebin.com/m7cc8cd97 20090509 23:43:12< Crab_> with ai_registry::init() referenced from 'somewhere else' 20090509 23:43:46< boucman> ok 20090509 23:44:49< boucman> it sort of makes the idea of using that whole "singleton registery" pattern a bit useless, since you still have to have a "main rolodex" of all classes in that file 20090509 23:46:22< Crab_> boucman: yes. but that "singleton registry" wasn't a 'self-goal' for me, so I'm satisfied with this approach, since it allows me to parse composite_ai config files and get pointers to needed factories 20090509 23:46:39< boucman> ok 20090509 23:46:45< Crab_> boucman: of course, hack #2 from that message is better, but it is buildsystem-specific 20090509 23:46:55< boucman> and if/when we have time, we can get rid of that trick with linker stuff 20090509 23:49:03< Crab_> yes. MSVC has /OPT:NOREF equivalent of --whole-archive; OR, it can be also achieved by changing the build sequence to make a single oject file out of src/ai 20090509 23:49:09< Crab_> s/oject/object 20090509 23:50:09< Crab_> but, 'registry.cpp' will be ok, too. 20090509 23:50:23< boucman> Crab_: nm, having that "big include" file might be abit ugly, but it's the most robust answer we have for the moment, and should do the trick 20090509 23:50:54< Crab_> well, registry.cpp is also *robust* 20090509 23:51:15-!- Sapient [n=sapien-x@c-71-204-10-166.hsd1.ga.comcast.net] has joined #wesnoth-dev 20090509 23:51:51< Crab_> boucman: and a single .o will hurt ai recompile times 20090509 23:51:55< Sapient> silene / Crab_ : are you aware of the location-based and id-based unit accessors which were intended to replace simple unit_map iterators? 20090509 23:52:15< Sapient> these allow a re-lookup of units as needed 20090509 23:52:33< Sapient> and are thus less fragile than relying on garbage collection units 20090509 23:53:15-!- Gnutoo [n=gnutoo@host109-10-dynamic.54-79-r.retail.telecomitalia.it] has quit [Read error: 113 (No route to host)] 20090509 23:53:22< Sapient> since the logical unit is often a different unit object after modifications 20090509 23:53:54-!- Gnutoo [n=gnutoo@79.54.10.109] has joined #wesnoth-dev 20090509 23:54:13< Sapient> please read unit_map.hpp for a description of the different accessor types 20090509 23:54:26< Crab_> Sapient: yes 20090509 23:55:21< boucman> Crab_: ok, so let's do it... 20090509 23:55:46< Sapient> ok, I would not like to see backwards progress in this area 20090509 23:55:50< Sapient> cya later, have fun. 20090509 23:55:51-!- Sapient [n=sapien-x@wesnoth/developer/sapient] has left #wesnoth-dev [] 20090509 23:57:25< Crab_> boucman: ok, a different question: see http://wesnoth.pastebin.com/m57f9c009 20090509 23:57:40< Crab_> boucman: why call   gui_->draw(); ? 20090509 23:58:19< boucman> I guess it's to regularly refresh the screen 20090509 23:58:31< Crab_> boucman: note get_display().draw(); 20090509 23:59:39< boucman> I don't know... 20090509 23:59:58< Crab_> boucman: who I can ask about it ? --- Log closed Sun May 10 00:00:04 2009