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

Java, Slick2D : Systeme de combat à la Fire Emblem

Linktothesky
Linktothesky
Niveau 10
16 novembre 2016 à 12:47:44

Amis du jours, bonjour [[sticker:p/1kkl]]

J'ai commencé un top-down RPG (vu du dessus à la Zelda, Final fantasy 3 ...) avec la librairie Slick2D.
J'ai déja différentes classes : MenuState, MainState, Player, Map, Hud etc..

Je souhaiterai commencer à développer un système de combat à la Fire Emblem assez basique:
Le personnage/ ennemi possède une portée de déplacement maximal sur les différentes cases de la map.
Le fantassin peut attaquer à une case autour de lui
Le mage peut attaquer à 5 cases autour de lui
etc..
Le combat se fait au tour par tour, gentil -> méchant -> gentil..

Cependant je n'ai aucune idée concernant la façon de l'implémenter
Auriez vous des pistes de reflexion ?
Des codes sources à pouvoir copier/coller étudier ?

Je vous remercie par avance, grand peuple de Jvcom :hap:
:hapoel: vaincra

Message édité le 16 novembre 2016 à 12:48:58 par Linktothesky
Ulfberht[plus]
Ulfberht[plus]
Niveau 7
16 novembre 2016 à 20:58:44

Tu peux essaye de comprendre comment marche le gameplay en dessinant des flowcharts.
Par contre, faire un T-rpg c'est hyper dur en fait :hap: . Tu ne voudrais pas simplement commencer par faire un zelda-like?

Message édité le 16 novembre 2016 à 21:00:16 par Ulfberht[plus]
Linktothesky
Linktothesky
Niveau 10
16 novembre 2016 à 23:10:14

Le 16 novembre 2016 à 20:58:44 ulfberht[plus] a écrit :
Tu peux essaye de comprendre comment marche le gameplay en dessinant des flowcharts.
Par contre, faire un T-rpg c'est hyper dur en fait :hap: . Tu ne voudrais pas simplement commencer par faire un zelda-like?

Pour faire un zelda-like, je dois comprendre et implémenter la notion de pathfinding non ?
N'y connaissant pas grand chose, j'ai pensé qu'un T-RPG (MERCI POUR LE TERME, je ferai mieux mes recherches google t-rpg open source code :hap: ) serait plus simple à concevoir.. Enfin je suppose

Message édité le 16 novembre 2016 à 23:10:46 par Linktothesky
Ulfberht[plus]
Ulfberht[plus]
Niveau 7
17 novembre 2016 à 00:02:58

Tu as des pathfinding très simples, en commençant par l'ennemi qui te suit en ligne droite. Il suffit de faire un level design adapté.

L'avantage d'un zelda-like c'est que tu peux avoir un projet smiple et fonctionnel.
A l'inverse, dans un T-RPG ou tu va devoir implémenter beaucoup de features avant d'avoir quoi que ce soit de jouable. A part si tu trouve quelque chose d'open-source. Et même dans ce cas, il va falloir comprendre la logique avant de faire des modifs.

Ulfberht[plus]
Ulfberht[plus]
Niveau 7
17 novembre 2016 à 00:20:04

Et si tu trouves un t-rpg en open source dis le moi :hap:

Message édité le 17 novembre 2016 à 00:21:40 par Ulfberht[plus]
thelastofus2
thelastofus2
Niveau 32
17 novembre 2016 à 21:08:18

Il te faut un algo de pathfinding oui, déjà vu que c'est un TRPG tu auras une grille sur ton décors qui sera un peu visible, puis quand tu sélectionnes un perso pour le déplacer, tu utilises : https://fr.wikipedia.org/wiki/Recherche_de_chemin avec ta grille.
Après le plus chaud serait l'IA ou je ne vois pas comment s'y prendre. Je te conseille de faire un cahier des charges un minimum complet sur tous les sorts, capacités etc pour voir comment tu dois coder le truc

Linktothesky
Linktothesky
Niveau 10
18 novembre 2016 à 00:12:45

Merci à vous deux pour vos avis.
Pour la gestion de la carte, je pensais pas que ce serait si compliqué :
(C ke de la theorie :hap: )
j'ai édité une carte via le logiciel Tiled Map Editor
je l'ai intégré dans une classe Map.
Comme la carte est composée de tuiles (des carrés quoi) de 157 x 123
Je pensais me faire bien chier avec une matrice
{0,0,0,0}
{0,0,0,0}
{0,0,0,0}
{0,0,0,0}
157 par 123.
Dans cette matrice , on aurait des "1" à l'endroit où l'ennemi pourrait potentiellement passer.

