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 Hors ligne Administrateur Points: 22584 Défis: 149 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. Ambiance mêlée et réactive garantie !

Télécharger Rogue Life en bêta : RogueLif.g3a (20 Mars 2022)

Voilà à quoi ressemble actuellement le jeu (Mars 2022) :



Vidéos plus anciennes
Cliquez pour recouvrir
Août 2021


Mars 2022


Vous êtes un aventurier un peu baroudeur et grande gueule, mais vous savez ce que vous faites. Vous voulez donc conquérir les quelques arènes qui sont supposées 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.

Télécharger Rogue Life en bêta : [url=]RogueLif.g3a[/url] (20 Mars 2022)

Et voilà l'état actuel des choses :

  • Implémentation meh : Lephenixnoir, graphismes du feu de dieu : Masséna
  • Moteur : 100% fini (ECS assez stylé)
  • Mécaniques : >90% fini (niveaux, vagues, combat, physique, équipments, skills, objets : OK)
  • Animations : ≥ 120% du feu de dieu
  • Contenu à proprement parler : ~ 40% fini (il reste des choses à nommer/définir/dessiner, des attaques à coder, etc)

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

Fichier joint


1, 2 Suivante
Ninestars Hors ligne Membre Points: 2449 Défis: 24 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: 2979 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
mi lape ala.

J'suis un méga chômeur
Inikiwi En ligne Membre Points: 372 Défis: 0 Message

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


vivement la version monochrome
Kikoodx Hors ligne Labélisateur Points: 2979 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).
mi lape ala.

J'suis un méga chômeur
Lephenixnoir Hors ligne Administrateur Points: 22584 Défis: 149 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 En ligne Membre Points: 372 Défis: 0 Message

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


nonnnnnnnnn
Lephenixnoir Hors ligne Administrateur Points: 22584 Défis: 149 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 Hors ligne Administrateur Points: 22584 Défis: 149 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.

Lephenixnoir Hors ligne Administrateur Points: 22584 Défis: 149 Message

Citer : Posté le 17/10/2021 19:20 | # | Fichier joint


Je pensais avoir parlé du second skill, Judgement, mais non, du coup le voilà en même temps que le troisième, Bullet.

Judgement est une attaque très précise qui ne touche qu'un ennemi mais qui fait un paquet de dégâts. Une élimination chirurgicale plutôt dans le style des équipement d'attaque raffinés. Pas sans danger puisqu'il faut être au corps-à-corps pour l'utiliser.

Bullet est une attaque magique. Comme Shock, on n'est pas vraiment dans la finesse, le but est vraiment de faire du dégât rapide sur le menu fretin qui s'amasse en groupes (les slimes je pense à vous). Une attaque pour les armes magiques, évidemment.

Sur la vidéo ci-dessous je les utilise sans restriction mais en réalité ce sera rare d'avoir plus d'un skill à la fois, et bien sûr il y aura un cooldown.

Niarkniark Hors ligne Membre Points: 32 Défis: 0 Message

Citer : Posté le 18/10/2021 09:31 | #


Très stylé tout ça. Bravo !!
Ou peut on télécharger l’add in ?
Lephenixnoir Hors ligne Administrateur Points: 22584 Défis: 149 Message

Citer : Posté le 18/10/2021 11:39 | # | Fichier joint


(Attention tu navigues sur dev.planet-casio.com ce qui crée des liens pas idéaux dans la shoutbox pour le reste des visiteurs)

Il n'y a pas de version officielle encore, mais je te joins un G3A. VARS pour accéder aux menus de debug si ça t'amuse
Niarkniark Hors ligne Membre Points: 32 Défis: 0 Message

Citer : Posté le 18/10/2021 17:20 | #


Merci !
Lephenixnoir Hors ligne Administrateur Points: 22584 Défis: 149 Message

Citer : Posté le 29/12/2021 12:29 | # | Fichier joint


Eeeet voilà un nouvel aperçu (jouable) du jeu. Le g3a est joint ici.


J'ai mis à jour le post principal. Un énorme merci à Massena pour les reskins qui carry le jeu comme pas deux.

Actuellement les stats sont ajustées, mais les skills non. Normalement vous aurez pas tous ces skills en même temps, et ils auront des cooldowns. En échange il y aura quelques équipements pour booster les stats et accéder aux skills.

