A Processing workshop about polymorphism and reflection.
The idea behind The Abyss project was to build a system and then let everyone contribute, with a good balance between individual and collaborative work.
Students could build new creatures or expand features of the abyss itself. For beginners it was easy enough to contribute with a basic creature, more advanced students could train their graphic skills or even build creatures which interacted with other creatures.
After several requests I decided to publish the (far from perfect) source code of The Abyss.
I left a few of my own example creatures but student’s creatures are not included as I didn’t ask their permission to publish the code.
Feel free to use the concept and code for your own workshops or lectures or contribute with your own leviathan on github:


  1. Extend the SuperCreature class and build your own creature.
  2. Allowed colors are white with alpha shades. Not a strict rule.
  3. Each creature must implement the “move()” and “draw()” methods. (see the SuperCreature class for details).
  4. Transforms should use the pos, rot, sca vectors.
  5. Animations can be timed with frames or actual time.
  6. The name of the new creature class is built with the authors initals and the creature name (not an optimal naming convention but it works with 10-20 people).
  7. The .pde file must have the same name of the class (for example: AGCubus.pde).
  8. Insert your name, the creature name and the version in the constructor (to do: annotations?).
  9. Break all rules and build something new.

During a workshop in december 2010, students of the 1st and 3rd year at ECAL in Lausanne learned how to create and then extended a generic “SuperCreature” class. A creature manager took care of the creatures (via Java reflection) and added them to The Abyss. 52 different types of creatures populated the deep waters at the end of the five days workshop.