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

Thread en java, utilité dans un RPG ?

thelastofus2
thelastofus2
Niveau 32
30 octobre 2015 à 13:10:11

Bonjour,

J'aimerais savoir si il est nécessaire, ou mieux, d'utiliser des threads en java pour un RPG ou l'on dirige un personnage en vue de haut et avec d'autre PNJ qui se déplace avec une IA ?
Et j'ai entendu parlé de thread pool, c'est mieux pour pouvoir contrôler plusieurs PNJ ?
Merci d'avance

collax
collax
Niveau 10
30 octobre 2015 à 13:37:44

Le multithreading permet de gagner en performance (si c'est bien fait :hap: ) mais en as-tu vraiment besoin pour un simple rpg en 2d ? Parce qu'il faut aussi prendre en compte qu'utiliser les thread complexifiera énormément ton code et si c'est mal fait ça peut le rendre ingérable.
Eventuellement, ça pourrait être intéressant de séparer le chargement des images et des données des maps dans un thread à part mais là aussi le gain apporté risque d'être minimal pour un code plus complexe à écrire et à debugger.

A part si c'est un projet d'entrainement pour apprendre à entre autre manipuler les threads, je te conseille de ne pas les utiliser :ok:

godrik
godrik
Niveau 30
30 octobre 2015 à 14:34:23

Il y a deux raisons d'ecrire du code multi-threade:
-l'asynchronie, tu veux que deux bouts de code s'execute presque indepedement sans avoir a gerer toi meme comment leur execution s'entrelace. Souvent, ca sert a gerer le reseau, a precharger des zones, a detacher l'IA du moteur d'affichage, ...
-utiliser tous les cores de la machine. Un thread est mappe par le systeme sur un core. Donc si tu veux utiliser la puissance de 4 core, il faut 4 threads qui tournent en permanence.

typedefstruct
typedefstruct
Niveau 7
30 octobre 2015 à 17:21:18

-utiliser tous les cores de la machine. Un thread est mappe par le systeme sur un core. Donc si tu veux utiliser la puissance de 4 core, il faut 4 threads qui tournent en permanence.

Jusqu'à maintenant j'avais compris que fork() = nouveau processus = utilisation de plusieurs coeurs et que thread = même processus = utilisation d'un seul coeur, c'est faux ?

shinigota
shinigota
Niveau 10
30 octobre 2015 à 17:40:25

Le 30 octobre 2015 à 17:21:18 typedefstruct a écrit :

-utiliser tous les cores de la machine. Un thread est mappe par le systeme sur un core. Donc si tu veux utiliser la puissance de 4 core, il faut 4 threads qui tournent en permanence.

Jusqu'à maintenant j'avais compris que fork() = nouveau processus = utilisation de plusieurs coeurs et que thread = même processus = utilisation d'un seul coeur, c'est faux ?

Un processus, lourd ou léger (donc un fork ou thread) peut tourner sur un autre coeur indépendamment des autres. :oui:

Mais en effet, pour l'auteur, l'utilisation de thread dépend de ce que t'as à faire et la complexité du projet.
Des fois ça sert un peu à rien, d'autres fois c'est inévitable et surtout, ça complexifie énormément le code :oui:

thelastofus2
thelastofus2
Niveau 32
30 octobre 2015 à 17:46:23

"-utiliser tous les cores de la machine. Un thread est mappe par le systeme sur un core. Donc si tu veux utiliser la puissance de 4 core, il faut 4 threads qui tournent en permanence."

Ah, mais si par exemple je veux gérer les déplacements de 200 PNJ qui se baladent dans une ville, je peux utiliser 200 threads ? Le nombre de thread maximal dépend du nombre de core, ou c'est juste pour optimiser ?

Message édité le 30 octobre 2015 à 17:47:57 par thelastofus2
godrik
godrik
Niveau 30
30 octobre 2015 à 20:38:09

Le 30 octobre 2015 à 17:21:18 typedefstruct a écrit :

-utiliser tous les cores de la machine. Un thread est mappe par le systeme sur un core. Donc si tu veux utiliser la puissance de 4 core, il faut 4 threads qui tournent en permanence.

Jusqu'à maintenant j'avais compris que fork() = nouveau processus = utilisation de plusieurs coeurs et que thread = même processus = utilisation d'un seul coeur, c'est faux ?

C'est faux en effet. Dans un langage raisonnable, les threads utilisateur (posix) sont mappe (par l'os) independement sur des threads noyaux qui eux meme sont mappe (statiquement au boot) sur des contextes d'execution physique qui eux meme sont mappe (par le cablage dans le processeur) statiquement sur les coeurs.

(La derniere phase n'a de sens que sur les coeurs avec plusieurs contexte d'execution; i.e., hyperthreading.)

godrik
godrik
Niveau 30
30 octobre 2015 à 20:40:46

Le 30 octobre 2015 à 17:46:23 thelastofus2 a écrit :
"-utiliser tous les cores de la machine. Un thread est mappe par le systeme sur un core. Donc si tu veux utiliser la puissance de 4 core, il faut 4 threads qui tournent en permanence."

Ah, mais si par exemple je veux gérer les déplacements de 200 PNJ qui se baladent dans une ville, je peux utiliser 200 threads ? Le nombre de thread maximal dépend du nombre de core, ou c'est juste pour optimiser ?

tu peux utiliser des threads pour fairen'importe quoi. Maintenant est ce que tu devrais faire ca est une autre question. En general, pour extraire le plus de performance, tu ne veux pas beaucoup plus de threads actifs que de threads physique que ton processeur peux executer.

Principalemnt parceque tu veux eviter les overhead de context switch. Maintenant si tu as des calcul comme ca a paralleliser, il est typiquement preferabl d'utiliser un runtime qui fera le partitionement des calcul. OpenMP est certainement ce qui est standard en C, C++ et Fortran de nos jours. Comme ca OpenMP gere son pool de threads a lui et tu ne t'occupe que d'exposer le parallelisme dans ton application.

Dans les choix moderne courant on trouve aussi Intel Cilk et Intel TBB.

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