Closed BastLast closed 1 year ago
Pour la campagne je pense que ce serait bien d'ajouter une sauvegarde des missions déjà faites ou non car :
Je propose d'enregistrer un blob binaire avec chaque bit qui correspond à une mission de campagne faite, par exemple : Un joueur qui a en sauvegarde 0b1110111111111101, on sait qu'il lui manque la mission 4 et 15, on peut donc les lui faire faire
J'aime bien go convertir ce commentaire en issue
Cette issue sert à ça en soit
Ah ouais non en fait ça marche pas car si on ajoute une mission au milieu faut tout décaler. Faut trouver un truc mieux
Ah ouais non en fait ça marche pas car si on ajoute une mission au milieu faut tout décaler. Faut trouver un truc mieux
Quel est le soucis de tout décaler ? Ca se fait en une migration non ?
C'est chiant à faire et c'est le meilleur moyen de se planter
On fait une fonction dans utils qu'on test avec des test unitaires et qu'on a juste à appeler dans les migrations
L'autre option c'est une table externe et une tablende jointure
proposition : on donne un id aux missions (id string, pas int) qui serait unique à chaque mission de campagne, comme ca suffit de stocker dans le joueur à chaque nouvelle maj les nouvelles missions. La position de mission resterait, donnant la dernière mission à effectuer
Nanpas dans le joeur pitié ca va faire une string gigantesque et indéchiffrable.
Tu fais une table missions campagne
Et une table "mission campagne done" Qui contient une colonne "id player" et une "mission id"
Et tu peux faire un select qui te donne toutes les id de missions réussies
La table va grandir super vite ça va être lourd
La table va grandir super vite ça va être lourd
La table en question c'est 2 integer par ligne ca va pas prendre plus de place que ton blob
1 int = 4 octets
Pour un joueur ayant fait 50 missions : 50 2 4 = 400 octets
Si on ajoute une colonne dans la table MissionInfo en stockant un blob (8 missions par octets) : 50 / 8 = 7 octets pour stocker
Donc pour cet exemple on est sur un ratio de 5714%
Pour 100 missions ça fait un ratio de 6154%
Ah et j'ai pas compté le temps CPU pour faire la jointure
Alors go faire mon idée avec la fonction testé unitairement
Memz si je pense qu'on peut tanker 800 octet x 20k joueurs
SALE POLUEUR
SALE POLUEUR
So tu as mieux go proposer
cette story a été faire à travers la pr #2203
à faire après #2118