Attention F6 démarre la capture vidéo, ce qui freeze le programme (sauf si vous connectez l'USB et que vous lancez fxlink avec fxlink -i).

Edit : J'ai oublié le @RDP bien sûr
Massena Hors ligne Rédacteur Points: 2150 Défis: 11 Message

Citer : Posté le 29/12/2021 12:51 | #


Tu spammes pas F4 dans un coin, 0/20
Lephenixnoir Hors ligne Administrateur Points: 22584 Défis: 149 Message

Citer : Posté le 30/12/2021 10:23 | #


@Massena Je viens de pousser de quoi faire des variations de palette sur les ennemis (et le joueur aussi d'ailleurs). D'abord j'ai passé tous les sprites en indexé. Si tu veux faire une variation, tu commences par ouvrir le sprite à modifier :


Ensuite tu modifies la palette à loisir, mais sans enregistrer le sprite :


Une fois que tu as fini, tu sauvegardes la palette toute seule à part, ici dans fire_slime_palette.aseprite.


Puis tu peux fermer le sprite original, toujours sans l'enregistrer.

Pour obtenir les animations modifiées, crée deux fichiers .txt (vides) au lieu de .aseprite dans le dossier enemies :

% ll assets-cg/enemies/fire_slime_*
Permissions Size User Date Modified Name
.rw-r--r--     0 el   30 Dec 10:20  assets-cg/enemies/fire_slime_left.txt
.rw-r--r--   328 el   30 Dec 10:20  assets-cg/enemies/fire_slime_palette.aseprite
.rw-r--r--     0 el   30 Dec 10:20  assets-cg/enemies/fire_slime_right.txt

L'image source et la palette sont indiquées dans fxconv-metadata.txt :

fire_slime_left.txt:
  base: slime_left.aseprite
  palette: fire_slime_palette.aseprite

fire_slime_right.txt:
  base: slime_right.aseprite
  palette: fire_slime_palette.aseprite

Après t'es pas obligé de faire ces gourouteries avec fxconv, parce que pour tester en jeu il faut encore modifier du code donc c'est pas immédiat. x_x
Lephenixnoir Hors ligne Administrateur Points: 22584 Défis: 149 Message

Citer : Posté le 24/02/2022 21:07 | # | Fichier joint


Je voulais publier une version sérieuse aujourd'hui (avant de partir en Écosse), mais les préparatifs m'ont plus occupé que ce que j'imaginais, et le retour du serveur Minecraft de Breizh a bien réduit le temps qui me restait. Désolé Masséna. x)

En attendant on a quand même bien avancé, avec :
  • Des animations sur la map et une revue complète des animations d'attaques par Masséna ;
  • Un menu principal, incomplet mais décent et donnant un aperçu des niveaux et avec une jolie transition ;
  • Une mécanique d'XP : au début de chaque arène le joueur est niveau 1, et monte en niveau en tuant des monstres (super animation de Masséna d'ailleurs !). L'XP est déterministe pour l'instant mais ça changera plus tard.
  • Des IAs décentes : les slimes foncent sur le joueur, les chauves-souris attaquent et esquivent, les gunslingers attaquent à distance. Toute la variété du jeu final n'est pas encore là, mais on s'en approche.
  • Des items au sol ; pour l'instant juste un item qui restaure un partie des PVs apparaît au début du niveau. Je vous conseille d'aller le chercher, bouger dans la map change complètement la dynamique de l'arène.

Dans le futur, des armes/équipements apparaîtront comme items et guideront les skills disponibles.

Vous pouvez tester le jeu dans le build ci-dessous. Le niveau 1 est un bon exemple de ce à quoi le jeu ressemblera. Le niveau 2 contient juste une grosse vague pleine de slimes. Et @RDP pour la prochaine édition

Tester Rogue Life bêta
Slyvtt Hors ligne Community Manager Points: 832 Défis: 0 Message

Citer : Posté le 24/02/2022 21:32 | #


Superbe ! Bravo à tous les deux.

Comment gères tu la transparence du menu quand tu appuies sur F6 ?
C'est super beau. Par contre, du coup les "blobs" ont leur animation très ralentie, est-ce un effet voulu ou est-ce lié à la transparence qui affale le framerate ?
Lephenixnoir Hors ligne Administrateur Points: 22584 Défis: 149 Message

Citer : Posté le 24/02/2022 21:34 | #


J'ai du code spécial pour assombrir la VRAM, avec une formule basique. Mais c'est très lent, si tu affiches les perfs avec OPTN+F5 tu peux voir le coup que ça prend. C'est le genre de trucs qu'Azur (le moteur de rendu de TLT) améliore énormément.

Oui c'est voulu que tout soit ralenti, c'est un "bullet time". F6 ne montre pas grand-chose actuellement mais dans le futur F5 servira d'inventaire pour consulter et équiper les objets ramassés, et le jeu continue de progresser pendant ce temps-là.
Lephenixnoir Hors ligne Administrateur Points: 22584 Défis: 149 Message

Citer : Posté le 18/03/2022 22:32 | # | Fichier joint


Ce topic n'est jamais assez à jour. Je fais une vidéo bientôt, mais voici quelques highlights depuis la dernière update :

  • Ajout des objets: souvent des potions aux effets variés, mais aussi des équipements (pour l'instant juste quelques armes). Les équipements détermineront (ce n'est pas encore codé) les stats du joueur ainsi que les skills disponibles, il faut donc bien s'en servir !
  • Ajouté une prévisualisation des vagues à venir ; entre les vagues il peut aussi y avoir des délais, et des objets qui apparaissent. Les objets apparaissent toujours à un endroit aléatoire de la map, ce qui peut rendre leur collecte assez aventureuse/difficile.
  • Une nouvelle GUI pour visualiser l'inventaire et le statut du joueur (screen ci-dessous) ; la précédente était assez mauvaise.
  • Masséna a fait plein de sprites que j'ai pas encore intégrés. o(x_x)o

Niveau avancement/fonctionnalités, on est à la toute toute fin : en fonctionnalités pures il ne reste plus qu'à recalculer les stats et skills du joueur en fonction de l'équipement. Mais on va sans doute aussi rajouter des ennemis/skills ce qui demandera un peu de code côté IA.

En termes de contenus y'a toujours qu'un seul niveau sérieux, mais Masséna a déjà des plans assez stylés pour tous les ennemis du jeu (une douzaine environ si ma mémoire est bonne, plus les recolorations/variations) et assez de tilesets pour les 6 prochains mois.

Une bêta avec un ou deux niveaux proches de leur état final est, je pense, imminente. x3

Lephenixnoir Hors ligne Administrateur Points: 22584 Défis: 149 Message

Citer : Posté le 18/03/2022 22:33 | # | Fichier joint


Et le G3A pour ceux qui voudraient tester : RogueLif.g3a

Notez que la difficulté est un peu trop élevée à mon goût pour l'instant.
1, 2 Suivante

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 - 2022 | Il y a 80 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