We implemented the game itself in Unity, a well-known game engine with a large help forum and many functions. For version control we used Git, this doesn't work very well with unity but we managed to avoid problems by dividing the work clearly and not working on the same thing, which leads us to our agile way of working. We worked according to a scrum model where at the beginning of the week we entered everything that needed to be done during the week in a trello where we then distributed who was to do what. Every friday we then had an evaluation meeting where we reviewed how everyone had gone.
Prototype to finished level
When developing the levels we started by making paper prototypes, this made it easy to get the ideas down on paper and we could bounce ideas around and try out different concepts. After that we built the levels in unity with only the basic elements to be able to test drive through the courses. Finally, we added the graphics with foreground, background and other environmental elements. I had part in all these steps, but the third step was entirely my responsibility.
Sprite shape
To make it possible to quickly build up and create entire levels, we used sprite shape. It is a tool that unity has, which means that you can simply make profiles of edges, then unity itself can assemble and manipulate these according to self-made shapes, as you can see in the pictures here. I made spriteshape profiles for, among other things, the ground, the rocks, the branch platforms and the grass in the foreground and background.
Graphics
Worth mentioning is that I did all the graphics myself. All background details were drawn separately in procreate and then imported into unity as prefabs you could just drag and drop into the scene. To add more immersion to the game, I animated a lot of them, which leads to...
Animations
I also did all the animations myself with skeletal animation in unity with the help of unity's own rigging and animation system. This means that you don't have to draw different images for each frame. The player has a total of 8 different animations, while the mother duck only has two.
State pattern
For the player itself, we chose to use the state pattern. This means that you have different behaviors for the ducks depending on which state it is in. This makes the code very modular and easy to exchange.