1 hour ago, noizex said:
And I'd gladly hear about the "right way" to do this, because if ECS is bad, bad OO is bad, then what's good? Links, blog posts, articles, code samples please. I'm a bit tired of hearing one side advertising some ultimate solution to everything and more (which looks kinda ugly and is probably just as unmaintainable as anything else as soon as it grew to something bigger than some bazzilion of sprintes rotating at once on the screen), and another side bashing this, and mentioning some proper OO code which I obviously had never an honour to see.
I understand that you're annoyed by this "ad", they're just probably happy that this could solve their engine's problem and try to go radical. They wanna push their Unity code to a smart watch, so they gotta do what got to do. As long as you know that there's no extreme end when it comes to architecture, this is nothing but a resourceful information. Mix and match anything you like.
It's even more fierce in web development if you know it. MVC? AMVC? MVW? MMVW? VW Beetle? List goes on... there's even an "evangelist" job, whose job is to convert people to one of their frameworks, constantly pushing their approach, to ensure they win the developers hearts to become the gold standard of the web (sounds like Unity right now in gamedev, eh?). One best example is Ruby on Rails. It was so popular that some may not even know it's written in Ruby. All they know is it's, well, Ruby on Rails. The other is jQuery. It solved cross-browser problem, until better JavaScript is introduced. So it works in the past, but not anymore today. Heck, even Facebook starts off with PHP with traditional page-based approach, until they can push browser standard to have JavaScript to be turned on by default in browser and the approach changes to become a hybrid real-time AJAX floor cleaner. When they got too big, they solve their scalability issue by making their own PHP to C++ transpiler. Whatever works for them, just like what Unity is doing now for their own, which they happen to share.
The ECS approach they proposed is still experimental anyway (in Unity), and if you want me to be skeptical, in my opinion it will still definitely be a mixed approach in the end. Just like Oberon_Command said, there are no silver bullets when it comes to software design and architecture.