28-01-2020, 01:05 AM
Citation :Qu'est-ce qui fait d'Elixir votre langage de choix, ses killer feats ?
Pour ma part j'utilisais Erlang depuis plusieurs années quand Elixir est sorti, et par rapport à Erlang le langage est plus confortable (bien que perso je n'aime pas la syntaxe Rubyesque).
Je ne me rappelle plus du jour où j'ai découvert Erlang, mais je sais que j'ai accroché direct, pour la même raison que Sephi, avoir un système qui vit sa vie, réactif, et qui permet d'avoir à portée de main plein d'outils qui nécessitaient des programmes externes en PHP : queues, websockets/push, cron, etc. Même la base de données devient accessoire, je me sers du SQL là où il apporte quelque chose (relations, requêtes sur des collections) mais pas pour stocker un état complexe d'une partie, qui ressemble plus à un arbre de données qu'à un simple record avec des champs string/integer/etc.
Les jeux ont généralement une forte composante temps : tel bâtiment met N secondes à se contruire, à produire une ressource, tel déplacement de troupes prend N minutes, etc. Souvent le plus simple est de calculer tout ce qui s'est passé dans le passé au moment où on veut voir l'état actuel des choses, mais c'est cool de pouvoir aussi le déclencher de façon régulière.
Par exemple, si tu implémentes un marché d'échange entre les joueurs, il faut que le marché soit toujours à jour, et donc que la production des joueurs soit toujours à jour. Si tu calcules tout au moment où quelqu'un affiche le marché, ça peut prendre plusieurs secondes, déjà c'est relou, mais en plus tu augmentes les chances que deux joueurs demandent cet affichage en même temps, donc devoir gérer des transactions, faire des vérifications supplémentaires, et surtout à chaque fois qu'on affiche le marché tu dois vérifier que tout ton jeu est à jour. Pour un jeu complexe ça devient vite relou.
Autre exemple, dans mon quiz on a N secondes pour répondre. Je n'ai pas trop réfléchi à comment le faire en PHP, ça ne serait pas bien méchant, mais là en tout cas ma partie reçoit un message au bout des N secondes, ce qui est une façon infiniment simple de gérer le truc. Ensuite elle calcule qui a répondu juste, et envoie d'elle-même le nouvel état du jeu aux joueurs.