Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Rogue Life, ou tabasser des monstres dans une ruelle en toute légalité
Lephenixnoir En ligne Administrateur Points: 20623 Défis: 143 Message

Rogue Life, ou tabasser des monstres dans une ruelle en toute légalité

Posté le 29/08/2021 11:24

Un projet pas très ambitieux avec Masséna, essentiellement une arène de la taille de l'écran où il faut survivre à des vagues de monstres.

Je dis pas très ambitieux mais ça se développe pas vite pour autant. x3

Voilà la tête actuelle du jeu en vidéo :


Vous êtes un aventurer un peu baroudeur et grande gueule, mais vous savez ce que vous faites. Vous voulez donc conquérir les quelques arènes qui prétendent pouvoir poser un challenge... ou du moins c'est ce que vous prétendez, en fait c'est juste un défouloir.

Chaque arène (niveau) est indépendante, et consiste en un certain nombre de vagues de monstres ; le but est de survivre jusqu'à la fin (sauf si j'ai la foi d'implémenter un mode infini, dans ce cas bon courage). Les techniques de combat incluent des attaques de base, et quelques compétences physiques et magiques liées à l'équipement.

En termes de progression, a priori il n'y en a pas entre les niveaux. À chaque début d'arène on est niveau 1, et on progresse principalement en équipant des armes ou armures qui drop aléatoirement des monstres ou de façon prédéterminée dans le niveau. Le choix d'équipement disponible, qui vient avec quelques effets (défense, plus d'XP, vitesse, ce genre de choses) et skills (attaques supplémentaires, combos, magie, ce genre de choses) détermine le build pour la durée de l'arène.

Et voilà l'état actuel des choses :

  • Implémentation meh : Lephenixnoir, graphismes du feu de dieu : Masséna
  • Moteur : ≥ 90% fini (un chouille sur-conçu)
  • Mécaniques : ~ 50% fini (niveaux, vagues, bases de combat, physique OK ; équipements, skills, objets TODO)
  • Animations : ≥ 120% du feu de dieu
  • Contenu à proprement parler : ~ 30% fini (il reste beaucoup de choses à nommer/définir/dessiner)

Voilà c'est pas mal pour une annonce je crois. (Et @RDP bien sûr, tu croyais y échapper Tituya ? )


Ninestars Hors ligne Membre Points: 2384 Défis: 22 Message

Citer : Posté le 29/08/2021 11:44 | #


