--- Log opened Sun Jan 04 00:00:23 2009 |
00:07 | | Consul [~consul@Nightstar-2535.dsl.sfldmi.ameritech.net] has joined #code |
00:07 | | mode/#code [+o Consul] by ChanServ |
00:08 | <@Consul> | Well, fsck is happy about both partitions. |
00:09 | <@Consul> | So, that brings me back to the question of why making a DVD from Youtube downloads (mp4) with Devede is suddenly locking up my computer, when before it worked fine. |
00:10 | <@ToxicFrog> | You're sure it's the entire system hanging, not just X? |
00:10 | <@Consul> | Not even the keyboard works. |
00:10 | <@Consul> | Num or caps lock won't turn on and off. |
00:10 | <@ToxicFrog> | Aah. |
00:10 | <@Consul> | ctrl+alt+backspace is no good. |
00:10 | <@ToxicFrog> | Nor is ctrl-alt-F1? Yeah, not cool. |
00:11 | <@Consul> | ctrl+alt+del is no good, either. |
00:11 | <@Consul> | I didn't try the F1 variant, but I have a feeling I can answer it already. |
00:12 | <@Consul> | It seems like the BBC is burning through a lot of Doctor Who's lately. |
00:12 | <@ToxicFrog> | What, are we on the 11th Doctor already? |
00:12 | <@Consul> | Yeah. |
00:13 | <@Consul> | But before the series was restarted, they'd last a lot longer than this. |
00:13 | <@Consul> | It's a very different culture at the Beeb, these days. |
00:13 | <@ToxicFrog> | Some longer than others, but in general, yes. |
00:14 | | Vornicus [~vorn@Admin.Nightstar.Net] has quit [Ping Timeout] |
00:16 | | * ToxicFrog writes some docs for his SDL binding |
00:20 | | Vornicus [~vorn@Admin.Nightstar.Net] has joined #code |
00:20 | | mode/#code [+o Vornicus] by ChanServ |
00:21 | <@Serah> | Return of the Vorn. |
01:20 | | McM[SanDiego] is now known as McMartin |
01:53 | | Reiver [~reaverta@Admin.Nightstar.Net] has quit [Quit: I ATENT'T DEAD] |
02:04 | | Reiver [~reaverta@Admin.Nightstar.Net] has joined #Code |
02:04 | | mode/#code [+o Reiver] by ChanServ |
02:11 | | AnnoDomini [~farkoff@Nightstar-28974.neoplus.adsl.tpnet.pl] has quit [Quit: Sometimes you burn with the Art, and other times, the Art burns you.] |
02:44 | | Vornicus [~vorn@Admin.Nightstar.Net] has quit [Quit: ] |
03:19 | | * McMartin fiddles with ocamllex |
03:24 | <@McMartin> | ... or, the problem could be in unrelated code managing the command line. |
03:26 | | Serah [~Z@87.72.35.ns-26506] has quit [Connection reset by peer] |
03:32 | | Serah [~Z@87.72.35.ns-26506] has joined #Code |
03:32 | | mode/#code [+o Serah] by ChanServ |
03:37 | | Derakon [~Derakon@Nightstar-4920.hsd1.ca.comcast.net] has joined #code |
03:37 | | mode/#code [+o Derakon] by ChanServ |
03:37 | | * Derakon successfully sets up a bullet flywheel. |
03:39 | <@Derakon> | Two spirals spewing out one bullet per frame, with bullets moving at 5 pixels per frame, gets me a steady-state at 158 bullets with no noticeable slowdown. |
03:40 | | * Derakon doubles it, gets some slowdown. Drat. |
03:41 | <@Derakon> | Gonna have to be more efficient somehow...and I'm not even doing collision detection right now. |
03:41 | <@McMartin> | Heh |
03:41 | <@McMartin> | Hm. OK, I guess my real problem is that I'm using the wrong version of OCaml. |
03:41 | <@Derakon> | Collision detection will be a straightforward circle-point algo. |
03:45 | <@Derakon> | Okay, four emitters, firing bullets in spirals, while they themselves move in circles? |
03:45 | <@Derakon> | I can't dodge that. |
03:56 | <@McMartin> | Heh |
03:56 | <@McMartin> | *finally* |
03:56 | <@McMartin> | Though I think this still only works with the latest version of OCaml, but so it goes. |
03:57 | | * McMartin manages to get an autogenerated lexer that properly tracks file/line/column on each token. |
05:02 | <@McMartin> | ocamlyacc, however, still can't integrate right with this. |
05:20 | | * Derakon ponders the best way to handle BulletML in Python. |
05:20 | <@Derakon> | I wonder how efficient it would be to generate a set of anonymous functions that describe the behaviors specified in the document. |
05:24 | <@McMartin> | Why anonymous? |
05:24 | <@McMartin> | Why not named? |
05:25 | <@McMartin> | Heck, why not objects, so that they can have state if they need it |
05:25 | <@McMartin> | Though really, if it's got __call__, you don't care, right~ |
05:25 | <@Derakon> | Heh. |
05:25 | <@Derakon> | Anyway, the thought was to avoid getting to deeply into a call stack in the interests of efficiency, but that sounds to me like premature optimization. |
05:26 | <@McMartin> | Lambdas won't cut it for parameterizations. |
05:28 | <@Derakon> | Hrm...how do I go about viewing the source on that applet...? |
05:28 | <@McMartin> | Take the jar and run it through a decompiler, most likely. |
05:29 | <@Derakon> | Oh, wait, there it is. |
05:29 | <@Derakon> | http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/bulletml0_21.zip |
05:32 | <@Derakon> | Oh, goody, the source code was procedurally-generated. |
05:33 | <@McMartin> | Oy. |
05:33 | <@Derakon> | 43k lines of code? No thanks. |
05:33 | <@McMartin> | Hum. |
05:33 | <@Derakon> | And the documentation is a bit brief. |
05:33 | | * McMartin wonders if Python has a "procedurally generate a parser from relaxng &c" |
05:33 | <@Derakon> | I don't think parsing the ML will be especially hard. |
05:33 | <@Derakon> | Knowing what to do with the parsed objects is the trick. |
05:34 | <@McMartin> | Yeah |
05:34 | <@McMartin> | I don't suppose the source was made with RELAXNGCC |
05:34 | <@Derakon> | It's Java, so I assume gcc is out. |
05:36 | | * Derakon resolves to just take one of the simpler documents (Psyvariar_X-A_boss_opening) and try to make something that looks similar. |
05:36 | <@McMartin> | RELAXNGCC is in fact Java. |
05:37 | <@McMartin> | The thing is that it would have the bits he wrote by hand in it |
05:37 | <@Derakon> | Ah. |
05:37 | | * McMartin pokes at it himself |
05:39 | <@McMartin> | I suspect that stuff like BulletImpl.java that actually talks to the applet are the parts you'd be able to loot. |
05:39 | <@Derakon> | Well, I'm gonna fool about with getting ElementTree working for the nonce. |
05:39 | <@McMartin> | Let me know how it goes; I'd like to hear about its utility. |
05:40 | <@McMartin> | Aha. |
05:40 | <@Derakon> | Will do. |
05:40 | <@McMartin> | He used "Relaxer" for the procedurally generated stuff |
05:40 | <@McMartin> | In short, what you'd be using Elementtree for. |
05:40 | <@Derakon> | Fun times. |
05:40 | <@McMartin> | That's the XML parsing because Java's XML support is the reference standard. |
05:40 | <@McMartin> | Read: It sucks. |
05:40 | | * Derakon snickers. |
05:44 | | * McMartin rereads net.sf.blorple.ifiction.Parser's source code, swiftly re-convinces himself of this. |
05:45 | <@McMartin> | 631 lines of actual XML-touching code, with some fairly sophisticated abstractions, and several thousand lines of data representation bullshit |
05:45 | <@McMartin> | Just to get some decent structures. |
05:46 | <@McMartin> | Yeah, that would have been much easier with something like Relaxer. |
05:49 | <@Derakon> | Blorple did its own XML management? |
05:49 | <@Derakon> | Or it used the Java standard implementation? |
05:50 | <@McMartin> | It used the Java standard implementation and then reified it as a set of basic structure objects. |
05:50 | <@McMartin> | So that Blorple *proper* doesn't have to give a shit about XML, just the Story class and its many-nested components. |
05:53 | <@McMartin> | Oh, man |
05:54 | | * McMartin summons Steele, Gosling, and Stroustrup to beat the writer of BulletML for his sins against OO. |
05:54 | <@Derakon> | BulletML the markup, or the implementation? |
05:55 | <@McMartin> | ActionImpl.java is the one that has what you want |
05:55 | <@McMartin> | It is done with a chain of "if (x instanceof blah) { ... } else if (x instanceof blah) { ... } ..." |
05:55 | <@McMartin> | VIRTUAL FUNCTIONS: NOT JUST FOR BREAKFAST ANYMORE |
05:56 | <@Derakon> | Ew. |
05:56 | <@McMartin> | (To be fair, since those blah functions may have been autogenerated, he might not have been *able* to add stuff like that.) |
05:57 | <@Derakon> | This is 322 lines of basically uncommented Java with badly-chosen variable names. |
05:58 | <@McMartin> | Still probably easier to read than the raw bytecode~ |
05:58 | | * Derakon facepalms. |
05:58 | <@McMartin> | That's the closest thing to a spec I can see, though. |
05:59 | <@Derakon> | Yeah, thanks for tracking it down. |
06:00 | <@McMartin> | I'd go by the minimal reference first, and only go to the source when an action is wildly underspecified instead of merely underspecified. |
06:00 | | * Derakon nods. |
06:00 | <@McMartin> | (See also: me and iFiction.) |
06:01 | <@McMartin> | (In which I used the babel tools for the fallback.) |
06:01 | <@Derakon> | Okay, I have ElementTree parsing the document and getting the right element tags out, at any rate. Now to try accessing labels/contents. |
06:02 | <@McMartin> | Already Better Than MiniDOM |
06:03 | <@Derakon> | Here's the tree-print code I threw together: http://paste.ubuntu.com/99428/ |
06:04 | <@Derakon> | Not very interesting, but I figured you might be curious. |
06:06 | <@jerith> | Derakon: ElementTree's in the stdlib from 2.5 (as etree, iirc). |
06:06 | <@Derakon> | Ahh? |
06:06 | <@McMartin> | Well, that just means he just has to change the import statement. |
06:07 | <@jerith> | Yeah. |
06:07 | <@Derakon> | "import etree" doesn't work, anyway. |
06:07 | <@Derakon> | And I'm using 2.5. |
06:07 | <@McMartin> | It's deeper than that... |
06:07 | <@jerith> | What I do is try import the stdlib version and fall back to the external library if it's not there.. |
06:07 | <@jerith> | -. |
06:08 | <@McMartin> | import xml.etree.ElementTree as ET |
06:08 | <@Derakon> | That works. |
06:08 | <@Derakon> | How did you figure that out? |
06:08 | <@McMartin> | I looked at http://docs.python.org/library/ |
06:08 | <@Derakon> | Ah hah. |
06:08 | <@McMartin> | Alternate answer: |
06:08 | <@McMartin> | AVATAR |
06:09 | <@Derakon> | Dangit, Steve! |
06:09 | | * McMartin checks his shirt |
06:09 | <@McMartin> | I'm definitely not Steve. |
06:09 | <@Derakon> | I'm safe from cannons, then? |
06:09 | <@jerith> | Then catch ImportError (or whatever) and look for elementtree. |
06:09 | <@McMartin> | Can anyone ever truly be safe from cannons? |
06:09 | <@McMartin> | (import cannon) |
06:09 | | * Derakon facepalms. |
06:10 | <@jerith> | FLYING ARTILLERY! (import cannon; import antigravity) |
06:11 | <@McMartin> | "When will your reign of terror end, Death Cannon?" |
06:11 | <@McMartin> | "If anyone asks, he fell down some stairs. ...into a cannon." |
06:12 | <@Derakon> | Okay, lessee...I have a <bullet> tag which describes starting properties of a bullet (notably not including position...), an <action> tag that lets me change the properties of bullets, a <fire> tag to instantiate bullets, and a bunch of other things that are contained within those tags. |
06:12 | <@Derakon> | Actions can also exist independent of bullets, e.g. for a main loop to create initial bullets. |
06:13 | <@Derakon> | And everything can be named and referred to by name elsewhere in the document. |
06:13 | <@jerith> | You're firing bullets in XML? |
06:13 | <@Derakon> | BulletML. |
06:14 | <@Derakon> | XML for danmaku ("bullet hell" / "manic shooter") games. |
06:14 | <@jerith> | Hrm. |
06:14 | <@Derakon> | Basically a markup language for specifying the behaviors of particles. |
06:14 | <@jerith> | Can we fire bullets *into* XML instead? |
06:14 | <@Derakon> | I'm sure it's been done many times. |
06:15 | <@jerith> | Not by me. |
06:15 | <@Derakon> | Don't let me stop you, then. |
06:15 | | * jerith resolves to take a printout of the SOAP spec next time he goes to the range. |
06:15 | <@Derakon> | Anyway, from what I can tell, a useful BulletML document must have either an action tag or a fire taga at the root level |
06:16 | <@Derakon> | Since otherwise nothing would happen. |
06:16 | <@jerith> | Shouldn't you need something else to do the firing? |
06:16 | <@Derakon> | Also, the position of the bullet emitters is not referred to anywhere in the document; that's assumed to be handled by the application. |
06:17 | <@Derakon> | Think of this as the code that gun turrets execute, Jerith. |
06:18 | <@Derakon> | E.g. "repeat 100 times: fire a bullet(angle 45 +- rand(5) degrees, speed .5 +- rand(1)); sleep(2)" |
06:18 | <@jerith> | Ah, right. |
06:19 | <@jerith> | So this is more ShootML than BulletML. |
06:20 | <@Derakon> | Um, sure? |
06:21 | | * jerith was thinking of it a a description of a bullet rather than the description of the bullet and the fire control for said bullet. |
06:21 | <@jerith> | *as |
06:21 | | * Derakon nods. |
06:21 | | * Derakon tries to figure out the right way to handle this whole thing. |
06:22 | <@jerith> | On first thought, I'd split it into bullets and guns. |
06:23 | <@Derakon> | Python supports currying, right? |
06:23 | <@jerith> | Bullets describe things like damage, explosions, proximity fuses, etc. |
06:23 | <@jerith> | Derakon: Sort of. You have to return a closure from a function, it doesn't happen automagically. |
06:24 | <@jerith> | Guns describe things like magazine capacity, rate of fire, etc. |
06:24 | <@Derakon> | What I'm thinking is that I'd have e.g. an action() function which accepts as inputs all the valid contents of an <action> tag, as well as an object to operate on (a bullet, or null in which case it'd return new bullets or sommat). |
06:24 | <@McMartin> | jerith: BulletML is specifically designed to be a spec language for agents in Bullet Hell games. |
06:24 | <@Derakon> | So when I parse an <action> tag I invoke action() will all but one of the arguments, and take the resulting function and stick it into a list of functions that I'll need. |
06:24 | <@jerith> | McMartin: Ah, I lack context then. |
06:24 | <@McMartin> | Derakon: Python is Weird about closures. |
06:25 | <@McMartin> | You will want to return objects that do the python equivalent of overriding operator(). |
06:25 | <@Derakon> | So e.g. a simple <bullet> tag might just provide the angle and speed of the bullet; I call bullet(angle, speed), get a function back, and use that function when updating generated bullets. |
06:25 | <@McMartin> | Because "closures" are not permitted to have writable state. |
06:25 | <@Derakon> | I don't think I follow. |
06:25 | <@McMartin> | So, if this were Scheme |
06:26 | <@McMartin> | You'd return a lambda expression that referred to some values that were passed to the lambda's generator as parameters. |
06:26 | <@McMartin> | This sort of works in Python, if and only if those things are read-only |
06:26 | <@McMartin> | Because otherwise there's a lack of clarity about whether you were writing to something in a higher scope or creating a new variable that shadows it, so Python just bans it outright. |
06:27 | <@McMartin> | The preferred solution is to return an object with fields, thus clarifying what gets written where. |
06:27 | <@Derakon> | Couldn't just enforce pass-by-value or something, huh? |
06:27 | | * jerith packs up to go to the office for the day. |
06:27 | <@McMartin> | Derakon: This has nothing to do with passing, and more to do with "what does the name 'x' mean" |
06:27 | <@Derakon> | Okay, so when I parse a <bullet> tag, I'd create a new BulletFunc object, set its fields (e.g. angle, speed), and Bullet instances would contain BulletFuncs, which are called during Bullet.update? |
06:28 | <@McMartin> | Ideally, during Bullet.__call__, I'd think |
06:28 | <@McMartin> | You want these to act like functions, right? |
06:28 | <@Derakon> | That is, Bullet.update would call BulletFunc.updateBullet or something. |
06:28 | <@Derakon> | That would be ideal. |
06:28 | <@Derakon> | I'm not familiar with __call__. |
06:28 | <@McMartin> | Let me test this in a REPL to make sure I get it right |
06:28 | <@Derakon> | Ahh. __call__ overloads operator(). |
06:29 | <@McMartin> | Yeah. |
06:29 | <@Derakon> | Handy, tha t. |
06:29 | <@McMartin> | But it may act oddly with __init__. |
06:29 | <@Derakon> | s/tha t/that/ |
06:29 | <@Derakon> | http://www.daniweb.com/forums/thread39004.html |
06:29 | <@Derakon> | That implies that Python is smart about the context of the call. |
06:29 | <@McMartin> | It is on *reads*. |
06:29 | <@Derakon> | I.e. if you're using the class name, it calls __init__; if you're using an instance, it calls __call__. |
06:29 | <@McMartin> | Oh |
06:29 | <@McMartin> | Yeah |
06:30 | <@McMartin> | >>> class A: |
06:30 | <@McMartin> | ... def __init__(self, x): self.x = x |
06:30 | <@McMartin> | ... def __call__(self, y): return self.x + y |
06:30 | <@McMartin> | ... |
06:30 | <@McMartin> | >>> a = A(2) |
06:30 | <@McMartin> | >>> a(3) |
06:30 | <@McMartin> | 5 |
06:30 | <@McMartin> | (Too short to pastebin) |
06:30 | | * Derakon nods. |
06:30 | <@Derakon> | Okay, that seems workable. |
06:30 | <@McMartin> | If something *isn't* paramaterized, like, say, vanish tags, then those probably can be simple functions. |
06:30 | <@jerith> | Back in a few minutes. |
06:30 | <@Derakon> | Right. |
06:30 | <@McMartin> | They can't be lambdas, I don't think, because lambdas are restricted to a single expression, and it can't be a statement. |
06:31 | <@McMartin> | And besides, you *have* a name for it: "vanish". |
06:32 | <@Derakon> | Hm. I'll need an internal field on Actions to indicate that they're "done" so I know to move to the next thing or to force-repeat them. |
06:32 | <@Derakon> | ...agh, this does not interact well with an external main loop. |
06:33 | | Vornicus [~vorn@Admin.Nightstar.Net] has joined #code |
06:33 | | mode/#code [+o Vornicus] by ChanServ |
06:33 | <@Derakon> | Every time there's a <wait> tag I'll need to basically set an interrupt in the middle of the function. |
06:33 | <@McMartin> | Have agents have a countdown of "frames to next action"? |
06:33 | <@McMartin> | With the wait action tracking to "set this value to something that isn't 1"? |
06:33 | <@Derakon> | An action could be <wait>2</wait><fire>foo</fire><wait>2</wait><fire>bar</fire> |
06:34 | <@McMartin> | "action" is really a program, it sounds like. |
06:34 | <@Derakon> | Pretty much, yeah. |
06:34 | <@McMartin> | What we've been talking about is not for actions, then. |
06:34 | <@McMartin> | it's for their components: wait, fire, accel, vanish, &c. |
06:35 | <@Derakon> | I guess <wait> actually means "invoke update/draw cycle once"? |
06:35 | <@McMartin> | That wasn't how I was imagining the architecture, but you're the architect~ |
06:35 | <@McMartin> | (I sort of flipped the priority there) |
06:35 | | Vornotron [~vorn@Admin.Nightstar.Net] has joined #code |
06:35 | | * Derakon tries removing the <wait> tag from one of the files in the sample implementation, gets code that does actually still draw things. |
06:36 | <@McMartin> | You can't let individual agents dictate global actions like draw! |
06:36 | <@Derakon> | I'm trying to figure out how to reconcile this behavior with a simple main loop...I'm not certain it works. |
06:36 | <@Derakon> | Yeah. |
06:36 | | Vornicus [~vorn@Admin.Nightstar.Net] has quit [Ping Timeout] |
06:36 | <@Derakon> | This feels like a situation that calls for threads. |
06:37 | <@McMartin> | The simple main loop tells each agent "It's been a tick. Do your thing." Agents do action processing, probably by waiting for their trigger and if it hits zero, invoking their next sub-action. |
06:37 | < Vornotron> | why are we using XML for a tick pattern. |
06:37 | <@McMartin> | If that action was "wait", their trigger is delayed. |
06:37 | <@McMartin> | Vornotron: We are not. We're using it because it already exists and people use it. |
06:37 | <@McMartin> | It's for specifying scripted firing pattern AIs for bullet hells. |
06:37 | <@Derakon> | I'm basically trying to make a Python implementation. |
06:37 | < Vornotron> | Oh. |
06:38 | <@McMartin> | Anyway, this is synchronized enough that I don't think threads are strictly necessary. |
06:38 | <@Derakon> | McM: my issue is how to track where in the action processing an agent is. |
06:38 | <@McMartin> | Give agents state. |
06:38 | <@Derakon> | So say an action's code says "fire a bullet, wait a bit, fire a different bullet, wait a bit." |
06:38 | <@Derakon> | I call the action, it fires the first bullet, hits the first wait statement, returns. |
06:38 | | Vornotron [~vorn@Admin.Nightstar.Net] has quit [Connection reset by peer] |
06:39 | <@Derakon> | I call it again, it needs to say "Okay, I'm partway into the first wait; I'm not done yet; return." |
06:39 | <@Derakon> | I call it again, it needs to say "Okay, I'm done with the first wait, now where was I? Okay, fire second bullet, time to wait, so return." |
06:39 | <@McMartin> | ... what about this do you think is tricky? |
06:39 | | Vornicus [~vorn@Admin.Nightstar.Net] has joined #code |
06:39 | | mode/#code [+o Vornicus] by ChanServ |
06:39 | <@McMartin> | I mean, you've essentally specified an algorithm right there. |
06:40 | <@McMartin> | The only thing missing is the variable names. |
06:40 | <@Derakon> | Tracking where in the algo I am. |
06:40 | <@McMartin> | Right. |
06:40 | <@McMartin> | So |
06:40 | <@Derakon> | Do I split out everything between wait statements into separate functions or something? |
06:40 | <@McMartin> | Our agent has some list: [fire(foo), wait(2), fire(bar), wait(2)] |
06:40 | <@McMartin> | We have an integer that says where in that list we are. |
06:40 | <@McMartin> | We have some other integer that says how many times we have to be woken up before we resume processing. |
06:40 | <@Derakon> | And a dict or something that contains state for each position in the list. |
06:41 | <@McMartin> | No, because these are callables, right? |
06:41 | <@Derakon> | Okay, that should work. |
06:41 | <@McMartin> | The state is living there in "fire(foo)" |
06:41 | <@Derakon> | Ahh, right. |
06:41 | <@Derakon> | It's the "break the action code into segments" bit that I was missing, really. |
06:41 | <@McMartin> | Aha |
06:42 | <@McMartin> | So yeah, main loop then becomes "wake up each agent once; draw." |
06:42 | <@Derakon> | Right. |
06:42 | <@McMartin> | For added fun, the player can be an agent too, but his update involves checking the input state. |
06:42 | <@McMartin> | (This is effectively what Sable does) |
06:42 | <@Derakon> | Okay, I need to write this all down since it's getting a bit late. |
06:43 | <@Derakon> | I've already basically written the player code, so I don't feel the need to muck with it ATM. |
07:06 | | * jerith is back. |
07:08 | | * Derakon sings Vim's praises for search&replace. |
07:08 | <@Derakon> | Makes changing < to < and > to > much easier. |
07:08 | <@Derakon> | Anyway, made a big LJ post to my gamedev filter. |
07:20 | <@Vornicus> | ...okay, bulletml? |
07:21 | <@Vornicus> | /fucking awesome/ |
07:21 | <@Derakon> | Heh. |
07:21 | | * Vornicus is watching the demos, and they are incredible. |
07:30 | <@Derakon> | To be fair, those are just implementations in BulletML of patterns taken from various games. |
07:30 | <@Vornicus> | yes. |
07:30 | <@Vornicus> | But some of these I did not expect you to be able to do. |
07:31 | <@Vornicus> | Now that I haveseen that they are possible, I agree that bulletml is the way to go. |
07:31 | <@Vornicus> | (The backburst one is my favorite) |
07:34 | <@jerith> | Der: Where do I find this post? |
07:36 | <@Derakon> | http://derakon.livejournal.com/306123.html?#cutid1 |
07:36 | <@Derakon> | I don't think I have you friended, though. |
07:36 | <@Vornicus> | jerith! |
07:37 | <@Derakon> | Okay, you should be good to go. |
07:39 | <@jerith> | Cool, thanks. |
07:40 | | * Derakon determines that in the example implementation, the speed and direction on the <bullet> tag are overridden by the speed and direction in the <fire> tag. |
07:40 | <@Derakon> | Okay, bedtime. T-2, all. |
07:43 | | Derakon is now known as Derakon[AFK] |
08:40 | | KBot [AnnoDomini@Nightstar-84.neoplus.adsl.tpnet.pl] has joined #Code |
08:41 | | KarmaBot [AnnoDomini@Nightstar-28974.neoplus.adsl.tpnet.pl] has quit [Ping Timeout] |
08:43 | | KBot is now known as KarmaBot |
10:37 | | AnnoDomini [~farkoff@Nightstar-84.neoplus.adsl.tpnet.pl] has joined #Code |
10:37 | | mode/#code [+o AnnoDomini] by ChanServ |
10:47 | | Vornicus [~vorn@Admin.Nightstar.Net] has quit [Quit: ] |
14:32 | | gnolaptop [~lenin@Nightstar-1449.dialup.nmt.net] has joined #Code |
15:01 | | gnolaptop [~lenin@Nightstar-1449.dialup.nmt.net] has quit [Ping Timeout] |
15:02 | | gnolaptop [~lenin@Nightstar-1449.dialup.nmt.net] has joined #Code |
15:55 | | gnolaptop [~lenin@Nightstar-1449.dialup.nmt.net] has quit [Ping Timeout] |
15:56 | | C_tiger_remote is now known as C_tiger |
15:57 | | gnolaptop [~lenin@Nightstar-1449.dialup.nmt.net] has joined #Code |
16:00 | | gnolaptop [~lenin@Nightstar-1449.dialup.nmt.net] has quit [Ping Timeout] |
16:03 | | gnolaptop [~lenin@Nightstar-1583.dialup.nmt.net] has joined #Code |
16:08 | | gnolaptop [~lenin@Nightstar-1583.dialup.nmt.net] has quit [Ping Timeout] |
16:14 | | gnolaptop [~lenin@Nightstar-1844.dialup.nmt.net] has joined #Code |
16:18 | | Attilla [~The.Attil@Nightstar-9469.cdif.cable.ntl.com] has joined #code |
16:18 | | mode/#code [+o Attilla] by ChanServ |
16:28 | | Attilla [~The.Attil@Nightstar-9469.cdif.cable.ntl.com] has quit [Ping Timeout] |
16:38 | | Derakon[AFK] is now known as Derakon |
16:58 | | gnolaptop [~lenin@Nightstar-1844.dialup.nmt.net] has quit [Ping Timeout] |
17:31 | | gnolaptop [~lenin@91.149.34.ns-11340] has joined #Code |
17:39 | | gnolaptop [~lenin@91.149.34.ns-11340] has quit [Ping Timeout] |
17:47 | | gnolaptop [~lenin@91.149.34.ns-11340] has joined #Code |
18:00 | | gnolaptop [~lenin@91.149.34.ns-11340] has quit [Ping Timeout] |
18:02 | | gnolaptop [~lenin@91.149.34.ns-11340] has joined #Code |
18:03 | | gnolaptop [~lenin@91.149.34.ns-11340] has quit [Quit: So far, I'm not liking 2009 one bit.] |
19:09 | | gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has joined #Code |
19:09 | | mode/#code [+o gnolam] by ChanServ |
20:57 | | Vornicus [~vorn@Admin.Nightstar.Net] has joined #code |
20:57 | | mode/#code [+o Vornicus] by ChanServ |
21:06 | | Vornicus is now known as Finerty |
21:13 | | Attilla [~The.Attil@Nightstar-9469.cdif.cable.ntl.com] has joined #code |
21:13 | | mode/#code [+o Attilla] by ChanServ |
21:14 | <@Consul> | Should I be ashamed to admit I'm enjoying these MIT lectures on differential equations on YouTube? |
21:14 | <@Finerty> | where? |
21:14 | <@Consul> | Youtube |
21:14 | <@Consul> | User MIT |
21:14 | <@Finerty> | Sweet. |
21:14 | <@Consul> | They have a playlist for all 32 lectures, ~50 mins each. |
21:15 | <@Consul> | Creative Commons license, so they can probably be downloaded as a torrent somewhere. |
21:16 | <@Consul> | http://ocw.mit.edu/OcwWeb/Mathematics/18-03Spring-2006/CourseHome/index.htm |
21:16 | | Finerty is now known as Vornicus |
21:16 | | Vornicus is now known as Finerty |
21:16 | < simontwo> | Consul, enjoying? yes! |
21:17 | <@Consul> | They did two things right. 1) The professor is actually a good speaker who can keep you engaged. 2) The videography and sound are well-done and interesting. |
21:17 | < simontwo> | Consul, I'm currently viewing the ones in Linear Algebra because my own book suddenly got a lot harder when skipping two weeks of lectures. |
21:17 | <@Consul> | Oh, and 3) they didn't cut out any footage when something quirky happens. |
21:18 | < simontwo> | Consul, okay. the one on Linear Algebra is constantly asking the audience rhetorical questions (i.e. I don't think he cares what they answer, but still he waits for them to say something before continuing). |
21:18 | <@Consul> | http://ocw.mit.edu/OcwWeb/Mathematics/18-03Spring-2006/VideoLectures/index.htm -- Video downloads, though no torrent file I can see. |
21:18 | <@Consul> | simontwo: Oh, well, I've only been watching the diff-eq ones. I finished linear algebra, with an A I might add. :-) |
21:18 | <@Consul> | I'm starting diff-eq in a week, and I thought I'd get a head-start. |
21:19 | < simontwo> | Consul, sounds sensible. |
21:20 | <@Consul> | Eh, guess I'll just keep watching them on Youtube. I was hoping for a torrent. |
21:20 | < simontwo> | I have a mandatory course after this one called "web programming". |
21:24 | <@Derakon> | Hmm...all these objects are starting to get a bit hairy. |
21:37 | <@Derakon> | ElementTree's documentation is a bit lacking in documentation telling me how to get the type of a tag out. |
21:38 | <@Derakon> | E.g. I want to go from <action label="foo"> to 'action'. |
21:38 | <@Derakon> | The docs appear to be geared towards writing XML documents, not reading them. |
21:46 | | Attilla_ [~The.Attil@Nightstar-9469.cdif.cable.ntl.com] has joined #code |
21:47 | | Attilla [~The.Attil@Nightstar-9469.cdif.cable.ntl.com] has quit [Ping Timeout] |
21:48 | | Attilla_ is now known as Attilla |
22:02 | <@Derakon> | Ha HA! |
22:03 | <@Derakon> | Simple BulletML file: PARSED. |
22:03 | <@Consul> | Derakon: Sweet! |
22:03 | <@Consul> | I have no idea what that is, but it deserves some congratulations, I'm sure. ;-) |
22:04 | <@Derakon> | Heh. Check out http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/bulletml_applet_e.html |
22:04 | <@Derakon> | In short, I'm now handling the Psyvariar_X-A "boss opening" file on that page. |
22:04 | <@Consul> | Oh, cool! The OpenJDK plugin is working! |
22:05 | <@Derakon> | ...well, okay, the <wait> tag isn't being obeyed. I should fix that. |
22:05 | <@Consul> | Hey, that's pretty neat... |
22:06 | <@Finerty> | BulletML: a markup language for describing firing sequences for entities in shooters. |
22:06 | <@Consul> | Finerty: Thanks... |
22:07 | <@Derakon> | Okay, I have a bunch of different classes, I want to give each instance of a class a unique ID (regardless of the class type). |
22:08 | <@Derakon> | I created a variable globalId at the top of the script, so I could set self.id in every init function. |
22:08 | <@Derakon> | But it won't let me refer to globalId. Says "UnboundLocalError: local variable 'globalId' referenced before assignment" |
22:09 | <@Derakon> | Ahh. 'global' keyword is my friend. |
22:10 | <@Finerty> | Yes indeed. |
22:10 | <@Finerty> | Though I was under the impression that objects got ids from the vm. |
22:11 | <@Derakon> | Ahh? |
22:11 | <@Derakon> | Well, it's probably some hexadecimal crud. I know what Action #0 is on each invocation. |
22:11 | <@Finerty> | Yeah, let me see if I can find that information - object i is the power of is. |
22:11 | <@Finerty> | object id, rather |
22:11 | <@Derakon> | That sentence still makes no sense. |
22:12 | <@Derakon> | "object id is the power of is"? |
22:12 | <@Finerty> | "is" uses object identity |
22:12 | <@Finerty> | (the is operator) |
22:12 | <@Derakon> | Ahh. |
22:12 | | MyCatVerbs [~mycatverb@Nightstar-13709.lurkingfox.co.uk] has quit [Ping Timeout] |
22:23 | <@Derakon> | There. Wait and repeat now function properly. |
22:44 | | * Derakon creates submunitions. |
22:46 | <@Derakon> | (Thereby verifying that bullets do run actions contained within them) |
23:02 | | AnnoDomini [~farkoff@Nightstar-84.neoplus.adsl.tpnet.pl] has quit [Quit: There is strength not only in *knowing* the self, but *knowing* how to bring it forth in others.] |
23:55 | <@McMartin> | w00t |
--- Log closed Mon Jan 05 00:00:35 2009 |