Bonjour,
Ouep, l'ECS est "sympa" mais je crois que c'est surtout un effet de mode. Il ne me semble pas que l'on puisse faire un jeu complet avec l'ECS. Enfin, c'est ce dont j'ai l'impression, je me trompe surement.
Maintenant voyons le code et je dois dire, il y a quelque trucs qui me font peur.
Ici :
std::vector < std::unique_ptr < System > > _system ;//la class mère de tous les systèmes.
Le commentaire ne convient pas à ce que je vois. Le commentaire, pour moi, semble dire que je n'aurais qu'une instance de System, alors qu'ici, on a plusieurs probablement systèmes.
1 2
| Resources _resources ; // contient tout le package ( textures etc...) chargé, sinon le charge
std::vector < Data > _data ; //contient les données de base d'un objet. |
Quelle est la différence entre Data (une données) et une ressources ?
Data( bool& time ) : _time ( time )
Un temps en booléen, moi, j'ai du mal. Mais en plus, je n'ai pas du tout, compris à quoi il servait, surtout dans le constructeur.
Une Data avec :
C'est plus qu'une Data, genre, elle est Positionnable.
void Game::build( std::string name , float x , float y )
Je conseille de passer les std::string en référence constante. Mais on me dit qu'en C++11, ce n'est plus vraiment d'actualité ?
De plus la fonction "build" me semble gérer beaucoup de chargement (load).
std::multimap < size_t , Graphics > _graphics ;
Pour moi, Draw n'a pas besoin de contenir les Graphics. De plus, pourquoi la size est la clé (pour identifier les types ?) ?
Pour moi, on passe une instance par une de Graphics au Drawer afin de lui demander d'afficher.
Enfin, comme je l'ai dit, je ne suis pas convaincu de l'ECS, mais si je trouve cela cool et amusant.
Partager