--- Log opened Wed Jun 06 00:00:12 2007 |
00:09 | | Derakon[AFK] is now known as Derakon |
00:10 | | ToxicFrog|W`rkn is now known as ToxicFrog |
00:36 | <@Derakon> | Oh! TF, I have a problem! |
00:36 | <@Derakon> | Namely, Lua won't parse files that contain more than 200 local variables! |
00:36 | <@Derakon> | And every cell in the map is its own table... |
00:37 | | GeekSoldier_ [~Rob@Nightstar-3642.pools.arcor-ip.net] has quit [Ping Timeout] |
00:58 | <@ToxicFrog> | ...really? It won't? |
00:58 | | * ToxicFrog tests |
00:59 | <@Derakon> | "data/scripts/maps/foo.map:1061: main function has more than 200 local variables" |
01:01 | <@ToxicFrog> | Aha. This is set in luaconf.h at line 470 |
01:01 | <@ToxicFrog> | However, the comment says it has a hard limit of 250. |
01:01 | <@ToxicFrog> | If you don't need to worry about reference resolution you could just generate nested table declarations instead. |
01:01 | <@ToxicFrog> | Or use faux-globals via setfenv. |
01:01 | <@Derakon> | I don't think I do. |
01:02 | <@Derakon> | Guess I'll take a stab at writing my own serialization function. |
01:02 | <@ToxicFrog> | It's really not hard. |
01:03 | <@Derakon> | Yeah. I just have bad memories of the metacoding assignment I had during my Semester of Doom in college. |
01:03 | | * ToxicFrog rummages |
01:03 | <@Derakon> | Actually, this should be extremely simple, since I'm storing a known datastructure... |
01:04 | <@Derakon> | That is to say, as opposed to arbitrary data. |
01:04 | <@ToxicFrog> | It's actually easier to implement for arbitrary data, IME. |
01:04 | <@Derakon> | Ahh, but then you run into the variable limit. ;) |
01:04 | <@ToxicFrog> | Nonono. |
01:04 | <@ToxicFrog> | Hang one. |
01:06 | <@ToxicFrog> | Actually, it's not very clear from the code what I'm doing. |
01:06 | | * Derakon facepalms. |
01:06 | <@ToxicFrog> | But the basic idea is that your output is one huge table constructor. |
01:06 | <@Derakon> | Right. |
01:06 | <@ToxicFrog> | return { |
01:06 | <@ToxicFrog> | [key] = value; |
01:07 | <@ToxicFrog> | [key] = value; |
01:07 | <@ToxicFrog> | [key] = { |
01:07 | <@ToxicFrog> | ... more stuff here, nested arbitrarily deep ... |
01:07 | <@ToxicFrog> | }; |
01:07 | <@ToxicFrog> | ... |
01:07 | <@ToxicFrog> | } |
01:07 | <@ToxicFrog> | The whole thing with the local tables is just because (1) it's easier to prettyprint since you don't need indentation tracking and (2) it handles multiple references to the same object, and circular references, sanely. |
01:11 | <@ToxicFrog> | I had a function that does this kicking around somewhere, but I can't find it now. |
01:11 | <@Derakon> | I wish Lua supported += and so on. |
01:11 | <@ToxicFrog> | There's a patch for that. |
01:11 | <@Derakon> | Well, right now I want ..=. |
01:14 | <@ToxicFrog> | (actually no, I'm wrong, there isn't) |
01:18 | <@Derakon> | Argh. Treating a boolean as a string doesn't do the Right Thing. |
01:18 | <@Derakon> | (namely true => "true" and false => "false") |
01:19 | <@Derakon> | ...though, why is frame a boolean? It should be a number. *blink* |
01:23 | | Thaqui [~Thaqui@Nightstar-12407.jetstream.xtra.co.nz] has joined #code |
01:23 | | mode/#code [+o Thaqui] by ChanServ |
01:25 | <@ToxicFrog> | Ok, I've got one if you want it. |
01:26 | <@ToxicFrog> | The output it generates is one line, though~ |
01:26 | <@Derakon> | No need. |
01:27 | <@Derakon> | This is a bit clunky, but it works: http://pastie.caboo.se/68135 |
01:27 | <@Derakon> | After line 40 is some sample output. |
01:27 | <@Derakon> | ...hrm, though I should probably have checked to see if I could load it properly first. ¬.¬ |
01:28 | <@ToxicFrog> | Can't connect to pastie @.@ |
01:28 | <@Derakon> | Odd. |
01:28 | <@Derakon> | Can you usually do so? |
01:28 | <@ToxicFrog> | Yes. |
01:28 | <@ToxicFrog> | Aah, there it goes. |
01:29 | <@ToxicFrog> | Heh. The generic version is 43 lines long and handles everything but userdata, threads and Cfunctions :P |
01:30 | <@ToxicFrog> | Although adding prettyprinting would make it noticeably longer. |
01:30 | <@Derakon> | :p |
01:30 | <@Derakon> | I forgot semicolons and quoting of strings. Whups. |
01:30 | <@ToxicFrog> | string.format("%q", foo) is your god. |
01:31 | <@Derakon> | Hrm..."table index is nil" on the "[name] = "ground";" line. |
01:32 | <@Derakon> | Which does have quotation marks and a semicolon now. |
01:32 | <@Derakon> | ...oh, duh, name is undefined. |
01:32 | <@ToxicFrog> | ["name"] = "ground" |
01:32 | <@ToxicFrog> | Like I said, %q |
01:32 | | * Derakon whistles idly. |
01:32 | <@ToxicFrog> | Which is the format specifier for "fully quoted and escaped string, in a format suitable for feeding back into the interpreter" |
01:35 | <@Derakon> | Okay, there we go. |
01:35 | <@Derakon> | Could I see your version? |
01:38 | <@ToxicFrog> | http://pastie.caboo.se/68137 |
01:40 | <@Derakon> | tserialize only does tables that it's seen before to avoid references? |
01:42 | <@ToxicFrog> | Only does tables it hasn't seen before. |
01:42 | <@ToxicFrog> | So that something like this: |
01:42 | <@Derakon> | ...er, right. |
01:42 | <@ToxicFrog> | a = {} |
01:42 | <@ToxicFrog> | a.a = a |
01:42 | <@ToxicFrog> | ttoa(a) |
01:42 | <@ToxicFrog> | doesn't livelock it. |
01:42 | <@Derakon> | Gotcha. |
01:42 | <@Derakon> | Mmm, memory full. |
01:44 | <@Derakon> | Anyway, time to finish out chapter 2 of Odin Sphere. |
03:02 | <@Derakon> | Second star, hooo! |
03:02 | <@Derakon> | That last act was a pain, mind. ¬.¬ |
03:03 | <@ToxicFrog> | Each star is one book? |
03:03 | <@ToxicFrog> | I thought there were only five characters, though. |
03:03 | <@Derakon> | So far as I can tell. |
03:03 | <@Derakon> | My guess is either hard mode, or each character shows up twice. |
03:05 | <@Derakon> | Anyway, I'd dearly love to know how you deal with the final chapter of Book 2. |
03:05 | <@Derakon> | I've figured out how to fight *most* of the enemies in it... |
03:07 | <@ToxicFrog> | I'm still on book 1, so. |
03:10 | <@Derakon> | What's holding you up? Lack of time? Lack of interest? |
03:10 | <@Serah> | Lack of ninjas. |
03:19 | <@ToxicFrog> | Lack of time. |
03:20 | <@ToxicFrog> | Interest I have plenty, but work consumes most of my day, and my free time is split between Odin Sphere and my work for Aeon Genesis. |
03:20 | <@ToxicFrog> | And the latter actually has stuff blocked on it, so. |
03:20 | <@Derakon> | Aeon Genesis? |
03:21 | | * Derakon notes that, oddly enough, the first hit on Wikipedia for Aeon Genesis is the Recca article |
03:22 | <@ToxicFrog> | agtp.romhack.net |
03:22 | <@ToxicFrog> | I am helping with the Super Robot Wars Alpha and SRW Gaiden translations, among other things. |
03:22 | <@Derakon> | Ahh. |
03:23 | <@ToxicFrog> | (and the Solid Runner script, which is what I'm working on right now) |
03:24 | <@Derakon> | So...many...RPGs! |
03:24 | <@Derakon> | I mean, that appears to be all that they work on. |
03:25 | <@ToxicFrog> | Accelebrid, Assult Suits Valken, Ball Bullet Gun, Cave Story, La-Mulana, Cyborg 009... |
03:25 | <@ToxicFrog> | Dicing Knight... |
03:25 | <@ToxicFrog> | Front Mission Gun Hazard... |
03:26 | <@Derakon> | Okay, fine, all that's on the front page, then. |
03:26 | <@ToxicFrog> | Well, the front page is only from the past two months. |
03:26 | <@ToxicFrog> | There are 64 completed projects and 42 projects in progres. |
03:27 | <@ToxicFrog> | It is true that the majority are (T)(C)RPGs, though. |
03:27 | <@ToxicFrog> | Possibly because those are the ones that actually need translating. |
03:27 | <@Derakon> | Point. |
03:27 | <@Derakon> | JetBlade's not gonna need translating, certainly. ¬.¬ |
03:28 | <@Derakon> | "Press M to access the map." "Use left shift to cycle through drone modes." That's about the extent of it. |
03:28 | <@ToxicFrog> | Where's the storyline? |
03:28 | <@Derakon> | In the manual, where it should be. |
03:29 | <@ToxicFrog> | Bah. |
03:30 | <@Derakon> | I recognize the value of a good storyline, but I'd rather spend my time on atmosphere. |
03:30 | <@ToxicFrog> | I like having storyline to nibble on throughout the game. Not just a big chunk of exposition at the start, then nothing at all, then maybe another big chunk at the end. |
03:30 | <@ToxicFrog> | But I digress. |
03:31 | <@Derakon> | My goal is to get the gameplay down, to make a game that has great replayability. Plot is great on the first play, and sometimes on the second and third, but after that it largely just gets in the way. |
03:31 | <@ToxicFrog> | With many genres you can get by with just a control guide and perhaps a translation of the UI, which don't even need to be patched into the game. |
03:32 | <@ToxicFrog> | So translating those is both lower priority, and something that's often Already Been Done by some smaller group. |
03:32 | | * Derakon nods. |
03:32 | <@ToxicFrog> | Translating something with a megabyte and a half of text is another problem entirely, but is also typically the kind of game where the translation is most necessary. |
03:33 | <@ToxicFrog> | And is thus the kind of thing that the larger translation groups like Aeon Genesis and DeJap tend to focus on. |
03:33 | <@ToxicFrog> | And, yes. A storyline is worth little without good gameplay accompanying it. |
03:34 | <@ToxicFrog> | Or, rather, if the gameplay is poor, just make it a novel instead plzthx~ |
03:34 | <@Derakon> | More to the point, even a good storyline interferes with gameplay once you've memorized it. |
03:34 | <@ToxicFrog> | How so? |
03:34 | <@Derakon> | The storyline stops the gameplay. |
03:35 | <@ToxicFrog> | If this is the case, it means the game has not implemented a gesture to skip cutscenes, dialogue, etc. |
03:35 | <@ToxicFrog> | This is not a flaw with storylines in general, or even with this storyline in particular, but with the UI team. |
03:35 | <@Derakon> | Even if you can skip them, there's typically a certain amount of lead-in and lead-out. *shrug* |
03:35 | <@ToxicFrog> | Who must then be taken out back and soundly lobster'd. |
03:36 | <@Derakon> | I'd say that Symphony of the Night is about the extent to which I'm willing to tolerate an "intrusive" storyline (i.e. not just "there if you look for it") in a game. |
03:36 | <@ToxicFrog> | (I would say "consider Half-Life for an example where the storyline doesn't interrupt the gameplay", except there's at least three occasions where you have to twiddle your thumbs while a scientist blathers at you) |
03:36 | <@Derakon> | In that the dialogues had no loading times and could be immediately skipped, barring the other participant exiting, stage left. |
03:36 | <@Derakon> | (Alas, I have not played Half-Life. No Windows.) |
03:37 | <@ToxicFrog> | (runs great in Wine, but I don't recall if you have any x86 machines kicking around) |
03:37 | <@Derakon> | My iMac is Intel, but I haven't worked up the energy to muck about with dual-booting. |
03:38 | <@Derakon> | Frankly, JetBlade and Niobium take up enough of my spare time that I'm not at a loss for games to play. |
03:40 | <@ToxicFrog> | The thing about half-life is that (except for the opening and ending, where you have very limited freedom of movement), all storyline happens in scripted_sequences; none of it is non-interactive. Although there are, as noted earlier, a few places where you will be unable to proceed until the scientist stops expositing at you and unlocks the damn retinal lock already. |
03:40 | | * Derakon nods. |
03:40 | <@ToxicFrog> | However, a "skip dialogue" gesture would have solved that handily. |
03:40 | <@Derakon> | I saw some videos of Half-Life 2, so I have some idea of what you're talking about. |
03:41 | <@ToxicFrog> | (actually, I lie. There is a brief non-interactive scene when you're being dragged semi-conscious down a hallway to Certain Death) |
03:44 | <@ToxicFrog> | I also note that if your dialogue/cutscenes/etc have loading times, You're Doing It Wrong anywaysd. |
03:44 | <@Derakon> | And yet they do anyway. |
03:46 | <@ToxicFrog> | Not in SotN, Half-Life, most (all?) cartridge games, most computer games (dialogue anyways)... |
03:46 | | * Derakon quietly yoinks TF's non-reference-preserving ttoa function. ¬.¬ |
03:46 | <@Derakon> | Odin Sphere has noticeable lag between dialogue lines. |
03:47 | <@ToxicFrog> | Well, ok, I will rephrase. If running on a system that has enough memory to pre-buffer dialogue. |
03:47 | <@Derakon> | Heh. |
03:47 | <@ToxicFrog> | Which, if dialogue is not VO'd, should be damn near anything. |
03:48 | <@ToxicFrog> | If it /is/, things get interesting. Diablo 2 seemed to manage it, but that may just be a result of running off a disk with low seek times. |
03:53 | | * Serah is going to couch, night all. |
03:53 | <@ToxicFrog> | Nini |
03:53 | <@Derakon> | Night. |
03:54 | <@ToxicFrog> | Derakon: anyways. Your yourself have refuted your own assertion that storyline and gameplay are incompatible, so, back to the Solid Runner script I go~ |
03:55 | <@Derakon> | I didn't say they were incompatible; just that they can't do better than to intrude slightly on future playthroughs. |
03:56 | | * ToxicFrog blinkblinks at OC Remix. |
03:57 | <@ToxicFrog> | Beatdrop tapped for work on DDR Supernova 2, and Pixietricks for Civ IV: Beyond the Sword. |
03:57 | <@Derakon> | ...OCers are working on an actual DDR game? Nice. |
03:58 | <@ToxicFrog> | Well, one OCer. |
04:46 | | ReivZzz is now known as ReivOut |
05:40 | | Takyoji [~Takyoji@Nightstar-25812.dhcp.roch.mn.charter.com] has joined #code |
05:46 | < Takyoji> | Here's the case: I'm working on an e-commerce software and payments have to be done through a credit card payment gateway, I need the person to carry the price data in an encrypted format, so what cipher should I use for encrypting it? |
05:46 | < Takyoji> | http://us2.php.net/manual/en/ref.mcrypt.php#mcrypt.ciphers |
05:51 | < Takyoji> | I guess I'll just use Triple DES |
05:59 | | AnnoDomini [~farkoff@Nightstar-29608.neoplus.adsl.tpnet.pl] has quit [Ping Timeout] |
05:59 | | KBot [~karma.bot@Nightstar-28939.neoplus.adsl.tpnet.pl] has joined #Code |
05:59 | | KarmaBot [~karma.bot@Nightstar-29608.neoplus.adsl.tpnet.pl] has quit [Ping Timeout] |
06:00 | | KBot is now known as KarmaBot |
06:06 | | AnnoDomini [~farkoff@Nightstar-28939.neoplus.adsl.tpnet.pl] has joined #Code |
06:06 | | mode/#code [+o AnnoDomini] by ChanServ |
06:19 | | ReivOut is now known as Reiver |
07:06 | | Derakon is now known as Derakon[AFK] |
07:08 | | You're now known as TheWatcher |
07:18 | | AnnoDomini [~farkoff@Nightstar-28939.neoplus.adsl.tpnet.pl] has quit [Quit: Juffo-Wup is a *candle*. It is filled with many *candy bars*.] |
07:21 | | Vornicus-Latens is now known as Vornicus |
07:22 | | Takyoji [~Takyoji@Nightstar-25812.dhcp.roch.mn.charter.com] has quit [Quit: Leaving] |
07:26 | | AnnoDomini [~farkoff@Nightstar-28939.neoplus.adsl.tpnet.pl] has joined #Code |
07:26 | | mode/#code [+o AnnoDomini] by ChanServ |
07:37 | | ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has quit [Ping Timeout] |
07:40 | | ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has joined #code |
07:40 | | mode/#code [+o ToxicFrog] by ChanServ |
08:04 | | Forjadon [~Forjadon@Nightstar-1216.ue.woosh.co.nz] has joined #code |
08:04 | | mode/#code [+o Forjadon] by ChanServ |
08:09 | | PID1|work [~PID@59.188.36.ns-3793] has quit [Connection reset by peer] |
08:15 | | GeekSoldier|SDNCO [~Rob@Nightstar-4316.pools.arcor-ip.net] has joined #code |
08:17 | | GeekSoldier|SDNCO is now known as GeekSoldier |
08:51 | | Serah is now known as Ev3 |
08:52 | | GeekSoldier is now known as GeekSoldier|Sleep |
09:04 | | Vornicus is now known as Vornicus-Latens |
09:28 | | KarmaBot [~karma.bot@Nightstar-28939.neoplus.adsl.tpnet.pl] has left #code [Banished by Jebediah.] |
09:53 | | EvilDarkLord is now known as Jo}{n |
09:59 | | You're now known as TheWatcher[wr0k] |
10:29 | | Forjadon [~Forjadon@Nightstar-1216.ue.woosh.co.nz] has quit [Ping Timeout] |
10:46 | | Chalcedon [~Chalcedon@Nightstar-1216.ue.woosh.co.nz] has quit [Quit: Gone] |
11:30 | | Jo}{n [~jjlehto3@Nightstar-2194.vipunen.hut.fi] has quit [Client exited] |
13:13 | | GeekSoldier|Sleep is now known as GeekSoldier |
13:23 | | Vornicus-Latens [~vorn@Admin.Nightstar.Net] has quit [Connection reset by peer] |
13:24 | | Vornicus [~vorn@67.50.40.ns-3674] has joined #code |
13:24 | | mode/#code [+o Vornicus] by ChanServ |
13:32 | | Thaqui [~Thaqui@Nightstar-12407.jetstream.xtra.co.nz] has left #code [Leaving] |
14:11 | | ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has quit [Client exited] |
14:13 | | ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has joined #code |
14:13 | | mode/#code [+o ToxicFrog] by ChanServ |
15:55 | | You're now known as TheWatcher |
16:41 | | Reiver is now known as ReivZzz |
17:20 | | You're now known as TheWatcher[afk] |
17:28 | | EvilDarkLord [~jjlehto3@Nightstar-2194.vipunen.hut.fi] has joined #code |
18:30 | | You're now known as TheWatcher |
18:41 | | You're now known as TheWatcher[afk] |
19:47 | | You're now known as TheWatcher |
19:54 | | Chalcedon [~Chalcedon@Nightstar-15747.ue.woosh.co.nz] has joined #code |
19:54 | | mode/#code [+o Chalcedon] by ChanServ |
20:28 | | GeekSoldier is now known as GeekSoldier|Sleep |
22:50 | | You're now known as TheWatcher[T-2] |
22:53 | | You're now known as TheWatcher[zZzZ] |
--- Log closed Thu Jun 07 00:00:18 2007 |