So, about a year ago I began working on my current project, which is also my most-complex project in relation to gaming. It started out as a component-based 2D game engine, simply because I wanted to learn about component-based systems worked, and I really wanted to try my hand at it.
Now, I look at my code, and I realize that I have started to add very game-specific code this last month, because I have been developing a game idea in the background for about 2 years and I'm finally ready to focus on that. In all honesty, I see the component-based system as an obstacle because those systems work awesomely with a complex interface, and using said interface to develop a game from the ground up without too much access to the back end. At the same time, I have a test-bed that I have been using to test new things.
In this test bed it took me 24 hours to get a working physics system going, and it took be about 2 weeks to get that same system integrated into my component-based system for multiple reasons.
I am thinking about restarting and focusing on getting a single game done, and not worrying about scaling the engine to larger projects since I want to get the game done in a timely manner. What do you guys think? In all honesty, this past year has taught me a TREMENDOUS amount, but I think I could finish this game much faster with a simpler architecture, and my component-based engine should definitely be re-written at a later date, using what I have learned.
I'd say restart, stop designing the engine and start designing focusing on what the game needs.
When you work on a game the engine comes together by itself by separating real features you really needed; when you try to design an engine ground-up, you end up adding a bunch of features you like that might be useless and for sure aren't tied together well enough to really shorten your development times.