top of page

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....

image.png

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

image.png
image.png
image.png

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

image_edited.jpg

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

image_edited.jpg

Fonctions similaires

image.png

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

Fin

bottom of page