Timestamps are in GMT/BST.
| 00:14:46 | | kodaws has joined |
| 01:05:24 | | Little_Apple has joined |
| 01:05:28 | Little_Apple | helloo |
| 01:05:34 | sam686 | hi |
| 01:52:50 | Little_Apple | how much do you know about lua? |
| 02:10:33 | Little_Apple | hurbey durrrr |
| 02:14:54 | Little_Apple | ._. |
| 02:20:35 | sam686 | I know more about c++ then lua |
| 02:21:01 | Little_Apple | ok. ever use love 2d? |
| 02:23:19 | sam686 | no.. |
| 02:23:45 | Little_Apple | okayyy then |
| 02:35:20 | sam686 | there is lots of players this minute.. |
| 02:35:48 | Little_Apple | yup |
| 02:36:06 | Little_Apple | the only reason im not on is because the version i have crashes |
| 02:42:37 | sam686 | I don't think you ever said it crashes before, but again, I don't have any apple mac stuff.. |
| 02:43:08 | Little_Apple | ive talked to raptor about it before |
| 02:43:15 | Little_Apple | at least im pretty sure i have |
| 02:44:21 | sam686 | are you using PowerPC mac or intel? |
| 02:49:17 | Little_Apple | intel |
| 02:49:24 | Little_Apple | ppc is fine |
| 02:51:21 | sam686 | you can try downloading 64-bit bitfighter, and 32,bit bitfighter, see which one works... |
| 02:51:35 | sam686 | you could also try something called "Wine" to run window's exe file on intel mac, if that works.. |
| 02:52:47 | Little_Apple | yea i have wine |
| 02:52:53 | Little_Apple | i think ive done that before |
| 02:53:28 | sam686 | can use http://sam6.25u.com/upload/Bitfighter-017B.zip if you don't like windows installer.. |
| 03:16:57 | | Little_Apple Quit (Quit: Page closed) |
| 03:32:56 | kodaws | why don't they stay in channel |
| 03:33:01 | kodaws | that is beyond me |
| 03:33:11 | kodaws | i could have helped somehow if he waited.... |
| 03:37:32 | | raptor has joined |
| 03:37:32 | | ChanServ sets mode +o raptor |
| 03:38:06 | raptor | hello hello |
| 03:39:24 | raptor | sam686: did i break something? |
| 03:40:06 | sam686 | break what> |
| 03:40:21 | raptor | if you host a game, then change a level, does it trigger an assert? |
| 03:42:50 | raptor | actually, i'm triggering an assert while not hosting... |
| 03:45:03 | sam686 | that might be not your changes, i am guessing (i am still compiling) |
| 03:45:10 | raptor | it isn't my changes... |
| 03:45:58 | raptor | but i don't understand the trace: http://pastie.org/5039279 |
| 03:47:01 | sam686 | time to replace TNLAssert with TNLAssertV(a,"%s", "some_variable_string) or similar... |
| 03:47:28 | raptor | you mean like with va_list |
| 03:52:31 | raptor | hmmm, maybe it is my fault... |
| 03:57:47 | | BFLogBot Commit: 9cd3068fa205 | Author: sam8641 | Message: More detailed "event direction wrong" error, show which one caused it. |
| 03:57:55 | raptor | ha!, i just did that... |
| 03:58:02 | raptor | you beat me... |
| 03:58:40 | raptor | yup, it's my fault |
| 03:58:42 | raptor | i fix |
| 03:59:14 | sam686 | parhaps... it chould be TNLAssert checked when transmitting too.. |
| 03:59:30 | sam686 | can produce better backtrace that way |
| 04:00:35 | raptor | it's my fault! |
| 04:00:46 | raptor | argh |
| 04:00:49 | raptor | i knew it! |
| 04:07:43 | | BFLogBot Commit: 04ab7a13c400 | Author: buckyballreaction | Message: Fix RPC direction bug with undelay spawn |
| 04:12:51 | sam686 | you can call c2sBlahBhah_remote from a c2s if you add _remote in your callinng function name |
| 04:15:40 | raptor | i did not know that.. |
| 04:15:49 | sam686 | I really did use c2s_remote from c2s in GameConnection::s2rSendDataParts to trigger a level change immediately after upload... |
| 04:21:58 | raptor | ok, there is another bug |
| 04:22:02 | raptor | i introduced |
| 04:23:00 | raptor | type in /next |
| 04:23:03 | raptor | in a level |
| 04:24:39 | raptor | notice anything? |
| 04:25:09 | | BFLogBot Commit: 525023b6b0d1 | Author: sam8641 | Message: Add TNLAssertV wrong direction while sending, helps seeing what caused it on stack trace. |
| 04:26:04 | sam686 | evil recompile everything just because you changed a .h file... |
| 04:26:12 | raptor | :( |
| 04:27:26 | sam686 | I lagged out the moment I did /next |
| 04:28:08 | raptor | oops, sorry i had a break point |
| 04:28:13 | raptor | ok i continued |
| 04:28:54 | sam686 | I can't start bitfighter.exe while compiler in linking mode.. |
| 04:29:16 | sam686 | ok, its done linking, i can start |
| 04:31:02 | sam686 | My levelgen seems broken... |
| 04:31:16 | raptor | yeah, watusimoto broke them... |
| 04:31:21 | raptor | mazeracer is broke, too |
| 04:32:10 | sam686 | another problem, it keeps asserting when joining your server.. |
| 04:32:25 | sam686 | trying to send GameConnection stuff when not joined yet? |
| 04:32:50 | raptor | uh, it shouldn't... |
| 04:33:46 | sam686 | there can be GameConnection, but not connected to server yet... |
| 04:36:51 | raptor | i can't duplicate... |
| 04:36:56 | raptor | maybe i need to be remote? |
| 04:44:18 | | BFLogBot Commit: 173ebe10469d | Author: sam8641 | Message: Adjust TNLAssert, and activate first then setConnectionToServer |
| 04:46:39 | raptor | sam686: was that a new bug i introduced? |
| 04:47:02 | sam686 | probably not, but rather a small problem with my Asserts.. |
| 04:47:09 | raptor | ah |
| 04:47:40 | sam686 | when not connected, then isConnectionToServer() and isConnectionToClient() is both false, i think.. |
| 04:55:04 | raptor | ok, so now do /next in a server |
| 04:55:33 | raptor | and you'll see my problem - i'm not sure what to do |
| 04:57:32 | raptor | it's because the command forces the spawn delay (from my recent changes) but then it spawns another ship |
| 04:58:16 | sam686 | double spawning? |
| 04:58:22 | raptor | yes |
| 04:58:35 | raptor | i need it to not force a spawn delay when changing levels.... |
| 05:05:06 | raptor | or maybe commands don't make you busy? |
| 05:09:14 | sam686 | go host, then let me join / restart level |
| 05:15:25 | | kodaws Quit (Ping timeout: 245 seconds) |
| 05:21:18 | raptor | i had to quit... |
| 05:21:49 | sam686 | restart level is kindof make you stuck now.. |
| 05:26:53 | | BFLogBot Commit: 3c4db8ef6143 | Author: buckyballreaction | Message: Fix multiple ships being created if undelaySpawn() was called more than once... |
| 05:30:50 | raptor | sam686: i need to sleep - i'll look closer at the problem tomorrow |
| 05:31:25 | raptor | have a good night |
| 05:38:47 | | raptor Quit () |
| 06:10:39 | | kodaws has joined |
| 06:51:40 | | sam686 Quit (Ping timeout: 245 seconds) |
| 07:49:43 | | watusimoto has joined |
| 07:49:43 | | ChanServ sets mode +o watusimoto |
| 09:45:29 | | kodaws Quit (Ping timeout: 246 seconds) |
| 10:00:12 | | kodaws has joined |
| 12:08:05 | | kodaws Quit (Read error: Connection reset by peer) |
| 12:31:01 | | CrazyLinuxNerd has joined |
| 12:51:28 | | CrazyLinuxNerd Quit (Quit: Leaving.) |
| 14:56:08 | | raptor has joined |
| 14:56:08 | | ChanServ sets mode +o raptor |
| 14:56:38 | raptor | buenos |
| 15:10:02 | watusimoto | hi |
| 15:10:06 | raptor | hi |
| 15:10:09 | raptor | i broke something |
| 15:10:18 | watusimoto | excellent! what? |
| 15:10:27 | raptor | with the going-busy-enable-spawn-delay |
| 15:10:56 | watusimoto | but you just fixed that! |
| 15:10:58 | raptor | the problem: any action done while busy that requires a spawn, is messed up |
| 15:11:12 | watusimoto | ??? |
| 15:11:18 | raptor | so changing levels (/next /prev, etc.), /idle, changing teams |
| 15:11:21 | raptor | because |
| 15:11:31 | watusimoto | ah |
| 15:11:32 | watusimoto | I see |
| 15:11:41 | raptor | opening a command, or pressing escape, make you go busy... which enables spawn delay |
| 15:11:46 | watusimoto | /next spawns you |
| 15:11:51 | watusimoto | but you are in a menu |
| 15:11:55 | raptor | yes |
| 15:11:55 | watusimoto | so you can't spawn |
| 15:12:06 | watusimoto | interesting |
| 15:12:11 | raptor | i'm not sure how to fix... |
| 15:12:19 | raptor | i had an idea in my sleep - but it didn't turn out |
| 15:12:34 | watusimoto | not sure how programatically or not sure what _should_ happen |
| 15:12:37 | watusimoto | ? |
| 15:12:48 | raptor | one hack is to reset the spawn delay timer on every possible action that calls a spawn while busy |
| 15:12:58 | raptor | programatically |
| 15:12:59 | watusimoto | well let's start with what should happen |
| 15:13:08 | raptor | ok case: |
| 15:13:10 | watusimoto | if you do /next, should you spawn immediately? |
| 15:13:14 | raptor | you do /next |
| 15:13:31 | raptor | it sets you as 'busy', forces the spawn delay timer to run out |
| 15:13:37 | raptor | resets level |
| 15:13:49 | raptor | tries to spawn you but finds you are delayed |
| 15:13:50 | watusimoto | sets you as busy because you are typing /next |
| 15:14:11 | raptor | it's sort of a race condition.. |
| 15:14:14 | watusimoto | ok |
| 15:14:20 | watusimoto | so sequence of events that we want is this: |
| 15:14:33 | watusimoto | start typing /next, you are now marked as delayed |
| 15:14:40 | watusimoto | finish typing /next, level advances |
| 15:14:43 | watusimoto | all players spawn |
| 15:14:49 | watusimoto | including you |
| 15:14:51 | raptor | yes |
| 15:14:52 | watusimoto | menu exits |
| 15:14:56 | watusimoto | start playing |
| 15:15:12 | watusimoto | ok, so that case is clear |
| 15:15:19 | watusimoto | are there any cases that are unclear? |
| 15:15:31 | watusimoto | or is this purely a matter of making sure you can spawn in cases like /next |
| 15:15:55 | raptor | the problem is that the method that sets you as busy c2sSetIsBusy |
| 15:16:04 | raptor | when you press <enter> after /next |
| 15:16:09 | raptor | it unsets you as busy, too |
| 15:16:13 | watusimoto | if you and I are playing, and we are both delayed (you because you are chatting, me because I am /nexting) |
| 15:16:18 | watusimoto | and I do the /next |
| 15:16:24 | watusimoto | only I should spawn, right? |
| 15:16:31 | raptor | correct |
| 15:16:39 | raptor | and that's ok |
| 15:17:00 | watusimoto | so when you do /next, why not set the /nexting player as unbusy? |
| 15:17:12 | raptor | that is exactly my hack |
| 15:17:15 | watusimoto | before anything else happens |
| 15:17:22 | raptor | we find all the methods that call a spawn |
| 15:17:28 | raptor | and set un-busy |
| 15:17:33 | watusimoto | and why does that fail? (or is this your idea to fix?) |
| 15:17:56 | watusimoto | finding all methods that spawn is a bit of a hack |
| 15:18:01 | raptor | it seems like a hack - we'd have to apply it to any method that does a spawn |
| 15:18:04 | raptor | yes^^ |
| 15:18:25 | watusimoto | however, all /cmds could set you as unbusy, regardless of whether they spawn or not, right? |
| 15:18:40 | watusimoto | (I know that's not the whole problem) |
| 15:18:45 | raptor | right, but what about menu -> switch teams |
| 15:18:49 | watusimoto | right |
| 15:18:50 | raptor | yeah |
| 15:18:59 | watusimoto | so one class of problems (the /cmds) is easy |
| 15:19:02 | watusimoto | for menus |
| 15:19:28 | watusimoto | how does the server know if a menu command should spawn you? |
| 15:19:41 | watusimoto | server doesn't really know |
| 15:19:46 | watusimoto | and probably shouldn't |
| 15:19:48 | raptor | there is a handler in UIGame-> calls some c2s |
| 15:20:05 | raptor | and that c2s may or may not include respawning |
| 15:20:33 | watusimoto | and actually, we shouldn't preclude /cmds that might open a menu and not instantly return you to field of play |
| 15:20:49 | raptor | yep |
| 15:21:13 | raptor | that's why i'm trying to find a nice elegant solution server-side.. |
| 15:21:19 | raptor | too many possibilities |
| 15:21:25 | watusimoto | yes |
| 15:21:52 | watusimoto | what if the c2s suggested immediate respawn for caller? |
| 15:22:00 | watusimoto | is that what you were suggesting earlier? |
| 15:22:14 | raptor | that is the hacky way... essentially |
| 15:22:31 | watusimoto | because you need to identify this c2s but not that one |
| 15:22:37 | raptor | we hunt all the c2s down and force the user to not be busy when they are called |
| 15:22:44 | watusimoto | right |
| 15:22:47 | watusimoto | ok, that's lame |
| 15:22:58 | raptor | may i just need to let my mind stew on it a bit.. |
| 15:23:13 | watusimoto | ok, let's look at this in the opposite way |
| 15:23:27 | watusimoto | what are the conditions in which we *don't* want the player to respawn if they are delayed |
| 15:23:29 | watusimoto | ? |
| 15:24:01 | raptor | when they are still in a menu or chatting/command input |
| 15:24:04 | watusimoto | this gets hairy too |
| 15:24:26 | watusimoto | let's say there were a menu cmd that restarted the level, but didn't immediately return you to the game |
| 15:24:53 | watusimoto | in that case, would you respawn? or only when you finally exited the menu? |
| 15:24:59 | watusimoto | well, what about this? |
| 15:25:15 | watusimoto | player starts typing /next and gets delayed |
| 15:25:29 | watusimoto | level restarts, /nexting player is still delayed, doesn't spawn |
| 15:26:08 | watusimoto | then /nexting player exits menu, client sends the "c2sNotBusyAnymore" to server |
| 15:26:27 | watusimoto | server undelays spawn, spawns formerly /nexting player |
| 15:26:50 | raptor | that's what it already does... sort of |
| 15:27:01 | watusimoto | ok, and clearly this dosn't work for some reason |
| 15:27:04 | watusimoto | why not? |
| 15:27:10 | raptor | so |
| 15:27:35 | raptor | that means that any player that does /next is spawn delayed by default... and we leave it at that? |
| 15:27:53 | watusimoto | but they are instantly undelayed as soon as the cmd is entered |
| 15:28:01 | raptor | yup |
| 15:28:08 | watusimoto | because the client tells server "ok, ready to spawn" |
| 15:28:14 | watusimoto | and server spawn |
| 15:28:15 | watusimoto | s |
| 15:28:26 | watusimoto | in effect, they might be delayed by 100ms |
| 15:28:33 | watusimoto | while those messages are exchanged |
| 15:29:09 | raptor | that where i was at last night... let me see why i didn't like it again (maybe it was just a flow interruption) |
| 15:29:21 | watusimoto | yes, that is the key question, I think |
| 15:31:18 | watusimoto | now *if* that flow generally works, and there are some cmds like /next that that 100ms delay is uncool for some reason, we could, at our discretion, add an extra undelay command in the c2s. But we wouldn't need to hunt down and maintain every case because there would be an underlying mechanism that is good enough for the general case, even though we'd chosen to override it in a few specific cases. That doesn't seem too hacky :-) |
| 15:31:50 | watusimoto | that is such awful prose. |
| 15:36:03 | raptor | hmm... |
| 15:37:10 | raptor | the code is all different than I remember it from last night... this is why i shouldn't code when i'm tired |
| 15:37:21 | watusimoto | ha! |
| 15:37:29 | watusimoto | at least you weren't drinking! |
| 15:39:16 | raptor | sigh - what have i done... |
| 15:39:23 | raptor | i think i may have to restart from scratch... |
| 15:39:44 | watusimoto | really??? |
| 15:39:49 | raptor | ot |
| 15:39:57 | raptor | it's not behaving like i thought i coded it... |
| 15:40:03 | raptor | maybe something sam did... |
| 15:40:13 | raptor | let me sort this out for a while.. |
| 15:41:27 | watusimoto | ok, I'll just say this |
| 15:41:52 | watusimoto | I just tried it, and at least on my local server, where times are short, there seems to be only one easy fix needed to make it work |
| 15:42:15 | watusimoto | and that is if you are respawned by the server, the client should disable spawn delaying |
| 15:42:34 | watusimoto | because other than the faulty display of the delayed message, it seems to be working |
| 15:42:43 | raptor | yes, that's the thing... |
| 15:42:50 | watusimoto | or at least the part about spawning with /next is working |
| 15:42:58 | raptor | ok say that again? client refuses spawn delayed? |
| 15:43:06 | watusimoto | I type /next |
| 15:43:18 | watusimoto | I respawn, but I also see the "press any key" message |
| 15:43:23 | raptor | yes |
| 15:43:43 | watusimoto | ah, I see the race condition you alluded to |
| 15:43:49 | watusimoto | wait, no I don't |
| 15:43:54 | watusimoto | yes I do |
| 15:43:59 | watusimoto | do I? |
| 15:44:03 | raptor | :) isn't that the definition of a race condition? |
| 15:44:08 | watusimoto | probably |
| 15:44:10 | raptor | yes no yes no |
| 15:44:17 | watusimoto | endless loop --> see loop, endless |
| 15:45:31 | watusimoto | so what is happening? client says "I'm entering a cmd", and server sends out the "delayed" message to all clients (including us) |
| 15:46:06 | raptor | client becomes busy |
| 15:46:16 | watusimoto | we finish the /next cmd; server respawns us, client knows it's no longer delyed for local reasons, but server never sends undelay message? |
| 15:46:24 | raptor | server sets as busy, and maxes out the spawn delay timer |
| 15:46:47 | raptor | /next -> respawn, then the server gets the unbusy signal |
| 15:46:54 | raptor | from closing the command |
| 15:46:59 | watusimoto | yes |
| 15:47:12 | watusimoto | why does client still think its busy? |
| 15:47:16 | raptor | so getting the /next first, triggers the spawn delay |
| 15:47:51 | watusimoto | I don't understand this lsat line |
| 15:48:10 | raptor | the server gets the /next command first, before the unbusy command |
| 15:48:17 | watusimoto | yes |
| 15:48:24 | raptor | and tries to spawn the ship, but sees it is delayed |
| 15:48:28 | raptor | so puts up the message |
| 15:48:34 | watusimoto | ok |
| 15:49:03 | raptor | then it gets the unbusy command, and tries to undelay spawn, even though it's already spawned |
| 15:49:17 | watusimoto | and gets confused |
| 15:49:22 | raptor | yes |
| 15:49:35 | watusimoto | why does server spawn when it knows client is busy? |
| 15:49:50 | raptor | ah ha! |
| 15:49:55 | raptor | let me try something.. |
| 15:50:02 | watusimoto | standing by |
| 15:53:52 | raptor | if(clientInfo->isSpawnDelayed() && clientInfo->getConnection()->mIsBusy) |
| 15:53:53 | raptor | return false; |
| 15:53:58 | raptor | testing that in spawnShip |
| 15:54:20 | raptor | doesn't work |
| 15:54:30 | watusimoto | what's that supposed to do? |
| 15:55:12 | raptor | not spawn the ship if it is busy |
| 15:55:15 | raptor | but doesn't work |
| 15:55:19 | watusimoto | but it spawns anyway? |
| 15:55:25 | raptor | yep |
| 15:55:35 | watusimoto | why shouldn't that be ||? |
| 15:55:39 | watusimoto | why &&? |
| 15:58:30 | raptor | because that case was handled above it... |
| 15:58:44 | raptor | but nothing in the method is working anyways... |
| 15:58:59 | watusimoto | well, if either of those conditions is true, ship should not spawn, right? |
| 15:59:28 | raptor | correct, but if you notice, the ship isn't actually spawning yet... |
| 15:59:43 | watusimoto | ok, maybe I didn't notice that :-) |
| 16:00:35 | watusimoto | I'm going to have to look at the code tonight, I think |
| 16:00:45 | watusimoto | but I totally understand the problem |
| 16:00:58 | watusimoto | it's far more complex than I woul dhave guessed |
| 16:01:08 | raptor | sigh, ok |
| 16:01:17 | raptor | but i will honestly try to solve before you get to it.. :) |
| 16:01:45 | watusimoto | excellent! |
| 16:12:41 | raptor | huh... |
| 16:12:46 | raptor | i think i may have fixed it... |
| 16:14:11 | raptor | ok |
| 16:14:13 | raptor | so |
| 16:14:50 | raptor | it works with a caveat - any time you do an action that spawns the ship, it requires you to press a key to come out of spawn delay |
| 16:15:13 | watusimoto | wy? |
| 16:15:43 | raptor | because i removed the constraint to automatically undelay the spawn if you are set as unbusy |
| 16:15:51 | raptor | and that fixed all the weirdness |
| 16:16:00 | raptor | with that side effect |
| 16:16:28 | watusimoto | so before your fix, it would undelay spawn when you became unbusy? |
| 16:16:36 | watusimoto | and now this doesn't happen? |
| 16:16:46 | raptor | yes |
| 16:16:58 | raptor | i mean, correct |
| 16:17:11 | watusimoto | so now you become unbusy, but your spawn stays delayed until you explicitly undelay it? |
| 16:17:19 | watusimoto | by pressing a key? |
| 16:17:35 | raptor | yes, or moving the mouse |
| 16:17:39 | watusimoto | ok |
| 16:18:06 | raptor | which is highly likely it will occur |
| 16:18:11 | watusimoto | so can we have the client undelay you when you exit a menu or chat screen? |
| 16:18:19 | watusimoto | just as a matter of course? |
| 16:18:53 | raptor | oh... actually, i can do that again |
| 16:19:28 | raptor | so, it's important to make the distinction between spawn delay and actually respawning |
| 16:19:46 | watusimoto | could you restate that? |
| 16:19:55 | watusimoto | those seem like very different things |
| 16:20:10 | raptor | spawn delay = forcing the timer to maximum |
| 16:20:17 | raptor | undelay, reset the timer |
| 16:20:40 | watusimoto | the timer is the counter that tracks how long it's been since you last moved? |
| 16:20:43 | raptor | yes |
| 16:20:58 | watusimoto | and setting it to max means telling the game you haven't moved for years, so you are certainly delayed? |
| 16:21:03 | raptor | yes |
| 16:21:06 | watusimoto | ok |
| 16:21:07 | raptor | then you have to be killed |
| 16:21:11 | raptor | before |
| 16:21:37 | raptor | i was setting the timer to the max if you are busy; if unbusy, i was resetting the timer AND trying to respawn the ship |
| 16:21:54 | watusimoto | yeah, unbusy only means set timer to 0 |
| 16:21:59 | raptor | yes that |
| 16:22:04 | raptor | is what i changed it to... |
| 16:22:28 | watusimoto | if you need to spawn, game should see you are no longer delayed and respawn you as a matter of course (in idle or something) |
| 16:22:43 | raptor | yes |
| 16:22:46 | watusimoto | ok |
| 16:23:04 | watusimoto | so your problem was that you were trying to preempt the normal respawn mechansim my forcing an immediate respawn? |
| 16:23:26 | raptor | removing that second part of 'trying to respawn the ship' fixes race condition weirdness |
| 16:23:42 | watusimoto | ok, I think I understand |
| 16:23:48 | watusimoto | bottom line, it works now :-) |
| 16:23:48 | raptor | there was logic in there already to prevent spawning double, but it was calling some other methods that made things goofy.. |
| 16:23:57 | raptor | well |
| 16:24:02 | raptor | if you do /next |
| 16:24:06 | raptor | you are spawn delayed |
| 16:24:29 | watusimoto | ok, but the clietn can undelay you whenever you are done /cmding, no? |
| 16:24:42 | raptor | that's the part i removed |
| 16:25:14 | raptor | so no |
| 16:25:41 | watusimoto | imagine, say that when you finished with a chat cmd, a little timer waited .5 secs, and inserted a key into the buffer. That would fix the "press any key" issue, right? |
| 16:26:03 | raptor | actually... |
| 16:26:20 | raptor | yes, but there's the case of the menus, too |
| 16:26:23 | raptor | but actually... |
| 16:26:50 | raptor | i wonder if i introduced a slight delay to the delay; like don't max out the timer, but max it out minus 2 seconds |
| 16:27:05 | raptor | which is hacky, too |
| 16:27:17 | watusimoto | I don't understand that at all... but maybe I don't need to |
| 16:27:24 | watusimoto | because it sounds terrible! |
| 16:27:31 | raptor | so basically if you're busy |
| 16:27:38 | raptor | you are *almost* spawn delayed |
| 16:28:02 | raptor | still 2 seconds left to be spawndelayed on the timer |
| 16:28:13 | raptor | that way you can go to the next level without instantly being delayed |
| 16:28:41 | watusimoto | when you stop being busy (i.e. finish with the /next cmd), the cleint sends a "no longer busy" msg to server, right? |
| 16:29:12 | raptor | yes, and it did what i mentioned before: "if unbusy, i was resetting the timer AND trying to respawn the ship" |
| 16:29:26 | raptor | that second part had a race condition with spawning on a level |
| 16:29:27 | watusimoto | yes |
| 16:29:34 | raptor | so i removed it |
| 16:29:35 | watusimoto | but now you are just resetting the timer |
| 16:29:39 | raptor | yes |
| 16:29:57 | watusimoto | so I finish my /next cmd, the client sends a message to the server saying I am now unbusy |
| 16:30:05 | raptor | correct |
| 16:30:13 | watusimoto | the server gets that message, and sets the delay timer to 0 |
| 16:30:19 | watusimoto | a little time passes |
| 16:30:33 | raptor | yes, but it has already restarted the level and seen the maxxed out delay timer |
| 16:30:35 | raptor | by that time |
| 16:30:54 | watusimoto | the server is in its idle loop somewhere, looks over the list of ships to spawn, sees that I am waiting spawn, and am no longer delayed, and spawns me |
| 16:31:03 | watusimoto | so I spawn |
| 16:31:22 | raptor | it actually does that *before* the unbusy signal is sent |
| 16:32:00 | watusimoto | but at that point it is in the idle loop, sees that I am waiting spawn, but my timer is maxed out so it spawns everyone but me |
| 16:32:17 | raptor | yes |
| 16:32:17 | watusimoto | then I send my unbusy signal, my timer gets 0'ed, and the next idle loop I spawn |
| 16:32:36 | raptor | supposedly |
| 16:32:47 | raptor | but it gets mixed together for some reason |
| 16:33:20 | watusimoto | ok, well I'll see what's going on tonight. I'm fried from work stuff (debugging complex JS garbage), and this isn't helping :-) |
| 16:33:28 | raptor | yuk |
| 16:33:38 | raptor | i release you, then |
| 16:33:43 | watusimoto | :-) |
| 16:41:23 | watusimoto | just figured out a problem that's been dogging me for days... so good time to leave. |
| 16:41:24 | watusimoto | later |
| 16:42:07 | raptor | bye |
| 16:46:32 | | watusimoto Quit (Ping timeout: 246 seconds) |
| 17:38:11 | | Little_Apple has joined |
| 17:38:50 | Little_Apple | helloo |
| 17:39:08 | raptor | hi |
| 17:39:58 | Little_Apple | cooouuulllddd you possibly help me some with love 2d? |
| 17:40:10 | | BFLogBot Commit: ad094974c897 | Author: buckyballreaction | Message: Fix race condition between: - spawning called from a command or menu (like with changing teams or levels) AND - becoming un-busy (after exiting command or menu) and it undelaying spawn Sadly, I opted to go with command specific spawn delay resets. Seems to work in all test cases so far |
| 17:40:25 | raptor | maybe |
| 17:40:42 | raptor | coding help, or environment set-up help? |
| 17:40:49 | Little_Apple | i managed to make a "hello world" type thing |
| 17:41:06 | Little_Apple | more like… everything help. |
| 17:41:24 | raptor | oh good, so it runs |
| 17:41:39 | Little_Apple | yup |
| 17:41:56 | Little_Apple | well… sort of |
| 17:42:07 | Little_Apple | its just a .love file at the moment |
| 17:44:03 | raptor | ever thought about joining the IRC channel for love2d? |
| 17:44:12 | raptor | http://en.irc2go.com/webchat/?net=OFTC&room=love |
| 17:44:53 | Little_Apple | oh… that would probably be more productive than nagging you... |
| 17:44:55 | raptor | also forums for them... |
| 17:45:06 | raptor | and they would actually know things better :) |
| 17:45:09 | Little_Apple | yep :P |
| 17:53:58 | Little_Apple | eh…. time to waste some time animating. |
| 17:54:16 | raptor | patience in IRC... |
| 17:54:28 | raptor | but it helps to have other projects |
| 17:54:31 | raptor | while you wait |
| 17:54:41 | Little_Apple | ive never used the love 2d irc… its scaaarrryyyyyyy |
| 17:54:59 | raptor | it's just IRC |
| 17:55:18 | raptor | you could use the forums, too? |
| 17:55:36 | Little_Apple | forums are scarier. |
| 17:56:03 | raptor | loads of people playing!! |
| 17:56:44 | Little_Apple | oh wow |
| 17:56:45 | raptor | rats, it's passworded |
| 17:57:00 | Little_Apple | are they legit players? or just one person with multiple clients? |
| 17:57:09 | raptor | looks legit |
| 17:57:13 | raptor | probably a school LAN game |
| 17:57:16 | Little_Apple | yea |
| 17:57:16 | raptor | somewhere... |
| 17:57:35 | raptor | oh rats, they left |
| 17:57:57 | Little_Apple | yea… that happens a lot it seems |
| 17:58:43 | raptor | they have their own levels! |
| 17:58:51 | Little_Apple | nice |
| 17:58:57 | Little_Apple | oh boy! |
| 17:59:37 | Little_Apple | i drew a ridiculous duck |
| 17:59:46 | Little_Apple | i think its a duck... |
| 18:00:11 | raptor | Comp Sci & Tech class at a school in Ontario, Canada |
| 18:00:36 | Little_Apple | huh |
| 18:00:46 | Little_Apple | i wonder if opti has anything to do with it |
| 18:00:59 | raptor | midhurst, ontario |
| 18:01:06 | raptor | "Simcoe County District School Board" |
| 18:01:40 | Little_Apple | do they all have the same ip? |
| 18:01:59 | raptor | no, but that is where the server was |
| 18:03:48 | Little_Apple | ok |
| 18:04:20 | Little_Apple | how much ram would a normal dedicated server use? |
| 18:04:42 | raptor | depends on bots |
| 18:04:57 | raptor | but normally probably 5-15MB at most |
| 18:05:19 | raptor | with bots, it can fill up your RAM completely |
| 18:05:26 | raptor | BUT, as of 018, we fixed that |
| 18:05:42 | Little_Apple | so not much? |
| 18:05:50 | raptor | 5-15MB without bots |
| 18:05:55 | raptor | that's not much |
| 18:06:00 | raptor | nowadays |
| 18:06:04 | Little_Apple | so a raspberry pi should be able to handle it no problem |
| 18:08:56 | raptor | i'm sure |
| 18:09:42 | Little_Apple | yea cuz the rasp pi has about 256 mb of memory |
| 18:14:13 | raptor | i can probably emulate a rasp pi |
| 18:16:11 | Little_Apple | sweet |
| 19:19:55 | | Watusimoto has joined |
| 19:22:15 | | Little_Apple Quit (Quit: Page closed) |
| 19:35:25 | | LordDVG has joined |
| 19:44:15 | | LordDVG Quit (Remote host closed the connection) |
| 19:46:59 | raptor | Watusimoto: i found a fix... |
| 19:47:02 | raptor | see my last commit |
| 19:54:29 | Watusimoto | super |
| 19:55:15 | Watusimoto | so your solution is to have each command (e.g. /next) unset busy on the server? |
| 19:55:23 | Watusimoto | in the c2s? |
| 19:55:34 | raptor | yes but it only ended up in two places |
| 19:55:48 | Watusimoto | not too bad |
| 19:55:51 | raptor | one for cycling the level, one for team changing |
| 19:56:06 | raptor | it was the easiest solution with the best outcome |
| 19:56:14 | Watusimoto | hacky, but is probably the best solution in this situation |
| 19:56:28 | Watusimoto | and will probably give the smootheset UI |
| 19:56:32 | raptor | tried as i might to get the race condition solved (even trying RPCGuaraneedOrdered) |
| 19:56:37 | Watusimoto | ha |
| 19:56:43 | Watusimoto | now that is desperate! |
| 19:56:47 | raptor | i couldn't get it totally there |
| 19:56:57 | raptor | and this has the smoothest UI, yes |
| 19:57:10 | Watusimoto | probably completely transparent to the user |
| 19:57:18 | raptor | yup - you shoudl try :) |
| 19:57:34 | raptor | even /idle works nicely now |
| 19:58:36 | Watusimoto | will |
| 19:58:47 | Watusimoto | good! |
| 20:20:09 | raptor | i'm current'y trying to emulate a raspberry pi with qemu... |
| 20:20:23 | raptor | and then i'm going to try to put a bitfighter dedicated server on it... |
| 20:26:17 | Watusimoto | wow |
| 20:26:20 | Watusimoto | awesome! |
| 20:26:34 | Watusimoto | here's a editor plugin that *almost* works |
| 20:26:35 | Watusimoto | function main() |
| 20:26:35 | Watusimoto | local t = plugin:getSelectedObjects() |
| 20:26:35 | Watusimoto | for i, v in ipairs(t) do |
| 20:26:35 | Watusimoto | local g = v:getGeom() |
| 20:26:36 | Watusimoto | g = Geom.translate(g, 100, 0) |
| 20:26:38 | Watusimoto | v:setGeom(g) |
| 20:26:40 | Watusimoto | end |
| 20:26:42 | Watusimoto | end |
| 20:26:45 | Watusimoto | nudges selection to the right |
| 20:27:01 | raptor | is mazeracer broken for you? |
| 20:27:09 | Watusimoto | no, tested it last night |
| 20:27:17 | Watusimoto | you might need to copy scripts |
| 20:27:26 | raptor | because for both sam686 and I, it is broken and so is the editor plugin |
| 20:27:29 | raptor | scripts are copied |
| 20:27:36 | Watusimoto | really |
| 20:28:04 | Watusimoto | I'm playing it right now |
| 20:28:23 | raptor | oh wait |
| 20:28:27 | raptor | mazeracer is working... |
| 20:28:34 | Watusimoto | woohoo! just won! |
| 20:28:37 | raptor | editor plugin isn't |
| 20:28:45 | Watusimoto | no? |
| 20:28:49 | raptor | nope |
| 20:28:54 | raptor | ***PLUGIN ERROR*** Error encountered while attempting to run script's main() function: editor_plugins/draw_arcs.lua:45: attempt to index global 'levelgen' (a nil value). Aborting script |
| 20:29:41 | Watusimoto | same here |
| 20:29:46 | Watusimoto | easy, nay, trivial fix |
| 20:29:53 | raptor | haha, ok |
| 20:30:02 | Watusimoto | I changed the global "self" object from levelgen to plugin |
| 20:30:08 | raptor | ahhh |
| 20:30:12 | Watusimoto | so I probably just need to swap that out |
| 20:30:18 | Watusimoto | plugins inherited from levelgens |
| 20:30:26 | Watusimoto | though not sure they should anymore |
| 20:30:29 | Watusimoto | but they do |
| 20:30:37 | Watusimoto | and last night I changed that |
| 20:30:40 | Watusimoto | thanks for pointing it out |
| 20:30:50 | raptor | any time :) |
| 20:31:09 | Watusimoto | holy cow! |
| 20:31:15 | Watusimoto | that script uses gridsize! |
| 20:31:35 | raptor | yeah, just noticed that... |
| 20:31:58 | Watusimoto | I may also need to add a getGridsize method to plugin |
| 20:32:10 | Watusimoto | or set a global |
| 20:32:21 | Watusimoto | probably a global var makes more sense ?? |
| 20:32:29 | Watusimoto | which do you like better? |
| 20:32:38 | Watusimoto | g = plugin.getGridSize() |
| 20:32:39 | Watusimoto | or |
| 20:32:47 | Watusimoto | g = GRID_SIZE |
| 20:33:07 | Watusimoto | g = plugin:getGridSize() |
| 20:33:10 | Watusimoto | actually |
| 20:33:10 | raptor | uhh - that last one doesn't seem like something we've done before... |
| 20:33:22 | raptor | GRID_SIZE, i mean |
| 20:34:01 | Watusimoto | touche. levelgens have this: |
| 20:34:02 | Watusimoto | _GRID_SIZE |
| 20:34:07 | Watusimoto | that looks better! |
| 20:34:24 | raptor | ha |
| 20:35:18 | Watusimoto | I *think* a global would perform slightly better, though you could easily create your own in main)( |
| 20:36:22 | Watusimoto | for plugins it's a non-issue |
| 20:36:31 | Watusimoto | for levelgens it's a practically non-issue |
| 20:36:42 | Watusimoto | the performance difference, that is |
| 20:37:03 | Watusimoto | unless we have some hot and heavy levelgen monitoring script that runs every frame |
| 20:39:59 | raptor | i'll be back shortly... |
| 21:06:40 | Watusimoto | me too |
| 21:25:50 | raptor | back |
| 21:32:21 | raptor | cloning bitfighter into my raspberry pi VM.. |
| 21:36:25 | raptor | ok, here goes... building dedicated |
| 21:36:51 | raptor | it's going to take like 1/2 an hour... |
| 21:41:19 | raptor | TNL compiled! |
| 21:54:07 | Watusimoto | wow |
| 21:54:15 | Watusimoto | I once compiled bf for a linkstation |
| 21:54:26 | Watusimoto | I wanted to use it as a dedicated server |
| 21:54:32 | Watusimoto | ran waaaaay too slow, but it did work |
| 21:55:21 | raptor | a router? |
| 21:56:31 | Watusimoto | a hard disk |
| 21:56:42 | Watusimoto | old PPC NAS enclosure |
| 21:56:58 | raptor | wow |
| 21:57:07 | raptor | yeah all NAS's now are ARM |
| 21:57:17 | Watusimoto | I guess it wasn't waaaaay too slow, just way too slow |
| 21:57:22 | Watusimoto | or maybe just too slow |
| 21:57:59 | Watusimoto | I loaded it up with gentoo, and the thing would take days to recompile |
| 21:58:25 | raptor | haha |
| 21:58:27 | raptor | i remember gentoo |
| 21:58:36 | Watusimoto | it's all about the compile, baby |
| 21:58:45 | Watusimoto | heated my kitchen pretty well |
| 21:58:47 | raptor | every one serious about learning OSes should probably experience gentoo at least once... |
| 21:59:05 | raptor | haha, i've heard stories of people putting their laptops in the freezer for gentoo |
| 21:59:22 | Watusimoto | every one serious about pain should probably experience gentoo at least once... |
| 21:59:40 | Watusimoto | this box only drew 7W at idle so it wasn;t really that bad |
| 21:59:55 | Watusimoto | or maybe it was 13W... either way... |
| 22:00:54 | raptor | still compiling... i'm on CoreGame.cpp now |
| 22:01:10 | raptor | takes like 1 min. per class |
| 22:01:27 | raptor | those boost headers are killing it... |
| 22:01:51 | Watusimoto | now you have some empathy for sam |
| 22:02:06 | Watusimoto | sooooo |
| 22:02:06 | raptor | yes... do we still want boost? |
| 22:02:21 | Watusimoto | we kind of need it here and there |
| 22:02:25 | raptor | ok |
| 22:02:33 | Watusimoto | sooo drawarcs has another problem |
| 22:02:34 | raptor | soooo...? |
| 22:02:37 | raptor | oh |
| 22:02:42 | raptor | gridsize? |
| 22:03:08 | Watusimoto | that's solved. it uses the old school addLevelLine... forget it, I'll just add themethod |
| 22:03:16 | Watusimoto | this is solvable, I think |
| 22:03:19 | Watusimoto | forget it |
| 22:03:28 | Watusimoto | I thought it was a big deal, but it isn't |
| 22:04:01 | raptor | just like my race condition earlier! |
| 22:40:28 | Watusimoto | all fixed |
| 22:40:37 | Watusimoto | draw_arcs runs well here now |
| 22:40:46 | raptor | can't wait to test |
| 22:46:45 | raptor | sqlite.c is taking for-ev-er |
| 22:50:33 | raptor | hmmm... |
| 22:51:17 | raptor | so the two main ARM architectures (it seems) are armv5tel and armv7hl |
| 22:52:08 | raptor | the first has a software floating point unit |
| 22:52:50 | raptor | which i bet hurts speed dramatically - especially for something like bitfighter |
| 22:54:54 | Watusimoto | yup |
| 22:55:35 | Watusimoto | we could go to fixed point for faster computations, but not sure if there is a way to drop them in in place of F32 |
| 22:55:42 | raptor | my server's up! |
| 22:55:46 | Watusimoto | great |
| 22:55:50 | raptor | let's test... |
| 22:58:02 | raptor | well, it can handle a bot just fine... |
| 22:59:07 | Watusimoto | good |
| 22:59:15 | Watusimoto | quck design question |
| 22:59:28 | Watusimoto | should we require scripts that want access to the geom library to do this: |
| 22:59:29 | Watusimoto | require("geometry") |
| 22:59:37 | raptor | heh |
| 22:59:39 | Watusimoto | or just always make the functions available? |
| 23:00:04 | raptor | from what i've seen - it seems that everything always available is what games usually do |
| 23:00:22 | Watusimoto | it's easy enough to do... |
| 23:00:36 | Watusimoto | we just require it in lua_helper... |
| 23:00:43 | Watusimoto | then it's available |
| 23:01:38 | raptor | oh wait, is that an external library that we didn't write? |
| 23:01:53 | Watusimoto | a player wrote it |
| 23:02:00 | Watusimoto | our first bot author, actually |
| 23:02:03 | Watusimoto | and I rewrote it |
| 23:03:03 | raptor | i'd say include it |
| 23:04:46 | Watusimoto | that's probably fine |
| 23:12:02 | Watusimoto | /next works nicely! |
| 23:13:28 | | BFLogBot Commit: edb1d6cd6aa4 | Author: watusimoto | Message: Fix documentation |
| 23:13:29 | | BFLogBot Commit: 6a1b5a5eba8b | Author: watusimoto | Message: Remove _GRID_SIZE global from levelgens (not used anywhere) |
| 23:13:31 | | BFLogBot Commit: 2b9838a9863e | Author: watusimoto | Message: Credits |
| 23:13:32 | | BFLogBot Commit: 8c8f1f94c239 | Author: watusimoto | Message: Better error message |
| 23:13:34 | | BFLogBot Commit: a3e6cbb3f7d5 | Author: watusimoto | Message: Fix draw_arcs plugin, plugins now have access to existing objects in the editor; can grab a list of all objects, or just the selected ones |
| 23:13:35 | | BFLogBot Commit: bdda9c92918e | Author: watusimoto | Message: dynamic->static cast |
| 23:14:12 | Watusimoto | ok, I'm checking out for the evening.... |
| 23:14:15 | Watusimoto | latersville |
| 23:14:18 | raptor | good night |
| 23:21:47 | | raptor Quit () |
| 23:33:30 | | sam686 has joined |
| 23:33:30 | | ChanServ sets mode +v sam686 |
| 23:47:17 | | Watusimoto_ has joined |
| 23:50:06 | | raptor has joined |
| 23:50:06 | | ChanServ sets mode +o raptor |
| 23:50:21 | | Watusimoto Quit (Ping timeout: 260 seconds) |
| 23:55:57 | raptor | hi again |