Excellent ! Ça rend super bien !
C'est pleins de petits détails et animations qui donne vraiment l'impression de taper du monstre, genre le scintillement blanc qui le monstre prend un dégâts. Bien vu. Par contre, on ne se rend pas trop compte quand le joueur prend des coups. Une petite animation serait peut être bienvenue 🙂 (tremblement écran, changement de teinte de l'écran, ...)
En terme de gameplay, c'est bien que les monstres reculs un peu à chaque coup, comme il faut rester pressé sur les touches de direction, le joueur avance toujours un peu, ça compense bien. Ce qui est pas mal des fois dans ce style de jeu, c'est d'avoir une touche qui bloque la direction du joueur tant qu'on reste appuyé, afin de le déplacer sans qui change sa direction. Si vous ajoutez des attaques à distance ça pourrait être pas mal d'avoir cette touche

Stylé, bravo
Kikoodx Hors ligne Labélisateur Points: 2702 Défis: 11 Message

Citer : Posté le 29/08/2021 11:46 | #


Quelle surprise ! /s
Très heureux de voir le projet officialisé. Bon courage
Protip
Ne me remerciez pas
Inikiwi Hors ligne Membre Points: 129 Défis: 0 Message

Citer : Posté le 29/08/2021 12:59 | #


vivement la version monochrome
Kikoodx Hors ligne Labélisateur Points: 2702 Défis: 11 Message

Citer : Posté le 29/08/2021 13:37 | #


Inikiwi a écrit :
vivement la version monochrome

Tu seras libre de porter RL quand le jeu sera terminé (je suppose, si ils utilisent une license libre).
Protip
Ne me remerciez pas
Lephenixnoir En ligne Administrateur Points: 20623 Défis: 143 Message

Citer : Posté le 29/08/2021 21:05 | #


Merci, ça me fait plaisir (et aussi à Masséna je pense) !

Une idée de design c'est de pas en faire trop pour rester d'avoir un truc "vivant" en termes d'animations, de physique, etc. Les sprites de monstres sont possiblement temporaires, c'est moi qui ai fait ce scintillement mais il est pas top.

Quand je dis pas en faire trop c'est vraiment que sur le design. Le code ça c'est passé différemment lol

En fait il y a bien une animation quand on prend des dégâts (et une bien visible en plus !) mais à cause d'une erreur de code elle n'est que rarement visible et n'apparaît pas du tout dans la vidéo. Oups. xD

Le screenshake c'est prévu quoique plutôt pour les gros skills, je vais faire des essais en tous cas. J'ai prévu quelques effets graphiques pas trop dégueulasses (je fais les dessins des mouvement d'attaque).

Ce qui est pas mal des fois dans ce style de jeu, c'est d'avoir une touche qui bloque la direction du joueur tant qu'on reste appuyé, afin de le déplacer sans qui change sa direction. Si vous ajoutez des attaques à distance ça pourrait être pas mal d'avoir cette touche

Je me note d'essayer ça !

Inikiwi a écrit :
vivement la version monochrome

C'est pas prévu pour l'instant
Inikiwi Hors ligne Membre Points: 129 Défis: 0 Message

Citer : Posté le 29/08/2021 21:22 | #


nonnnnnnnnn
Lephenixnoir En ligne Administrateur Points: 20623 Défis: 143 Message

Citer : Posté le 30/08/2021 11:47 | # | Fichier joint


Que veux-tu, avec tous ces sprites... non seulement ce serait dur à lire sur l'écran (qui a beaucoup de rémanence), mais en plus il faudrait refaire les sprites et gérer la caméra.

Pendant que j'y suis, sur ce projet j'ai codé un convertisseur qui transforme directement les animations Aseprite en objets pour le moteur de jeu. C'est vraiment pratique. Ça utilise la lib py_aseprite (codée par Eiyeron !) pour lire les structures du fichier, et ensuite le rendu est fait vers PIL avant de convertir avec les fonctions standard de fxconv.

Ça donne des trucs très sympas. Par exemple, si on prend cette animation de Masséna :


J'indique de la convertir avec les métadonnées suivantes :

player_*.aseprite:
  custom-type: aseprite-anim
  name_regex: (.*)\.aseprite anims_\1
  center: 12, 17
  next: Idle=Idle, Walking=Walking
  profile: p8

Et le convertisseur se charge de détecter les animations nommées, de créer une spritesheet compacte avec les délais corrects pour chaque frame, et générer les structures appropriées (qui sont définies dans le moteur de jeu) :

[ 44%] Building FXCONV object CMakeFiles/addin.dir/assets-cg/player/player_down.aseprite
Skipped 0x2007
player_down.aseprite (24x24) has 4 animations:
  'Idle': Frames 0 to 1 (800 ms, 800 ms)
  'Walking': Frames 2 to 5 (150 ms, 150 ms, 150 ms, 150 ms)
  'Hit': Frames 6 to 9 (50 ms, 50 ms, 200 ms, 200 ms)
  'Attack': Frames 10 to 12 (100 ms, 50 ms, 200 ms)

Dans le code, c'est immédiat ensuite (les 4 directions sont combinées automatiquement pour sélectionner selon le mouvement du joueur).

/* anim.h */
extern anim_frame_t *anim_player_Idle[4];

/* anim.c */
ANIM_4DIRECTIONAL(anim_player_Idle);

/* main.c */
entity_set_anim(player, anim_player_Idle);

Voilà c'était l'instant devlog. La prochaine fois je reviens avec un skill un peu plus flashy que les attaques normales. x3
Lephenixnoir En ligne Administrateur Points: 20623 Défis: 143 Message

Citer : Posté le 30/08/2021 15:16 | # | Fichier joint


Et voilà le premier skill : Shock !

Une attaque qu'on trouve dans les équipements un peu bourrins, et très orientés sur l'attaque. Chaque cible est touchée plusieurs fois avec beaucoup de dégâts et de knockback, mais pour s'en servir efficacement il faut se jeter dans les rangs ennemis. Un canon de verre dans toute sa splendeur.


LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 126 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd