#bitfighter IRC Log

Index Search ←Prev date Next date→

IRC Log for 2012-01-16

Timestamps are in GMT/BST.

00:53:00koda Quit (Quit: I used to be chatting like you. Then I took an arrow in the knee)
02:33:00LordDVG Quit (Remote host closed the connection)
02:36:00sam686http://sam686.maxhushahn.com/bitfighter/counter_meter.png
02:56:00raptor /j hedgewars
03:04:00raptorinteresting sam686
03:05:00sam686want to see the code?
03:06:00raptori would ask watusimoto what he thinks - i don't know if it would be a good addition or not... is there a maximum value stored somewhere for each of those bars?
03:07:00sam686yes, every CounterMenuItem have a min and max
03:10:00raptori'm heading in early for the night...
03:10:00sam686http://sam686.maxhushahn.com/bitfighter/counter_meter.patch
03:11:00raptorlooks simple enough
03:11:00raptori'm thinking that the bars should be aligned
03:12:00raptorif we use them
03:12:00sam686yes, thats one problem, especially when changing values moves the bar sideways
03:13:00sam686as in,going from 99 to 100 suddenly moves the whole bar box..
03:13:00raptoryeah
03:13:00raptorbut also, it would look cleaner if all the bar rendering were aligned on the right
03:14:00raptorbut i'm falling asleep... so good night!
03:14:00sam686there is bars in the editor attributes too..
03:14:00raptor Quit (Remote host closed the connection)
05:33:00sam686 has left
05:52:00karamazovapy Quit (Read error: Connection reset by peer)
10:00:00watusimoto has joined
10:00:00ChanServ sets mode +o watusimoto
10:00:00watusimoto!bug
10:00:00BFLogBotTo enter a bug, please make sure it is reproducible and then go to http://code.google.com/p/bitfighter/issues/list | Also, see current buglist for 016: http://bitfighter.org/wiki/index.php?title=Buglist_016
10:47:00LordDVG has joined
11:47:00CrazyLinuxNerd has joined
12:47:00CrazyLinuxNerd Quit (Quit: Leaving)
15:00:00karamazovapy has joined
15:13:00CrazyLinuxNerd has joined
15:56:00raptor has joined
15:56:00ChanServ sets mode +o raptor
15:56:00raptorgood day!
15:59:00raptornice post karamazovapy...
15:59:00raptoris that your secret?
15:59:00raptorlet me look at JPG file format real quick...
16:01:00Watusimoto_ has joined
16:04:00CrazyLinuxNerdhey guys is the TL tracker down?
16:04:00CrazyLinuxNerdwoops wrong window, sorry
16:21:00watusimotohi
16:21:00raptorhi
16:22:00watusimotolooked at the callgrind graphs... not really sure what the problem is
16:22:00watusimotolooks like half our cpu is being sucked up with puzzle solving, which doesn't seem right
16:23:00watusimotonot half, but a big chunk
16:24:00raptorlook at the lua piece
16:24:00watusimotodid
16:24:00raptoron 016 there are substantially more resources dedicated to the lua calls
16:24:00watusimotomostly to looking for objects
16:24:00watusimotoit seems
16:24:00raptoroh, is that what you mean, then?
16:24:00watusimotoif we wanted to pick a single piece
16:25:00raptorah, doFindItems
16:25:00watusimotoI don't even know if that's changed
16:25:00watusimotoat least not the lua end
16:25:00watusimotomaybe the database slowed down somehow?
16:26:00raptorok, so in 016 doFindItems is a little over 1/3 the resources of everything under the lua_pcall
16:26:00watusimotoI assume you ran the same robots, same level, same everything to make the comparison
16:26:00raptorcorrect
16:27:00watusimotowell, we should probably see why doFindItems takes so much more juice now than before
16:27:00watusimotoat least see if the relevant code changed
16:27:00raptoryeah, its only 1/6 the resources in 015a
16:28:00watusimotooh, I see that the database portion was only 5%
16:28:00raptorbut see all the other stuff? lots of 'thunk'
16:28:00raptorso it's not just doFindItems
16:28:00watusimotolots of dynamic_cast overhead as wel
16:28:00raptoryes..
16:28:00watusimotoI think I added a significant new use of dynamic_cast (DC)
16:29:00watusimotocasting all the objects to determine their type solved a big design headache
16:29:00watusimotomaybe at the cost of a performance hit
16:29:00raptorlooks like that is the major portion of doFindItems
16:29:00watusimotoyes
16:29:00watusimotoso that's something to look at
16:29:00watusimotoactually, that's probably the findItems cost right there
16:30:00raptoryep, i agree
16:30:00watusimotodoesn't look like the event manager adds much overhead, which is good
16:31:00raptor1.8 million calls to dynamic_cast
16:31:00raptorthat is bad
16:32:00watusimotoI wonder if we can dial back the tnlpuzzle thing a little to improve performance
16:32:00watusimotothat uses > 25% of our total cpu
16:32:00watusimotoand accomplishes nothing productive
16:32:00raptorhaha, i noticed that big piece, too...
16:32:00raptorthat was in 015a
16:32:00watusimotohasn't changed
16:33:00raptoris that run on every connection?
16:33:00watusimotothe puzzle is supposed to make it expensive to flood the server with bogus connect requeswts
16:33:00watusimotonot sure
16:33:00watusimotopuzzles grow harder with each subsequent request to connect
16:33:00watusimotomaybe we can make that first puzzle really easy
16:33:00raptoryeah, it should be expensive client-side more, i think...
16:34:00raptoror somehow cache the puzzle solutions and change them every hour
16:34:00watusimotothough it's unclear if it's a big cpu hit right at the beginning, then nothing afterwards
16:34:00watusimotocaching would undo the flood protection
16:34:00raptori bet that's it
16:35:00watusimotomaybe we can try profiling when the network is unplugged to reduce that sort of stuff
16:35:00watusimotoso the dc looks liek the biggest single place to look
16:35:00watusimotobut even subtracting 16 from the lua_pcall still leaves a big number
16:37:00raptoryes - those 'thunks' come from somewhere
16:38:00raptorif you have a patch, i can run another callgrind..
16:38:00raptorwhenever
16:38:00watusimotoalso lua_v has increased
16:38:00watusimotoI wonder if that has to do with luavec?
16:38:00raptori don't know what that is...
16:38:00watusimotoand if my mods there somehow made things worse
16:39:00raptorwant me to get a graph from before those changes?
16:39:00watusimotoyou could, but it's pretty speculative
16:40:00raptorok, i'll wait..
16:40:00watusimotodoing a few quick searches makes me think they're unrelated
16:41:00watusimotounreleated
16:42:00watusimotoonly one change inside luaV related to luavec, but it is the one I was most unsure of
16:43:00watusimotolets start with the dynamic_cast issue, and see if that can be worked around
16:45:00raptorok, i don't know where you made those.. i'll check logs
16:45:00watusimotoin lunar, I think
16:45:00watusimotoI can look tonight
16:47:00raptorso ideally, at 015a levels, Robot::idle should take up about 35% of ServerGame::idle() (in my test with 30 bots on a simple bitmatch level)
16:48:00raptorwhere as now it takes up 99.91% of ServerGame::idle()
16:48:00watusimotoI think the change was to use dynamic_cast to identify certain objects, or maybe to convert arbitrary objects to GameObjects
16:49:00watusimoto99!
16:49:00raptorthree 9s
16:49:00watusimotothat's 27%
16:49:00watusimotonot so bad
16:49:00raptorbad refrence to server uptime...
16:50:00raptor99.9 = three 9s
16:50:00watusimoto(I know :-) well at least I know somehting about what the issue might be
16:50:00watusimotobad reference to my kid's math
16:50:00raptorall nuance is lost over IRC..
16:50:00raptorha!
16:50:00watusimotoindeed
16:53:00raptordid you say turrets should or should not shoot their own core?
16:53:00watusimotoI hemmed and hawed... probably not
17:04:00BFLogBot - Commit 3b6da2999aea | Author: buckyballreaction | Log: Fix turrets shooting at same team's Cores
17:05:00raptori think i see the dynamic_cast problem: robot.cpp:827: GameObject *obj = dynamic_cast<GameObject *>(fillVector[i]);
17:05:00raptorfillVector[i] is a DatabaseObject*
17:06:00raptorso, how to get from DatabaseObject* to GameObject* without a dynamic cast?
17:06:00watusimotommmm.... not sure that's the problem
17:06:00watusimotostatic_cast?
17:06:00raptorwell, that's the one called by LuaRobot::doFindItems
17:06:00watusimotosince we don't check the results of the cast, I suppose that would be called
17:06:00watusimotosorry
17:06:00watusimotothat would be ok
17:06:00raptori tried that: robot.cpp:827:64: error: cannot convert from base ‘Zap::DatabaseObject’ to derived type ‘Zap::GameObject’ via virtual base ‘Zap::BfObject’
17:07:00watusimotoah.
17:07:00watusimotoc-style cast?
17:07:00watusimotonot sure if that would work
17:07:00watusimotocould make databaseObject non-virtual
17:07:00watusimotoby implementing all methods
17:07:00raptorc-style casts is more expensive - it just tries all the casts until it finds one that works
17:07:00raptor(I think)
17:08:00watusimotoimplement with things like {TNLAssert(false, "Not implemented!") }
17:08:00watusimotowe do that elsewhere
17:09:00raptori don't see how it is virtual right now... do you mean just via the methods?
17:09:00raptorI'm looking at DatabaseObject
17:09:00watusimotoyes; either a method is defined with = 0... well that's all I can think of
17:10:00raptorthere are 4 virtual methods in DatabaseObject
17:10:00raptorall the rest (about 20) are non-virtual
17:10:00watusimotovirtual methods are not, in themselves, a problem, if we provide an implementation
17:10:00raptorand i see no Parent of it
17:10:00watusimotocan you instantiate a DatabaseObject?
17:10:00raptoryes
17:11:00watusimotoDatabaseObject *x = new DatabaseObject works?
17:11:00watusimotoif so, I don't understand the problem
17:11:00raptorah, no it doesn't - because it has 'pure' virtual methods with the =0...
17:12:00watusimotothose are what need implementaitons
17:12:00raptori didn't realize that using pure virtual methods did that to a class..
17:12:00watusimotoI don't understand why, but know it does
17:12:00watusimotoI mean why it impacts static_casting
17:15:00raptorok, DatabaseObject *x = new DatabaseObject works now
17:15:00raptorso trying static_cast..
17:15:00raptorrobot.cpp:827:64: error: cannot convert from base ‘Zap::DatabaseObject’ to derived type ‘Zap::GameObject’ via virtual base ‘Zap::BfObject’
17:16:00raptorclean compiling..
17:16:00watusimoto?!?
17:16:00raptorsame error
17:16:00watusimotoneed to study casting!
17:17:00raptorDatabaseObject is not a child of anything... should it be?
17:18:00watusimotodon't think so
17:18:00watusimotoit's just something that fits into a database
17:18:00raptorah, i see it: GameObject -> BfObject -> DatabaseObject
17:18:00watusimotomaybe bfObject is virtual?
17:18:00raptorchild -> parent..
17:19:00raptorno pure virtual method sin BfObject
17:19:00watusimotobecause you can cast to grandparent
17:19:00raptorwell, the problem is taking a DatabaseObject and casting to grandchild of GameObject
17:20:00watusimotoright, well that should work too
17:20:00watusimotootherwise you could cast to bfobject then to gameobject
17:20:00watusimotomaybe you could try that, just to see where it breaks down
17:21:00raptorhuh, that worked...
17:21:00watusimotoreally??
17:21:00watusimotomaybe static_cast can't skip generations...
17:21:00watusimotoif all is working, we should do a search and see if we can now eliminate other dynamic_casts
17:22:00watusimotoand replace them with static or the assert+static cast I like
17:24:00raptorsame problem going from BfObject -> DatabaseObject saying its a virtual base
17:24:00raptorbut i don't see the pure virtual methods..
17:24:00raptorin BfObject..
17:24:00raptormaybe another parent..
17:25:00watusimototry instnatiating one; might give clearer error msg
17:27:00watusimotoheading out
17:27:00raptorby
17:27:00raptorgrumble grumble
17:28:00watusimotowill try to get at least one furhter case close tonight
17:29:00watusimotobye
17:32:00raptorbye
17:33:00watusimoto Quit (Read error: Operation timed out)
18:08:00Watusimoto_hi, for the moment at least
18:08:00raptorhi!
18:08:00raptori found the problem
18:08:00raptorclass GameObject : public virtual BfObject, public NetObject
18:09:00raptorpublic virtual BfObject <-- this disallows static_cast
18:09:00raptorhowever, when removing the 'virtual'.. a whole host of problems arise between other classes saying they have ambiguous methods
18:09:00Watusimoto_interesting... not sure what that virtual means? simply disallows instnatiation?
18:10:00Watusimoto_ambiguous methods?
18:10:00raptorfor example: http://pastie.org/3196440
18:10:00raptori guess allowing BfObject to be instantiated provides multiple copies of methods somehow...
18:22:00Watusimoto_ Quit (Ping timeout: 255 seconds)
19:19:00Watusimoto has joined
19:20:00Watusimotohi again
19:21:00Watusimotowas whisked away for dinner
19:21:00Watusimotoand child strife
19:22:00Watusimotoabout the pastie: is the problem that now there are two parent classes implementing a method with a particular name?
19:34:00Little_Apple has joined
19:34:00Little_Applehi
19:34:00karamazovapywhat's up sauce?
19:34:00Little_Applehigh
19:34:00Little_Applesoup sauce
19:35:00karamazovapyfunny. didn't think you were type.
19:35:00Little_Applewhy am i sauce?
19:35:00karamazovapyapple sauce
19:35:00karamazovapya little apple sauce
19:35:00Little_Applei hate apple sauce.
19:35:00Little_Appleits like eating crushed up people.
19:35:00karamazovapyyou shouldn't say that, you're a nice person
19:36:00Little_Applei also have hiccups
19:36:00Little_Applehuzzah
19:36:00Little_Apple.
19:36:00Little_Applecrumpet trumpets
19:37:00Little_AppleHEY WAIT
19:37:00karamazovapywaiting
19:37:00Little_AppleSOUP IS SOUPY! DID YOU KNOW THAT?? i didnt.
19:37:00karamazovapyexcept when it's Snoopy
19:37:00Little_Appleas you can see i am very bored.
19:38:00karamazovapyOpti still hasn't noticed that the thread he's changing names on is actually the New Computer thread
19:38:00Little_Applelolz
19:38:00CrazyLinuxNerd has left
19:38:00Little_Applemy cats breath smells like cat food
19:38:00Little_AppleDUCK SEASON
19:38:00Little_Appleearwax pops
19:38:00Little_Applei made up the last one
19:39:00Little_AppleITSA MEEE
19:39:00Little_AppleMARIOS
19:40:00Little_AppleITSA LUIGEE
19:41:00Little_Applethey should play bitfighter at mlg.
19:41:00Little_Applerespond.
19:41:00Little_Appleor perish.
19:42:00Little_Applei see you have chosen obliteration.
19:42:00Little_Applei shall shoot you through the monitor
19:42:00Little_Appledangit
19:42:00Little_Applei missed
19:43:00Little_Applehave a cracker
19:43:00Little_Applehave a pink lamp
19:43:00Little_Applehave a lump of golden poo
19:43:00Little_Applehave a have a
19:44:00Little_Appleoh i forgot
19:44:00Little_Apple_K!!!!!!!1 I HAVE A PROBLEM TO REPORT IN BITFIGHTER
19:44:00karamazovapyyes?
19:44:00Little_Applei real problem
19:44:00Little_Applein the f1 menu
19:44:00Little_Applein the server commands
19:45:00Little_Appleit says set the server password is /setlevpass :|
19:45:00Little_Appleits all mixed up
19:46:00Little_Applehelloooo
19:46:00Little_Applemoooooo
19:46:00karamazovapyhey LA
19:46:00Little_Applehi
19:46:00Little_Appledid you see it?
19:46:00karamazovapyhttp://bitfighter.org/forums/viewtopic.php?f=9&t=1130
19:46:00karamazovapyclick on thelink
19:47:00Little_Applewhat about it
19:47:00karamazovapyclick it
19:47:00Little_Applei did
19:47:00karamazovapywhere did it go?
19:47:00Little_Applerabbit season
19:47:00karamazovapyno - the link in the post
19:47:00Little_Apple?
19:47:00Little_Applewhich post?
19:48:00karamazovapythe first post in the thread
19:48:00Little_Appleok
19:48:00raptorWatusimoto: when making BfObject a non-virtual parent, other classes seem to think they have multiple methods of the kind like 'getTeam()'
19:48:00Little_Applewhat the dell?
19:48:00Little_Apple"the best of ralph wiggum"
19:49:00Little_Applewhy.
19:49:00karamazovapyI like to think of Opti as Ralph Wiggum
19:49:00Little_Appleuhh
19:49:00Little_Appleim on my old g3
19:49:00Little_Applei cant exactly watch youtube videos
19:49:00Little_Appleon here...
19:49:00Little_Applebut isnt my animation amazing??
19:49:00Watusimotoraptor: bummer; you were able to eliminate one set of casts though, right?
19:50:00Little_Appleraptor
19:50:00Little_Applei has something
19:50:00Little_Appleto tell you
19:50:00Little_Applei think _k ignored it
19:50:00raptorWatusimoto: no
19:50:00Little_AppleRAPTORRR
19:51:00raptori was ready to start changing the entire object-model, and then i had to do some work... :)
19:51:00Little_Appleraptor
19:51:00Watusimotocareful
19:51:00Little_Applein the help menu, the server commands are mixed up :|
19:51:00raptorLittle_Apple: i'm a bit busy right now, i can answer if it is quick
19:51:00Little_Applek
19:51:00raptorLittle_Apple: help pages have been cleaned up for 016
19:51:00Little_Appleok good :3
19:53:00Little_Applekaramazovapy: so you imagin opti as a balding child with a flute lodged up his nose?
19:56:00Little_Applethat is rather peculiar.
19:56:00Little_AppleHAVE A BISCUIT
19:56:00Little_AppleFISH AND CHIPS?
20:01:00Little_Apple Quit (Ping timeout: 258 seconds)
20:01:00CrazyLinuxNerd has joined
20:10:00raptorWatusimoto: i was joking - i wasn't going to mess with the object model since i know you put in so much time into it... :)
20:10:00Watusimotoif you can improve it, I'd say great!
20:10:00raptorc++ has been upsetting me of late with all of its gotchas...
20:11:00Watusimotoit might just be more than you bargained for
20:11:00CrazyLinuxNerd Quit (Read error: Connection timed out)
20:12:00CrazyLinuxNerd has joined
20:14:00Watusimotodrawing outlines for items from levelgen script is far more complex than I had thought
20:16:00raptorha!
20:16:00raptoreverything about levelgen was more complex than i thought
20:20:00raptorkaramazovapy: i think you were right - not many people are technical enough to know what to do with my SVG converter utility
20:21:00karamazovapyyeah
20:22:00karamazovapyeven the ones who say they want to learn things aren't committed enough to do anything on their own
20:22:00raptorsadly, yes...
20:23:00karamazovapyI'm not sure we'll make it through a third "coding club"
20:23:00raptoractually - footloose asked me for help on her homework
20:23:00raptorwhich i took as a positive sign..
20:23:00karamazovapyshe gets it pretty well, and I think blackbird does too, actually
20:24:00karamazovapylittle_apple has a shorter attention span
20:24:00raptorlittle_apple reminds of 'dug' from the move 'Up'
20:24:00raptorhaha
20:24:00karamazovapyyeah
20:26:00karamazovapyeither way, we're coming to a sink-or-swim point with coding
20:27:00raptoryes, i think so - the logic required ahead of them may just be at the point of their developed minds
20:28:00karamazovapyit'll be a moderate success if they can figure out how to copy and paste existing code to make their own levelgens
20:33:00sam686 has joined
20:33:00ChanServ sets mode +v sam686
20:34:00LordDVG Quit (Ping timeout: 276 seconds)
20:36:00raptorargh, OK, since BfObject is no longer a virtual parent, all sorts of evil things happen
20:36:00WatusimotoI'm kind of amazed you're even making the effort, to be honest
20:36:00Watusimoto@r: :-)
20:36:00WatusimotoI hear ya
20:36:00raptori do not which to go down that route...
20:36:00WatusimotoI'm not even sure that;s the offending cast
20:37:00raptorwell, it's the one called on every search object
20:37:00raptorin doFindItems
20:38:00Watusimotowell, I can;t find the one I think it is, so maybe I;m wrong
20:39:00Watusimotowe need a way to avoid the cast altogether
20:39:00Watusimototesting wall insertion
20:40:00Watusimotothat didn;t work so well...
20:41:00raptoryes - i've started that issue 4 times now...
20:41:00Watusimotowell, I know why you were conufsed
20:42:00Watusimotothere's at least 3 differet dbs that hold bits and parts of the walls
20:42:00Watusimotowe were passing just one of them around, the other two were always referred to directly as members
20:42:00Watusimotonow we need to pass all three around
20:42:00raptorah
20:42:00raptorwonderful
20:42:00Watusimotoindeed
20:43:00Watusimotobut it may offer a chance to combine the three somehow
20:43:00Watusimotoand thus simplify things a little
20:43:00Watusimotonot sure yet
20:43:00sam686the problem with static casting is this: "class GameObject : public virtual BfObject, public NetObject" (the virtual part) That prevents the use of "(GameObject *)some_bf_object"
20:43:00Watusimotoall I know is that something is not working, and in a big way
20:44:00raptorsam686: the issue we're having is how to get rid of the dynamic_cast on robot:cpp:827
20:44:00raptorso see if that reduces the robot overhead
20:45:00sam686GameObject have virtual BfObject, and BfObject have DatabaseObject
20:46:00raptorand yes, because of the BfObject model being a virtual parent to so many classes, making it not virtual means many objects have several of the same grandparent
20:46:00raptorreminds me of the song: "i'm my own grandpa..."
20:47:00Watusimotomaybe we need a second WallSegmentManager
20:48:00Watusimotoone for regular items, one for items brought in with ctrl-R
20:48:00raptormakes sense to me
20:48:00WatusimotoI think it may be easier than what I'm trying to do now
20:49:00raptorsince we have a separate DB for other levelgen items, i think that's a good way to go
20:50:00WatusimotoWSM only has 6 data members
20:50:00Watusimoto3 of which I'm already dealing with
20:50:00Watusimotowill have to revert a lot of code
20:52:00sam686there could be 1 easy option for "dynamic_cast on robot:cpp:827", have each DatabaseObject store the pointer of it's own GameObject...
20:53:00raptorsam686: that might work... you mean upon insertion into the DB?
20:53:00Watusimotothat seems wholly wrong to me
20:53:00raptoryes, me too - but i am not above trying :]
20:54:00sam686yes, maybe even in a constructor of GameObject setting DatabaseObject stuff
20:54:00Watusimotoit pretty much breaks the object model
20:54:00karamazovapyare all the bugs on the current list must-do prior to 016 release?
20:54:00Watusimotomostly
20:54:00Watusimotothey are mostly editor related, and those are pretty serious
20:55:00Watusimotothe list is getting pretty short, though
20:55:00Watusimotowe're being good about feature creep
20:55:00karamazovapyyeah, I just have no sense of how difficult the fixes are
20:55:00karamazovapyor how that might translate to release date
20:55:00Watusimotothere;s a reason why we saved them for last :-)
20:55:00raptorhehe
20:56:00Watusimotomostly because we've tried and failed and given up in frustration
20:56:00karamazovapyspeaking of release dates getting pushed back, anybody want some top-secret info?
20:56:00raptor4 times on some!
20:56:00karamazovapysee this highly cool art museum?
20:56:00karamazovapyhttp://broadmuseum.msu.edu/
20:56:00karamazovapynot a right angle in the building, the whole thing will be steel and glass
20:57:00raptorwow
20:57:00karamazovapywell the only place they could get to do the glass is a company in germany
20:57:00karamazovapyso the cutting and everything takes a couple weeks, then there's another couple weeks because the glass has to travel by boat to the states
20:57:00karamazovapyit's supposed to open in april
20:58:00karamazovapy...but surprise! about 40% of the glass panes don't fit
20:58:00raptorha!
20:58:00raptorsounds like a dream come true
20:58:00karamazovapythis isn't public information yet, but they have to push the grand opening back at least a month
20:58:00karamazovapyand there are works of art coming in from around the world
21:00:00raptoryikes
21:00:00karamazovapyyep. the people in charge are shitting themselves with rage.
21:01:00karamazovapythere's a conference call this afternoon with the germans to see if they have any explanation
21:01:00raptorall the germans i've worked with take pride in being very, very exact
21:02:00karamazovapythey've checked the contractors' work several times, and they're pretty sure it's the glass
21:02:00raptorwow
21:02:00karamazovapyit's very close, but a couple millimeters make the difference
21:03:00karamazovapyanyway - non-public information - don't alert the press
21:03:00raptorok
21:04:00raptoragreed - but i can't stop them from scanning the log files!
21:04:00karamazovapyeh. shouldn't be a problem.
21:04:00karamazovapydo the IRC logs get crawled by search engines?
21:07:00raptornope, i disable it in robots.txt
21:07:00raptoractually let me check the new server...
21:08:00Watusimotoif they'd just build a normal building, they wouldn;t have problems like these
21:08:00Watusimotowow -- no snow. must have been photographed in august
21:08:00karamazovapyyeah, that's what you get for hiring an internationally acclaimed architect
21:09:00karamazovapythose are renders
21:09:00raptorok, it wasn't disallowed in robots.txt, but is now
21:09:00karamazovapylol
21:09:00Watusimotoarchitects are idiots
21:10:00Watusimotoat lest that's what they taught us in engineering school
21:10:00karamazovapynext up: Architects vs. Engineers
21:11:00LordDVG has joined
21:18:00raptorWatusimoto: look what i did: http://199.192.229.168/~raptor/zap_doxygen/
21:18:00raptorof particular note: http://199.192.229.168/~raptor/zap_doxygen/class_zap_1_1_bf_object.html
21:18:00Watusimotonice; I've built this before for my own use
21:19:00raptornotice things like SimpleLine is a descendent three times
21:19:00raptorthat only works because BfObject is virtual parent
21:19:00Watusimotothis looks weirdd
21:21:00raptorhaha: http://199.192.229.168/~raptor/zap_doxygen/class_zap_1_1_simple_line.html
21:21:00raptornow that's awesome
21:21:00Watusimotolike why are all the geometries children of bfObject?
21:21:00Watusimotogood lord
21:24:00raptori like this one, too: http://199.192.229.168/~raptor/zap_doxygen/class_zap_1_1_ship.html
21:25:00raptoractually, no.. this is my favorite, because it is very complete: http://199.192.229.168/~raptor/zap_doxygen/class_zap_1_1_item.html
21:25:00Watusimototrying a compile with simpleline not inheriting from bfobject to see what breaks
21:25:00raptorok
21:26:00Watusimotoa lot, apparently
21:26:00raptorwow, everything breaks!
21:27:00raptordoxygen is great! i don't know why I haven't used this before...
21:28:00WatusimotoI'm not sure I saw this view before
21:28:00Watusimotoit is good
21:32:00Watusimotomaybe we should combine editorObject and gameObject
21:32:00Watusimotothat woudl simplify things
21:32:00Watusimotocould just throw all the editorObject things onto gameobject
21:32:00Watusimotomaybe
21:34:00Watusimotowhat a mess
21:39:00raptorwow, Geometry classes are all over the place
21:39:00karamazovapyI read that as an academic statement, as opposed to a coding one
21:39:00raptorhaha
21:41:00Watusimotoyeah
21:41:00Watusimotooriginally the geometries were separate objects that were soemthing an object had, and to which all geometric work was delegated
21:42:00koda has joined
21:42:00Watusimotosomewhere along the line, it became sopemthing that was inherited
21:42:00Watusimotonot sure why we did that, but it still doesn;t seem right
21:43:00raptorwe have BfObject inheriting Geometry... and a host of other classes inheriting bfobject to get the geometry...
21:44:00raptorok, i've dug myself into a deep hole, i need to restart this...
21:45:00sam686one possible solution to static cast, or "(GameObject *) some_database_object)" is to get rid of virtual class (BfObject)
21:47:00raptorBfObject was designed in response to this, right? http://stackoverflow.com/questions/6523991/proper-way-to-design-object-hieararchy
21:54:00Watusimotono
21:54:00raptorwell, i mean a similar situation...
21:54:00raptornot specifically that, no
21:54:00WatusimotoI think bfobject preceded the question
21:55:00sam686looks like: class PointGeometry doesn't need "virtual public BfObject"
21:55:00Watusimotodid you try compiling without it?
21:56:00raptorsam686: yes - i was trying to remove any BfObject parent for any of the Geometry classes, but i ran into compile errors
21:58:00raptori'm an id10t
21:59:00raptorlooks like that dynamic cast is in 015a, too (the one in robot.cpp i keep trying to get rid of...)
21:59:00raptorso that can't be the problem...
21:59:00raptorbut at least we now know there are crazy hierarch problems..
22:06:00Watusimotodid a global search for dynamic_cast, none stood out as being the one I'm thinking of
22:07:00raptoryeah, it's something else i think - doFindItems migh tjust be called more often
22:08:00raptorin 015a, idle calls vs lua_pcall: 1873 vs 2150
22:09:00raptorin 016: 424 vs 13142
22:09:00raptor016 normalized to 015a: 1873 vs 58054
22:10:00raptorthat's 27x the number of lua_pcall s in 016
22:12:00raptorthat makes me think i went on a wild goose chase to dynamic_cast...
22:15:00WatusimotoI killed a couple of dynamic_casts... not likely to have much impact though
22:16:00sam686i found a windows CPU profiler with a weard name, http://www.codersnotes.com/sleepy
22:16:00raptormake me think that EventManager is the overhead...
22:19:00WatusimotoI don't see any evidence for that
22:22:00sam686maybe your /maxfps 1000 on 016 is the overhead?
22:22:00sam686or debug compile mode might also be some overhead..
22:22:00raptori compiled both with debug options
22:22:00raptormaxfps was defaulted to 100
22:22:00raptoron both
22:22:00raptorused same level, same number of bots
22:23:00sam686maybe the conversion from typemask to typenumber might be slow when looking for more then one type...
22:31:00raptormaybe i need to do an hg bisect...
22:36:00raptoryes, sorry, not EventManager... i mean something used in it
22:39:00sam686the changes on 016 is robot will idle through event manager, it looks like
22:40:00sam686Robot::idle have "Robot::getEventManager().fireEvent(EventManager::TickEvent, deltaT);"
22:41:00Watusimotocorrect
22:42:00Watusimotokilled a bunch more dynamic_casts
22:42:00Watusimotonone likely to be our problem
22:44:00sam686i think i found the problem, when testing timer bot, with 2 bots, it is calling onTick twice as much for each bots
22:44:00sam686for 10 bots, it is calling ontick 10 times as much for each bots, a total of 100 onTick
22:45:00sam686that makes timer bot print twice as fast
22:45:00sam686or 10 times faster..
22:46:00sam686doesn't this " Robot::getEventManager().fireEvent(EventManager::TickEvent, deltaT);" call onTick on ALL ROBOTS?
22:47:00raptori don't know..
22:48:00raptori have to go - be back in 2 hours or so...
22:49:00sam686"Robot::getEventManager().fireEvent(EventManager::TickEvent, deltaT);" appears to call On-tick on ALL ROBOTs
22:51:00raptorwow, so we have onTick^2 always called?
22:51:00sam686yes, that makes adding 10 bots 10 times slower...
22:52:00sam686or adding 20 bots 400 times slower, i meant
22:52:00raptorso my 60 bots is pretty gnarly
22:53:00sam686have to go raptor?
22:54:00raptoryes, i'll be back later
22:54:00sam686later..
22:54:00raptor Quit (Remote host closed the connection)
22:59:00LordDVG Quit (Remote host closed the connection)
23:04:00sam686Watusimoto ? your FireEvent TickEvent is causing problems with multiple robots, where robot onTick being called more then once per game tick...
23:05:00Watusimotoit is?!?
23:06:00sam686running Robot::getEventManager().fireEvent(EventManager::TickEvent, deltaT); once causes all robots to run onTick
23:07:00sam686with multiple robots, each runs that same fire event onTick, causing robots to run onTick multiple times
23:11:00Watusimotommmm.... so with 10 robots, we're running ontick 100 times
23:11:00WatusimotoI think you found the problem!
23:11:00sam686yes, that slows down the game by a whole lot...
23:12:00sam686possible solution is moving the fireEvent(TickEvent...) out of Robot::Idle and into ServerGame::Idle, but what about "Clear out current move."?
23:27:00WatusimotoI think your proposed move makes sense, not sure what you mean by clear out current move
23:27:00Watusimotooh, a comment in robot.cpp
23:28:00Watusimotofire tick event after all robots have idled? that doesn't seem right
23:29:00Watusimotocreate a robot::clearMove method, run that on all bots before firing onTick, then idle bots?
23:31:00Watusimotowhere is robot's idle called?
23:38:00sam686robot::idle is called from ServerGame::idle, like all other objects call idle
23:39:00Watusimotojust figured that out
23:39:00sam686or maybe, simply clearing out robot's move after parent::idle
23:39:00sam686will work
23:39:00WatusimotoI'm not sure exactly when the bot's onTick gets called in relation to when the event is fired
23:40:00Watusimotobut the sequence needs to be clearMove, execute onTick
23:40:00sam686when the event if fired, it immediately calls the LUA functions (fire idle event, it imediately caled onTick)
23:41:00sam686sequence is clear move, execute, then do parent::idle (parent = Ship)
23:41:00sam686simply moving he clear move to the end may work, i guess
23:41:00Watusimotoactually, I think you can safely do the the tick event after bots have idled
23:42:00Watusimotoso move it to the serverGame::idle after other objects have idled
23:42:00sam686yes
23:42:00sam686are you fixing that?
23:42:00Watusimotoyou can; I'm so sleepy I might do something stupidcurrently in bot::idle, only thing that happens
23:42:00sam686ok i can fix..
23:43:00Watusimoto...that happens is the parent::idle
23:43:00Watusimotoand while I haven't checked, I can't imagine theres anything in there that would have bearing... so the bots arlready do onTick after they've idled
23:44:00sam686i think the only thing robot onTick do it set up proper move after some calclating of currect state...
23:44:00Watusimotoactually... crap... this is compex
23:45:00Watusimotothe parent::idle does some processing of the move
23:45:00sam686though, robot can chat, but Eliza doesn't use onTick to chat...
23:45:00Watusimotono; it doesn';t care about tick events
23:45:00Watusimotoit subscribes to chat message events
23:45:00sam686yes
23:46:00sam686Ship::idle does move processing like module and firing, and aiming and moving (Robot calls Ship::idle)
23:47:00Watusimotoyes
23:47:00Watusimotothat's probably important
23:47:00Watusimotoso maybe my first suggestion? in servergame clear all bot moves, fire onTick, run bot::idle
23:59:00Watusimotook, got to go to bed

Index Search ←Prev date Next date→

These logs were automatically created by BFLogBot on irc.freenode.net.