Talking about generic C++ classes

Hello, I did my first UE4 game for the latest LudumDare, you can test it here

I would like to talk about the C++ that could be implemented here.

I want to expand the game and add behaviours, animals.
For example, I want to add a snake that grows with shapes.
I wonder what it is the best way to do generic classes for all the puzzles. What would be better…a player controller class for each type of animal or a generic class, what would i win if i choose to do a c++ based blueprint instead of a pure blueprint? I mean, what’s the point of a C++ class if you can do almost everything in BP.
I’m a programmer for more than 2 decades now and I love to code, but after I completed the battery C++ tutorial

I don’t understand why should I have to create C++ classes if I can do directly blueprints.

For this game, from the ludum dare, in my mind, I have this:

  • A tutorial level with each animal to learn the basic game mechanics
  • After completing the tutorial, you fall to the world where you control the animal in an open-world minilevel where you can find the game mechanics from tutorials but with other combinations and stuff

Having this idea in mind, what would be the way to group classes:

  • A World BP/class to control everything in the Generic (Universal) scale and store stuff that is shared between behaviours
  • Puzzle BP/class to control all the puzzles?
  • Animal BP/class to control all the kind of animals/players

This is so hard to say ,but i think i’m not doing it right, and i’m talking about design here.