CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Temps réel node JS comment vider un tableau ?

SuperNG1Chuck
SuperNG1Chuck
Niveau 10
30 janvier 2018 à 22:07:33

Salut je développé un jeu tour par tour ou les parties sont sauvegarder dans un tableau global pour tout le monde
Mais du coup je peux pas supprimer mes entrée du tableau car sinon les index peuvent se retrouver faux
Du coup je fais un "delete" de l'entrée du tableau que je n'utilise mais du coup je voulais savoir si ça ne bouffer pas de la mémoire d'avoir un tableau qui grossit avec plein d'élément undefined !
Et sinon quelle était la solution pour pas que ce tableau grossisse et supprimer des éléments a la volée ?

dark_drow
dark_drow
Niveau 15
31 janvier 2018 à 09:05:54

c'est pas plutot une base de données dont tu as besoin ?

SuperNG1Chuck
SuperNG1Chuck
Niveau 10
31 janvier 2018 à 12:55:55

Pour les performances je me suis dis qu'accéder a un tableau serait beaucoup plus rapide !
Je me trompe ?

dark_drow
dark_drow
Niveau 15
31 janvier 2018 à 14:20:55

Tout dépend de l'utilisation que tu veux en faire :)
Si c'est juste pour sauver des parties, tu n'as à priori pas besoin d'un temps d'accès plus petit que quelques millisecondes ?

EhVian
EhVian
Niveau 6
31 janvier 2018 à 23:59:02

Totalement inutile d'utiliser une base de données dans ton cas.. Essaye juste de revoir ton code, tu ne devrais pas te retrouver avec des undefined. En JS, il y a un GCC donc je pense pas.

EhVian
EhVian
Niveau 6
01 février 2018 à 00:02:26

Cela dit, tu ne donnes pas assez d'informations sur ton jeu, la durée d'une partie, la durée d'un tour, si les joueurs sont sur un même support, ou si c'est un jeu multijoueur par internet.. D'où, je comprend le first

SuperNG1Chuck
SuperNG1Chuck
Niveau 10
01 février 2018 à 07:46:46

oui désolé,

Donc je réalise un jeu de plateau multijoueur en temps réel ( une copie de ce jeu https://fr.boardgamearenaa.com/#!gamepanel?game=alveole ) d'un joueur contre un joueur, avec des parties où chaque joueur à 6 minutes pour jouer tout ses tours.

Un joueur dispose de 9 pions, Le but est d'être le premier à rassembler tous SES pions donc en moins de 6 minutes sinon c'est l'adversaire qui gagne !
donc une fois que la partie est finis je sauvegarde le vainqueur en base puis c'est tout.

donc chaque partie est stocké dans un tableau d'objet partie : la position de chaque piece, le nom des joueurs, à qui c'est le tour etc ... quand un joueur joue son coup côté client, il appelle le serveur qui va chercher dans ce tableau pour savoir si c'est à lui de jouer, si son coup est valide par rapport à la position sauvcegardé des pièces .

une fois que la partie est finis je souhaite supprimer cette entrée du tableau, sauf que pour chaque joueur étant en partie je stocke l'id de sa partie donc si je supprime .splice l'entrée du tableau d'une partie fini ceux étant toujours en partie n'auront plus le bon id et donc plus rien ne fonctionne

donc moi ma solution actuelle c'est de faire un delete de l'entrée du tableau d'une partie fini ce qui a pour caracteristique de mettre undefined dans l'entrée du tableau, et donc je me dis que le tableau va grossir avec le temps, et je me pose la question si ca va pas engendré des problèmes de performances d'avoir un tableau qui grossit comme ca, par exemple pour des recherches avec _.findindex ....

et je me pose aussi la question si vous connaissiez une meilleur solutionde conception pour éviter ce genre de problème

:merci:

dark_drow
dark_drow
Niveau 15
01 février 2018 à 09:26:17

Ah oki oui j'avais mal compris la question...
Si chaque partie à un ID unique pourquoi ne pas plutôt utiliser un objet JavaScript avec en clef l'id et en valeur la partie, plutôt qu'un tableau ? L'accès et la suppression sont des opérations instantanées et tu n'auras plus le problème d'index qui plantent

SuperNG1Chuck
SuperNG1Chuck
Niveau 10
01 février 2018 à 11:10:41

Ah putin un dictionnaire ?
Genre

Dico = {}
Dico["GUID"]= objet partie

Delete : dico[GUID] = null

?????

dark_drow
dark_drow
Niveau 15
01 février 2018 à 12:37:10

Oui, plutôt undefined que null d'ailleurs
Normalement la syntaxe correcte serait
delete objet[guid]
Mais pour des raisons de performance on met la valeur à undefined... Note que ça sera reglé dans une version prochaine de nodejs

lisarael
lisarael
Niveau 13
03 février 2018 à 12:56:26

Utilise un Map : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment