Project Three: Requirements

Procedurally-Generated Bestiary

  1. Write a program that generates and draws the head and face of an imaginary creature;
  2. In order to accomplish this, include at three separate “custom functions” (scripts) in your GameMaker code;
  3. At least one of those custom functions should return() a value (the other two, if you wish, do not need to return() any values;
  4. Creature faces should have at least 3 features (for example, your faces may all feature eyes, a mouth, and a nose);
  5. Parameterize those features across one or more dimensions of variability:
    1. Parameters for any single facial feature might include:  Size, position, color, quantity, angle, transparency, symmetry.
    2. In particular, placement of features on faces should be within random ranges on at least 2 of these features (e.g., you might always put the eyes in the same place, but the exact mouth position for each creature is randomized from a predetermined range);
  6. Your goal is to ensure that every randomized head is unique and surprising (and “makes sense”).


Remember: You’re modeling procedurally-generated creature FACES/HEADS only. Try to steer clear of worrying about bodies, as that introduces so many more variables to this circus.

Your program should generate at least two dozen combinations of features, heads, colors, etc., saving each one independently as a PNG file, at least 800×800 in size.

Advanced Challenges

  • Allow for player input:  Player defines parametric ranges for randomized outcomes (e.g., between 3 and 5 eyes);
  • Introduce basic animation to your procedural beast:  Eye blinking, slight tilt of the head, etc.;
  • Create a short code that describes all of the parameters for any specific creature, and include that DNA-like code on each image you output. 
    • Double-up on the challenge: Players should be able to input that code later and generate a perfect replica of the creature.

Notes on Appearance

This project takes a break from building-out gameplay and highly-interactive dynamics, and instead allows you to focus on the aesthetics of the project. Consider carefully, for example, your color palette, aim for sprites that share a similar visual style, and so on.

Where resized, sprites should still appear relatively clear and not be over-interpolated.

Give thought to the presentation: Is it realistic, pseudo-3D, minimalistic, cartoonish, hand-drawn, etc.? Is there a sense of humor (or an earnest seriousness) visible across all of the creatures? Are faces consistent in their definition?

For a real-world parallel, consider this composite character sheet featuring characters from the animated TV program The Simpsons.

The artists use a lot of shared design features to create a sense of characters that “hang together.”

Look at the eyes in the image above, for example: Even though each pair is unique — you couldn’t easily swap Mr. Burns’ eyes for Marge’s, for example — the fact is they have a lot in common:

  • They tend to occupy a LOT of space on the characters’ faces;
  • the eyeballs have a strongly spherical shape, and often look as though they are barely contained by the characters’ brows;
  • they almost always sit higher on the face than the characters’ ears.
  • In the case of some of the characters, the eyeballs actually touch one another, and are seated atop the nose.
  • Where characters’ eyes don’t touch, they are separated only by the single width of a nose.
  • Most characters do not have eyebrows.
  • Even where they are expressing considerable emotion, the eyes of Groening’s characters tend to continue to operate symmetrically.
  • The line work on the Simpson’s characters is always consistent: Uniformly wide, precisely drawn (not “sketchy”), yet still very recognizably drawn by hand.
  • The artists use an absolute minimum of lines to convey a shape, and they seldom if ever resort to artistic techniques like “shading,” “shadow,” “foreshortening,” etc.

Ideally, we want creatures from our bestiary to look as though they are drawn from the same source material.

Leave a Reply

Your email address will not be published. Required fields are marked *