So what makes for a good character? Well, you've got to make your imaginary friends 3D.
In the first dimension, you give them surface traits, what the world sees: what the character looks like, dresses like, what he likes to do, eat, drink and so on.
In the second dimension, you give the reader the reasons why your character does what he does. We see where this person comes from with all the pain and sorrow. Help the reader develop empathy for your character so that they want to go on this journey with them.
In the third dimension, you show the true nature of who your character is. When push comes to shove, when the stakes are at their highest, what choices does your character make? It is in those moments that we get to see who they really are, not what they want the world to see, which is first dimension stuff.
And how do you show all three dimensions to the reader? Well, the first is simple.. but for the second and third, you put your MC in a path where he will have to react and make decisions. It will be through those reactions and choices that the reader will get to know and connect with your character.