Catherine Coyle – Looking Outwards – 01

Considered a ‘gold standard’ for indie games and independent computing projects in general is Cave Story. 

Above is a fan made trailer for the game.

This entire game from the graphics to the music was written by one person, Daisuke “Pixel” Amaya, during his free time over a five year period. It was released for free in 2004 and has been a cult classic ever since due to its nostalgic feeling and catchy soundtrack.

I find it highly inspiring because he started the project as a college student working on it for fun and was able to make something amazing! Inspired by classic 2D side scrolling games such as Super Metroid, Pixel wrote the game in C++.

It’s amazing to me that one person could create such a huge project all on their own. Rather than being a technological feat itself (especially as it’s been 14 years since its release), I find that the opportunities presented by this game lie in how it means literally anyone could create their own large-scale project like this and share it with the world. It seems daunting but is definitely possible, and I find that very inspiring!

A screenshot from the game

Although an updated version titled Cave Story + is currently for sale on multiple platforms, the original remains free on its website! Find it here if you are looking to try it out yourself.

Catherine Coyle – Project 01 – Face

catherineFace

// Catherine Coyle =)
// Section C
// ccoyle@andrew.cmu.edu
// Project 01 - self portrait!

function setup() {
    createCanvas(500,500);
}

function draw() {
    background(152, 157, 224);
    stroke(0);
    strokeWeight(0);
   
    // face
    fill(255, 215, 191);
    rect(150,100,200,200);
    quad(150,300,200,350,300,350,350,300);
    fill(255, 173, 170);
    ellipse(180,245,40,40);
    ellipse(320,245,40,40);
    
    // eyes and eyelashes
    fill(255, 250, 247);
    triangle(180,200,200,180,220,200);
    triangle(280,200,300,180,320,200);
    fill(153, 86, 59);
    triangle(180,200,186,200,183,205);
    triangle(186,200,192,200,189,205);
    triangle(320,200,314,200,317,205);
    triangle(314,200,308,200,311,205);
    
    // nose
    fill(237, 186, 161);
    triangle(250,200,220,250,280,250);
    fill(237, 173, 154);
    quad(220,250,240,260,260,260,280,250)
    fill(247, 214, 197);
    ellipse(250,245,35,10);
    fill(99, 89, 84);
    ellipse(240,255,10,10);
    ellipse(260,255,10,10);
    
    // mouth
    fill(0);
    rect(200,290,100,30);
    fill(255);
    quad(200,290,300,320,200,320,300,290);
    rect(208,292,84,26);
    fill(255, 173, 170);
    quad(200,320,220,330,280,330,300,320);
    fill(252, 155, 151);
    triangle(200,290,250,290,240,280);
    triangle(300,290,250,290,260,280);
    
    // hair and eyebrows
    fill(153, 86, 59);
    rect(180,160,40,12);
    rect(280,160,40,12)
    triangle(180,160,180,172,160,172);
    triangle(320,160,320,172,340,172);
    fill(119, 60, 35);
    triangle(220,100,350,100,350,200);
    triangle(150,100,220,100,150,200);
    triangle(350,100,350,350,425,350);
    triangle(150,100,150,350,75,350);
    quad(150,100,200,50,300,50,350,100)
    
    // other details (neck, shirt, tips of hair, etc)
    fill(237, 173, 154);
    rect(200,350,100,50);
    fill(244, 96, 85);
    rect(150,400,200,100);
    triangle(150,400,150,500,100,500);
    triangle(350,400,350,500,400,500);
    fill(255, 215, 191);
    rect(200,370,100,30);
    quad(200,400,225,425,275,425,300,400);
    fill(99, 36, 24);
    triangle(150,300,150,350,200,350);
    triangle(300,350,350,300,350,350)
    
    // freckles
    fill(142, 99, 71);
    ellipse(200,245,5,5);
    ellipse(180,225,5,5);
    ellipse(160,245,5,5);
    ellipse(280,270,5,5);
    
    // eyeballs MOVEMENT!!!
    fill(0);
    eyeX=250;
    eyeY=193;
    yMovement=mouseY;
    xMovement=mouseX;
    if (mouseX < 190) {
      eyeX =190
    }
    else if (mouseX > 320){
      eyeX = 205
    }
    else {
      eyeX=175 + xMovement/10;
    }
    if (mouseY<193){
      eyeY=eyeY-(190-yMovement)
    }
    ellipse(eyeX,(eyeY/30)+187,15,15);
    ellipse(eyeX+100,(eyeY/30)+187,15,15);

    // covering up the edges of the eyes
    fill(255, 215, 191);
    triangle(180,200,200,180,180,180);
    triangle(200,180,220,200,220,180);
    triangle(280,200,300,180,280,180);
    triangle(300,180,320,200,320,180)
}

This was so fun to make! I always like really block-y, geometric art styles, but I’ve never really tried to make anything in that way before so I thought this was a good chance to try it out! I drew a sketch on paper of how I generally wanted it to look and then got to experimenting in p5. I really wanted to get the eyes to follow your mouse around just to see if I could figure it out, and it was a challenge but I think it worked out okay. Overall this is not the cutest picture I’ve ever made, but I’m happy with it!