code logs -> 2007 -> Mon, 26 Nov 2007< code.20071125.log - code.20071127.log >
--- Log opened Mon Nov 26 00:00:58 2007
01:15 You're now known as TheWatcher[T-2]
01:21 You're now known as TheWatcher[zZzZ]
01:23 Thaqui [~Thaqui@Nightstar-13064.jetstream.xtra.co.nz] has quit [Ping Timeout]
01:32 Thaqui [~Thaqui@Nightstar-26276.jetstream.xtra.co.nz] has joined #code
01:32 mode/#code [+o Thaqui] by ChanServ
02:07 Vornicus [~vorn@Admin.Nightstar.Net] has quit [Ping Timeout]
02:08 Vornotron [~vorn@Admin.Nightstar.Net] has joined #code
02:08 Vornotron is now known as Vornicus
03:43
<@ToxicFrog>
...
03:43 * ToxicFrog figures out how to embed control characters in his passwords
03:53 ToxicFrog is now known as ToxicCommander
03:55 Forj [~Forj@Nightstar-10789.ue.woosh.co.nz] has joined #code
03:55 mode/#code [+o Forj] by ChanServ
04:20 ReivZzz is now known as Reiver
04:42 GeekSoldier|bed is now known as GeekSoldier|work
04:44 ToxicCommander is now known as ToxicFrog
05:21 * Vornicus fiddles with libraries, trying to get PyGame to work.
05:29
<@McMartin>
Pygame's pretty straightforward.
05:30
<@McMartin>
Then again, all I did was "yum install pygame" and it hunted down everything I needed, so.
05:35
<@jerith>
Vornicus: I've heard good things about pyglet too.
05:35
< Vornicus>
Mine is a bit hairier because there's other toys involved.
05:35
<@jerith>
If you want opengl.
05:35
< Vornicus>
No OpenGL in this one.
05:36 * jerith drags himself out of bed and goes to shower.
05:42
< Vornicus>
agh, wtf
05:42
< Vornicus>
_ov_pcm_total referenced from @executable_path/../Frameworks/SDL_mixer.framework/Versions/A/SDL_mixer expected to be defined in /usr/local/lib/libvorbisfile.0.dylib
05:44 Derakon [~Derakon@Nightstar-8000.hsd1.wa.comcast.net] has joined #code
05:44 mode/#code [+o Derakon] by ChanServ
05:44
<@Derakon>
...since when do I get ops here?
05:45
< Vornicus>
I wasn't aware of a time when you did not.
05:45 * Derakon shrugs.
05:45
< Vornicus>
If you don't want them we can take them back... :P
05:45
<@Derakon>
Heh.
05:45
<@Derakon>
I just hadn't realized I had 'em.
05:46
<@Derakon>
So anyway, I'm thinking of ways to give players secret extra mobility in platforming games.
05:46
<@Derakon>
E.g. walljumping, bombjumping, and the Shinespark.
05:46
<@Derakon>
A non-Metroid example might be having some technique that resets your vertical velocity (e.g. MM2 pausing).
05:47
<@Derakon>
The trick is making them useful and graceful without making them obvious.
05:47
<@McMartin>
Or cheating.
05:47
<@McMartin>
(as per MM2)
05:48
<@Derakon>
Well, yes. But there are other games with similar things.
05:48 * McMartin isn't really a huge fan of Secret Techniques.
05:48
<@Derakon>
(Hitting an enemy with the Grapple beam will stop you, for example)
05:48
<@McMartin>
Especially ones that are only technically not mandatory.
05:48
<@Derakon>
These techniques would only be mandatory for the more insane sequence breaks.
05:49
< Vornicus>
Ceiling spring; press up while jumping into the ceiling and you get to control the angle you leave...
05:49
<@McMartin>
Yeah, so another Metroid Example, this time of Non-Excellence: The Bomb-powered Morph Ball Launchers in Kraid's Lair in MZM.
05:49
<@Derakon>
I wasn't particularly impressed by those.
05:50
<@McMartin>
Totally unclued, necessary unless you're sequence breaking, produces a Shinespark effect before you get the real one, and it's the only place in the game bombs are used as a power source.
05:50
<@Derakon>
Then again, I got stuck for years by the statue in the Wrecked Ship in SM; it never occurred to me to morph on its hand.
05:50
<@McMartin>
Does Everything Wrong.
05:50
<@McMartin>
Yeah, that's a similar example, though at least those occasionally hold something.
05:51
<@McMartin>
MZM's were structures with no counterpart. Anywhere.
05:51
<@Derakon>
As best I can guess, they were there to clue the existence of the morphball shinespark, which debuted in MZM.
05:51
<@Derakon>
The fact that they themselves were not especially great is...not so good.
05:51
< Vornicus>
Long Fall - you do damage if you fall far enough. See for instance Kirby.
05:51
<@Derakon>
I'm thinking more mobility upgrades here, Vorn.
05:52
<@Derakon>
So the wall-spring thing could be useful; maybe if you air-dash into a wall, you can walljump off of it, too?
05:52
<@McMartin>
Derakon: Hence "Example of Non-Excellence". That is, "These serve only as a Terrible Example To Others, viz. you"
05:52
<@Derakon>
Heh.
05:53
<@Derakon>
I note that the Shinespark is only clued in a SM demo video you get after having beaten the game and left the title screen running...or is it in the MF/MZM manuals?
05:53
<@McMartin>
I'd have to check.
05:53
<@Derakon>
Don't worry about it if you don't know offhand.
05:53
<@McMartin>
Metroid is Very Much Not Newbie Friendly.
05:54
< Vornicus>
Shinespark is clued in SuperMetroid by that bird dude.
05:54
<@Derakon>
Anyway, I'm watching a Sparkster TAS here, and the protagonist has a spin-slash technique that the runner is using to more than double his jump length.
05:54
<@Derakon>
...ugh, that thing. >.<
05:54
<@McMartin>
That was totally not a clue.
05:54
< Vornicus>
Then what was it?
05:54
<@McMartin>
Or only barely one.
05:55
<@Derakon>
It was a clever idea that didn't work.
05:55
<@McMartin>
It was "Look, I can do something."
05:55
<@Derakon>
The Shinespark really needs to have its controls spelled out, because it's pretty complicated.
05:55
<@McMartin>
It was Guess The Verb, Platformer Edition.
05:55
< Vornicus>
heh
05:55
<@McMartin>
Dash attack is straightforward: "Oh hey, I'l walk this way, la la"
05:55
<@McMartin>
"... I went through that wall."
05:56
<@Derakon>
(Return, bomb wall, "oh, that's what those symbols mean.")
05:56
<@Derakon>
Sadly, there are several items in Super Metroid that are unattainable without using the Shinespark (c.f. Wrecked Ship reserve tank, missiles and supermissiles in Maridia).
05:57
<@Derakon>
Nothing required, but still.
05:58
< Reiver>
Shinespark?
05:59
<@McMartin>
It's a very specific kind of air-dash in metroid that lets you keep your wall-destroying high-speed super run longer than otherwise permitted by the game engine.
05:59
<@Derakon>
A secret technique in the 2D metroid games post-Metroid II: run until you get the speed booster effect, then duck, and your next jump will send you flying in a straight line.
05:59
< Vornicus>
Shinespark: run until you kill things by hitting them - duck - jump.
05:59
<@McMartin>
Also, regarding SM, it had two places where you could get stuck without using secret techniques to escape.
05:59
<@McMartin>
And the hard one -- wall jumping -- would let you save before you realized you were trapped.
05:59
<@Derakon>
Yes, I know. One of them you could save in.
05:59
<@McMartin>
That ended my first and third attempts on Super Metroid.
06:00
< Vornicus>
Have to be standing still when you jump. Usually you go straight up; however you can aim it horizontally or diagonally.
06:00
< Vornicus>
You zoom in the direction you jump until you hit something.
06:01
< Vornicus>
It's not very well designed or cued, really.
06:02
<@Derakon>
It'd be fine if it was easier to control and in the manual.
06:02
< Vornicus>
And it's necessary if you want to get everything.
06:02
< Vornicus>
Really, any ability you get should either be in the manual, or described in detail in game.
06:02
<@Derakon>
Nah, I don't agree with that.
06:03
<@Derakon>
But secret abilities should be entirely optional. There only so you look more awesome.
06:03
< Vornicus>
Well, at least you should have opportunity to put its through its paces before you have to solve any real puzzles involving it.
06:03
<@Derakon>
(This does not hold for competitive games, note. No wavedashing, kthx)
06:04
<@McMartin>
Derakon: In A Fighting Game, Nothing Is Optional.
06:04
<@Derakon>
My point is that any puzzle involving the Secret Technique would be bypassable, losing nothing but time, without using it.
06:04
< Vornicus>
Wavedashing?
06:05
<@Derakon>
McM: sure, but a secret technique that propels the characters that can do it so far beyond the ones that can't is just stupid.
06:05
<@Derakon>
http://faqs.ign.com/articles/627/627159p1.html
06:05
<@McMartin>
That's why nothing is optional.
06:06
<@Derakon>
...this mongoose appears to be shooting flames from his ears.
06:06
<@McMartin>
(Side annoyed note: the command cuing for crouching in Portal shows up in a location that it's possible to miss. It's still on the keyboard menu, and it's the same as it is in every Source game, but I got brickwalled once I needed to crouch my first playthrough.)
06:07
<@Derakon>
Heh. And the Platforming Game turns into Scrolling Space Shmup, which then turns into RESER.
06:08
< Reiver>
command cuing?
06:08
<@Derakon>
"Look, you can do this technique by pressing this button."
06:08
< Reiver>
Oh right
06:08
< Reiver>
...Isn't crouch ctrl?~
06:09
<@McMartin>
Reiver: Yes.
06:09
<@McMartin>
The other controls in Portal are all on the mouse, or are WASDE<space>.
06:11
< Reiver>
Ah, right
06:11
< Vornicus>
Note that there's a lot you can do like this - make it obvious for instance that you won't be able to get back without a particular ability (cf the big rooms with nothing in them near the Screw Attack in MP2, for instance)
06:11
<@McMartin>
Or the Space Jump fights in the mainline.
06:12
<@Derakon>
Oh, sure, you always show the player the locked door before giving them the key.
06:12
<@McMartin>
This is stronger than that.
06:12
<@McMartin>
You're locking them in, then giving them the key and blocking until they get out.
06:12
<@Derakon>
Okay, fair enough.
06:12
< Vornicus>
Not just show them - make them walk through the door and /then/ locking.
06:13
<@McMartin>
My least favorite part of latter-day castlevanias is walking through the entire edge of the map to figure out where my new mobility move actually gets me further.
06:13
<@McMartin>
(PS: CLEARLY MARK UNCONQUERED BARRIERS ON YOUR MAPS)
06:13
< Vornicus>
agreed.
06:13
<@Derakon>
This is because the latter-day Castlevanias don't have nearly the level of flow that the better Metroid games achieved.
06:13
<@McMartin>
A single room with the barrier in the middle of it and a critical item on the other side will map as 'fully explored' and is a cardinal sin.
06:13
<@Derakon>
And their maps sucked.
06:14
<@McMartin>
Super Metroid really was not that good at this either.
06:14
<@McMartin>
And MF doesn't even try.
06:14
<@McMartin>
My experience with the genre isn't good enough to actually produce examples of excellence. =/
06:14
<@Derakon>
Super Metroid actually has a very strong flow, but it isn't well-cued.
06:14
< Vornicus>
MF at least you can see the dots on the map that show you places where there's an item but you haven't gotten it yet.
06:14
<@Derakon>
By "flow" I mean that actually surprisingly little backtracking is required, even when you don't sequence break.
06:15
<@McMartin>
My second game, idly, involved me being unable to deal with water after accidentally powerbombing into Maridia way too early.
06:15
<@Derakon>
Ahh, yes.
06:15
<@Derakon>
Water without Gravity is suck.
06:15
< Vornicus>
I don't know if I would ever have found the super missile wall to Kraid if I didn't look at a walkthrough.
06:16
<@Derakon>
I think your clue there is the map download earlier in Brinstar, which says "Hey look, there's something east of this location." Which is not a very strong hint since there's a gap in the map.
06:16
<@McMartin>
Vorn: re: MF: The compass is sufficiently handholdy that I'm not comfortable saying it's mandatory.
06:16
< Vornicus>
a true thing.
06:17
<@Derakon>
Ooh. http://antwrp.gsfc.nasa.gov/apod/image/0711/lighthouse_westcott_big.jpg
06:18
< Vornicus>
Really though: a good game will have 1. clear flow, and 2. decent but not handholdy clues.
06:19
<@McMartin>
The Portal developer commentary was interesting, re: cluing.
06:19
<@McMartin>
They would put in explicit clues
06:19
<@McMartin>
And then implicit subconscious ones.
06:20
<@McMartin>
Which would then be jerked away later.
06:20
<@Derakon>
I don't follow.
06:20
< Vornicus>
How so?
06:20
<@McMartin>
One of the things they do to cue "You need to exploit physics to hurl yourself horizontally" is to checkerboard the floor where you'll be hitting at high speed.
06:21
<@McMartin>
I never noticed this
06:21
<@McMartin>
And yet, the first flinging puzzle that stopped me for a bit was the first one where they removed that cue.
06:21
<@Derakon>
Ahh.
06:21
<@Derakon>
So by "jerked away" you mean "not inserted on repetitions of the puzzle".
06:21
<@McMartin>
Not inserted on the fifth repetition of the puzzle element.
06:21
<@McMartin>
Flinging is a basic skill.
06:22
< Reiver>
They jerk teh cluing away deliberately?
06:22
<@McMartin>
Yes, because by then you're supposed to realize that you can do it, and because the pattern is never presented as a clue.
06:22
<@McMartin>
Other such cues are things like "If you need to aim something fiddly, the panel that isn't flush with the wall is the one you need to hit"
06:22
<@McMartin>
As stated, that rule is never violated if there is one non-flush with the wall.
06:23
<@McMartin>
But sometimes you need to do alternate aiming strategies, and, especially later, irregularity does not mean "You'll be needing a portal here eventually".
06:23 * McMartin tended to use Sentry Gun's aiming lasers for his own ends more than is typically healthy.
06:23
<@McMartin>
Especially since sentry guns can see and shoot through portals. =P
06:23 * Derakon facepalms.
06:24
<@McMartin>
But they have nice little laser sights that are visible from great distances!
06:24
<@McMartin>
You just put your shields/counterdoom in line with it before opening that end of the portal. >_>
06:25
<@McMartin>
Scorch marks from the High Energy Pellet are also good for this.
06:28
<@Derakon>
In other news, I'm kinda considering working a devil-trigger in.
06:28
<@McMartin>
Overdrive modes are fun.
06:28
<@McMartin>
(Says the guy whose primary TF2 class is Medic)
06:28
<@Derakon>
The batteries to drive it would make a convenient collectable.
06:28
<@McMartin>
(Alles ist gut mit der ?bercharger!)
06:29
<@Derakon>
Heh.
06:29 * Vornicus feeds Kirby a bomb with a skull on it.
06:29
<@McMartin>
And it actually calls it that in-game. The Medic has Cartoon German accent.
06:29
<@Derakon>
So this would augment your attacks and ground speed, and possibly enable an air dash.
06:29
<@McMartin>
(When you aren't the Medic, it's usually just "the invuln")
06:29
<@Derakon>
I'm trying to figure out how it would work with respects to mobility, though...
06:30
<@McMartin>
Sounds kind of like Super Sonic.
06:30
<@McMartin>
Jump higher, too.
06:30
<@Derakon>
I mean, if it does increase your flight capabilities, then I can't see how to make it work without letting extra batteries let you fly longer.
06:30
<@Derakon>
Which wreaks havoc on level design unless it's the last upgrade you get, but then what are the batteries for earlier?
06:30
<@McMartin>
Overdrive.
06:31
<@Derakon>
...hm. So you get the overdrive in segments?
06:31
<@McMartin>
You can't fly longer, but you can, say, burn all battery power at once to superjump
06:31
<@McMartin>
One enormous impulse.
06:31
<@McMartin>
But there's no cornering, so Permaflight is out.
06:31
<@Derakon>
Yes, but then if the superjump is of constant height, why do you have to burn all your battery power?
06:32
<@McMartin>
OK, don't make it burn all your batt, but don't chain impulses. Have a cooldown time.
06:32
<@Derakon>
I just need to find some way to make this work that doesn't make collecting N batteries be required.
06:32
<@Derakon>
Fair enough.
06:32
<@McMartin>
In short, make it be "use flight power to super doublejump"
06:32
<@McMartin>
You could even have it be the doublejump, when flight is earlygame and weak.
06:32
<@McMartin>
And flight-requiring barriers then need more finesse to navigate.
06:33
<@Derakon>
I'm not following here...
06:33
<@McMartin>
So, just having something high up won't stop you much.
06:33
<@McMartin>
It either has to be way high up (and require lots of batteries) or be something you can't do with jumps.
06:33
<@Derakon>
Mmm.
06:33
<@McMartin>
Say, because jumps would make you fall past the entrance you need.
06:33
<@McMartin>
So you need to fly down a bit and then over.
06:34
<@Derakon>
Worth thinking about, definitely.
06:34
<@McMartin>
Your Huge l33t s3qu3nc3 br34k3rz might be able to exploit cooldown time and walljumps to get it anyway, but that's what makes them l33t, right?
06:34
<@Derakon>
Right.
06:34
<@Derakon>
Hell, I might not even need an actual walljump; just some way to increase the hangtime enough to enable another jump.
06:34
<@McMartin>
Chutes.
06:35
<@McMartin>
Or fold-out wings.
06:35
<@Derakon>
...I'm not about to turn this into MDK.
06:35
< Vornicus>
ooh, chutes.
06:35
<@Derakon>
Good game, but...no.
06:35
<@McMartin>
Heh
06:35 * Vornicus takes notes.
06:35
<@McMartin>
It wouldn't be MDK! It's 2D! And there's no sniping!
06:35
<@McMartin>
Or six-armed dogs.
06:35 * Vornicus should play mdk.
06:36
<@Derakon>
I did make a model of a four-armed, two-legged robot earlier...
06:36
<@McMartin>
MDK is great just for the attitude problem.
06:36
<@Derakon>
And the dog, last I checked, is robotic.
06:36
<@McMartin>
The first powerup is The World's Smallest Nuclear Explosive.
06:36
<@McMartin>
You use it to unlock doors.
06:36
< Vornicus>
...all right then.
06:36
<@Derakon>
It is a grenade.
06:38
<@McMartin>
I do wonder how you fire your Face Gun without snapping your neck, though
06:39
<@Derakon>
Ask Kevyn.
06:39
<@McMartin>
That character was named "Kurt".
06:40
< Vornicus>
Yes, but ask Kevyn.
06:40
<@Derakon>
Yes, I'm aware. Kevyn from Schlock also got a face gun.
06:40
<@McMartin>
Oh.
06:40
<@McMartin>
Idly, Vorn, how goes Project KB, henceforth referred to as Kilobyte for Obfuscation Purposes?
06:41
< Vornicus>
I'm having trouble installing PyGame due to some silliness with libvorbis.
06:41
<@McMartin>
Blargh.
06:41
<@McMartin>
Hmm
06:41
< Vornicus>
_ov_pcm_total referenced from @executable_path/../Frameworks/SDL_mixer.framework/Versions/A/SDL_mixer expected to be defined in /usr/local/lib/libvorbisfile.0.dylib
06:41
< Vornicus>
And six others, all from the same file.
06:41
<@McMartin>
Do you have libvorbisfile along with libvorbis itself?
06:42
<@McMartin>
They're separate libraries, for reasons that somewhat escape me
06:42
< Vornicus>
Yes, I do.
06:42
< Vornicus>
...though, uh
06:42
< Reiver>
McM: One would assume it has neck bracing in there somewhere~
06:42
< Vornicus>
/usr/local/lib/libvorbisfile.3.dylib
06:42
<@McMartin>
Oy.
06:42
< Vornicus>
also /usr/local/lib/libvorbisfile.3.1.1.dylib and /usr/local/lib/libvorbisfile.dylib
06:42
<@McMartin>
Does symlinking the 3 to a 0 make it work?
06:42 * Reiver likes MDK. Wishes it had a higher resolution possible, though - the textures and models he can handle, but the 640x480 is a bit painful on a modern LCD.
06:43
<@McMartin>
(Does this mean you've given up on the data ripping, or that you succeeded in it?)
06:43
< Vornicus>
I've given up on it for now.
06:44
< Vornicus>
Well, not given up on it
06:44
< Vornicus>
Pushed it off until I have a place to put it once I've gotten it.
06:45
<@McMartin>
Nod
06:45
< Vornicus>
I have quite a bit of stuff that I already know how to handle.
06:45
<@McMartin>
Also, it occurs to me that there is a similar project I could undertake.
06:45
<@McMartin>
Though much lower-key.
06:49 * McMartin came across the BASIC source for an old game his dad liked to play back in his university days.
06:50 * Derakon posts to his gamedev filter, summarizing the overdrive ideas.
06:50
< Vornicus>
There is so much that I /do/ know that it's easier to name the stuff I don't know: namely, treasure and army generation, combat damage (but not any of the rest of combat), and the effects of exactly one artifact.
06:51
< Vornicus>
That seems to have worked, McM.
06:52
< Reiver>
You know the effects of the rest of the combat, but not damage?
06:52
< Vornicus>
Well, the rest of combat is movement and enemy AI, and I know how those work.
06:54
<@Derakon>
This is pretty badass: http://torokun.deviantart.com/art/Samus-Aran-Fan-Art-30046088
06:54
<@McMartin>
Vorn: All that said, if you're doing the Macdev thing, aren't you supposed to be packing yoru libraries in an .app instead of in /usr/local?
06:54
< Vornicus>
A true thing, but I'll deal with that later. I do at least have a second Mac in the house, and it's my target machine.
06:55
<@Derakon>
McM: you can do Unix-style development or Mac-style development.
06:55
<@Derakon>
I'm doing Niobium Unix-style because I'm used to it. ¬.¬
06:55
< Vornicus>
Now then.
06:55 * McMartin thought the disadvantage of Unix-style was that it then didn't work on anyone else's Mac. Sable had that problem for awhile. >_>
06:55
<@Derakon>
But I believe that doing it Mac style could just be as simple as renaming the root directory to "foo.app" and putting everything else in the right place.
06:55
< Vornicus>
Sorry about that.
06:56
< Vornicus>
:)
06:56
<@Derakon>
Okay, T-2 all.
06:57
< Vornicus>
ni der
06:57 * McMartin replies to the Overdrive post.
06:57 * McMartin then gets back to working on this paper.
06:57 * McMartin mutters
06:57 * Derakon nods. "Good point."
06:58
<@Derakon>
Hrm...if you superjump into the ceiling, then you should get "stuck" for a moment à la Castlevania superjumps, with the exception that if you hit jump again, then you spring off. Like Vorn suggested earlier.
06:58
<@McMartin>
That may be the first time I've said "I don't like this; it's too hard to abuse."
06:58
<@Derakon>
Heh.
06:58
< Vornicus>
heee
07:00
<@Derakon>
Righty-ho. Y'all have fun.
07:00 Derakon is now known as Derakon[AFK]
07:03
< Reiver>
McM: Wut
07:03
<@McMartin>
Reiver: My response to his post.
07:03
<@McMartin>
He likened my suggestion to MM3's "Rush Coil".
07:04
<@McMartin>
Which is a superjump that can only be triggered from the ground.
07:04
< Reiver>
right
07:05
<@McMartin>
And I objected to this on the grounds that Rush Coil is too hard to abuse and thus was not quite a good shorthand for my suggest
07:05
<@McMartin>
suggestion
07:05
< Reiver>
Ahh.
08:52 You're now known as TheWatcher
09:10 Chalcy [~Chalcedon@Nightstar-10789.ue.woosh.co.nz] has quit [Quit: Gone]
09:13 Vornicus [~vorn@Admin.Nightstar.Net] has quit [Ping Timeout]
11:02 Forj [~Forj@Nightstar-10789.ue.woosh.co.nz] has quit [Quit: Gone]
11:43 Thaqui [~Thaqui@Nightstar-26276.jetstream.xtra.co.nz] has quit [Quit: This computer has gone to sleep]
11:57 Vornicus [~vorn@Admin.Nightstar.Net] has joined #code
11:57 mode/#code [+o Vornicus] by ChanServ
14:47 GeekSoldier|work [~Rob@Nightstar-5218.pools.arcor-ip.net] has quit [Ping Timeout]
15:00 EvilDarkLord [~jjlehto3@Nightstar-2194.vipunen.hut.fi] has quit [Client exited]
15:17
<@Vornicus>
Right. I can't even write code that compiles right now.
15:18
<@Vornicus>
Never mind code that actually does what I want.
15:22 * Kyrre PatPats Vornicus.
15:52 GeekSoldier|work [~Rob@Nightstar-5105.pools.arcor-ip.net] has joined #code
16:15
< MyCatVerbs>
I really hate this damn machine
16:15
< MyCatVerbs>
And wish that they would sell it
16:15
< MyCatVerbs>
It never does just what I want,
16:15
< MyCatVerbs>
But only what I tell it. :(
16:17
< GeekSoldier|work>
hehe.
16:35 Vornicus is now known as Vornicus-Latens
16:52
<@ToxicFrog>
Wheee
16:52
<@ToxicFrog>
I'm writing a Lua compiler in Lua
16:53
<@ToxicFrog>
Except it actually compiles a superset of Lua, because I don't like the way metalua does things and want to implement my own.
17:04 GeekSoldier|work [~Rob@Nightstar-5105.pools.arcor-ip.net] has quit [Ping Timeout]
17:05 GeekSoldier|work [~Rob@Nightstar-4430.pools.arcor-ip.net] has joined #code
17:10 * ToxicFrog looks at lparse.c, and goe sinsane
17:13
<@ToxicFrog>
MAybe this wasn't such a hot idea after all.
17:14 * ToxicFrog ponders something simpler, starting with just a lexer and some token filtering rules and then ruthlessly exploiting Lua's pre-existing compiler
17:14 You're now known as TheWatcher[afk]
17:24 Forj [~Forj@Nightstar-10789.ue.woosh.co.nz] has joined #code
17:24 mode/#code [+o Forj] by ChanServ
17:31 Forj [~Forj@Nightstar-10789.ue.woosh.co.nz] has quit [Quit: Gone]
18:27
<@ToxicFrog>
Gnar. Tokf won't cut it.
18:27
<@ToxicFrog>
I need at least an AST to manipulate, so I need a lexer and parser
18:31 Attilla [~The.Attil@194.72.70.ns-11849] has quit [Quit: <Insert Humorous and/or serious exit message here>]
18:39 Attilla [~The.Attil@194.72.70.ns-11849] has joined #code
18:43 ErikMesoy [~ejm@Nightstar-3493.bb.online.no] has joined #code
18:43 ErikMesoy [~ejm@Nightstar-3493.bb.online.no] has left #code []
18:44 GeekSoldier|work is now known as GeekSoldier
18:54 You're now known as TheWatcher
19:32 Chalcedon [~Chalcedon@Nightstar-10789.ue.woosh.co.nz] has joined #code
19:32 mode/#code [+o Chalcedon] by ChanServ
20:04 GeekSoldier is now known as GeekSoldier|bed
20:09 EvilDarkLord [~jjlehto3@Nightstar-2194.vipunen.hut.fi] has joined #code
20:40
<@ToxicFrog>
Ok. I think I have a design for an extensible lexer.
20:40
<@ToxicFrog>
It will probably be ass-slow, but I can live with that.
20:41
<@ToxicFrog>
Basically: the lexer is a list of lexing functions. These functions can be guarded; guarded functions will be called only on strings matching some initial character (or possibly small regex)
20:41
<@ToxicFrog>
It goes down the list, passing in the text remaining, until it gets a result.
20:42
<@ToxicFrog>
The result is one or more tokens, followed by the remaining text that wasn't lexed.
20:42
<@ToxicFrog>
It repeats the process until the remaining text is ""
20:44
<@ToxicFrog>
It can also simply return true followed by the remaining text to indicate that a non-token was lexed and discarded (ie, a comment)
20:47
<@ToxicFrog>
Thus, you can add new lexemes by registering new lexer functions, with a given priority and optionally with a guard.
20:47
<@ToxicFrog>
Probably some convenience would be added for, for example, adding new keywords by reconfiguring the keyword lexer rather than adding a new function or replacing the keyword lexer.
21:03 Thaqui [~Thaqui@Nightstar-26276.jetstream.xtra.co.nz] has joined #code
21:03 mode/#code [+o Thaqui] by ChanServ
21:09 AbuDhabi [AnnoDomini@Nightstar-29598.neoplus.adsl.tpnet.pl] has quit [Ping Timeout]
21:09 AnnoDomini [AnnoDomini@Nightstar-29379.neoplus.adsl.tpnet.pl] has joined #Code
21:09 mode/#code [+o AnnoDomini] by ChanServ
21:26
<@McMartin>
TF: Doesn't flex basically actually do this? I distinctly recall you being able to implement nested comments that way.
21:26
<@McMartin>
Bison is full of hate and spiders, but flex and friends tend to be really nice
21:52
<@ToxicFrog>
I thought flex generated a pushdown automaton.
22:10 mode/#code [+oooooo Attilla EvilDarkLord GeekSoldier|bed Kyrre McMartin MyCatVerbs] by Reiver
22:11 mode/#code [+o Reiver] by Reiver
22:49
<@McMartin>
No, bison generates a pushdown automaton.
22:49
<@McMartin>
Flex has a state machine and a metastate machine.
22:49
<@McMartin>
And I think the metastate machine ends up having the same effect.
23:44
<@ToxicFrog>
Aah.
23:44
<@ToxicFrog>
Anyways, a winner is me; I now have a complete lexer or Lua 5.1.2, written inn Lua 5.1.2.
23:45
<@ToxicFrog>
I also have 25s ping times, so I think I'll sign off until I get home.
23:45
<@McMartin>
Heh
23:45
<@McMartin>
Hooray for metacircular evaluators
23:46
<@ToxicFrog>
(next step: parser, then customization functions)
23:46
<@McMartin>
Heh. Good luck.
23:46
<@McMartin>
Lexing is always easier than parsing. =/
23:47
<@ToxicFrog>
(I'm not writing the code generator; I compile by traversing the token stream or AST and emitting source, then handing it off to loadstring())
23:48
<@McMartin>
Aha.
--- Log closed Tue Nov 27 00:00:05 2007
code logs -> 2007 -> Mon, 26 Nov 2007< code.20071125.log - code.20071127.log >