#bitfighter IRC Log

Index Search ←Prev date Next date→

IRC Log for 2011-08-06

Timestamps are in GMT/BST.

00:30:00raptor has joined
00:30:00ChanServ sets mode +o raptor
01:15:00Flynnn Quit (Quit: This computer has gone to sleep)
01:25:00koda has joined
02:07:00watusimoto has joined
02:11:00sam686looking at http://bitfighter.org/forums/viewtopic.php?t=820 i guess either what is suppose to be a bitfighter party now isn't started yet, or there aren't enough players
03:19:00koda Quit (Ping timeout: 252 seconds)
03:21:00Flynnn has joined
03:37:00koda has joined
03:42:00koda Quit (Quit: k thx bai)
03:51:00raptorok back
03:51:00raptorcontest level party over?
03:51:00raptor:(
03:52:00karamazovapyqui came by and played for a little bit, but sky left...we never really got much momentum going
03:52:00karamazovapyalso, it "started" nearly two hours ago
03:53:00raptorhmmm - maybe people were out camping...
03:53:00karamazovapyI didn't send out an e-mail or anything
03:53:00raptordo you do that for BBB?
03:53:00karamazovapyyep
04:15:00watusimoto Quit (Ping timeout: 258 seconds)
04:36:00raptorkaramazovapy: did you ever test that custom built dedicated server binary?
04:39:00raptorwe can vote as much as we want on the community choice??
05:09:00raptor Quit (Remote host closed the connection)
06:08:00watusimoto has joined
06:43:00Flynnn Quit (Quit: Leaving)
08:13:00watusimoto Quit (Ping timeout: 264 seconds)
08:36:00Pointblank Quit (Ping timeout: 258 seconds)
10:46:00LordDVG has joined
10:46:00LordDVG Quit (Changing host)
10:46:00LordDVG has joined
11:17:00LordDVG Quit (Read error: Connection reset by peer)
11:17:00LordDVG has joined
13:33:00raptor has joined
13:33:00ChanServ sets mode +o raptor
13:33:00raptorgood morning!
13:47:00raptor Quit (Remote host closed the connection)
14:03:00LordDVG Quit (Remote host closed the connection)
14:07:00raptor has joined
14:07:00ChanServ sets mode +o raptor
14:22:00raptorHi sam686, are you still awake?
14:22:00sam686hi
14:23:00raptorare you working on migrating away from the object mask ?
14:24:00raptorbecause if not, I can start that
14:24:00sam686I haven't started it from going away from object mask...
14:24:00sam686i was thinking of an alternative goal flashing in zone control..
14:25:00raptorinteresting, what would it do?
14:27:00sam686how does this look for zone control flashing? http://www.youtube.com/watch?v=hOC8GJohxcE
14:28:00raptorlooks good - i have to constrast with what it does now..
14:29:00raptorah i see now, it's smoother
14:29:00raptorsame amount of flashing, just smoother transition between the 'colors'
14:29:00sam686is my new flashing look better?
14:30:00raptoris it brighter?
14:30:00raptoron the bright part?
14:31:00sam686yes, it is brighter on the bright part.
14:31:00raptori like transition, but i think it may be a bit too bright
14:31:00raptoror at least too much contrast
14:32:00raptor(but I am not a very good critic in matters like these..)
14:33:00sam686maybe the outline should go brighter and not the fill..
14:33:00raptoryeah, try that
14:34:00raptorfor me it is very high contrast with so much bright against the dark space background
14:40:00raptorfun fact: enum cannot be forward declared
14:44:00sam686does this look better?
14:44:00sam686http://www.youtube.com/watch?v=cE6I1eiDw_U
14:45:00BFLogBot - Commit 1e5af5a655db | Author: buckyballreaction | Log: Fix compiling - enum cannot be forward declared
14:45:00raptormuch better, i think
15:05:00BFLogBot - Commit a9c03a33f61c | Author: sam8641 | Log: Changed Goal flash in zone control with option in INI to go back to old way.
15:21:00raptorsam686: can you do multiple logical operations in a preprocessor definition? like:
15:21:00raptor#define ItemTypeNumber (SoccerBallItemTypeNumber || MineTypeNumber) || (SpyBugTypeNumber)
15:21:00sam686yes
15:22:00raptorok
15:22:00raptorhmmm
15:22:00raptorohhh, i see now, i need to add a backslash to escape newlines...
15:22:00sam686though it should be like (a || b || c) instead of (a || b) || (c)
15:22:00raptoryes
15:22:00raptorok
15:22:00raptorthanks
15:24:00sam686otherwise if #define bit1(a,b,c) (a || b) || (c) with bit1(a,b,c) * 4 will turn into (a || b) || (c)*4 as in multiplying only c and not the whole bit1.. thats an example
15:24:00raptorah ok
15:28:00sam686keep in mind (SoccerBallItemTypeNumber || MineTypeNumber) will not work with typeNumbers
15:28:00raptoryes
15:28:00raptormine was a horrible example, i was just curious about syntax
15:35:00BFLogBot - Commit e1316be61a1c | Author: sam8641 | Log: Fix crash while in game, going to options; get rid of ClientGame::enterMode and move EntryModes enum to UIGame.h
16:01:00raptorok, so i'd have to do something like this:
16:01:00raptor#define isEngineeredType(x) (x == TurretTypeNumber || x == ForceFieldProjectorTypeNumber)
16:02:00sam686the main problem is how are we going to search the database for multiple objects at the same time?
16:02:00sam686pass by Vector in a list of type numbers?
16:03:00raptoryeah...
16:03:00raptorthat's the power of using a mask and bitwise operations...
16:04:00sam686eventually there could be 200 types, bit masks can get too big..
16:05:00raptorhmmm
16:05:00raptornot sure what to do
16:05:00raptorwe need to expand types
16:10:00raptorwe could do some crazy thing like multiplying prime numbers
16:12:00raptorthe 256th prime number is 1619
16:13:00sam686that can be hard to work with..
16:13:00watusimoto has joined
16:13:00raptori guess that would generate enourmous results...
16:13:00raptoryeah scrap that idea
16:13:00raptorhi watusimoto
16:14:00raptorsam686 and I are discussing replacing the object mask with type numbers altogether
16:14:00raptorI have started some work on it, but sam686 mentioned the problem with searching the database for multiple objects simultaneously
16:18:00sam686currently, i have put the search that can allow serching for objects with any bit mask or one type number or both
16:18:00sam686for gridDB
16:18:00raptorwhere is that found?
16:18:00sam686GridDatabase::findObjects
16:19:00sam686shoyld see typeNumber at the end of arguments list..
16:19:00raptorbut that only does one object instead of any, correct?
16:20:00sam686void findObjects(... , U8 typeNumber = U8_MAX); so it is optional...
16:20:00sam686it only finds one typenumber object in addition to bit mask
16:20:00raptoryes, exactly
16:20:00raptormask does all simultaneously
16:22:00raptoryay for triple-nested loops...
16:25:00sam686i found a small problem with in-game menus. http://96.2.123.136/bitfighter/render_prev_ui_problem.png
16:26:00raptorwhoa
16:26:00raptorhow did you mange that?
16:27:00sam686i was fixing a reash due to stack overflow problem (it was endlessly calling eachother functions), and end up going like that.
16:27:00sam686crash, not reash..
16:27:00Flynnn has joined
16:27:00raptorinteresting site: http://en.wikibooks.org/wiki/Optimizing_C%2B%2B
16:31:00raptorwe may want to consider re-engineering the gridDB
16:32:00raptoris GridDatabase::mChunker ultimately what the DB is?
16:34:00sam686is uses mChunker only because of there will be thousands of BucketEntry, mChunker can do the allocation of tiny structs better then individual alloc / deallok
16:36:00sam686mostly GridDatabase::mBuckets is where it stores all the first BucketEntry for each small area..
16:36:00raptorok
16:36:00raptori'm not sure how we can avoid a big hit in performance when not using a mask...
16:37:00raptori am reading here: http://en.wikipedia.org/wiki/Collision_detection#Optimization
16:53:00sam686will it be possible to have a compare function when searching for database? like it is done in Vector::sort(compare_function)
16:53:00raptorwould we have to do a compare on BucketEntry?
16:54:00sam686only need to compare where it is normally comparing typeMasks..
16:55:00sam686instead of theObject->getObjectTypeMask() & typeMask, it could be if(compareThisObjectInCustomFunction(theObject))
16:56:00raptoryes exactly
16:56:00raptorbut it would require another loop
16:56:00raptorthat is 4 nested for-loops in one case
16:56:00sam686i don't think it require another loop..
16:57:00raptori'm thinking of searching for multiple object types
16:57:00raptoractually, maybe it's just an extended logical if-statement
16:58:00sam686just look at GameType::getSortedPlayerScores, it is using a custom function while sorting..
16:59:00sam686that could be done in gridDB for finding multiple objects, instead of typeMasks or typeNumbers..
16:59:00raptorhmm...
17:41:00watusimotodown near the end of s2rCommandComplete()
17:42:00watusimotois a line that is something like
17:42:00watusimotomClientGame->setOutputFilename("");
17:42:00watusimotothat's the refactored version, but it's still recognizable
17:42:00watusimotomy question is what is the point of setting it to ""?
17:44:00watusimotothis in gameConnection.cpp
17:44:00raptori have no idea
17:51:00LordDVG has joined
17:51:00LordDVG Quit (Changing host)
17:51:00LordDVG has joined
17:51:00raptorthis is a great resource!: http://www-graphics.stanford.edu/~seander/bithacks.html
17:51:00watusimototoo clever by half!
17:55:00raptori bet most of those twiddles are defined in c++ stl as some math function..
17:56:00raptorneed a good way to combine multiple object types without using a mask
17:56:00raptorjust an array, maybe?
17:56:00Flynnn Quit (Quit: This computer has gone to sleep)
18:01:00Flynnn has joined
18:04:00watusimotowhat do you mean? like EngineerType being a composite of turret and ff types?
18:04:00raptoryes
18:05:00watusimotobool isEngineer() { return type == turret || type == ff; }
18:05:00raptordid that
18:05:00raptorbut
18:05:00watusimotobut?
18:05:00raptorwe need to be able to pass in multiple objects into gridDB searching
18:06:00watusimotoah
18:06:00watusimotoyes
18:06:00watusimotook
18:06:00watusimotopass in a function pointer?
18:07:00watusimotobool isEngineer(type) { return type == turret || type == ff; }
18:07:00raptorhow about two arbitrary objects?
18:07:00watusimotothen use that to evaluate whether object matches
18:08:00watusimotoor three?
18:08:00raptoryep
18:08:00raptoror 15
18:08:00watusimotodo we need 2 arbitrary types?
18:08:00watusimotowe tend to need them in certain predefined groups
18:09:00raptoryeah, that's what i'm thinking
18:09:00Flynnn Quit (Quit: This computer has gone to sleep)
18:09:00watusimotohow often do we do this, anyway?
18:09:00raptordo write now, i have start migrating the masks... I altered gameObject.h like this: http://pastie.org/2330987
18:10:00raptordo write now = so right now
18:11:00raptori don't know how often - not too often, i imagine
18:11:00watusimotook
18:11:00watusimotolooks good so far
18:12:00raptorare the defines a bad idea?
18:12:00watusimotomaybe
18:12:00watusimotomaybe not
18:12:00watusimotolet's look at how we would use them
18:12:00raptorproblem is right now, the findObjects methods use a mask
18:12:00Flynnn has joined
18:13:00raptorin cases were multiple objects are wanted, we'd have to pass in what? an array?
18:13:00watusimotoSo, for example
18:13:00watusimotofindObjects(MotionTriggerTypes | MineType, fillVector, queryRect);
18:14:00watusimotothat's our problem case
18:14:00raptoryep
18:14:00raptorinstead maybe: findObjects(U8 *types, fillVector, queryRect);
18:15:00watusimotonot sure why MineType is used in this context...
18:15:00watusimotobut that's an aside
18:15:00raptorhaha
18:15:00raptorwe could have multiple signatures of course
18:15:00watusimotofindObjects(isMotionTriggerType, fillVector, queryRect)
18:15:00watusimotocombined with
18:16:00watusimotobool isMotionTriggerType(type) { return <<test for type >> }
18:16:00watusimotothat seems clean and readable
18:16:00watusimotoalternatives
18:17:00watusimotofindObjects(MotionTriggerTypes, fillvect, query);
18:17:00watusimotowhere MotionTriggerTypes is
18:17:00watusimotoMotionTriggerTypes[] = { type 1, type2, type3}
18:17:00raptorso you mean: findObjects(*testMethod, fillVector, queryRect)
18:17:00watusimotothat is also pretty readable, but lots of looping
18:18:00watusimotoah, maybe that's what I mean... not sure
18:18:00watusimotoyes
18:18:00watusimotoactually, yes, I think it is
18:18:00raptor:)
18:18:00watusimotoor
18:18:00sam686findObjects(*testMethod, ... how will findObjects know what size the array is?
18:18:00watusimotofindMotionTriggerObjects(fillVect, queryRect)
18:19:00raptorbut then we have to code more...
18:19:00watusimoto@S the function will have the types hardcoded in
18:20:00raptori like the *testMethod alternative signature
18:23:00watusimotothat's my current pick
18:24:00watusimotowe could have a sig that takes a function, and a sig that takes a single type
18:25:00watusimotolooking at all the calls, about half are for single types, half are for composites
18:26:00watusimotohave to come up with some creative names: (BarrierType | TurretType | ForceFieldProjectorType | ForceFieldType | ShipType | RobotType | TestItemType | ResourceItemType)
18:28:00raptorlike what?
18:28:00sam686might need to come up with a way to do CommandMapVisType, expecially in projectile.cpp line 140
18:29:00raptorShipType = TriangularSpaceFaringVesselType?
18:29:00sam686mObjectTypeMask |= CommandMapVisType; // Bullets visible on commander's map if you have sensor
18:30:00raptorthat's a neat idea
18:30:00watusimotointeresting
18:31:00watusimotomaybe two functions?
18:31:00watusimotofindObjects(cmdMapVis,...)
18:31:00watusimotoand findObjects(cmdMapVisWithSensor,...)
18:32:00watusimoto?
18:34:00raptorso i guess our mask before acted as both object identifiers and flags
18:35:00sam686bullets and bursts is the only thing that depends on if it is visible on commander's map..
18:36:00sam686when having sensor
18:36:00raptormaybe we'll have still have separate flags as booleans, and account for them in the findObjects signature...
18:36:00sam686i will be back in around 2 hours.
18:36:00watusimotothe alternative is to stick with flags, but I think that's less flexible in the long run
18:36:00watusimotolater!
18:36:00raptorby
18:36:00raptori guess he needs sleep some time...
18:37:00raptor:)
18:37:00sam686no, going out somewhere..
18:37:00raptorah ok, then you don't need sleep sometime
18:37:00sam686going out for probably swimming in a lake, will be back in 2 hours..
18:42:00karamazovapyhttp://www.1designperday.com/2009/05/13/15-cool-beds-i-want-to-sleep-on/
18:44:00raptorsome of those look precarious
18:46:00watusimotohave fun!
18:48:00raptorso what to do about the flags?
18:49:00raptorCommandMapVisType and DeletedType
18:52:00raptormaybe we could stick with a flag mask? or create some sort of objectState mask
19:12:00watusimotohmmm
19:12:00watusimotoI think cmdmapvistype will work by creating two methods, one for sensor, one for no sensor
19:13:00raptoris DeletedType a valid object type?
19:13:00watusimotodeletedType is not used with findObjects
19:13:00watusimotoso a simple flag and test should suffice
19:14:00raptorok
19:14:00raptorit is only used it 4 places anyways...
19:14:00watusimotoif you do a search for everwhere it's used, it's really treated like a flag
19:14:00watusimotoit probably shouldn't even be on the typemask at all
19:16:00raptorexactly my thoughts
19:16:00raptorok
19:16:00BFLogBot - Commit f1139ac976a9 | Author: watusim...@bitfighter.org | Log: Refactor provide more direct access to things, fewer globals, less jumping around, less indirection
19:16:00BFLogBot - Commit e196d82efc7a | Author: watusim...@bitfighter.org | Log: Merge
19:23:00watusimotook, Zemmer is taking over the machine to play age of mythology
19:23:00watusimotolater!
19:23:00raptorbye
19:29:00raptoryay, merged is good
19:30:00LordDVG has left
19:30:00Flynnn Quit (Quit: This computer has gone to sleep)
19:37:00Flynnn has joined
20:29:00watusimoto Quit (Ping timeout: 260 seconds)
20:40:00Flynnn Quit (Quit: This computer has gone to sleep)
21:26:00Flynnn has joined
22:21:00raptorwhat is Item?
22:21:00raptorItem class
22:21:00raptorwhat is it used for? and why does it only have the objectmask of MoveableType | CommandMapVisType ?
22:21:00sam686Item class is not used directly, but SoccerBallItem, RepairItem, Asteroid, FlagItem all use Item class
22:23:00raptorwelcome back!
22:23:00raptorwas swimming fun?
22:23:00sam686yes..
22:23:00raptori miss swimming in lakes - don't really have those as much out here in Utah
22:23:00raptorhave to travel a ways to get there..
22:34:00raptorHave you ever played with the WormType?
22:34:00sam686haven't played with WormType much..
22:35:00raptorare these all the moveable types?: ShipTypeNumber RobotTypeNumber SpyBugTypeNumberMineTypeNumber BulletTypeNumber
22:35:00raptoroh wait, soccer repair asteroid flag...
22:35:00sam686All items are movable type
22:36:00sam686there is class Item : public MoveObject
22:36:00raptorbecause MoveableTypeNumber can't be used - it has to be a flag, or a grouping of other game objects
22:39:00raptorargh, ok... i have to sort this out somehow
22:41:00sam686in Projectile.cpp there is findObjectLOS(MoveableType | BarrierType | EngineeredType | ForceFieldType ...) i think that is everything except projectiles..
22:41:00sam686and except loadout zone goal zone
22:43:00raptoryes, i need to figure out how to search for moveable types when it isn't an ObjectType (since we can't use a mask)
22:49:00raptorwhat is MoveObject::move() used for?
22:49:00raptoris it used in-game at all? or just in editor?
22:50:00sam686it is used for every moving objects..
22:50:00raptorwhy are RepairItems considered Moveable?
22:51:00sam686not sure, probably design problem..
22:51:00sam686but MoveObject::move is called for anything that is currently moving in game..
22:51:00raptorok
22:54:00sam686item::idle and maybe Ship::ProcessMove does calls MoveObject::move
22:56:00raptori wonder if that Worm works..
22:57:00sam686When i tried worm, it is just a tiny moving dot..
23:07:00raptorwhat is a better name for ItemType
23:07:00raptorthat is too non-descriptive
23:07:00raptorit is only used in two places
23:08:00raptorengineeredObjects.cpp:933
23:08:00raptormoveObject.cpp:470
23:10:00sam686probably shouldn't be itemType in enigneerObject , as when itemType is part of search, causes problem when Repair gets in the way and foecefield never activated, as i sometimes see the problem with my levelgne
23:11:00sam686levelgen (not levelgne)
23:12:00sam686the one in moveObject is only used for c2sResendItemStatus which does nothing but try to better sync to clients.
23:14:00sam686it is safe to take off if(moveObjectThatWasHit->getObjectTypeMask() & ItemType) for moveObject.cpp, but then it will have to do dynamic_cast anyway
23:21:00raptorwait
23:21:00raptori can remove that last one, do i have to do anything extra?
23:22:00sam686dinamic_cast returns NULL if it is not part of that class
23:23:00raptorah ok, i'll put in a null check
23:23:00sam686it probably already have NULL checking: if(item && gameType)
23:23:00raptoroh good, i can just remove then
23:24:00watusimoto has joined
23:25:00raptorso that leaves one in engineered objects
23:25:00raptorwhat should that be? collideable?
23:26:00sam686if it collides, forcefields will get deactivated, if nothing that is listed gets in the way, forcefield can activate..
23:26:00sam686some Items (asteroid, flagitem, soccerballitem) sshould probably be collidable, but RepairItem shouldn't.
23:28:00sam686still a mystery to me why ReapirItem is part of MoveObject when it does not move..
23:28:00raptorand energyitem
23:29:00raptorwell, I'm removing them from isMoveableType()
23:51:00raptor Quit (Ping timeout: 255 seconds)

Index Search ←Prev date Next date→

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