#bitfighter IRC Log

Index Search ←Prev date Next date→

IRC Log for 2015-01-12

Timestamps are in GMT/BST.

00:20:30JeffMB Quit (Quit: Page closed)
00:51:06Nothing_Muchoh darn
01:02:57fordcars Quit (Quit: Page closed)
03:02:26Watusimoto has joined
04:53:30Destroyerimo has joined
04:55:52Destroyerimo_clo Quit (Ping timeout: 264 seconds)
05:01:32Watusimoto Quit (Ping timeout: 245 seconds)
05:42:21Darrel Quit (Read error: Connection reset by peer)
05:42:37Darrel has joined
07:09:40Destroyerimo Quit (Ping timeout: 264 seconds)
07:45:56Darrel Quit (Ping timeout: 264 seconds)
07:46:20Darrel has joined
10:02:44Darrel Quit (Ping timeout: 245 seconds)
10:03:01Darrel has joined
12:02:04raptor has joined
12:02:05ChanServ sets mode +o
12:12:17raptorgood day!
12:47:26Invisible has joined
13:34:12watusimoto has joined
13:34:21watusimotohello
13:34:34ChanServ sets mode +o
13:34:34raptorhi
13:35:34sam686http://sam6.25u.com/bitfighter/leveltest/ level vs levelgen on speedzone rotation, which one is less laggy?
13:37:12raptorto be honest, i think rotating speedzones have rarely added value to a level - the only exception was that first level you made called 'rotating speed zone'
13:37:26raptorI almost think that it should be removed from the game
13:39:41sam686i think the main problem with doing such rotating and moving anything in a levelgen is LAG
13:40:36sam686well, not only lag, but also not very smooth, take the bobdaduck zone stuff in levelgen for example
13:42:36sam686the DnD stuff i was talking about too
13:47:04sam686also... parts of http://sam6.25u.com/bitfighter/leveltest/z_speedzone_rotate.levelgen really works when multiple objects have the same ID, something that editor itself tries to prevent
13:47:55sam686editor prevents duplicate id then typing a new ID, but creates duplicate ID using copy paste
13:50:10watusimotowhy would the scripting be any more laggy than the native object? Or does the rotation happen on the client without input from the server (sorry, I don;t have the code in front of me)
13:50:40watusimotothe script could take a list of ids and rotate each item on the list
13:51:59sam686well then, why does the editor prevent entering duplicate IDs?
13:52:32sam686native rotation on Speedzones happens on client side without continuously sending the position, like the levelgen does
13:58:22watusimotoThe idea is that ids should be unique
13:58:37Invisible Quit (Ping timeout: 245 seconds)
13:58:39watusimotothat's what makes ids ids :-)
13:59:08watusimotoone advantage is that it is harder to mess up by giving duplicate ids when you don't really expect to
13:59:41watusimotosince there is no good way to figure out what ids are already used, if we allowed dupes, it would be really hard to avoid them if you didn't want them
14:00:28sam686although, often easy to make the levelgen look for a range of id anyway...
14:01:13watusimotoI like the idea of moving speedzone rotation to scripts, as they seem a real specialty item; however I think we need a way to let the server send code to the client to avoid the lag. However, from a security POV, this makes me nervous.
14:02:31watusimotobut letting the server run code on the clients would also open the doors to lots of things -- custom renderers, for example
14:03:33sam686for non-levelgen rotation, the rotation is sent though pack/unpack once, then the client uses the global timer from gametype to rotate itself
14:03:44sam686thats without continously sending the postitions
14:04:53sam686without levelgen, i was kindof thinking of "rotate points" that rotate a range of IDs of any objects around this point object, or similar.. or chain rotate point with another rotate points and we get crazy rotation
14:06:10sam686scripts may be powerful, but can have flaws... there was so many flaws to web browser javascript in the history...
14:06:49sam686it also complicates levelgens too..
14:13:24sam686levelgen may be sandboxxed to avoid running most commands that may be dangerous....
14:13:44sam686there is still one problem with levelgen: FREEZE with endless loop http://sam6.25u.com/bitfighter/leveltest/freezegame.levelgen
14:17:41Invisible has joined
14:19:27raptorwow lots of discussion!
14:19:33raptor2 things:
14:20:37raptor1. client-side prediction is better for speedzone rotation, and to have that in a levelgen requires some complexity that I don't think I want to code (involving matching up server/client levelgen script time indices, etc..)
14:21:16raptor2. bobdaduck heavily used the ID on multiple objects to make his scripts simpler - maybe we need to add the concept of a 'class' ?
14:22:42sam686I have did some class-like stuff on LUA, on Slot Machine level http://sam6.25u.com/bitfighter/levels6/slotmachine.levelgen
14:23:18raptoroh, haha, i meant 'class' in the HTML sense of the word
14:23:58raptorso an object would have an ID: LoadoutZone!1.5 (means ID 1, class 5)
14:24:16raptoror LoadoutZone!1$5
14:27:04Invisible Quit (Ping timeout: 264 seconds)
14:28:29sam686http://sam6.25u.com/bitfighter/levels/snow_chimney.level
14:28:29sam686http://sam6.25u.com/bitfighter/levels/snow_chimney.levelgen
14:28:45sam686one of my levels, this one, have like a range of IDs
14:29:35raptorlunch time! watusimoto, i'd be curious about your thoughts of having a 'class' for objects in addition to an ID (see above)
14:29:47sam686rather then 200 300 600, it could be 2.0 3.0 6.0 maybe
14:31:32sam686but it cause a small confusing with 2.1 vs 2.10 when counting up..
14:33:43sam686by the way, blinking with changing teams is network light, while moving/rotation is network-hungry/lag
15:05:18Watusimoto_ has joined
15:10:08Watusimoto_ Quit (Ping timeout: 265 seconds)
15:11:03watusimotoif we did a class/id thing, perhaps the classes should have string names (rather than ints)?
15:11:13watusimotoor would that open too many doors for typos?
15:12:15raptordepends on how we'd handle it in the editor
15:12:41raptoralso... there's a funny bug with IDs in Lua -
15:12:46raptorfordcars found it
15:12:55watusimotoif we normalized case (or ignored it), and stripped leading/trailing spaces, and collapsed multiple spaces into one, it might work
15:13:05watusimotoor made spaces an invalid character, which might be better
15:13:27watusimotoI'm not opposed to classes per se
15:13:39watusimotoif we really have a use case
15:14:29raptorif you did this: bf:findObjectById(25) it works
15:14:37raptorbut if you did this: var id = 25; bf:findObjectById(id) it fails
15:15:10watusimotohow odd
15:15:24raptorit's because Lua's internal type is always a Number (float)
15:15:28watusimotowell, that's a bug, in any event
15:15:40raptorso a float gets passed to our method, which is looking for an int
15:15:58watusimotointeresting
15:16:05watusimotowell, that should be easily fixed
15:16:31watusimotoread a float and round it ot an int
15:16:54raptori should add that as an issue
15:17:15raptori'd say classes should not have spaces
15:17:29watusimotoagreed
15:17:31raptorand for that matter - would we allow IDs to be strings, too
15:17:33raptor?
15:17:46watusimotono, I don't think so
15:18:00watusimotobut... it's all arbitrary on some level
15:18:13raptorintegers would be simplest, I think
15:18:17watusimotowe could allow strings, and translate them internally to integers
15:18:27sam686is doing "local id = 25; bf:findObjectById(id)" work? if yes the problem is the "var" part
15:18:29watusimotobut I don't think we have a problem with the current system
15:18:44raptorsam686: sorry, yes, use 'local'
15:21:04sam686IDs isn't shown while playing bitfighter, its only used for levelgen, even though the ID itself can be entered into editor
15:21:45watusimotoyes
15:22:35sam686strings is slower then integer, not sure how much slow down it can be..
15:22:53raptoryou can tell i've been working with too many programming languages today...
15:24:25watusimotolet's stick with integer ids unless we have a compelling reason not to
15:25:29raptori agree... should we do classes, too?
15:25:46watusimotoDo we have a use case for classes?
15:26:14raptormanipulation of several objects at once without having to program each id
15:26:17raptorin levelgens
15:26:24raptorpeople are already using the IDs for that purpose
15:26:31raptorand i honestly don't know why it works
15:26:36watusimotocould objects have multiple classes?
15:26:48raptoroh yuk
15:27:07raptoruhh
15:27:17raptorLoadoutZone!1$5,6,7,19
15:27:30watusimotolet's worry about the level representation later
15:27:31raptor^^ like that? where $ means class
15:27:37raptorgood question
15:27:53raptori can't think of a use case for multiple ones at the moment, but i'm sure the levelgeners will
15:27:55watusimotoclasses should probably be strings
15:28:17watusimotook, I agree... if we go down this road, items should ahve multiple classes
15:28:46watusimotomaybe we should add some "tags" to levelcode lines
15:28:47sam686i think just a single integer is fine, it worked for my snow chimney for grouping sequence of IDs http://sam6.25u.com/bitfighter/levels/snow_chimney.levelgen
15:29:15watusimotoso we could add: class=firstclass,second_class id=123
15:29:18watusimototo the end fo the line
15:29:47sam686classes and IDs as string, may results into having to do a slow string combining or conversion from int to string
15:29:53watusimotorather than trying to add them to the object as we do ids
15:30:21watusimotointernally we can convert strings to ids if we want
15:30:22raptorall this end-of-line stuff...
15:30:32watusimotoma
15:30:42watusimotomaybe we really need to finally revamp levelcode
15:30:49watusimotointo xmlish
15:30:51sam686although, bf:findObjectById alone may be slow as having to find that ID by cycling through a lot of objects..
15:31:29watusimotowe can always add a map to make the lookup faster
15:34:23raptoryaml
15:34:44raptorxml-ish
15:34:55raptornot yaml
15:35:00raptorthat requires whitespace
15:35:12raptorjson?
15:36:22raptormaybe yaml - then we would *really* be discouraging people to open up their level files for editing..
15:36:31Watusimoto_ has joined
15:38:50watusimotoxml would probably be best, due to easy of reading
15:38:59watusimotoand flexibility
15:40:06Darrel Quit (Ping timeout: 265 seconds)
15:41:04Watusimoto_ Quit (Ping timeout: 245 seconds)
15:41:13Darrel has joined
15:41:43raptorwhat about rolling our own hybrid...
15:42:18raptorthat way we wouldn't have to have an XML parser...
15:42:46raptorwe could embed robot/levelgen code, too
15:43:48Watusimoto_ has joined
15:56:25raptorwatusimoto: here's something i whipped up quickly: http://pastie.org/pastes/9828226/text
15:56:40raptoralthough now that i look at it, it's still using indentation of a sorts like YAML
16:05:09Watusimoto_ Quit (Ping timeout: 264 seconds)
16:11:11Invisible has joined
16:18:36raptor Quit (Remote host closed the connection)
16:27:31watusimotonot having an xml parser is a disadvantage, imo
16:27:49watusimotoif we use xml, we don't need to write a parser
16:28:47watusimotothat is a bit of work we can delegate to an external lib
17:08:28Invisible Quit (Ping timeout: 264 seconds)
17:31:34Invisible has joined
17:44:13Invisible Quit (Ping timeout: 264 seconds)
18:03:38Watusimoto_ has joined
18:28:22raptor has joined
18:28:23ChanServ sets mode +o
18:29:17raptoryes, but another library == another dependency on all platforms + larger deploy
18:29:32sam686quertzy lab designed by raptor horribly lagged when i was shooting burst at the resource items the whole time...
18:29:53raptordid i design that?
18:30:23sam686well, a map lagged in priages server
18:34:31sam686its this map http://sam6.25u.com/upload/download_quartzy_bug.level
18:34:51sam686the level id points to a id of 194 which i don't seem to find it on preiages
18:35:06raptoroh... pleiades
18:35:50raptori remember that one - was the lag because of server collision processing (taking too much CPU) or because of network load?
18:36:31sam686no, its because of using Burst, and the server has to do way too many calculations from people using burst to make thousands of resource items move
18:37:11sam686also, just loading it takes quite a long time, about 5 seconds compared to other maps
18:43:00sam686when profiling that map, 83% of time is spent in Zap::DatabaseObject::setExtent
18:43:50sam686mostly at griddb.cpp line 923
18:51:48fordcars has joined
19:19:22raptorquad-trees!
19:19:29raptorheading home
19:19:32raptor Quit ()
20:05:18Watusimoto_ Quit (Ping timeout: 245 seconds)
20:54:31Invisible has joined
21:51:36watusimoto Quit (Quit: Leaving.)
22:06:17Invisible Quit (Ping timeout: 265 seconds)
22:25:47BFLogBot Commit: 057e80290b | Author: sam8641 | Message: Allow turning off Vsync in bitfighter.ini (SDL2 only)
22:25:48BFLogBot Commit: 0c276cb0bc | Author: sam8641 | Message: TNL thread: Added some checks when thread fail to create
22:25:50BFLogBot Commit: ba93b24c71 | Author: sam8641 | Message: Much faster setExtent and removeFromDatabase with over 1000 objects
22:25:51BFLogBot Commit: 3e774412ba | Author: sam8641 | Message: Merge, some conflicts on gridDB and config fixed
22:41:28BFLogBot Commit: 7b6d8165fb | Author: sam8641 | Message: Fixed syntax error, merge/rebase fail...
22:42:39sam686i may need to go for tonight, later..
23:15:38watusimoto has joined
23:15:38ChanServ sets mode +o
23:39:38raptor has joined
23:39:40ChanServ sets mode +o
23:41:08raptorsam686: I'm really worried about that extents change for the 019 stuff...
23:43:00raptorcan you explain the changes you made... if i'm reading this right, then it should be *really* fast compared to before
23:45:48raptoralso, the merge was a bit messy... i need to fix some stuff
23:46:07raptorI think when merging back into 020, you need to switch to the 020 branch first, then merge in

Index Search ←Prev date Next date→

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