J'aurai une Classe Mère 'Ennemi'
et puis deux ou trois filles 'mages', 'fantassins', 'cavaliers' avec des caractéristiques différentes.

Mais mon expertise s'arrete la :hap:

Message édité le 18 novembre 2016 à 00:13:41 par Linktothesky
thelastofus2
thelastofus2
Niveau 32
18 novembre 2016 à 09:00:06

Le 18 novembre 2016 à 00:12:45 Linktothesky a écrit :
Merci à vous deux pour vos avis.
Pour la gestion de la carte, je pensais pas que ce serait si compliqué :
(C ke de la theorie :hap: )
j'ai édité une carte via le logiciel Tiled Map Editor
je l'ai intégré dans une classe Map.
Comme la carte est composée de tuiles (des carrés quoi) de 157 x 123
Je pensais me faire bien chier avec une matrice
{0,0,0,0}
{0,0,0,0}
{0,0,0,0}
{0,0,0,0}
157 par 123.
Dans cette matrice , on aurait des "1" à l'endroit où l'ennemi pourrait potentiellement passer.

J'aurai une Classe Mère 'Ennemi'
et puis deux ou trois filles 'mages', 'fantassins', 'cavaliers' avec des caractéristiques différentes.

Mais mon expertise s'arrete la :hap:

Cette vidéo explique super bien l'algo A*, tu verras que ce n'est pas si compliqué : https://www.youtube.com/watch?v=-L-WgKMFuhE
Tu pourrais éventuellement modifier la valeur des coups des cases si tu veux par exemple que les ennemis passent par un chemin pavé en priorité (tu diminues la valeur de la case), ou qu'ils tendent à éviter un terrain désavantageux (tu augmentes la valeur).

Donc tu aurais une classe pathfinding qui serait incluse dans ta classe IA. Pour l'IA, d'abord tu devrais faire choisir le type de mouvement de l'ennemi en fonction des infos sur la map. Tu construirais une liste d'action avec chacune une valeur plus ou moins élevée et tu choisis de façon semi aléatoire parmi les actions. La valeur de ces actions serait plus ou moins élevé en fonction des informations que tu as (distance des héros de l'ennemi, classe des héros, leur état, les sorts de l'ennemi, etc...)

Perso je ferais l'IA de cette manière :
Si par exemple ton ennemi à un héro tank assez proche de lui, mais avec un archer héro avec peu de vie un peu plus loin derrière le héro tank, alors l'algo de ton IA lancerait le pathfinding pour évaluer la distance entre l'ennemi et le héro tank, puis l'ennemi et le héro archer. Tu vois que ton ennemi est à distance 10 du tank, et 15 de l'archer.
Donc dans ta liste d'action tu aurais :
-attaquer l'archer blessé
-attaquer le tank plein de vie
Puis tu attribues une valeur à ces actions, en initialisant cette valeur à 100. L'action a la valeur la plus élevé à plus de chance de passer en priorité :
-attaquer l'archer blessé, valeur = 100 - 15 = 85
-attaquer le tank plein de vie, valeur = 100 - 10 = 90

Donc ton ennemi voudra plutôt attaquer le tank, mais dans ton algo tu vérifierais aussi l'état des héros, et tu vois que le tank est un tank, et que sa vie est pleine. De plus l'archer est blessé, et c'est un archer :
-attaquer l'archer blessé, valeur = 85 + 10 (c'est un archer) + 5 (il est blessé) = 100
-attaquer le tank plein de vie, valeur = 90 - 10 (c'est un tank) - 5 (plein de vie = 75

Si ton ennemi est aussi blessé et qu'il a une potion, tu pourrais aussi avoir en plus dans ta liste d'action :
-Utilisation de potion = 100 + 10 (ennemi blessé) = 110
ou si il n'a qu'une égratignure :
-Utilisation de potion = 100 - 50 = 50

Mais avant de te lancer dans la programmation, je te conseille de faire un diagramme UML pour que tu sois bien clair que tu ne t'embrouilles pas, sinon tu risques de te décourager si c'est le bordel dans ton code :peur:

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