Braid were an emo/indie rock band from Champaign, Illinois. They were active from 1993-1999. They produced three LPs in this time, as well as numerous EPs and split 7"s. After they broke up in 1999, they issued a live album and two compilations of rarities.

They play emo-pop in the vein of The Promise Ring and The Get Up Kids but have a tendency to rock just a little harder. Odd time changes, an emo trademark are common. Also, typical emo vocals, screamed and sung, strained to the point of breaking are here. Some like them, some hate them. I love them.

Something that may be interesting to note is that they recorded one song, their first, with a female lead singer. It's called Circus Of The Stars and is very... different from the rest of their catalog. I sometimes wonder what would've happened to Braid if she had stayed on as vocalist. It seems that a lot of the lyrics are about male angst, and would've sounded odd flowing from her lips.

It's also sort of interesting to note that their first record, Frankie Welfare Boy, Age 5 contains twenty-six songs. One for each letter of the alphabet.

Studio Albums Are:

Posthumous Material Includes:

The line up was fairly stable by 1995, and at the time of their breakup they were:

  • Damon Atkinson
  • Todd Bell
  • Chris Broach
  • Bob Nanna

I saw an icon of an animated twisting of two strands. While it was interesting and reasonably well done there were some things that I saw that didn't quite fit. The thing that bugged me the most was that the image was not perfectly looping - there was a gap of a few pixels in the image where the two strands were bound together, some white space, and then two new strands were twisted. To me, it would have been better if the image just kept going on and on without that break.

So, I decided to sit down and do my own looping strands. The most interesting is that of the braid with three strands. Opening up gimp and trying to do one frame, it quickly became apparent that this was a job for a program.

In writing the program, the first step was to write to an image format that was not a pain to write to. For this, PPM is perfectly suited. The current GD library cannot write to a .gif (the key to animated images) and I'm not 100% certain I'd want to use GD to write to it - it was much easier to write to the PPM file.

The second step is to get three strands to appear on the screen. These are sin waves that are separated by 120 degrees (or 2π/3 and 4π/3 in radians). At each spot, a 3x3 block was drawn to cover up the holes between images and make the line thick enough to see.

The $64,000 question is what strand goes over what strand? Classically, we recite this as "outside over center" or "left over center, right over center, left over center, right over center...". This doesn't translate into code well... or does it? Looking at the diagram of a braid that I had drawn out, and looking at the specific instances of the strands crossing a pattern rapidly became apparent:

  • If the crossing is in the lower half, the strand with the positive slope is on top.
  • If the crossing is in the upper half, the strand with the negative slope is on top.
Fortunately, the question of slope was trivial - the derivative of sin(x) is cos(x) (lucky me).

Once you have the PPM files, a program such as ppmtogif is then used to translate the images from ppm format to gif format, at which point your favorite gif animator can be used.

