Timestamps are in GMT/BST.
| 00:13:00 | watusimoto | dang it, my idea didn't quite work |
| 00:13:00 | watusimoto | but I'm only one method away from solving this |
| 00:26:00 | raptor | are you listening to obama? |
| 00:26:00 | raptor | he is briefing the nation right now |
| 00:48:00 | watusimoto | no, I didn't know that |
| 00:48:00 | raptor | bin laden is reported dead |
| 00:49:00 | watusimoto | ok, maybe NOW mission is accomplished :-) |
| 00:49:00 | raptor | i sure hope so... |
| 00:50:00 | watusimoto | I predict no change in the state of affairs |
| 00:50:00 | watusimoto | this is a symbolic event, but not much more |
| 00:50:00 | raptor | i predict the same :-/ |
| 00:51:00 | raptor | this discussion could easily get me fired up, I think... |
| 00:56:00 | raptor | so.. back to bitfighter: did you write the SFXObject::init() piece? |
| 01:08:00 | watusimoto | I don't think so |
| 01:09:00 | raptor | ok |
| 01:09:00 | raptor | i'll muddle through |
| 01:09:00 | raptor | first time dealing with audio libraries |
| 01:10:00 | watusimoto | I can confirm I didn't write it; not sure I've ever looked at it more than once |
| 01:10:00 | raptor | okeyd oke |
| 01:31:00 | watusimoto | ok, overcame the problem with only a minorly ugly hack |
| 01:32:00 | watusimoto | EditorObject and GameObject are now independent interfaces |
| 01:32:00 | raptor | so that's how you're doing it.. |
| 01:33:00 | watusimoto | so we can apply them separately to things (flagSpawns are EditorObjects, ships are GameObjects, goFasts are both) |
| 01:33:00 | watusimoto | but in every EditorObject object, we need to include this line: |
| 01:33:00 | watusimoto | const char *getClassName() const { return Object::getClassName(); } |
| 01:34:00 | watusimoto | that redirects the EditorObject's version of getClassName() up the gameObject class hierarchy |
| 01:34:00 | raptor | reflection? |
| 01:34:00 | watusimoto | sort of |
| 01:34:00 | raptor | very interesting |
| 01:34:00 | watusimoto | I was trying to find a way to get access to the getClassName method without having to include that line |
| 01:34:00 | watusimoto | but it just wasn't working |
| 01:35:00 | watusimoto | that's needed for instantiating things from their class name, as we do when we read a level file |
| 01:36:00 | watusimoto | or, now, replicate objects in the editor (though maybe, just maybe, i can do it a different way) |
| 01:38:00 | watusimoto | wait, just got rid of the need for the hack |
| 01:38:00 | watusimoto | by using another hack I'd already resigned myself ti |
| 01:39:00 | raptor | haha |
| 01:39:00 | watusimoto | this is the other hack that I don't like... but at least it only appears once, in the editor: |
| 01:39:00 | watusimoto | EditorObject *newObject = NULL; |
| 01:39:00 | watusimoto | TextItem *textItem = dynamic_cast<TextItem *>(this); |
| 01:39:00 | watusimoto | if(textItem != NULL) |
| 01:39:00 | watusimoto | newObject = new TextItem(*textItem); |
| 01:39:00 | watusimoto | Teleporter *teleporter = dynamic_cast<Teleporter *>(this); |
| 01:39:00 | watusimoto | if(teleporter != NULL) |
| 01:39:00 | watusimoto | newObject = new Teleporter(*teleporter); |
| 01:39:00 | watusimoto | SpeedZone *speedZone = dynamic_cast<SpeedZone *>(this); |
| 01:39:00 | watusimoto | if(speedZone != NULL) |
| 01:39:00 | watusimoto | newObject = new SpeedZone(*speedZone); |
| 01:39:00 | watusimoto | maybe I could get rid of that by using the getClassName() hack |
| 01:40:00 | raptor | is that just to instantiate one of every class? |
| 01:41:00 | watusimoto | no, it makes a copy of an object |
| 01:42:00 | watusimoto | without knowing its class ahead of time |
| 01:42:00 | raptor | ah ok |
| 01:42:00 | watusimoto | I could do that, or put a copy method down in each child class |
| 01:42:00 | watusimoto | I figured that by concnetating the ugliness, it would be easier to maintain |
| 01:43:00 | watusimoto | the first time you add a new object and try it in the editor, you'll hit an assert if you haven |
| 01:43:00 | watusimoto | t handled it here |
| 01:43:00 | watusimoto | then you'll see what you need to do with no further hunting around |
| 01:43:00 | watusimoto | I just made it uglier by addition of some goto statements |
| 01:44:00 | raptor | NOOOoooo |
| 01:44:00 | watusimoto | TextItem *textItem = dynamic_cast<TextItem *>(this); |
| 01:44:00 | watusimoto | if(textItem != NULL) |
| 01:44:00 | watusimoto | { |
| 01:44:00 | watusimoto | newObject = new TextItem(*textItem); |
| 01:44:00 | watusimoto | goto Done; |
| 01:44:00 | watusimoto | } |
| 01:44:00 | watusimoto | Teleporter *teleporter = dynamic_cast<Teleporter *>(this); |
| 01:44:00 | watusimoto | if(teleporter != NULL) |
| 01:44:00 | watusimoto | { |
| 01:44:00 | watusimoto | newObject = new Teleporter(*teleporter); |
| 01:44:00 | watusimoto | goto Done; |
| 01:44:00 | watusimoto | } |
| 01:44:00 | watusimoto | SpeedZone *speedZone = dynamic_cast<SpeedZone *>(this); |
| 01:44:00 | watusimoto | if(speedZone != NULL) |
| 01:44:00 | raptor | ha |
| 01:44:00 | watusimoto | did you see this? |
| 01:44:00 | watusimoto | (notice) *** Message to #bitfighter throttled due to flooding |
| 01:44:00 | raptor | i bet you hit the flood protection |
| 01:44:00 | raptor | i didn't see the notice, but I could tell you got it.. |
| 01:44:00 | watusimoto | goto is generally bad, but not always |
| 01:44:00 | watusimoto | how could you tell? |
| 01:45:00 | raptor | let me see about turning off flooding protection |
| 01:45:00 | watusimoto | you probably only saw half of what I pasted, |
| 01:45:00 | raptor | exactly |
| 01:49:00 | watusimoto | well, then you missed the elegance of my goto construct |
| 01:49:00 | raptor | i think i got 3/4 of it... |
| 01:51:00 | raptor | did that notice come from the server? or your client? |
| 01:57:00 | watusimoto | no, a new window popped up... |
| 01:57:00 | raptor | looks like freenode implements it server side |
| 01:57:00 | watusimoto | a chat window with pratchett.freenode.net |
| 01:57:00 | raptor | a yes, a server notice, then |
| 01:58:00 | raptor | curious, can you open a private chat with me and send that code again? just as a test |
| 02:04:00 | | raptor has left |
| 02:04:00 | | raptor has joined |
| 02:04:00 | | ChanServ sets mode +o raptor |
| 02:18:00 | watusimoto | I like the skype notification of new messages better than I do Pidgin |
| 02:18:00 | raptor | what is skypes? |
| 02:18:00 | raptor | and what is pidgins? |
| 02:19:00 | watusimoto | icon lights up in task bar; icon in tray changes |
| 02:19:00 | watusimoto | much less noticable |
| 02:19:00 | raptor | ah: turn on 'guifications' plugin |
| 02:22:00 | raptor | or better yet, ditch pidgin for IRC, it's not too great |
| 02:23:00 | raptor | a good irc client makes all the difference in the world |
| 02:36:00 | raptor | pastebin it is for code snippets longer than 10 lines or so |
| 02:36:00 | raptor | wow, the sfx class is in serious need of attention |
| 02:37:00 | raptor | the problem is: it works. |
| 02:37:00 | watusimoto | yes, that was the probelm wiuth the editor, too |
| 02:42:00 | raptor | luckily i'm talking with the openal-soft maintainer right now and he is giving me pointers |
| 02:43:00 | watusimoto | great |
| 02:43:00 | watusimoto | the goto is gone |
| 02:43:00 | watusimoto | unfortunately |
| 02:43:00 | watusimoto | but there are others |
| 02:43:00 | watusimoto | don't despair! |
| 02:43:00 | raptor | hehe |
| 02:44:00 | raptor | so right now, on each game idle tick, bitfighter plays a frame of each of the currently loaded sounds |
| 02:46:00 | raptor | seems odd that it is handled by the idle() method |
| 02:46:00 | raptor | why not just play the sound and be done with it.. |
| 02:48:00 | watusimoto | no idea.... |
| 02:48:00 | watusimoto | your way makes more sense |
| 02:49:00 | raptor | it has all this crazy detection method to keep the audio frames in sync with the idle method |
| 02:56:00 | raptor | i'm heading to bed |
| 02:57:00 | raptor | good night |
| 03:00:00 | | raptor Quit (Remote host closed the connection) |
| 03:08:00 | | raptor has joined |
| 03:08:00 | | ChanServ sets mode +o raptor |
| 03:08:00 | | raptor Quit (Remote host closed the connection) |
| 03:15:00 | watusimoto | night |
| 08:00:00 | | watusimoto Quit (Quit: Leaving.) |
| 09:12:00 | | kodaws has joined |
| 10:56:00 | | raptor has joined |
| 10:56:00 | | ChanServ sets mode +o raptor |
| 10:56:00 | raptor | kodaws: if you aren't too busy, can you give me a brief overview of multiple sound source handling in hedgewars? |
| 10:57:00 | raptor | specifically, bitfighter needs a sound system rewrite |
| 10:57:00 | raptor | right now |
| 10:57:00 | raptor | it uses teh game's idle loop to play all channels chunk by chunk |
| 10:57:00 | raptor | sorry, not channels |
| 10:58:00 | raptor | samples |
| 10:58:00 | raptor | each iteration of idle() it checks where it is in the sound buffer and plays a bit accordingly |
| 10:58:00 | raptor | seems like it should be done better |
| 11:18:00 | | raptor Quit (Remote host closed the connection) |
| 11:21:00 | | raptor has joined |
| 11:21:00 | | ChanServ sets mode +o raptor |
| 11:29:00 | | raptor Quit (Remote host closed the connection) |
| 11:31:00 | | raptor has joined |
| 11:31:00 | | ChanServ sets mode +o raptor |
| 13:00:00 | | kodaws Quit (Quit: HydraIRC -> http://www.hydrairc.com <- *I* use it, so it must be good!) |
| 13:13:00 | | karamazovapy has joined |
| 13:17:00 | karamazovapy | jarrs... |
| 14:10:00 | raptor | hi |
| 14:12:00 | raptor | !bbb |
| 15:38:00 | | watusimoto has joined |
| 15:50:00 | karamazovapy | hah |
| 15:50:00 | karamazovapy | !airlock |
| 15:50:00 | karamazovapy | [sigh] |
| 15:50:00 | karamazovapy | !help |
| 15:50:00 | karamazovapy | !commands |
| 15:51:00 | karamazovapy | !bitfighter |
| 15:51:00 | karamazovapy | !bot |
| 15:51:00 | karamazovapy | !bug |
| 15:51:00 | karamazovapy | !dedicated |
| 15:51:00 | karamazovapy | !feature |
| 15:51:00 | karamazovapy | !watusimoto |
| 15:51:00 | karamazovapy | hah |
| 15:52:00 | watusimoto | this irc is whack |
| 15:52:00 | watusimoto | !watusimoto |
| 15:52:00 | karamazovapy | crack is whack |
| 15:52:00 | watusimoto | cool |
| 16:06:00 | raptor | i see you are testing my most recent bot additions :] |
| 16:07:00 | raptor | !airlock |
| 16:14:00 | | -barjavel.freenode.net- *** Looking up your hostname... |
| 16:14:00 | | -barjavel.freenode.net- *** Checking Ident |
| 16:14:00 | | -barjavel.freenode.net- *** No Ident response |
| 16:14:00 | | -barjavel.freenode.net- *** Couldn't look up your hostname |
| 16:14:00 | | BitfighterLogBot has joined |
| 16:14:00 | | Topic is 'Latest release 015a http://bitfighter.org | Forums: http://bitfighter.org/forums/ | GC Project: http://code.google.com/p/bitfighter/' |
| 16:14:00 | | Set by raptor!~raptor@unaffiliated/greenmachine on Sun May 01 01:51:58 EDT 2011 |
| 16:14:00 | | -ChanServ- [#bitfighter] Welcome to #bitfighter. This is an IRC channel, many or all of the users may not be paying attention. Please have patience when waiting for a response. |
| 16:15:00 | raptor | !airlock |
| 16:35:00 | raptor | watusimoto: if you want to know there is an ini file on the game server: under ~/bin/logbot/commands.ini |
| 16:35:00 | raptor | you can specify commands in there |
| 16:36:00 | raptor | but you'd have to restart the bot with 'stop_logbot.sh' and 'start_logbot.sh' to load the new commands |
| 16:40:00 | watusimoto | oh, you mean chatbot commands for this channel? |
| 16:40:00 | raptor | yep |
| 16:40:00 | raptor | add anything you want |
| 16:40:00 | raptor | it was kinda fun to program it |
| 16:41:00 | raptor | I also checked in the source code to the bitfighter-tools repo |
| 17:58:00 | | koda has joined |
| 20:16:00 | | koda Quit (Quit: bye o/) |
| 20:59:00 | | raptor Quit (Remote host closed the connection) |
| 21:08:00 | karamazovapy | just finished portal 2 |
| 21:08:00 | karamazovapy | good game |
| 21:40:00 | | raptor_ has joined |
| 21:40:00 | | ChanServ sets mode +o raptor_ |
| 21:41:00 | raptor_ | portal? |
| 21:43:00 | | raptor_ is now known as raptor |
| 21:44:00 | raptor | i never made it past the first few levels in portal 1 |
| 21:53:00 | raptor | well, i still have a job... |
| 21:53:00 | raptor | that's always good |
| 22:07:00 | | watusimoto Quit (Ping timeout: 252 seconds) |
| 23:51:00 | karamazovapy | is there any way to have my vps notify me if/when my dedicated server process terminates? maybe an smtp notification? |
| 23:51:00 | raptor | yes |
| 23:51:00 | karamazovapy | yes? |
| 23:51:00 | raptor | i already have a bash script you can run in a cron job |
| 23:51:00 | raptor | do you have root access to the VPS ? |
| 23:52:00 | karamazovapy | absolutely |
| 23:52:00 | raptor | ok, let me test it against your server real quick |
| 23:52:00 | sam686 | probably the simplest way is to look for your server here once of a while: http://bitfighter.org/bitfighterStatus.json |
| 23:52:00 | karamazovapy | right |
| 23:53:00 | raptor | 32 or 64bit server? |
| 23:53:00 | karamazovapy | 32 |
| 23:56:00 | raptor | ok, i have to recompile the program for 32-bit... |
| 23:56:00 | raptor | wait |
| 23:56:00 | karamazovapy | 32-bit seemed easier to deal with, out of the gate |
| 23:56:00 | raptor | you have gcc on your system already |
| 23:56:00 | karamazovapy | yeah, I should |
| 23:56:00 | raptor | great! |
| 23:57:00 | raptor | ok, let me get you the files you need |
| 23:57:00 | raptor | basically my script sends a PING to any bitfighter server, if the PING fails, it sends an e-mail |
| 23:57:00 | karamazovapy | awesome |
| 23:58:00 | karamazovapy | I mean, ideally, I'd log in to bitfighter on a daily basis...but there are some WEEKS I don't play... |
| 23:59:00 | raptor | actually i better compile this for you... it's a bit evil |
| 23:59:00 | karamazovapy | hah...okay... |
| 23:59:00 | karamazovapy | would this be a good feature to include in the game itself? |