What I have learned

Inverse kinematics

This is the first time I have implemented an inverse kinematics system. Surprisingly, the implementation took not much time. But tuning and limiting the angles took longer. At first, I did the flip wrong (when changing look direction from left to right or vice versa). This is a very simple implementation (albeit using 3D vectors) and a full 3D implementation would take probably a bit longer and would need to keep a transformation matrix instead of only basically a point and vector. I have to investigate how constraints could be implemented in 3D.
Playing around with a kinematics system the idea of skeletal animation isn't that far away. It could probably be done pretty easy. Taking key frames would be a matter of an editor and the animation should be pretty straight forward using the vectors slerp and lerp functions to calculate the positions in between the key frames. Maybe next time.

procedural generated images

This time we decided to not use any paint program but to try to generate the art by code. You have seen the result. It was fun. One advantage I see is, that it could easily be parametrized for animations or similar.

scene graph

The game does not use a scene graph, but there is the ability to attach and detach an entity to other objects. The idea was that the attached objects should transform the same way as the object itself, e.g. if a platform moves all objects attached to it like plants or the player standing on it should move too. This is a very basic form of a scene graph. One thing that I probably miss is the mouse pointer. When standing on a moving platform the mouse pointer seems to lag behind the movement. I haven't looked into it but I think the movement of the platform isn't taken into account.