A downloadable game

Ici je vous propose mon proto de jeu inspiré de Worms Armageddon pour la GameJam #19 de GameCodeur sur le thème des tanks.

Elève Gamecodeur depuis le 06/09/2018.

Ce jeu a été développé en C# / MonoGame.

Les graphismes ont été en grande partie récupérés sur kenney. 

Les images du menu, de victoire, de défaite ainsi que l'animation de la foreuse ont été gentillement réalisé par flashjaysan que je remercie beaucoup (les graphismes c'est pas mon truc...) !

Les musiques ont été récupérés sur le net, les tirs et explosions sont des extraits de réel tirs de tank prélevé sur des vidéos youtube.

J'ai réalisé le code seul, cependant j'ai utilisé quelques morceaux de codes provenant d'internet et d'autres élèves que je salue et remercie au passage : 

- la classe Input --> matutu

- la classe Simplex --> HydroGene

- la classe Primitives2D a été récupérée sur internet. Cette classe ne m'a servi que pour afficher des formes géométriques à l'écran pour débuguer mes collisions (non utilisé dans le cadre du jeu).

- la classe PrimitiveBatch a été récupérée sur internet afin d'afficher directement des triangles (pour réaliser l'eau et ses vagues).

Je n'ai pas compté le temps passé mais je l'estime aux alentours de 80-90h.

Post-Mortem :

J'ai morflé sur plusieurs éléments...

La trigo : 

- Le positionnement du canon en fonction de l'angle du tank.

- L'angle des objets qui suit la pente du sol.

- Les rebonds des grenades.


Le bruit de perlin pour générer aléatoirement les formes (la courbure) de la map.

Les performances, au départ l'affichage de la map pixel par pixel se faisait ressentir (évidemment je cherchais à afficher la map comme j'aurais pu afficher une tilemap avec une double boucle...). J'ai donc généré la texture une seule fois au démarrage de la map, puis je n'y touche que sur évènements (sur explosion), cependant au lieu de recréer toute la map, je modifie uniquement la map à l'endroit de l'explosion.

Les collisions avec le sol (j'ai du faire une sorte de Continuous Collision Detection pour éviter que les missiles passent au travers des morceaux de map cassés les plus fins).

Ensuite mon plus gros souci a été le temps, j'ai placé la barre relativement haute par rapport au temps que je pouvais y passer et par rapport à mes connaissances.

Cependant j'ai appris beaucoup durant cette jam, j'ai pris beaucoup de plaisir à la réaliser. Et je suis bien décidé à poursuivre ce jeu après la jam.

Effectivement ce jeu se prête bien à d'autres concepts que j'aimerais aborder :

- Une IA réalisée à base de réseau de neurones couplé avec de l'algorithme génétique (c'est d'ailleurs la chose que je suis en train de faire). EDIT : C'est fait, l'IA doit encore s'entrainer des dizaines d'heures avant d'être correct et je dois rajouter quelques données d'entrées supplémentaires pour gérer les tirs paraboliques mais on verra plus tard !

- La partie jeux en réseau.

- La manipulation des shaders.


Pour les petits curieux (je sais qu'il y en a) qui ont envie de voir les sources de mon code, je vous l'ai mis en public sur github (c'est pas parfait, je ne suis pas vraiment satisfait de toutes les dépendances de mes objets mais pour du code de jam, c'est suffisant) :

https://github.com/Nono02P/TankArmageddon

Bien sûr, si un des concepts que j'ai mis en œuvre vous intéresse, vous pouvez me contacter sur discord, je me ferais un plaisir d'expliquer ce que j'ai pu faire et de vous aiguiller sur l'endroit où j'ai géré la portion de code !


Un grand merci à David, mon inscription chez gamecodeur m'a permis de progresser à une vitesse que je ne soupçonnait pas !

Un grand merci à tout ceux qui ont essayé mon jeu et qui ont pris le temps de me faire un retour sur le jeu !

Un grand merci aussi à duruti, Wazou, HydroGene, Zethzer pour ce soutien, cette aide et ces encouragements au quotidien tout au long du développement :)

Merci à tout ceux qui m'ont aidé sur des étapes clefs sur lesquelles j'étais bloqué, je pense à Veronimish, Padawan, raoul, flashjaysan, cehem, etc...

Désolé si j'en oublie... De manière générale, merci à tous les membres de gamecodeur, cette communauté est formidable ! :D

StatusReleased
Rating
Rated 5.0 out of 5 stars
(2 total ratings)
AuthorNono02P
GenreAction
Tags2D, worms-like

Download

Download
TankArmageddon.zip 18 MB

Comments

Log in with itch.io to leave a comment.

Salut,

Je me lance dans la gamejam et je viens de remarquer qu'on part sur le même type de jeu. Tu as résolu plusieurs problématiques  sur lesquelles je réfléchis.

En particulier le tank qui colle au dénivelé, j'aimerais bien connaitre l'idée générale qu'il y a derrière ta solution. Tu regardes les positions y de la courbe au positions x de l'avant et l'arrière du tank ?

Salut ! Tu as compris le principe, je regarde le pixel le plus haut en y en deux points différents en x (avant et après le centre du tank le décalage en x que tu choisira dépendra de la taille de tes tanks et des courbes que ta map suis).

Puis j'applique l'angle au tank à partir de atan2(après.y- avant.y, après. x- avant.x) .

Tu as généré la map grâce au bruit de perlin aussi ?

Tu gères une map au pixel près ? T'as réussi les explosions de la map ?

Si jamais tu bloque, tu peux me contacter sur le discord je me ferai un plaisir de t'aider.

(-1)

Salut,

Merci, c'est cool ! je viens de voir ta formule d'angle, j'ai passé la journée à la chercher ;) (en passant par des des cours de math 6ème à 1ère)

La map je l'ai dessinée sous gimp, mais oui je la gère au pixel près pour les collisions, pas encore du tank mais celles avec les projectiles, les explos sont fonctionnelles et j'ai rajouté un système de particules pour simuler des débris.

C'est quoi le lien discord au cas ou ?

Le lien discord est dans ton espace membre sur le site de gamecodeur (tu dois être premium pour y accéder mais je pense que tu y es déjà vu que tu participes à la jam).