Timestamps are in GMT/BST.
| 00:51:38 | | BFLogBot - Commit ad238b849627 | Author: watusim...@bitfighter.org | Log: Experiment with organizing enum values in Lua... logprint(Weapons.Triple) now prints "2"... exciting, I know! |
| 00:52:04 | | Watusimoto Quit (Ping timeout: 246 seconds) |
| 01:09:14 | | raptor has joined |
| 01:09:14 | | ChanServ sets mode +o raptor |
| 01:17:00 | kaen | hello hello |
| 01:17:23 | kaen | I've been reading some old threads regarding stats. I didn't realize it was such a hot topic |
| 02:22:59 | raptor | hi |
| 02:23:15 | raptor | i still have one kid to get to bed... |
| 02:23:40 | raptor | yes, lots of discussion about stats... most of it is gone in my memory - but we definitely need to do more |
| 02:23:47 | raptor | brb |
| 02:24:00 | kaen | gotcha |
| 02:29:43 | raptor | ok, newbork isn't ready to sleep yet... |
| 02:29:54 | raptor | any questions regarding stats? |
| 02:44:23 | kaen | would you be adverse to keeping an aggregate userdata table? perhaps with a chron job or similar? |
| 02:46:19 | kaen | the table of stats entries for players is already pretty long. you could keep per-game data for some time period, and then just drop them. |
| 02:47:06 | kaen | *after aggregating them |
| 02:51:03 | | raptor Quit (Ping timeout: 246 seconds) |
| 02:56:51 | | raptor has joined |
| 02:56:51 | | ChanServ sets mode +o raptor |
| 02:58:39 | raptor | hi again |
| 02:58:49 | kaen | ahoy |
| 02:59:09 | raptor | well |
| 02:59:23 | raptor | we have timestamps and lots of indexes on our data |
| 02:59:38 | raptor | we can always create views that filter for a time... |
| 03:01:43 | raptor | are you thinking something along the lines of: after a year we move all the data to an archive, then start over with the stats? |
| 03:03:07 | kaen | oh, no. I just meant keeping a table of running total stats, and updating that record from the table of individual reports (stats_player) rather than searching all records for 'kaen' and summing the values. |
| 03:03:12 | kaen | what you said works fine, too |
| 03:03:28 | raptor | we've started creating 'views' |
| 03:03:28 | kaen | but for something like-alltime stats we'd still be doing the above |
| 03:03:33 | kaen | nice. |
| 03:03:41 | kaen | as in MVC views? |
| 03:03:51 | raptor | no no: a database view |
| 03:03:57 | kaen | sure. |
| 03:04:12 | raptor | are you familiar with database views? |
| 03:04:22 | kaen | apparently not |
| 03:04:30 | kaen | the term isn't familiar at least |
| 03:04:50 | raptor | there are two types: views and materialized views (which mysql doesn't really have) |
| 03:05:01 | raptor | basically it's a stored query forced to look like a new table |
| 03:05:16 | raptor | so you'd make some complex query, then store it as a view |
| 03:05:23 | kaen | oh! |
| 03:05:29 | raptor | then all you have to do in the future is 'select * from some_dumb_view' |
| 03:05:41 | raptor | instead of redoing the query all over again |
| 03:05:58 | kaen | alright. |
| 03:06:08 | raptor | we do that for the highscores |
| 03:10:55 | kaen | dude you just blew my mind |
| 03:21:34 | raptor | :) |
| 03:37:27 | raptor | i think in the database dump i gave you, the views are 'tables' that start with v_ |
| 03:37:38 | kaen | yes indeed |
| 03:38:18 | raptor | ok |
| 03:38:19 | raptor | tonight |
| 03:38:31 | raptor | i'm going to finally finish this teleport problem of mine |
| 03:40:09 | raptor | ... after i do an assignment.. |
| 03:40:13 | raptor | sigh |
| 03:40:33 | kaen | heh. you can play when your homework is done |
| 04:23:31 | raptor | ok time to play! |
| 04:37:07 | | BFLogBot - Commit 9de5d62b7f0b | Author: buckyballreaction | Log: Remove dead code |
| 06:15:26 | | kaen Quit (Ping timeout: 246 seconds) |
| 06:16:20 | | raptor Quit () |
| 06:16:28 | | kaen has joined |
| 07:08:04 | | sam686 Quit (Ping timeout: 245 seconds) |
| 07:11:09 | | raptor has joined |
| 07:11:09 | | ChanServ sets mode +o raptor |
| 07:14:11 | | raptor Quit (Client Quit) |
| 07:17:43 | | BFLogBot - Commit ec2659a963d1 | Author: buckyballreaction | Log: Client-side feedback that another player is engineering a teleport. Still needs work |
| 07:28:25 | | watusimoto has joined |
| 07:28:25 | | ChanServ sets mode +o watusimoto |
| 09:37:21 | | LordDVG has joined |
| 12:31:59 | | watusimoto1 has joined |
| 12:34:47 | | watusimoto Quit (Ping timeout: 246 seconds) |
| 14:09:59 | | watusimoto1 Quit (Read error: Operation timed out) |
| 14:26:18 | | watusimoto has joined |
| 14:26:18 | | ChanServ sets mode +o watusimoto |
| 14:37:15 | | raptor has joined |
| 14:37:16 | | ChanServ sets mode +o raptor |
| 14:37:21 | raptor | good day! |
| 14:43:19 | raptor | ok, let's see what damage I did with my half-awake commit last night... |
| 14:43:59 | | Watusimoto_ has joined |
| 14:52:30 | watusimoto | I know the feeling |
| 14:52:50 | raptor | well, it compiles... |
| 15:05:55 | | Watusimoto_ Quit (Ping timeout: 260 seconds) |
| 15:20:24 | | ppedruzzi has joined |
| 15:27:10 | raptor | hi ppedruzzi |
| 15:27:36 | ppedruzzi | hi! |
| 15:28:00 | raptor | welcome to #bitfighter |
| 15:28:41 | ppedruzzi | thanks |
| 15:30:50 | watusimoto | hi |
| 15:31:39 | raptor | watusimoto: if i cancel (using ESCAPE) placing a teleport exit, what should happen? |
| 15:31:48 | raptor | teleport explode? |
| 15:32:07 | raptor | right now you just get stuck with the inability to use weapons and modules... :) |
| 15:56:45 | watusimoto | if you cancel (is escape the right key for that? what about js users?), the teleport should probably expode, since that's the only way we have to exit objects from the game. Or perhaps it could do the collapsy effect withtout the sfx and sparks |
| 15:57:20 | raptor | so destruction.. |
| 16:04:44 | watusimoto | by fire or by ice |
| 16:05:14 | raptor | firey ice? |
| 16:09:32 | kaen | morning |
| 16:11:14 | kaen | I was thinking more about views and storing player stats last night. what if we used a faux materialized view and an update trigger on stats_player? that way queries will be updated instantly and we won't have to run an aggregating query each time we need a player's stats |
| 16:14:01 | kaen | alternatively, we could use real views and query caching, but then we'd have either process the query in php each time, or only support a defined set of queries. additionally, the query cache is intelligently invalidated on inserts, so the queries would still be re-run after every game |
| 16:14:28 | kaen | have to either* |
| 16:22:38 | watusimoto | I'm too fried to comment intelligently on what you just wrote! I'm off to watch my kids march in a parade in front of the heir to the throne here in Luxembourg. |
| 16:22:53 | kaen | have fun :) |
| 16:23:08 | watusimoto | but I will say that materialized views aren't an option (unfortunately, as they combine performance with ease of use) |
| 16:23:19 | watusimoto | not an option because our database doesn't support them |
| 16:23:26 | watusimoto | raptor can confirm |
| 16:23:26 | kaen | we can make our own :) |
| 16:23:27 | watusimoto | later |
| 16:23:32 | watusimoto | yes |
| 16:23:34 | watusimoto | :-) |
| 16:23:38 | kaen | that's what I meant |
| 16:23:41 | watusimoto | I'll defer to the expert |
| 16:23:47 | watusimoto | (i.e. you, apparently :-) |
| 16:23:51 | kaen | definitely raptor |
| 16:23:51 | kaen | lol |
| 16:23:53 | watusimoto | ciao |
| 16:23:56 | kaen | bb |
| 16:28:37 | | watusimoto Quit (Ping timeout: 276 seconds) |
| 16:36:54 | raptor | someone said my name |
| 16:37:33 | raptor | kaen: you're suggesting to use the trigger hack to fake a materialized view in mysql since they don't exist? |
| 16:38:25 | kaen | just brainstorming, really |
| 16:38:27 | kaen | but yes |
| 16:38:31 | raptor | which data do you suggest to put into such a view? |
| 16:38:51 | kaen | the aggregated data for player stats, kills, deaths, shots, etc. |
| 16:39:15 | kaen | I guess my assumption is that aggregating that on each query won't scale well when/if bitfighter becomes popular. |
| 16:39:22 | raptor | you've sure done your research... |
| 16:39:26 | raptor | your assumption is correct |
| 16:39:31 | kaen | I'm a research kind of guy |
| 16:42:23 | raptor | when you say aggregate data, do you mean the data that is built for gamereports/ ? |
| 16:43:37 | kaen | I think so. Specifically, I mean the data in stats_player and stats_player_shots |
| 16:44:12 | kaen | honestly I'm new to the whole dba thing, so feel free to shoot me down if I'm being silly :) |
| 16:44:16 | kaen | I won't take it hard |
| 16:44:42 | raptor | heh - you've actually come up with all the right ideas |
| 16:45:08 | raptor | the next step is to build a query that makes most sense to have cached |
| 16:46:03 | raptor | one thing to remember: a caching table that is updated with a trigger will take up as much space as the tables it's pulling from |
| 16:48:21 | kaen | the way I imagined it is that it would have one row for each unique player, so all entries for player x get condensed into one. wouldn't that make it a fraction of the combined sizes of stats_player and stats_player_shots? |
| 16:49:53 | raptor | maybe... would it still be per-player-per-game? |
| 16:50:01 | kaen | so we'd aggregate it manually once for a baseline, then add the appropriate data to each row every time there's an insertion on either of those |
| 16:50:05 | kaen | oh, no |
| 16:50:22 | raptor | even if the row count diminishes, the column count increases, so memory usage stays roughly the same.. |
| 16:50:24 | raptor | oh |
| 16:51:51 | kaen | that data is already accessible from stats_player, so I figured that could be used as-is for stats by game |
| 16:52:00 | kaen | since it is well-indexed |
| 16:53:24 | raptor | i think i'd have to see the query put together that you're thinking about... |
| 16:53:32 | kaen | I thought so |
| 16:55:51 | raptor | i have to to a meeting - be back in an hour or so |
| 16:55:56 | raptor | *to go to |
| 16:56:01 | kaen | have fun! |
| 16:56:05 | raptor | ugh |
| 16:56:12 | kaen | :P |
| 17:31:52 | raptor | ok back |
| 18:32:30 | | Watusimoto has joined |
| 19:49:57 | | sam686 has joined |
| 19:49:57 | | ChanServ sets mode +v sam686 |
| 20:14:08 | | Watusimoto Quit (Ping timeout: 240 seconds) |
| 20:17:04 | | ppedruzzi Quit (Quit: Page closed) |
| 20:35:01 | kaen | raptor, whenever you get time I wrote a query for the cache tabel/material view/whatever I'm thinking of |
| 20:35:03 | kaen | http://pastie.org/4134328 |
| 20:35:14 | kaen | table, even |
| 20:35:53 | kaen | and then it would need insert triggers, too |
| 20:39:38 | raptor | hi |
| 20:39:39 | raptor | looking... |
| 20:44:25 | raptor | it works! |
| 20:45:20 | raptor | are you thinking of having specific views set up for different time intervals? also how do you envision using the data? |
| 20:45:56 | raptor | I'm thinking we could easily pull 'top 3 with the most XXX in the last 30 days' |
| 20:51:23 | kaen | I envision using the data sort of like this: http://ladder.tearyoudown.com/ |
| 20:52:18 | kaen | building different views for different time intervals is a great idea, too. admittedly, I hadn't thought of that. |
| 20:52:38 | kaen | I just used a time filter so the query ran in a sane amount of time during testing |
| 21:16:44 | | LordDVG Quit (Remote host closed the connection) |
| 21:20:40 | raptor | maybe |
| 21:21:12 | raptor | maybe we could put up another page at /playerreports/ and somehow organize the data |
| 21:21:59 | raptor | we could probably display the raw data in some client-side JS library so any sorting and stuff could be done client-side |
| 21:29:11 | kaen | hmm, that might be feasible, depending on how we encoded the data |
| 21:30:02 | kaen | it would be sizable even as json |
| 21:30:20 | raptor | yeah, it would have to be json |
| 21:31:13 | kaen | set it as { player: [array,of,stats] } ? |
| 21:31:22 | kaen | would be the most compact form I can think of. |
| 21:31:43 | raptor | yep |
| 21:32:09 | raptor | so are you more of a web programmer than utilty programmer? |
| 21:32:13 | kaen | well, I'd bet with the time filter that would be pretty manageable |
| 21:32:16 | kaen | definitely. |
| 21:32:39 | raptor | I program web apps for work, but at heart i love the utility/automation side of things... |
| 21:32:58 | raptor | i reserver a special hatred for web programming... |
| 21:33:06 | kaen | that's the same way I feel about web programming :) |
| 21:33:10 | raptor | well, maybe that's too strong... |
| 21:33:12 | raptor | haha |
| 21:33:21 | kaen | when I grow up I want to be an embedded systems developer |
| 21:33:22 | kaen | no joke. |
| 21:33:36 | kaen | but I'm pragmatic and know that I have a better change at a web job :/ |
| 21:33:46 | raptor | cool |
| 21:33:59 | kaen | chance* |
| 21:34:18 | raptor | i think some day i might want to make my favorite programming language a soldering iron... |
| 21:34:34 | raptor | (I heard someone say that somewhere..) |
| 21:34:42 | kaen | it's a good one |
| 21:35:06 | kaen | I have a set of PIC chips still in their static sleves |
| 21:36:02 | kaen | when I ordered my programmer they sent me an old-school parallel port one instead of usb, so I'm waiting for it to come |
| 21:36:12 | raptor | yeah - i have some lying around somewhere from the hardware intro i got in the IT department.. |
| 21:36:19 | raptor | ha! |
| 21:37:48 | raptor | ok, well, i'm heading out for a campfire dinner |
| 21:37:56 | kaen | oh nice |
| 21:38:00 | raptor | i'll be back late... |
| 21:38:08 | kaen | later |
| 21:38:13 | raptor | bye |
| 21:38:29 | | raptor Quit () |
| 22:06:12 | | Watusimoto has joined |
| 22:16:22 | | koda has joined |
| 22:25:05 | | sam686 has left |
| 22:30:55 | | koda Quit (Ping timeout: 265 seconds) |
| 22:36:58 | | koda has joined |