I've come across an excellent lecture with the examples of using ECS (ECS is a key concept in Unity3d, Unreal Engine and probably in many other game engines) with maximum profit from this approach to the objects organization: video 1
I've considered the using of this information in my project:
In my case, the game architecture implies a strict division into model and view for the following reasons (pattern MVC goo.gl/UUN6xq):
1. To evaluate a decision tree the AI will create copies of the current game field state and calculate the results of possible moves. These calculations shouldn't rely on the objects from the namespace
UnityEngine to be processed in a separate thread to increase performance;
2. For the final choice of the game visual style, I want to create several independent views (with different sets of animations and behaviors) and at any time I want to be able to switch between them;
3. At the subsequent addition of multiplayer, it will be much easier to synchronize the gameplay at different devices through the model without affecting the GameObjects and their components.
Therefore, ECS in my project can be only applied for the view – those objects that are placed on the stage and represent different aspects of the game state.
In case of that side-scroller from the lecture, it can be considered that the model is a physical engine for Unity, which is consistent with the ECS. Hence in that example project using of ECS is appropriate.
Link 1: goo.gl/UUN6xq