Emergence de l'idée
Plus de détails sur le concept
Travail effectué
Ether
Projet solo | 1 personne | ~1 mois
Contexte
Ether est un "jeu" fait pour un exercice de programmation.
Ce projet a été réalisé entièrement seul.
En réalité c'est un concept que j'avais noté depuis un moment et c'était l'occasion.
Emergence de l'idée
Étant dans une période de découverte de rogue-like, les concepts que j'ai créés à ce moment-là étaient en grande majorité des rogue-like, Ether est l'un d'eux.
Il est le mélange d'un rogue-like et d'un mode dans lequel j'ai passé pas mal de temps, le PVE contre des zombies, plus précisément celui de Call of Duty.
J'ai voulu tester le mélange entre le mode zombie que j'apprécie fortement et un genre que j'apprécie tout autant.
Plus de détails sur le concept
Le joueur doit se défendre contre des vagues de zombies. Le joueur peut décider quand commencer une nouvelle manche et au bout de la 10e manche, un boss apparaît, lui permettant d'avoir un objet rare ainsi que de passer à une nouvelle salle.
Au fil des éliminations, le joueur reçoit de l'argent, il peut dépenser cet argent pour plusieurs choses :
- Un objet aléatoire
- Un pouvoir aléatoire (actif du joueur)
- De la vie (pas des PV max mais juste des PV)
Il obtient aussi un objet gratuit aléatoire toutes les 5 manches.
Le joueur peut changer d'arme s'il arrive à en obtenir d'autres mais il ne peut avoir qu'une seule arme sur lui.
D'autres éléments sont présents aussi
- Salles secrètes
- Jokers
- Pièges
Travail effectué
GD
Salles Secrètes
Des salles secrètes sont disponibles à la manche 3 et à la manche 6.
3 portes apparaissent donc, une seule est la vraie permettant d'accéder à une salle contenant la récompense.
Si le joueur ne choisit aucune porte à la manche 3, à la manche 6, seulement la vraie apparaît.
Plusieurs contenus sont disponibles :
- 2 Objet
- 2 Pouvoir
- 2 Arme
- 1 Objet, 1 Pouvoir, 1 Arme
- 1 Objet qui change toutes les Xs.
Chaque tiret est une itération de salle et le joueur doit choisir seulement 1 élément, une fois pris les autres/l'autre disparaît.
Jokers
Les Jokers sont des cartes qui nous sont données quand on obtient [X] nombre d'objets d'une catégorie.
Les Jokers ont pour but de "casser" le jeu encore plus que les objets.
Les catégories des objets sont présentes seulement sur les objets à changements majeurs.
Les objets à changements majeurs sont des objets qui déclenchent un effet à un moment X, ce n'est pas seulement un objet qui change les statistiques du joueur, c'est un objet qui vient apporter un effet sur les actions du joueur.
Comme le soigner quand il tue un ennemi, faire une explosion lors du rechargement etc....

Pièges
Dans la salle, différents pièges peuvent être présents, ils sont payants mais offrent au joueur des effets uniques permettant de tuer les ennemis facilement, mais aussi parfois des moments de répit.
Programmation
Voici la liste des notions que j'ai travaillé :
- States Machines
- Delegates
- Interfaces
- ScriptableObject
- Coroutines
- Dev Tools
- Animator
- Cinemachine
States Machines, Animator & Cinemachine
Durant la création du jeu j'étais dans l'apprentissage des States Machines, j'ai donc implémenté les States Machines afin de m'exercer, j'ai gardé des états plutôt simples :
- IdleState
- LocomotionState
- Jump State
Les animations se jouent quand le joueur rentre dans un nouvel état, j'ai donc fait fonctionner un modèle 3D sur ces états.
De plus, j'ai utilisé la Cinemachine pour faire une caméra FPS
Delegates
J'avais déjà fait quelques essais sur les Delegates avant le projet, mais c'est sur ce projet que j'ai un fonctionnement plutôt avancé des Delegates.
J'ai utilisé les Delegates pour tout ce qui est déclenchement d'objet, voici la liste :
Player
- playerShoot
- playerReload
- playerBulletDestroyed
- playerDealDamage
- playerKill
- playerTakeDamage
- PowerActivation
- ObtainItem
- BuyRegenLife
- BuyBox
Game
- GenerateRoom
- EnterRoom
- EndRoom
- Begin Round
- EndRound
- EnterSecretRoom
- FailSecretRoom
- ExitSecretRoom
Interfaces
J'ai découvert les interfaces en même temps que les States Machines, néanmoins contrairement aux States Machines, elles sont beaucoup plus simples d'utilisation.
Dans ce projet, leur principale utilité a été pour les éléments interactifs, leur donnant l'interface IInteract, permettant à tout objet interactif d'implémenter une fonction d'interaction vide que je remplissais selon les besoins de l'objet interactif.
ScriptableObject
Ayant pas mal de nombres a gérer, j'ai passé les valeurs des objets en ScriptableObject, c'est beaucoup plus simple pour modifier ses valeurs plus tard mais aussi pour gérer toutes les variables, voici les paramètres :
- Item Name
- Icon
- Rarity
- Category
- Description
- [Tous les autres Float modifiant les stats du jeu]
Comme tous les rogue-like, énormément de valeurs sont modifiables influençant la partie



Dev Tools
J'ai passé pas mal de temps pour me faciliter les choses, voici quelques outils que j'ai créés :
Créations d'objet rapide

Simple raccourci pour pouvoir créer des ScriptableObject d'objet.
Choix Rapide du moment de déclenchement de l'Objet
Cela me permettait de pouvoir choisir dans quel Delegates allait l'objet assez facilement depuis l'inspecteur

Fonctions similaires

Au cas où j'avais des fonctions similaires, je pouvais directement choisir la fonction associée.
Plus besoin de cas par cas pour le fonctionnement des objets.
Je mettais juste la fonction et ça assignait la fonction au moment (Delegates) et dès que le Delegates était déclenché la fonction se lançait