#bitfighter IRC Log

Index Search ←Prev date Next date→

IRC Log for 2014-09-19

Timestamps are in GMT/BST.

01:00:48fordcars Quit (Quit: Page closed)
01:05:22raptor has joined
01:05:22ChanServ sets mode +o
01:05:27raptorgood evening!
01:13:31sam686hi
01:13:38raptorhi
01:14:24raptori'm looking for examples of opus+FEC (forward error correction)
01:14:35raptorapparently it's built-in somehow, i jsut need to figure it out
01:17:55sam686we went from the horrible and weard sound quality (bf 015) to speex (018), then whats next, opus?
01:18:12raptoryes, or.. maybe... nothing?
01:18:19raptordo we need voice chat?
01:18:35raptor... this has just been a fun project for me trying to figure out the technology
01:20:12sam686i don't know if its worth all the work just for opus over speex when its about only a little bit better opus quality
01:20:26raptorit will be lower bitrate
01:20:53raptori tested with the larger packet size, the max went from ~17kpbs to ~12kbps
01:21:05sam686ok
01:21:07raptorso most of the overhead was s2c sending
01:21:32raptoryeah, it's probably not worth the work.. but it's been a fun project :)
01:21:44sam686bandwidth maybe somewhat reduced on opus
01:27:23sam686http://en.wikipedia.org/wiki/Speex hey look it says "obsolete"
01:27:30sam686http://en.wikipedia.org/wiki/Opus_(audio_format)
01:27:35raptoryes
01:27:49sam686most says opus is better,
01:43:34raptorhuh, so I think I'm close to getting it but
01:43:43raptorhow would i tell if a packet was lost from TNL?
01:45:25sam686you could run it and press F6 button multiple times
01:45:39raptori mean, from within c++
01:45:53raptori used your /lag 0 10 trick
01:47:21sam686controlObjectConnection.cpp have some handling of ControlObjectConnection::packetReceived, and packetDropped can also be used there
01:47:42sam686but for RPC i don't think theres an easy way
01:49:38sam686in addition, 1 packet could pack in 2 or more events, packet dropped? then all events in that packet need to be re-sent if guaranteed, or its gone if unguaranteed
01:50:17raptorwoudl it be bad if the s2c was sent as GuaranteedOrdered?
01:51:30sam686you can try it
01:52:07raptorGuaranteed increases bitrate doesn't it?
01:52:25sam686bye the way RPC doesn't break network compaibility from simply changing RPCUnguaranteed to RPCGuaranteed or anything
01:52:40sam686guaranteed increases bandwidth only when there is dropped packets
01:53:03sam686well, the receiver won't see the increase bandwidth, only the sender does..
01:53:37raptoroh really... i didn't know that it didn't break network compatibility
01:55:23sam686I think I once changed from Guaranteed GuaranteedOrdered and it stayed compatible, it goes by what the sender have it set to
01:56:56sam686an idea to reduce bandwidth at the cost of server CPU, have the server decompress everyone's voice, compine into one stream, then send it to clients.
01:57:33raptorha!
01:58:29sam686but then theres a problem with that, we don't want to echo your voice back to you if not on...
01:59:44sam686another idea is to have one client's voice send directly to other clients bypassing the server, that may help reduce server load...
02:00:05sam686but then problems with NAT and firewall may limit that ability..
02:00:56raptorpacket max is 1500 bits or bytes?
02:01:05sam686bytes
02:01:25sam686http://en.wikipedia.org/wiki/Maximum_transmission_unit
02:02:51sam686the ip header may reduce the limit of UDP without fragmenting
02:05:49sam686THE UDP header is 20 bytes long for ipv4 http://en.wikipedia.org/wiki/User_Datagram_Protocol#IPv4_Pseudo_Header
02:12:54Watusimoto has joined
02:22:11raptorok, need to sleep... looks like my implementation didn't quite work out
02:22:17raptori need to see example code
02:30:58raptor Quit ()
04:08:23Watusimoto Quit (Ping timeout: 245 seconds)
05:15:37Nothing_Much Quit (Read error: Connection reset by peer)
05:15:56Nothing_Much has joined
05:20:00LordDVG has joined
07:22:31LordDVG Quit (Remote host closed the connection)
10:11:01Raven67854 Quit (*.net *.split)
10:18:06Raven67854 has joined
10:46:54Watusimoto has joined
10:49:13Raven67854 Quit (Ping timeout: 272 seconds)
10:58:49Raven67854 has joined
11:09:34Watusimoto Quit (Ping timeout: 240 seconds)
11:30:48Raven67854 Quit (Remote host closed the connection)
11:34:38fordcars has joined
11:41:37Raven67854 has joined
12:17:00Watusimoto has joined
12:31:26watusimoto1 has joined
12:37:32Watusimoto_ has joined
12:40:04Watusimoto Quit (Ping timeout: 258 seconds)
13:04:49Raven67854 Quit (Quit: Leaving)
13:08:15Raven67854 has joined
13:24:25raptor has joined
13:24:25ChanServ sets mode +o
13:24:37raptorgood day!
13:31:41fordcarsHi!
13:32:07Watusimoto_ Quit (Ping timeout: 272 seconds)
13:40:59watusimoto1guten morgen!
13:41:05watusimoto1 is now known as watusimoto
13:41:13raptorbuenos dias!
13:41:20watusimotobom dia!
13:41:36raptorI get to do a technical assessment of a possible new hire for our team today...
13:41:55watusimotosounds like lots of fun
13:42:29raptorit's really just a filter test, i think
13:42:57raptormaybe i'll make hime write something that can be done with a for loop or done with nested if statements...
13:52:17Watusimoto_ has joined
13:54:51Watusimoto__ has joined
13:56:07watusimotowrite a function to reverse a string
13:56:14watusimotothat's what they did in one of my interviews
13:56:38raptorthat seems like an OK idea..
13:56:49watusimotohave them write a bot for bitfighter
13:57:30Watusimoto_ Quit (Ping timeout: 258 seconds)
13:57:45raptori'm pretty sure this candidate doesn't have tons of experience with JEE which we use... so it'll have to more-or-less language agnostic
13:58:13watusimotomy string reversal was in a blend of python and c++, with a few other random bits thrown in
13:58:26raptoryou used two languages??
13:58:51watusimotoI used no languages, just threw my stuff up there; that's what came out
13:59:11raptorahhh... a whiteboard test!
13:59:29watusimotoha ha, just kidding... I actually wrote a small python interpreter in C++, and wrote the reversal in python
13:59:38raptorright...
13:59:39watusimotoI mean, how else would you do it?
14:00:23raptori should require he write a simple java bytecode compiler with his own made-up language
14:00:53watusimotoshould be easy enough... that way he can use whatever syntax he's comfortable with
14:03:41watusimotoI have a bad bitfighter design dilemma... when adding walls to the spatial db, historically we've added full-on wall items when in the editor, and short 2-point segments in the game. The short segments are faster for hit detection, the full walls are better for manipulation. I'm trying to unify the two worlds so we can just add walls (or segments) to the database when we load the level and treat them like any other object. But I'm not
14:04:12raptori think i only got part of that statement...
14:04:23watusimotoonly received, or only understood?
14:04:27raptorreceived
14:04:34raptorended with "But I'm not"
14:04:43watusimotoBut I'm not sure which of the two models would work better as a universal solution
14:04:59raptorso it's an either/or scenario?
14:05:09watusimotoI started porting the editor to use segments, but it makes the code complex and ugly
14:05:23watusimotoit's an either/or situation if we want a universal solution
14:05:29raptoryeah... i wouldn't do that to the editor
14:05:33raptorwell
14:05:43raptorhow are the walls transmitted from server -> client?
14:06:11fordcarsWith internet, raptor
14:06:24watusimotowell, I made each segment point to a full wall object that was not in the database, so you had an extra level of indirection in the editor (click on a segment, and you need to then grab the wall from the segment's wall pointer)
14:06:25raptorquiet you...
14:06:29fordcars:3
14:06:40watusimotowalls are transmitted as a series of points
14:06:51watusimotothe ones that are stored in the level file
14:07:19raptorso one, say, 5-point barrier is transmitted as one barrier at level load, right?
14:07:32watusimotoon the client, it's not problem; we can use either/both/whatever -- we don't have a unified loading situation there
14:07:45watusimototransmitted, yes
14:07:52raptorok, so that's good
14:07:55raptornow server side
14:08:02watusimotobut added to the database on the client as 4 items
14:08:22raptorok
14:08:30watusimotowhich makes sense from a performance pov
14:08:34raptoris that for efficiency in render-triangulation?
14:08:46watusimotomostly for hit-detection
14:08:51raptoron the client side?
14:08:54watusimotoyes
14:09:11raptorah ok, that's right. now i remember why /showids was useless for walls
14:09:19watusimotorendering is a separate beast... we do trianguation of the whole wallset, I think, or perhaps seach segment.... not sure
14:09:33raptorserver side does the same thing, correct? builds 4 segments and inserts them into the DB?
14:09:46watusimotoif we move to whole walls, we could allow server manipulation of walls on the client
14:09:57raptorOOoooo
14:10:10fordcarsYes!
14:10:11raptorthen @admin->type Lua in console-> cheat!
14:10:16LordDVG has joined
14:10:17watusimotowell, we might be able to do that in any case, as long as the server has whole walls
14:10:26raptorok, how are polywalls handled?
14:10:31watusimotothe client could work either way, easily
14:10:44watusimotopolywalls are the same as anything else... a single multipoint object
14:10:58raptorwhat if the barrier was jsut converted to a polywall like structure with appropriate polygon collision?
14:11:01watusimotowhen walls are added to the db, they are added as 4 pt polywalls, essentially
14:11:16watusimotostill have the performance issue
14:11:25watusimotoimagine a large arcing wall
14:11:28raptorhigher than normal polywalls?
14:11:32watusimotothe same
14:11:41raptorthen we need to implement... bezier curves!
14:11:44watusimotobut polywalls tend to be more compact
14:11:50watusimotoso you have a long arcing wall
14:11:56watusimotoit's bounding box is huge
14:11:56raptorthat's true
14:12:16watusimotoso when you add it to the db, more db "bins" get marked as contining that wall
14:12:27raptorhmmm
14:12:50watusimotoand then when you cycle through the items in the db to do the hit detection, you have lots more points to consider on the wall that may or may not actually touch a bin
14:13:00watusimotomore, smaller objects are better
14:13:11raptoryes ok
14:13:12watusimototo a point, obviously
14:13:29watusimotoso there are two performance issues
14:13:30raptorsounds like we'll need complexity if we want efficiency
14:13:41raptorback in 5... sorry!
14:13:46watusimotothe first could be solved by being more intelligent about which bins we mark as containing the item
14:13:56watusimotono worries... I'll jsust finish this thought
14:14:39watusimotoso if we spent a little more time figuring out which bins actually touched an object, the large arcing wall would not be problematic from the first pov
14:14:52watusimotoand it would improve performance of large, weird polywalls
14:15:17watusimotobut the second issue would still exist... long complex walls would still require much more processing to determine if there was a hit or not
14:15:58watusimotothe solution to the first problem involves a moderate one-time cost during game setup
14:19:39watusimotothe hit detection is a recurring cost
14:20:02raptorok back
14:21:27raptorit seems to me that if we ever want wall manipulation server-side, then we need to have some way to maintain the large wall structure
14:22:15raptori'm not sure we'll get around complexity
14:23:13raptori'm trying to think about how major FPS games do it - I think they just use polygon collision detection, but probably have far fewer of them than we do
14:23:32raptorand maybe they use a better spatial database implementation
14:25:03raptormaybe we need a different physics engine...
14:25:06watusimotoI'm less worred about the database than I am about doing lots of edge detection on multipoint wall segments
14:25:22raptorwell yes
14:25:46watusimotoso anyway... that's where I'm stuck at the moment
14:26:26watusimotowell, we could do this...
14:26:37watusimotoadd the full wall to the database
14:26:52watusimotoand the segments as well
14:27:14watusimotothen use the segments for collision detection, but the walls for other stuff
14:27:25raptori'm thinking down those lines, too
14:27:42watusimotoif a wall gets delted or manipulated, find all the sgments, and delete/recreate them
14:28:17watusimotobut that may mean doubling-up the database methods... one for using walls and one for using segments
14:28:48raptoror delegating a method from a parent to child
14:29:06watusimotoI don't follow that
14:29:13raptorerr... by adding a flag to the search method
14:29:23raptorso you'd do a search with flag of useOrigWalls
14:29:41raptoror do a search with that false, and internally it'll return either/or
14:37:46raptorcrazy idea - what if we decomposed every non-point object to 2d lines to fit into the spatial DB... then it would be super fast!
14:38:08raptorwith a whole host of other problems...
14:38:14raptornevermind
14:41:08watusimotowe actually do your "crazy idea" with walls and polywalls
14:41:24watusimotowe have a "walledgedatabase"
14:41:31watusimotobut we only use it for mounting engr items
14:41:39watusimotoit's useful because it contains no interior segments
14:41:57watusimotoso the turrets only snap to outside edge of overlapping walls
14:42:18raptorah that's right...
14:42:25watusimotothen, when we get the location right, we snap again to the actual wall so we know which wall we're attached to
14:42:34watusimotobecause the segments are all "anonymous"
14:42:52watusimotoids don't survivie angus's geom methods
14:43:15watusimotowe know where they are, but not who they belong to
14:43:24raptorah ok
14:43:37watusimotobut they might work fine for collision detection
14:43:41watusimotoI hadn't considered that
14:43:57watusimotowe need them for rendering on the client; not sure if we generate them on the server
14:44:02raptorit may pos a problems with being stuck on walls...
14:44:18watusimotointeresting, yes
14:44:20raptori don't remember them on the server
14:44:24watusimotonot sure how that works now, to be honest
14:44:40watusimotoI'd think a collision detection would prevent you from leaving as well as entering a wall
14:44:59watusimotobut it obviusly doesn't
14:45:15watusimotobut edges would be even more efficient than segments
14:45:29watusimotosmaller, simpler
14:45:46watusimotofewer of them potentially (interior lines are removed)
14:46:06raptori think the physics 'engine' we have detects into/out-of collisions
14:46:18watusimotoha ha, yes "engine"
14:48:38watusimotowell, I'll think about this edge detection idea... it might be just the ticket
14:48:56raptorwhich one?
14:49:07raptor(my last one was sort of a joke...)
14:49:11watusimotothe idea of using our wall edge database to do collisions
14:49:17raptorha
14:49:26watusimotoreally... it might just work well
14:49:42raptorthere's one thing we haven't considered...
14:49:48watusimotoit might be more efficient that what we're doing
14:50:27raptorripping out the griddb and the physics enging and replacing iwth something like this: https://code.google.com/p/box2d/
14:51:52watusimotointeresting
14:52:50raptorif we had a real-live physics engine like that we wouldn't really need to maintain the database
14:53:07raptorjsut make sure our objects fit the correct format
14:53:17watusimotoyou are probably right
14:53:30watusimotobut we use the database for lots of stuff, not just physics
14:53:48raptori remember one guy ("beard" was it?) suggested chipmunk physics
14:53:48watusimotolike keeping lists of all textitems, for example
14:53:59raptorah yes
14:54:02raptorthat's right
14:54:04watusimotobut I'm not in principle opposed to using an external lib
14:54:18raptorthat one is portable c++, too!
14:54:21watusimotomost of the non-physics functions could be easily reproduced in a wrapper or something
14:54:25raptoranyways, i'm just brain storming...
14:54:47watusimotoyes -- htat's more a long term solution; I need a short-term fix
14:55:00raptordo nothing!
14:55:22watusimotowell, the reason I'm doing this is to avoid fixing some other weirdness intorduced by my level refactor
14:55:33raptoractually, I'm not sure I know if this stems from a problem or not...
14:55:38raptorah ok
14:55:47watusimotoafter simplifying polywaalls, I got the hunger to likewise simplify walls
14:55:52raptoroh no!
14:55:56raptorself-control!
14:56:05raptorone one refactor starts...
14:56:07watusimotowell, it's simplify here, or fix there
14:56:08raptor*once
14:56:21watusimotothis is all still related to the level refactor
14:56:31watusimotothe hugest refactor ever in the project's history
14:56:49raptoryeah... this is pretty crazy
14:56:57watusimotowe're mostly there
14:57:20watusimotowhat's in the repo works for most things
14:57:31watusimotoit's mainly scripting that is broken, I think
14:57:50raptoruh oh
14:57:58raptorI don't ever want to touch LuaW again
14:58:01watusimotono, but not deeply
14:58:13watusimotoit's jsut stuff like making sure walls are added to the database/game properly
14:58:28raptorah, so script previews from the editor?
14:58:35watusimotopolywall scripting is fixed
14:58:42watusimotohaven't tested that yet
14:58:50watusimotomostly using the ctrl-g script, for example
14:58:59watusimotothat's what I've been testing
14:59:02raptorah ok
14:59:25watusimotoyeah, nothing difficult
16:05:32raptorinteresting, box2d implements a quad-tree hybrid spatial database that doesn't require buckets of a certain size
16:06:29raptoractually, it's a balanced tree
16:10:08Watusimoto__ Quit (Ping timeout: 258 seconds)
16:24:12fordcarsBox2d is cool
16:26:31raptor"Box2D is tuned for meters-kilograms-seconds"
16:27:05raptorand i found their dtabase code: https://code.google.com/p/box2d/source/browse/trunk/Box2D/Box2D/Collision/b2DynamicTree.cpp
16:33:41watusimotowe'd need to decide how big our ship is
16:33:52watusimotoI know, but I'm not telling :-)
16:34:48raptorradisu == 24 meters?
16:34:52raptor*radius
16:40:15LordDVG Quit (Remote host closed the connection)
16:58:03watusimotono
16:58:14watusimotodidn't you watch "Bitfighter the Movie"?
16:58:18watusimotothere's a clue there
17:15:43raptorphoew
17:15:46raptorinterview over
17:16:03raptorthis guy was pretty good
17:16:21raptoradaptable
17:16:37raptorhas the skill set to do the work
17:39:00fordcarswatusimoto: Are ships 15 pixels of radius?
17:39:10raptor24!
17:39:18fordcarsOh crap never mind
17:39:22fordcars24 meters?
17:39:42fordcarsWait, you want to implement Box2d in Bitfighter??
17:40:02sam686pixels? it depends on your window size and if your ship have sensor, if you try to screen shot
17:40:25fordcarsYeah that's true
17:42:41fordcarsBitfighter is miniaturized, right?
17:42:45fordcarsIn the Movie
17:43:07fordcarsradius = 0.0000000000000000000024 meters
17:44:36raptorthank goodness we aren't working on that type of floating precision level
17:54:56watusimoto24 "units"
17:55:26watusimotoI always imagined bitfighter took place inside a cpu
17:55:43watusimotoin a weird sort of not quite physical, not quite electronic space
17:55:59watusimotoinner space
18:11:33raptortestitems are floating charge-disrupting heat anomalies
18:14:42fordcarss_bot is a big evil virus
18:15:08Raven67854 Quit (Quit: Leaving)
18:17:54Watusimoto_ has joined
18:25:43Watusimoto_ Quit (Ping timeout: 244 seconds)
18:32:40sam686 Quit (Ping timeout: 256 seconds)
18:45:31raptorGCI this year?
18:45:37raptorand with that... later!
18:45:39raptor Quit ()
18:49:29sam686 has joined
18:49:29ChanServ sets mode +v
20:07:00amgine123 has joined
20:07:08amgine123hi there
20:34:32amgine123afk
20:36:35amgine123LOL
20:36:46amgine123its lagged at 8000+ spybugs
20:36:50amgine123@ford
20:36:56amgine123wait for it to catch up
20:37:36fordcarsLol
20:37:48amgine123wonder how long it will take me
20:37:50amgine123XD
20:37:51fordcarsThat's a bit intense haha
20:38:09amgine123wonder if i will be at flaot zone w3hen its done lagging
20:38:37amgine123who about you find a good nubmer ?
20:38:53amgine123im trying to find the highest nubmer that will get you to hte flaot zone hte fasest wihout it lagging
20:39:12amgine123bitfighter 19c not responding XD
20:39:50amgine123Guess ill just use emulators in the mean time
20:40:08amgine123maybe ill finish super mario star road today
20:41:45fordcarsSure :P
20:47:18amgine123 Quit (Quit: Page closed)
20:47:35amgine123 has joined
20:47:37amgine123its still frozen!
20:51:03fordcarsFloat lands in editor is really weird
20:51:32amgine123it is ?
20:51:44amgine123jsut wonder how would you get to a the falot zone in the editor
20:53:21fordcarsI modified the level file :P
21:05:32amgine123still frozen
21:05:48amgine123maybe ill reopen BF
21:16:19watusimoto Quit (Quit: Leaving.)
21:40:35Invisible1 has joined
22:09:36Invisible1 Quit (Quit: Invisible1)
23:24:12amgine123spam spam spammy spam spam.
23:31:18amgine123spammy spammy spam spammy spammy.
23:40:52Nothing_Much Quit (Remote host closed the connection)

Index Search ←Prev date Next date→

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