BrightBit wrote:Thank you for your detailed answer. I will definitely have to think about it.
You're welcome.
That's a serious undertaking as it is even without beating your head against the wall of components
BrightBit wrote:Let's take this example for my component system. I would create a SilverComponent that could be attached to any GameObject (an arbitrary item) and would therefore be able to influence aspects of the game as well by asking for "Hit" events (collisions with entities) of its GameObject and reacting to them.
What you're talking about is the double-dispatch. Hiding it behind "events" might complicate things, but the double-dispatch is a beast in itself and requires a trained hand, so that won't be easy either way.
BrightBit wrote:Another advantage in contrast to classes is the aforementioned code redundancy reduction. If you have a class that can be scripted and a class that can be animated, you'll need to inherit from both classes to create a new class that can be animated and scripted as well.
That's a common misconception that leads to clumsy and inflexible designs that are painful to both maintain and evolve. Unfortunately I see that left and right.
Use inheritance as a tool. Don't use it to reflect some properties of your domain just because they seem related. A good rule is to only use inheritance if your base class has to sent messages to derived classes. Otherwise don't use it as it introduces too much coupling into the system. Think interfaces instead. They are your best asset in building loosely coupled code around abstractions.
BrightBit wrote:The more complex your class hierarchy is, the more difficult it will get to create new classes that inherit old functionality without causing redundancy.
Not sure about redundancy but everything else is exactly what I was talking about above. Avoid complex hierarchies and use interfaces to split them into simple inheritance chains of implementations.
BrightBit wrote:This example might not be the best but it hopefully illustrates that it would be a lot easier to combine preexisting functionality with components. As I said I am aware of the fact that 100% flexibility isn't possible but my vision of the game that I want to create still isn't very clear and I am hoping that a component system will help me experiment more easily (because of its flexibility).
Well, I hope you will post about your experience in that regard when you're done with your game.
BrightBit wrote:Nevertheless I am really grateful for your critiques and comments. Kudos for you!

No problem. Good luck with your vampirehack!