In sort:

  • Loop over the number of frames
    • Determine file name (0 padded so that UNIX globs sort correctly)
    • Open the file for write
    • Print the header of the PPM file
    • initialize the image array
    • Loop over x for the frame
      • Assign 3x3 block for red (0 offset), green (2π/3 offset), blue (4π/3 offset) for each x at y = 16 + 16(sin(x + offset + frame offset)
      • store the cos for each color (offset) for use in overlap
    • Loop over y, x
      • For each color pair (RG, RB, BG), if there is an overlap, look at the value of y and the cos to determine which should be on top.
      • Print the RGB value to the ppm file
      • Close the file

The perl code follows.

#!/usr/bin/perl

use strict;
my $max = 40;
my $pi = 22/7;

for(my $k = 0; $k < $max; $k++) {
    my $zk = sprintf("%0.2d",$k);
    open (FILE,">ppm/$zk");

    print FILE << "PPMHEAD";
P3
32 32
1
PPMHEAD

    my @img;
    foreach my $x (0 .. 31) {
        foreach my $y (0 .. 31) {
            foreach my $c (0,1,2) {
                $img[$x][$y][$c][0] = 0;
                $img[$x][$y][$c][1] = 0;
            }
        }
    }

# $dx = period within frame
# $dk = period within anim
    foreach my $x (0 .. 31) {
        my $dx = $x / 8;
        my $dk = $k / (2*$pi);
        foreach my $deltax (-1,0,1) {
            foreach my $deltay (-1,0,1) {
                next if($x == 0 and $deltax == -1);
                $img[$x+$deltax][$deltay + 16 +
                (16 * sin($dx + (0*$pi/3) + $dk))][0][0] = 1;
                $img[$x+$deltax][$deltay + 16 +
                (16 * sin($dx + (0*$pi/3) + $dk))][0][1] = cos($dx + (0*$pi/3) + $dk);

                $img[$x+$deltax][$deltay + 16 +
                (16 * sin($dx + (2*$pi/3) + $dk))][1][0] = 1;
                $img[$x+$deltax][$deltay + 16 +
                (16 * sin($dx + (2*$pi/3) + $dk))][1][1] = cos($dx + (2*$pi/3) + $dk);

                $img[$x+$deltax][$deltay + 16 +
                (16 * sin($dx + (4*$pi/3) + $dk))][2][0] = 1;
                $img[$x+$deltax][$deltay + 16 +
                (16 * sin($dx + (4*$pi/3) + $dk))][2][1] = cos($dx + (4*$pi/3) + $dk);
            }
        }
    }

    foreach my $y (0 .. 31) {
        foreach my $x (0 .. 31) {
            if ($img[$x][$y][0][0] and $img[$x][$y][1][0]) {
                if($y < 16) { # in neg half
                    if($img[$x][$y][0][1] > 0)
                        { print FILE "1 0 0"; }
                    else
                        { print FILE "0 1 0"; }
                }
                else { # in pos half
                    if($img[$x][$y][0][1] < 0)
                        { print FILE "1 0 0"; }
                    else
                        { print FILE "0 1 0"; }
                }
            }
            elsif ($img[$x][$y][1][0] and $img[$x][$y][2][0]) {
                if($y < 16) {        # in neg half
                    if($img[$x][$y][1][1] > 0)
                        { print FILE "0 1 0"; }
                    else
                        { print FILE "0 0 1"; }
                }
                else {  # in pos half
                    if($img[$x][$y][0][1] < 0)
                        { print FILE "0 1 0"; }
                    else
                        { print FILE "0 0 1"; }
                }
            }
            elsif ($img[$x][$y][0][0] and $img[$x][$y][2][0]) {
                if($y < 16) {# in neg half
                    if($img[$x][$y][0][1] > 0)
                        { print FILE "1 0 0"; }
                    else
                        { print FILE "0 0 1"; }
                }
                else {  # in pos half
                    if($img[$x][$y][0][1] < 0)
                        { print FILE "1 0 0"; }
                    else
                        { print FILE "0 0 1"; }
                }
            }
            else {      # no overlap
                print FILE "$img[$x][$y][0][0] "; # R
                print FILE "$img[$x][$y][1][0] "; # G
                print FILE "$img[$x][$y][2][0] "; # B
            }
            print FILE "\n";
        }
    }
    close(FILE);
}
Platform: Xbox Live Arcade, PC, Mac (forthcoming)
Genre: Puzzle/Platform
Developer: Jonathan Blow
Release Date: August 6, 2008
ESRB Rating: E10+ (Cartoon Violence, Crude Humour, Lyrics, Suggestive Themes)

One major change to the console world with this generation of consoles is the addition of download services, which publish small, inexpensive games through digital distribution. Xbox Live Arcade, WiiWare, and the Playstation Network provide independent game developers with a new means of distribution, backed by the promotional resources of the large console manufacturers. One developer that has come to prominence through these services is Jonathan Blow, with his popular Xbox Live Arcade game, Braid.

Braid is, on its surface, a lushly animated, beautifully orchestrated 2D platform game. The player guides the protagonist, Tim, though a series of worlds in search of the elusive Princess. However, the overall theme of the gameplay is focussed on the manipulation of time in the game world, and it is in the intricacies of the time manipulation mechanic that we find the meat of the game. At any point, the player may hold down the X button to reverse time. This power is, unlike in such games as Prince of Persia: The Sands of Time, completely free and unlimited. You could reverse all the way to the beginning of the level if you wish, and this is occasionally useful. Other time powers appear in parts of the game, each lending their own flavour to the puzzles in the various worlds.

With a basic grasp of the time manipulation abilities the platforming is quite straightforward and a skilled player can quickly traverse the full five worlds that make up the main game. Upon completing these worlds, though, the game does not progress to an ending; there is an additional world that is only unlocked when all the puzzle pieces scattered through the worlds are collected and assembled to reveal a picture for each world. The puzzle pieces are hidden in plain sight through the worlds, with the path to the piece sometimes obvious, but more often requiring an involved sequence of platforming and time manipulation. This puzzle aspect is what elevates and extends Braid's gameplay beyond that of your generic platformer. Of recent games, only Portal combines mind-bending puzzle elements with otherwise standard mechanics as effectively.

Visually, Braid is quite impressive, with detailed, hand-painted graphics and fluid animation. The few enemy types are all animated well and display a whimsical sense of humour which extends to the sound effects. A sweeping musical soundtrack adds to the pastoral atmosphere of the levels; the overall dreamlike atmosphere complements the thoughtful, reflective puzzle gameplay.

The fractured, ambiguous story of Braid is presented through books in the game's hub section. These books are placed as an introduction to each world and obliquely describe each world`s time power. For the interested player, there is much symbolism to be found, especially in the brilliant final level and subsequent ending. That said, the game is still deeply enjoyable without delving deeply into the story.

Overall, Braid is one of the best games available on the Xbox Live Arcade. The clever gameplay and strong atmosphere combine to make a compelling experience equal to the most immersive 3D games on the market. While its relatively high price of 1200 Microsoft Points (approximately $15) may be offputting, its unusual qualities make it stand above the pack. If you enjoy puzzle games and have an Xbox 360, you could do much worse than downloading and playing Braid.

Braid (?), v. t. [imp. &. p. p. Braided; p. pr. & vb. n. Braiding.] [OE. braiden, breiden, to pull, reach, braid, AS. bregdan to move to and fro, to weave; akin. to Icel. brega, D. breiden to knit, OS. bregdan to weave, OHG. brettan to brandish. Cf. Broid.]

1.

To weave, interlace, or entwine together, as three or more strands or threads; to form into a braid; to plait.

Braid your locks with rosy twine. Milton.

2.

To mingle, or to bring to a uniformly soft consistence, by beating, rubbing, or straining, as in some culinary operations.

3.

To reproach. [Obs.] See Upbraid.

Shak.

 

© Webster 1913.


Braid (?), n.

1.

A plait, band, or narrow fabric formed by intertwining or weaving together different strands.

A braid of hair composed of two different colors twined together. Scott.

2.

A narrow fabric, as of wool, silk, or linen, used for binding, trimming, or ornamenting dresses, etc.

 

© Webster 1913.


Braid, n. [Cf.Icel. brega to move quickly.]

1.

A quick motion; a start.

[Obs.]

Sackville.

2.

A fancy; freak; caprice.

[Obs.]

R. Hyrde.

 

© Webster 1913.


Braid v. i.

To start; to awake.

[Obs.]

Chaucer.

 

© Webster 1913.


Braid, a. [AS. braed, bred, deceit; akin to Icel. brag trick, AS. bredan, bregdan, to braid, knit, (hence) to knit a net, to draw into a net, i.e., to deceive. See Braid, v. t.]

Deceitful.

[Obs.]

Since Frenchmen are so braid, Marry that will, I live and die a maid. Shak.

 

© Webster 1913.

Log in or registerto write something here or to contact authors.