Bonjour,
Pour mon jeu Historia, j'utilise un système à entités.
Je ne vais pas expliquer ici en détail ce qu'est un système à entités, ce n'est pas l'objet. Pour résumer, les systèmes à entités répondent aux limites d'une approche orientée objets (création de hiérarchies de classes). Dans un système à entités on associe dynamiquement des composants (classes ou structures représentant les données) à des entités qui ne sont au final que des identifiants.
J'ai écrit une petite bibliothèque en FreePascal en me basant sur les concepts proposés ici.
La classe TEntityManager permet de gérer les entités et composants.
Ma question porte sur le type de variable à utiliser pour l'identifiant : entier ou UUID ? Les exemples proposés (en Java, Objective C...) utilisent des entiers pour identifier les entités. Mais l'article suggère d'utiliser des GUID au lieu d'entiers.
En FreePascal, le type TGUID est un enregistrement (équivalent d'un struct de C/C++). La solution qui me semble la plus simple est de convertir cet identifiant en chaîne de caractères : 110e8400-e29b-11d4-a716-446655440000.
Est-ce une bonne idée d'utiliser des chaînes au lieu d'entiers comme identifiants des entités du jeu, sachant que je dois gérer au final plusieurs dizaines de milliers d'entités ? Quelles sont les conséquences sur les performances (CPU, mémoire) ?
Je développe en Free Pascal mais je pense que ma question est valable dans n'importe quel langage.
Partager