top of page
bannière.jpg

SilverLining

 

SilverLining est un jeu vidéo issu d'un projet étudiant réalisé au sein de Gamagora.

 

Jeu multijoueur de stratégie en temps réel et en réseau local, les joueurs envoient des unités capturer la base ennemie tout en ne pouvant pas interagir directement dessus ; avec un pathfinding automatique, ils devront modifier le terrain pour prendre l'avantage.

Équipe

  • Unity

  • C#

  • Convention pour uniformiser le code (template de scripts + convention de nommage)

  • Implémentation du "warnaserror" afin de garder un code le plus propre possible en évitant de laisser des warnings dans le code

  • Utilisation de Trello au sein de l'équipe de dev afin d'organiser notre travail

  • Utilisation de GitLab, puis GitHub pour gérer le versionning du projet ainsi que la gestion de tickets

  • Debug et aide des LD/GD qui touchaient au code

Technique

  • Piège : un obstacle qui inflige des dégâts aux unités adverse, sans obstruer le chemin

  • Différencier le Nexus (base du joueur, cible des unités) des SpawnUnit (caserne d'où sortent les unités). Quand je suis arrivé sur le projet, ces deux entités n'étaient qu'un seul et même objet, or, il fallait pouvoir les différencier pour le bien du jeu.

  • Caméra

    • Possibilité de se déplacer en passant la souris sur les bords de l'écran + zoom/dézoom avec la molette

    • Placer la caméra devant la base du joueur au lancement de la partie

  • Rework checkpoints : création d'une classe de base qui sera hérité pour tous les checkpoints

  • File d'attente des unité : attente de 0 à 2 secondes entre chaque unité, après leur achat

  • Camp de petits golems : défense du camp (combat des unités avec les golems), régénération de la vie des golems si toutes les unités du joueur meurent sans tuer les golems, respawn des golems X secondes après leur mort, gain de gold par le joueur qui aura tué le dernier golem (possibilité de voler le kill d'un autre joueur)

  • Caserne : mélange de checkpoint et de SpawnUnit

  • Points de boost : 3 points différents. Boost de vie, il augmente la vie de l'unité pendant X secondes. Boost d'attaque, il augmente les points de dégâts des unités pendant X secondes. Boost de vitesse, il augmente la vitesse des unités pendant X secondes. Les points de boost ont été supprimés du jeu.

  • FoW (à partir du système de territoire fait par Guillaume Quiniou; qui empêche de construire un obstacle dans une zone qui ne nous appartient pas)

    • Ajout d'un visuel sur les territoires afin que le joueur ait un feedback sur les territoires​

    • Cacher les unités adverse si elle sont dans un territoire que le joueur ne possède pas

    • Ne pas modifier le material (visuel) des points d'intérêt qui sont dans un territoire que le joueur ne possède pas

    • Mettre à jour les materials de tous les points d'intérêt dans un territoire au moment de sa capture par le joueur

    • Afficher les unités adverse quand elles rentrent dans un territoire que le joueur possède​

Graphismes / Rendu

  • Trails (Afin de visualiser le chemin que vont prendre les unités)

    • v1 : line renderer​

    • ​v2 : Particules qui suivent une ligne​

    • ​v3 : Système de particules qui se déplace ​

      • v3.1 : Ajout de bruit pour rendre le tout plus jolie​

      • v3.2 : Afficher les trails uniquement dans la vue tactique + touche espace pour afficher les trails de toutes les unités + touche 1 pour afficher les trails uniquement des scouts​​​​

    • v4 retour sur un line renderer car v3 "trop" gourmande en performance

    • v5 Retour à la v3 mais en supprimant le bruit et diminuant le nombre de particules. (Fait par Judicaël Eluard)

  • Barres de vie sur les unités

  • Affichage du nombre d'unités du joueur, présentes sur le terrain

  • Intégration des modèles 3D des unités

  • Ajout d'un icon de bombe au passage de la souris sur les murs adverse

  • UI Cooldown (carré grisé qui se vide avec le temps)

    • Ajouté sur le nombre de bombes restantes​

    • Ajouté sur les timers des murs

    • Ajouté sur le timer du temps de respawn des golems

  • UI Achats

    • Griser la case d'UI si le joueur n'a pas les ressources nécessaire​

    • Débiter le joueur avec un chiffre rouge pour avoir un feedback sur les achats

    • Set automatiquement le bon prix sur l'icône et le tooltip

  • Occlusion Culling : afin de garder des performances acceptables, sans spolier le travail des graphistes,​ mise en place d'un système d'occlusion culling afin de ne faire le rendu que des objets visibles par la caméra.

IA

Pendant toute la durée du projet, j'ai beaucoup travaillé sur le navmesh et tout ce qui touche au déplacement des unités autonomes.

Le jeu reposant sur ce principe, c'était un élément crucial. De plus, au vu du grand nombre d'unités présentes au même instant sur la carte, il ne faut pas que le recalcule des chemins porte atteinte au bon déroulement du jeu.

Plusieurs pistes explorées : 

  • Ne pas laisser Unity recalculer le chemin des unités en permanence

  • Calculer le chemin au bon moment (construction/déconstruction des murs, entre/sorte de combat, ...)

  • Calcul du chemin depuis la base pour ne calculer le chemin qu'une fois pour toutes les unités qui sortiront de ce spawn

  • Ne recalculer que si l'obstacle peut gêner le chemin (implémenté Corentin Couderc)

Please reload

bottom of page