arthaud-proust / dev.arthaud.life

Life Game in JS
https://life.arthaud.dev
0 stars 0 forks source link

dev.arthaud.life

Jeu de la vie en TS

C'est quoi ?

Originelement une preuve de compétences, j'ai décidé de le convertir en jeu basé sur le "Jeu de la vie" de John Horton Conway.

Détails techniques

Technos

Développé avec VueJs, Tailwind, et Jest

Principes, architecture

J'ai travaillé sur la séparation des responsabilités, les principes SOLID et le TDD:

Genèse

J'ai eu envie de mettre en pratique plusieurs éléments du livre "Clean architecture" de Robert C. Martin, et un ami développait le Jeu de la vie. C'est un algorithme simple et rapide à développer, sur lequel j'ai pu travailler quelques principes SOLID et les tests unitaires.

Déroulement

J'ai commencé par un boilerplate avec TS et Jest. J'ai écrit mes tests unitaires puis j'ai écrit le code de logique au coeur du jeu (logique d'une cellule, de la matrice, d'un tour, ...).

Au départ, pas besoin de front : mes tests unitaires me montraient que tout fonctionnait. Puis j'ai affiché les grilles dans la console. Ensuite, j'ai eu envie de profiter du découplage logique/front pour venir changer cette visualisation console par un front en vuejs qui serait plus interactif. Cela s'est opéré sans problème, et j'ai rapidement eu un front sobre et fonctionnel.

J'ai partagé le petit site à des amis. Malheureusement j'étais la tête dans le guidon et le projet n'avais pas beaucoup de but pour les utilisateur (en fait il n'avait pas d'utilisateur type). J'ai ajouté un tutoriel et puis je me suis demandé ce que je voulais faire. Continuer la preuve de compétence purement technique ? Aller vers un jeu avec une réelle utilisation ?

Alors je suis parti sur un jeu. Car un projet sans utilisateurs c'est un projet qui ne rapporte pas d'argent, qui n'a pas de retours, qui ne s'améliore pas ? En partie. Je dois me confronter à des problématiques réelles, des évolutions qui n'émanent pas de moi. J'ai donc cherché à gamifier le jeu : j'ai ajouté une logique pour calculer un score, créé des tips pour informer le joueur au fur et à mesure (plutôt que le bombarder d'infos dès le début), etc. Certaines fonctionnalités sont passées, d'autres sont plus complexes (comme le "pokédex" de patterns de cellules).

Aboutissement

Ce projet est fini. J'ai beaucoup appris avec et c'était agréable de mettre en pratique des notions de clean code. Il n'y a pas de vrais joueurs, ni d'engouement autour de cette petite expérience mais c'est pas grave !
Depuis, j'ai commencé d'autres projets qui me permettent de pousser encore plus mon apprentissage.