Timestamps are in GMT/BST.
| 00:14:24 | | Nothing_Much has joined |
| 01:22:27 | | Lamp89 Quit (Remote host closed the connection) |
| 01:34:03 | | Lamp89 has joined |
| 02:07:14 | | Watusimoto has joined |
| 02:21:11 | | Lamp89 Quit (Read error: Connection reset by peer) |
| 02:21:38 | | Lamp89 has joined |
| 03:09:36 | | Lamp89 Quit () |
| 04:13:56 | | Skybax has joined |
| 04:30:59 | | Skybax Quit (Ping timeout: 240 seconds) |
| 05:46:02 | | Watusimoto Quit (Ping timeout: 264 seconds) |
| 06:33:20 | | Nothing_Much Quit (Quit: Leaving) |
| 07:48:42 | | Flynnn Quit (Quit: This computer has gone to sleep) |
| 08:39:56 | | koda has joined |
| 09:04:45 | | Nothing_Much has joined |
| 09:54:38 | | Nothing_Much Quit (Remote host closed the connection) |
| 11:25:42 | | empyrean has joined |
| 12:22:40 | | Watusimoto has joined |
| 12:43:53 | | Watusimoto Quit (Ping timeout: 256 seconds) |
| 13:35:23 | | watusimoto has joined |
| 13:35:23 | | ChanServ sets mode +o |
| 13:46:11 | | raptor has joined |
| 13:46:11 | | ChanServ sets mode +o |
| 13:47:11 | raptor | man, that was a hard exam |
| 14:27:46 | | Lamp89 has joined |
| 14:27:46 | | Lamp89 Quit (Changing host) |
| 14:27:46 | | Lamp89 has joined |
| 15:12:34 | | koda Quit (Ping timeout: 264 seconds) |
| 16:21:57 | | Lamp89 Quit (Read error: Connection reset by peer) |
| 16:22:23 | | Lamp89 has joined |
| 16:55:08 | | Lamp89 Quit (Read error: Connection reset by peer) |
| 16:55:34 | | Lamp89 has joined |
| 16:55:34 | | Lamp89 Quit (Changing host) |
| 16:55:34 | | Lamp89 has joined |
| 16:56:51 | | Nothing_Much has joined |
| 17:23:49 | | Lamp89 Quit (Read error: Connection reset by peer) |
| 17:24:15 | | Lamp89 has joined |
| 17:26:55 | | Flynnn has joined |
| 17:46:57 | | koda has joined |
| 18:08:28 | | Lamp89 Quit (Read error: Connection reset by peer) |
| 18:08:42 | | Skybax has joined |
| 18:08:54 | | Lamp89 has joined |
| 18:08:54 | | Lamp89 Quit (Changing host) |
| 18:08:54 | | Lamp89 has joined |
| 18:11:55 | | Lamp89 Quit (Read error: Connection reset by peer) |
| 18:12:10 | watusimoto | hey, raptor... what are you doing here? :-) |
| 18:12:14 | Skybax | Hello peoples |
| 18:12:19 | watusimoto | hi Skybax |
| 18:12:22 | | Lamp89 has joined |
| 18:12:33 | Skybax | What's new on the Bitfront |
| 18:12:47 | watusimoto | I've been working on unglamorous stuff |
| 18:12:56 | watusimoto | fixing memory leaks |
| 18:12:59 | watusimoto | yay! |
| 18:13:02 | watusimoto | (not) |
| 18:13:14 | Skybax | Well at least now we can all remember to play more often |
| 18:13:27 | watusimoto | I met a girl last night who did a report for her journalism class on Bitfighter |
| 18:13:38 | Skybax | Did she get an A+? |
| 18:13:45 | watusimoto | Double A+ |
| 18:13:58 | Skybax | Awesome+ |
| 18:14:03 | watusimoto | It turns out she was partnered with my son... which explains it |
| 18:14:28 | Skybax | Yeah that makes sense lol |
| 18:25:27 | | Skybax Quit (Read error: Connection reset by peer) |
| 18:34:21 | raptor | hi watusimoto |
| 18:34:28 | raptor | i'm reviewing your memory leak fix |
| 18:34:48 | raptor | i have one more final tomorrow, then i start a new double-paced term on Monday! |
| 18:35:12 | watusimoto | double paced! awesome! |
| 18:35:19 | watusimoto | I do have a BF question for you |
| 18:35:34 | raptor | sems like we've had a LuaObject class before... |
| 18:36:08 | watusimoto | currently, my memory leak work has been focused on registering objects when they are created by lua; unregestering them when they are "addedToGame" or whatever; deleting any remaining objects when the script ends |
| 18:36:19 | watusimoto | this works great in the editor, when script lifetime is well regulated |
| 18:36:40 | watusimoto | run a plugin... script runs, finishes, gets cleaned up, all is good |
| 18:37:02 | watusimoto | in-game it's a bit messier... you've got robots and levelgens that linger around for a long time |
| 18:37:12 | watusimoto | solution is to clean everything up when the game ends |
| 18:37:16 | watusimoto | that seems to work |
| 18:37:26 | watusimoto | the final situation is the messiest: console scripts |
| 18:37:34 | watusimoto | right now you can do x = TestItem.new() |
| 18:37:46 | raptor | ok, i was wondering about that - if there was clean-up in the interim of a game or just at the end |
| 18:37:51 | watusimoto | then quit the editor, play a game, then come back to the editor, and your x variable is still there |
| 18:38:19 | watusimoto | so I'm thinking that with console scripts, there is no cleanup, because you never really know when the script is "finished" |
| 18:38:38 | raptor | i didn't know we ran console scripts |
| 18:38:46 | raptor | just editor/levelgen |
| 18:38:51 | watusimoto | well, you can type lua comands at the console prompt |
| 18:38:55 | raptor | ah ok |
| 18:39:16 | watusimoto | x= TestItem.new(); x.AddToGame() -- or whatever |
| 18:39:25 | watusimoto | that will add an item to the editor |
| 18:39:29 | raptor | ok, yes |
| 18:39:34 | watusimoto | actually it won't, but somehting similar to that will |
| 18:39:46 | raptor | yes :) |
| 18:39:50 | watusimoto | you could define x, then go play for an hour, and come back and add it to the editor |
| 18:40:04 | watusimoto | I guess that's just the nature of the console |
| 18:40:23 | watusimoto | I suppose it's not really a leak, strictly speaking |
| 18:40:44 | raptor | yeah - also the leak would happen so slowly if done by hand that the memory would be negligible |
| 18:40:56 | watusimoto | unless you... wrote a loop! |
| 18:41:01 | raptor | unless someone wrote a function in the console... yes |
| 18:41:05 | watusimoto | or that |
| 18:41:29 | watusimoto | but even if the console were java, with no possibility of leaking, the problem would be the same |
| 18:41:40 | watusimoto | because the console never ends |
| 18:41:50 | watusimoto | we could, I suppose, clean it up when you quit the editor |
| 18:42:04 | watusimoto | actually, there is one other problem |
| 18:42:43 | watusimoto | we only register objects in one place -- so if you create an object in the console, then play a game, then come back to the console, your x will still be available, but it will point to a deleted object |
| 18:42:50 | watusimoto | the game will probably crash |
| 18:43:03 | watusimoto | (if you try to use it) |
| 18:43:15 | watusimoto | that's because we only have a single object list |
| 18:43:38 | watusimoto | and when adding items to that list, there is no way to tell if you are coming from a console or script or whatever |
| 18:43:47 | watusimoto | they all just "come from lua" |
| 18:44:21 | raptor | ah |
| 18:44:26 | watusimoto | which I'm not sure how to resolve |
| 18:44:55 | raptor | ah there it is in servergame (I was looking at where you clean up the objects) |
| 18:44:58 | watusimoto | if we had continued with different L instances for each script, we'd be able to tell which was which |
| 18:45:21 | watusimoto | maybe there is some variable within the L that would specify what is running |
| 18:45:25 | raptor | we could destroy the console when loading a new level |
| 18:45:50 | watusimoto | well.... we have the same problem when we run a plugin |
| 18:45:54 | raptor | wait, but we want to rewrite the console any ways |
| 18:46:10 | watusimoto | yes, but this problem will remain with any console |
| 18:46:42 | watusimoto | we basically need to not register obejcts when created in the console, and I don't know how to determine that |
| 18:47:07 | raptor | ah sorry, i was talking about the first issue - not the conole-play-game-back-to-console-deleted-pointer problem |
| 18:47:26 | raptor | there is one solution - not let the console create objects |
| 18:47:36 | watusimoto | yes -- get rid of console scripting |
| 18:48:00 | raptor | looking at other games - consoles seem to do client side stuff only |
| 18:48:02 | watusimoto | I'll need to see if I can get any info out of the L instance about what is going on |
| 18:48:14 | watusimoto | creating stuff in the editor is client side only |
| 18:48:16 | | Skybax has joined |
| 18:49:02 | watusimoto | I'll bet console-editor plugin-back-to-console-deleted-pointer will crash |
| 18:49:14 | raptor | i have one other suggestion for the tracker system - call eraseAllPotentiallyUntrackedObjects() on a timer while the game is running |
| 18:49:41 | watusimoto | that could create a problem if a script tracks objects across timer boundaries |
| 18:49:51 | raptor | yeah, i bet it would... safeptr and if detected, remove it from the list |
| 18:50:19 | Lamp89 | oh wow there's been a discussion |
| 18:50:20 | raptor | i can't think of a use case where a script would want to create an object, say 5 seconds after calling .new() |
| 18:50:27 | Lamp89 | *there is |
| 18:50:41 | watusimoto | I can't either, unless the programmer was a doofus |
| 18:50:42 | raptor | sorry, :addtogame() |
| 18:50:46 | raptor | exactly! |
| 18:50:57 | watusimoto | but still... I'd rather lose the memory for a bit than risk a crash |
| 18:51:16 | raptor | so... a friendly warning - "you tried to add an object waaaay too late. what on earth are you doing??" |
| 18:51:20 | watusimoto | because if the programmer is doing it right, there will ne no leaks to clean up |
| 18:51:38 | watusimoto | once the obj is added to the game, it will be handled by C++ |
| 18:51:58 | watusimoto | we're only talking about objects that are created but never handed over |
| 18:52:14 | raptor | so.. this also brings up the idea of loop protection - if someone creates a 1000000 objects in a loop in a single tick(), that should be cut and cleaned up |
| 18:52:17 | watusimoto | so the whole thing is somewhat theoretical |
| 18:52:29 | watusimoto | yeah, then there's taht |
| 18:52:33 | raptor | yes, true |
| 18:52:57 | watusimoto | I don;t know how to protect against DOS scripts |
| 18:53:06 | watusimoto | there are ways, I'm sure |
| 18:53:10 | raptor | so maybe the level clean-up at the end is OK - unless someone writes another DND-like level with massive issues |
| 18:53:31 | watusimoto | as long as the objects get passed to C++, we're ok from the leak POV |
| 18:53:36 | raptor | yes - i think kaen or sam686 even found a technique for Lua somewhere |
| 18:53:40 | watusimoto | even if the script goes bezerk for other reasons |
| 18:54:15 | watusimoto | I mean you could just add an asteroid eery tick... no DOS script would protect against that, and the game would still crash |
| 18:54:42 | watusimoto | or get so slow you wish it would crash |
| 18:54:49 | raptor | yes, i suppose we can't foolproof fools |
| 18:55:05 | watusimoto | I mainly want to close out tickets in the bug tracker :-) |
| 18:55:08 | raptor | uhh.. that was not a disparaging remark about level designers... |
| 18:55:36 | watusimoto | so I think my answer is to try to find a way not to track objects created in the console |
| 18:55:38 | raptor | that's a legitimate motivation! |
| 18:56:05 | watusimoto | since we'd never clean them up in any event, because we don't knwo when the console "ends" |
| 18:56:45 | watusimoto | so I need to see how I can tell what's going on inside the "L" |
| 18:57:11 | watusimoto | which, frankly, scares me |
| 18:57:19 | raptor | i'm sure there's a way - but it'll be scary |
| 19:34:01 | Skybax | https://www.google.com/search?q=mr+l&safe=off&espv=2&biw=1733&bih=901&source=lnms&tbm=isch&sa=X&ei=uwOCVaKvC8jooATf8JzgAQ&ved=0CAYQ_AUoAQ&dpr=1 |
| 19:35:39 | raptor | it's skinny, green mario! |
| 19:36:04 | Skybax | It's M L |
| 19:36:07 | Skybax | Mr. L |
| 19:47:08 | Lamp89 | Flynnn |
| 19:48:11 | Lamp89 | how do I get flynn |
| 20:05:08 | raptor | just typing his name should alert him, if he's paying attention |
| 20:13:01 | | Flynnn Quit (Quit: This computer has gone to sleep) |
| 20:57:21 | Lamp89 | I've been typing his name thousands of times for weeks, I still can't get him |
| 21:07:05 | | Nothing_Much Quit (Quit: Leaving) |
| 21:32:04 | | Nothing_Much has joined |
| 21:35:14 | Lamp89 | hai |
| 21:47:56 | | Nothing_Much Quit (Quit: Leaving) |
| 21:48:11 | | Flynnn has joined |
| 21:50:04 | | empyrean Quit (Remote host closed the connection) |
| 21:50:41 | watusimoto | hey yo Flynnn... Lamp89 wants to chat! |
| 21:50:48 | Lamp89 | Flynnn |
| 21:50:58 | raptor | what who? |
| 21:51:10 | watusimoto | where when? |
| 21:51:16 | watusimoto | and why???? oh why???? |
| 21:51:20 | Lamp89 | I think Flynnn just has his client running with his computer or something like that so most of the time he is not actually there |
| 21:51:30 | raptor | is the windows upgrader really completely broke? |
| 21:51:43 | watusimoto | is that a q for me? |
| 21:51:49 | raptor | yes |
| 21:51:51 | raptor | sorry |
| 21:51:56 | raptor | i'm perusing the issues list |
| 21:52:02 | watusimoto | the part that closes the running instance is totally broken |
| 21:52:09 | watusimoto | other than that it works ok |
| 21:52:16 | raptor | ah ok |
| 21:52:57 | raptor | i wonder if there is some cross-platform way to do self-contained game updates, which could work for osx, windows, and linux standalone |
| 21:53:26 | raptor | oh... i remember a question i had for you |
| 21:53:50 | raptor | this is a nice mind-numbing refactor i'd like to do (once you're done tinkering with Lua): https://code.google.com/p/bitfighter/issues/detail?id=314 |
| 21:54:40 | watusimoto | that would be great |
| 21:54:44 | raptor | basically instead of c++ bitfighter methods like lua_getFlagCount, or whatever, we'd rename it to something like: luaBF_getFlagCount |
| 21:54:56 | watusimoto | I'm basically not tinkering with anything that would conflict with that |
| 21:54:56 | raptor | the question is - what should the new prefix be? |
| 21:55:30 | raptor | it could be none: luaGetFlagCount |
| 21:55:35 | watusimoto | I thought the case was get rid of the _ |
| 21:55:40 | watusimoto | so what you wrote |
| 21:55:45 | watusimoto | luaGetFlagCount |
| 21:56:01 | raptor | ah ok, yeah, i guess i interpreted it as just: something different |
| 21:56:07 | watusimoto | >>> I propose renaming Bitfighter lua API methods to luaFoo rather than lua_foo. |
| 21:56:30 | raptor | is that proposal ok, then? |
| 21:56:36 | raptor | or can we do better! |
| 21:56:50 | watusimoto | I don't really understand the purpose of the case... but maybe it's good? |
| 21:56:56 | raptor | luaCPlusPlusBitfighter_getFlagCount |
| 21:57:10 | Lamp89 | https://www.youtube.com/watch?v=CBBvXth-O_g |
| 21:57:11 | watusimoto | you can make that a tad longer, I think |
| 21:57:21 | watusimoto | why does everything have to be so short??? |
| 21:57:42 | raptor | the purpose is because it messes up method completion in IDEs, and there may be a possible collision with future Lua methods since they've standardized on lua_ |
| 21:58:16 | watusimoto | yeah, that's what the case says :-) |
| 21:58:45 | watusimoto | is it the _ that interferes with the ide? |
| 21:59:00 | watusimoto | I like the current system because it is clear that these methods are somehow "other" |
| 22:00:18 | raptor | it's that when you want a lua_ method from the lua API, it's bundled with all the BF ones, too |
| 22:00:31 | raptor | if you haven't seen this: http://discuss.joelonsoftware.com/default.asp?joel.3.219431.12 |
| 22:00:43 | raptor | maybe i shared that already (about long names) |
| 22:01:39 | raptor | wait, maybe that wasn't the one i was thinking about... but that's funny anyways, and describes some of my JavaEE experience quite well |
| 22:01:45 | watusimoto | ok, fine, the proposal is ok |
| 22:01:49 | watusimoto | I have to run |
| 22:01:53 | watusimoto | back on later |
| 22:01:56 | raptor | later! |
| 22:01:59 | watusimoto | good luck with your test tomorrow!!! |
| 22:02:06 | raptor | yay linear algebra! |
| 22:02:08 | raptor | thanks! |
| 22:02:22 | watusimoto | Lamp89: good luck finding Flynnn!!! |
| 22:02:41 | | watusimoto Quit (Quit: Leaving.) |
| 22:08:56 | | Flynnn Quit (Quit: This computer has gone to sleep) |
| 22:11:08 | | empyrean has joined |
| 22:53:53 | | koda Quit (Quit: koda) |
| 23:02:02 | | Lamp89 Quit (Read error: Connection reset by peer) |
| 23:02:28 | | Lamp89 has joined |
| 23:13:05 | | Nothing_Much has joined |
| 23:18:50 | Lamp89 | hai Nothing_Much |
| 23:18:55 | Nothing_Much | Howdy |
| 23:47:12 | | Lamp89 Quit (Read error: Connection reset by peer) |
| 23:47:48 | | Lamp89 has joined |
| 23:55:52 | | Lamp89 Quit (Remote host closed the connection) |