Bonsoir.
Je publie ce post qui est une version corrigée et complétée du post de Nass sur le forum des 2017.
__________________________________________________________
Ce topic n'a pas pour but de vous donner la méthode infaillible pour réussir son projet de première année. Simplement donner des conseils de par notre expérience (et répondre aux questions)
Récapitulatif :
Pendant votre première année à l'EPITA, vous avez à réaliser un projet informatique en groupe. Ce sera votre principale source d'apprentissage en programmation, la note a plus haut coefficient en prog de l'année et votre plus grande source de plaisir/satisfaction si vous vous y mettez un peu. En gros : allez pas foirer ça, ça serait pas super malin.
Le projet se déroule sur toute l'année
Les équipes sont des groupes de 4 personnes
Le projet est absolument libre (jeu vidéo ou autre)
Vous devez remettre un cahier des charges décrivant ce que vous prévoyez de faire
L'année est jalonnée de 4 soutenances orales, pendant lesquelles vous devrez présenter vos avancées.
Pour chacune des soutenances, vous devrez remettre un rapport écrit fait en LaTeX.
Pour l'ensemble du projet, vous devez avoir un site internet mettant à disposition les ressources
Le projet doit être codé en Caml ou en C#
Plusieurs bibliothèques graphiques sont utilisables (la plus utilisée est sans doute XNA, certains utilisent aussi DirectX, OpenGL, SDL, SFML, etc)
La notation se base uniquement sur ce que vous montrez et vos rapports
Conseils :
/!\ Certains de ces conseils n'engagent que moi /!\
Formez un groupe avec des gens avec qui vous vous entendez bien, et motivés pour faire le projet. Sans ça, c'est l'échec assuré pendant les rush ou les périodes un peu tendues
FAITES UN JEU ! C'est le seul moment dans votre scolarité (vie ?) ou vous en aurez l'occasion, profitez-en. C'est motivant, cela permet de créer du contenu simplement, et c'est une satisfaction de voir les autres jouer à son jeu.
Investissez-vous ! Faites de la pub à et hors EPITA pour votre jeu, ça marche et c'est fun
La compétition c'est bon. La guerre entre les bons groupes pour la meilleure note (dans une certaine limite hein, ne tuez personne), c'est sain et motivant !
Pour le choix de la 2D ou de la 3D, ça dépend déja des compétences des membres de votre groupe et de votre motivation. La 3D, c'est bien plus difficile, et bien plus long. Vous ne pourrez pas pomper tous les graphismes, donc il y aura aussi du boulot niveau modélisation et surtout animation 3D. Par contre c'est vraiment plus classe et le jury aime bien quand c'est bien fait. Par contre mieux vaut de la bonne 2D que de la 3D buggée et très moche.
En dire moins et en faire plus plutôt qu'en dire trop et en faire pas assez. En gros, respectez votre cahier des charges, quitte à y mettre moins de choses et à les présenter en bonus, plutot que de ne pas respecter son contrat.
Vendez votre jeu pendant les soutenances, l'oral est une part de l'examen (Le bullshit, c'est bien, mais avec modération)
Lisez de la doc, partout, google est votre ami plus que jamais
Essayez de bosser de temps en temps, pas seulement en rush (même si les rushs sont importants)
<Areswar> Si vous choisissez la 3D
Pour la 3D, vous avez plusieurs bibliothèques possible :
- La bibliothèque la plus puissante, mais aussi la plus compliquée, DirectX (il y a aussi OpenGL qui est assez équivalent).
Concrètement, certes c'est puissant, et ça a des possibilités infinies, mais vous perdrez un temps fou. Donc si vous êtes tous très forts ou que vous avez une motivation d'acier (attention, la motivation diminue souvent au cours de l'année), c'est un bon choix, mais pensez que vous devrez presque tout coder vous mêmes, du parser des fichiers 3D à la gestiond es animations et des collisions. DirectX étant une bibliothèque C++, vous devrez sans doute utiliser SlimDX ou SharpDX qui sont des portages pour le C# mais qui sont assez mal documentés.
- XNA : Pour notre projet (Metastruggle), nous avons utilisé XNA. Ca a de gros avantages, notamment la gestion native des fichiers fbx (modèles 3D), ou la présence de nombreux outils pour simplifier la création d'un jeu de base.
Si votre jeu met en action des sphères ou des cubes, vous n'aurez pas de problèmes pour les collisions, les BoundingSpheres et les BoundingBoxes étant directement incluses dans le framework. En revanche, si vous voulez faire des choses plus avancées, vous devrez recoder des parties du Content Pipeline, qui est assez sale et fermé, ce qui vous fera vivre l'enfer. Enfin, pour la gestion des animations, XNA est vraiment très mauvais. Le parser fbx d'origine est totalement incompatible avec les animations, ce qui vous obligera là aussi à recoder une partie du Content Pipeline. Petit conseil si vous choisissez cette bibliothèque du démon : installez XNA 4.0 Refresh, et pas XNA 4.0. La version Refresh ne gère pas les animations mais a au moins le mérite de ne pas vous empêcher délibérément de le faire
- Mogre : D'après les échos que j'ai eus, le meilleur choix possible. Mogre est une implémentation C# du moteur Ogre. Vous avez les avantages de XNA, à savoir l'importation de fichiers 3D d'origine, et tous les outils, mais sans tous les inconvénients. Blender possède même un Plugin pour générer des fichiers optimisés pour Ogre. Le principal défaut est que Mogre est mal documenté, et que vous devrez donc lire la doc de Ogre, qui est faite pour le C++ (un peu le même problème qu'avec DirectX).
Trappes :
Passer 30 ans à afficher un cube en 3D tourbillonant,, c'est super, si c'est ce que vous voulez faire, mais franchement...
Se concentrer uniquement sur des éléments sans rendu. Arriver en soutenance avec un moteur graphique qui tue mais sans aucune démo, ça va pas le faire...
J'attends vos idées... ou que les miennes reviennent.
Pour présenter votre site internet en soutenance : comptez par sur le WIFI. Murphy rôde...
Exemples de projets :
Nom : (mon projet) Metastruggle (Team Coconerds)
Site : https://www.facebook.com/metastruggle / http://fr.metastruggle.eu
Technos : C#/XNA 4.0 3D
Description : EPITA 2017 - Un Super Smash Bros like avec un moteur 3D qui oppose les dieux de la mythologie grecque à des personnages de jeux-vidéos ou de films.
Note : 18.5 : 3e de la promo 2017
Nom : 42 Days Later
Site : http://www.alpha14.com/42dayslater/project.html
Technos : C# (XNA ?)
Description : Major de la promo 2016
Note : 20/20
Nom : Project: HGF (souvent appelé Fooo, d'ailleurs HGF veut dire Hard Gay Fooo!)
Site : http://fooo.fr
Technos : Delphi + Lua (scripts), OpenGL
Description : EPITA 2012 Un jeu inspiré à la base de Warcraft III, au final il était presque jouable, même si le côté technique était beaucoup plus présente que le côté fun : on avait du réseau, un pathfinding potable (mais pas de gestion de collision pendant les déplacements), par contre on avait une map unique, etc.
Note : 20.9/20
Nom : NANDCRAFT
Site : https://bitbucket.org/halfr/nandcraft
Techno : OCaml
Promo : 2016
Description : Ordinateur virtuel composé d'un compilateur, un language intermediaire, un assembleur et un émulateur de CPU. Le langage à chacun des niveaux nous est propre.
Note : 17.8 ( je crois)
Nom : aMAZEing Escape
Site : http://deitycrew.free.fr
Technos : C# - Framework XNA 3.0
Description : EPITA 2014. Jeu en 3D à la 1ère personne dans lequel vous êtes dans un labyrinthe dont vous devez vous échapper pendant qu'un monstre essaie de vous tuer ou bien l'inverse, vous devez chasser la victime. Le monstre ou la victime ennemi sont une I.A, vous pouvez définir la taille du labyrinthe. De plus, il y a des pièges et des bonus/malus qui vous aiderons à/empêcherons de réaliser votre objectif.
Note : 19.5 à la dernière soutenance.
Nom : DestruXion
Site : http://mogmi.fr/destruxion (Down)
Technos : Delphi/SDL
Description : EPITA 2013 (Projet de Mogmi). Un Worms-like avec plein d'armes et chargement de maps depuis des images.
Note : 19+/20
Nom : Clor Project
Site : http://clor-project.eu (Down)
Technos : C# - Framework XNA 3.0
Description : EPITA 2015. Jeu de stratégie en temps réel fortement inspiré de Age Of Empires en 2D-Isométrique. Techniquement injouable, réseau qui marche (presque) pas. Par contre, contenu en ligne, système de liste d'amis et un éditeur de carte.
Note : 18/20
Nom : V0rTeX
Site : http://V0rTeX.fr (Down) Mirror ici : http://cijay.fr/v0rtex.fr/
Regardez la partie Téléchargement. Vraiment. J'ai fait les rapports en pensant qu'ils pourraient servir de guide aux futurs sups : VOUS, tout est expliqué de A à Z, de façon pédagogique (dans mes parties tout du moins), j'ai vraiment soigné cet aspect
Technos : C# - SlimDX (wrapper DirectX, parce que XNA c'est pour les faibles)
Description : On voulait faire un Portal-like.
Nom : Dokan Protocol
Site : http://www.dokanprotocol.com (Down)
Technos : C# - Framework XNA 4.0
Description : EPITA 2015. Jeu en 3D (+ stéréoscopie, vous pouvez tester si vous avez des lunettes avec filtres vert-cyan), inspiré de Bomberman. Le but reste de poser des bombes et de vaincre une IA plutôt douée (un peu trop --'). Des bonus s'ajoutent. Possibilité de créer un compte joueur, avec un panier, des sousous pour acheter des nouveaux items dans le Dokan Store, un panel de niveaux dans différents univers, et plein de trucs kikoos...
Note : 18.62/20
Nom : Yello Killer
Site : http://www.yellokiller.com (Down)
Technos : C# - XNA
Promo : EPITA 2015
Description : Jeu d'infiltration en 2D type RPG-16bits vue de dessus, style les premiers metal gear.
Le but est de s'infiltrer dans une base plein d'ennemis et d'assassiner tout les boss de la map sans se faire repérer, donc IA assez forte.
Un editeur de map vraiment trés complet s'ajoute au menu principale pour laissé au joueur la possibilité d'étendre toute son imagination à travers Yello Killer.
Note : 18.6/20
(balancez vos sites de projets avec description et notes, ça serait cool)
Si j'ai oublié des éléments, signalez et je rajoute.
En espérant que cela vous aide.
__________________________________________________________
Commentaire de Nass :
Ça c’était pour le quote des conseils. Maintenant à mon avis vous devriez essayer d’autres choses que les jeux vidéos car vous avez quand même le libre choix ce qui vous offre une infinité de possibilités.
Vous aurez le choix entre le C# et l’OCaml. Si vous ne voulez pas faire du graphique, je vous recommande l’OCaml qui est un language super cool au fond car il laisse pas mal de liberté malgré le typage.
De plus, les professeurs ne notent pas la difficulté de votre projet mais la façon de le vendre en soutenance. Vous pouvez coder windows pour la première soutenance, des gens qui bullshit bien sur leur jeu de tetris auront une meilleure note que vous.
Sachez qu’au final, tout le monde a au dessus de 15-16 et qu’il y a beaucoup de random. (des groupes qui ont montré moins à la seconde qu’à la première soutenance sont passé de 17 et quelques à major vers les 19.3) C’est la raison pour laquelle il faut coder pour vous et votre plaisir, c’est une très bonne raison de passer toutes ses soirées en SM à travailler et de se faire des petites nuits blanches de prog chaque semaine. Vous avez une année avec énormément de temps libre donc utilisez-le pour la programmation d’un projet ardu.
ps: Si vous avez des questions, join #epita ou #epita-sup sur irc.rezosup.org. On vous répondra du mieux que l’on peut.
Bonne chance !
Je publie ce post qui est une version corrigée et complétée du post de Nass sur le forum des 2017.
__________________________________________________________
Ce topic n'a pas pour but de vous donner la méthode infaillible pour réussir son projet de première année. Simplement donner des conseils de par notre expérience (et répondre aux questions)
Récapitulatif :
Pendant votre première année à l'EPITA, vous avez à réaliser un projet informatique en groupe. Ce sera votre principale source d'apprentissage en programmation, la note a plus haut coefficient en prog de l'année et votre plus grande source de plaisir/satisfaction si vous vous y mettez un peu. En gros : allez pas foirer ça, ça serait pas super malin.
Le projet se déroule sur toute l'année
Les équipes sont des groupes de 4 personnes
Le projet est absolument libre (jeu vidéo ou autre)
Vous devez remettre un cahier des charges décrivant ce que vous prévoyez de faire
L'année est jalonnée de 4 soutenances orales, pendant lesquelles vous devrez présenter vos avancées.
Pour chacune des soutenances, vous devrez remettre un rapport écrit fait en LaTeX.
Pour l'ensemble du projet, vous devez avoir un site internet mettant à disposition les ressources
Le projet doit être codé en Caml ou en C#
Plusieurs bibliothèques graphiques sont utilisables (la plus utilisée est sans doute XNA, certains utilisent aussi DirectX, OpenGL, SDL, SFML, etc)
La notation se base uniquement sur ce que vous montrez et vos rapports
Conseils :
/!\ Certains de ces conseils n'engagent que moi /!\
Formez un groupe avec des gens avec qui vous vous entendez bien, et motivés pour faire le projet. Sans ça, c'est l'échec assuré pendant les rush ou les périodes un peu tendues
FAITES UN JEU ! C'est le seul moment dans votre scolarité (vie ?) ou vous en aurez l'occasion, profitez-en. C'est motivant, cela permet de créer du contenu simplement, et c'est une satisfaction de voir les autres jouer à son jeu.
Investissez-vous ! Faites de la pub à et hors EPITA pour votre jeu, ça marche et c'est fun
La compétition c'est bon. La guerre entre les bons groupes pour la meilleure note (dans une certaine limite hein, ne tuez personne), c'est sain et motivant !
Pour le choix de la 2D ou de la 3D, ça dépend déja des compétences des membres de votre groupe et de votre motivation. La 3D, c'est bien plus difficile, et bien plus long. Vous ne pourrez pas pomper tous les graphismes, donc il y aura aussi du boulot niveau modélisation et surtout animation 3D. Par contre c'est vraiment plus classe et le jury aime bien quand c'est bien fait. Par contre mieux vaut de la bonne 2D que de la 3D buggée et très moche.
En dire moins et en faire plus plutôt qu'en dire trop et en faire pas assez. En gros, respectez votre cahier des charges, quitte à y mettre moins de choses et à les présenter en bonus, plutot que de ne pas respecter son contrat.
Vendez votre jeu pendant les soutenances, l'oral est une part de l'examen (Le bullshit, c'est bien, mais avec modération)
Lisez de la doc, partout, google est votre ami plus que jamais
Essayez de bosser de temps en temps, pas seulement en rush (même si les rushs sont importants)
<Areswar> Si vous choisissez la 3D
Pour la 3D, vous avez plusieurs bibliothèques possible :
- La bibliothèque la plus puissante, mais aussi la plus compliquée, DirectX (il y a aussi OpenGL qui est assez équivalent).
Concrètement, certes c'est puissant, et ça a des possibilités infinies, mais vous perdrez un temps fou. Donc si vous êtes tous très forts ou que vous avez une motivation d'acier (attention, la motivation diminue souvent au cours de l'année), c'est un bon choix, mais pensez que vous devrez presque tout coder vous mêmes, du parser des fichiers 3D à la gestiond es animations et des collisions. DirectX étant une bibliothèque C++, vous devrez sans doute utiliser SlimDX ou SharpDX qui sont des portages pour le C# mais qui sont assez mal documentés.
- XNA : Pour notre projet (Metastruggle), nous avons utilisé XNA. Ca a de gros avantages, notamment la gestion native des fichiers fbx (modèles 3D), ou la présence de nombreux outils pour simplifier la création d'un jeu de base.
Si votre jeu met en action des sphères ou des cubes, vous n'aurez pas de problèmes pour les collisions, les BoundingSpheres et les BoundingBoxes étant directement incluses dans le framework. En revanche, si vous voulez faire des choses plus avancées, vous devrez recoder des parties du Content Pipeline, qui est assez sale et fermé, ce qui vous fera vivre l'enfer. Enfin, pour la gestion des animations, XNA est vraiment très mauvais. Le parser fbx d'origine est totalement incompatible avec les animations, ce qui vous obligera là aussi à recoder une partie du Content Pipeline. Petit conseil si vous choisissez cette bibliothèque du démon : installez XNA 4.0 Refresh, et pas XNA 4.0. La version Refresh ne gère pas les animations mais a au moins le mérite de ne pas vous empêcher délibérément de le faire
- Mogre : D'après les échos que j'ai eus, le meilleur choix possible. Mogre est une implémentation C# du moteur Ogre. Vous avez les avantages de XNA, à savoir l'importation de fichiers 3D d'origine, et tous les outils, mais sans tous les inconvénients. Blender possède même un Plugin pour générer des fichiers optimisés pour Ogre. Le principal défaut est que Mogre est mal documenté, et que vous devrez donc lire la doc de Ogre, qui est faite pour le C++ (un peu le même problème qu'avec DirectX).
Trappes :
Passer 30 ans à afficher un cube en 3D tourbillonant,, c'est super, si c'est ce que vous voulez faire, mais franchement...
Se concentrer uniquement sur des éléments sans rendu. Arriver en soutenance avec un moteur graphique qui tue mais sans aucune démo, ça va pas le faire...
J'attends vos idées... ou que les miennes reviennent.
Pour présenter votre site internet en soutenance : comptez par sur le WIFI. Murphy rôde...
Exemples de projets :
Nom : (mon projet) Metastruggle (Team Coconerds)
Site : https://www.facebook.com/metastruggle / http://fr.metastruggle.eu
Technos : C#/XNA 4.0 3D
Description : EPITA 2017 - Un Super Smash Bros like avec un moteur 3D qui oppose les dieux de la mythologie grecque à des personnages de jeux-vidéos ou de films.
Note : 18.5 : 3e de la promo 2017
Nom : 42 Days Later
Site : http://www.alpha14.com/42dayslater/project.html
Technos : C# (XNA ?)
Description : Major de la promo 2016
Note : 20/20
Nom : Project: HGF (souvent appelé Fooo, d'ailleurs HGF veut dire Hard Gay Fooo!)
Site : http://fooo.fr
Technos : Delphi + Lua (scripts), OpenGL
Description : EPITA 2012 Un jeu inspiré à la base de Warcraft III, au final il était presque jouable, même si le côté technique était beaucoup plus présente que le côté fun : on avait du réseau, un pathfinding potable (mais pas de gestion de collision pendant les déplacements), par contre on avait une map unique, etc.
Note : 20.9/20
Nom : NANDCRAFT
Site : https://bitbucket.org/halfr/nandcraft
Techno : OCaml
Promo : 2016
Description : Ordinateur virtuel composé d'un compilateur, un language intermediaire, un assembleur et un émulateur de CPU. Le langage à chacun des niveaux nous est propre.
Note : 17.8 ( je crois)
Nom : aMAZEing Escape
Site : http://deitycrew.free.fr
Technos : C# - Framework XNA 3.0
Description : EPITA 2014. Jeu en 3D à la 1ère personne dans lequel vous êtes dans un labyrinthe dont vous devez vous échapper pendant qu'un monstre essaie de vous tuer ou bien l'inverse, vous devez chasser la victime. Le monstre ou la victime ennemi sont une I.A, vous pouvez définir la taille du labyrinthe. De plus, il y a des pièges et des bonus/malus qui vous aiderons à/empêcherons de réaliser votre objectif.
Note : 19.5 à la dernière soutenance.
Nom : DestruXion
Site : http://mogmi.fr/destruxion (Down)
Technos : Delphi/SDL
Description : EPITA 2013 (Projet de Mogmi). Un Worms-like avec plein d'armes et chargement de maps depuis des images.
Note : 19+/20
Nom : Clor Project
Site : http://clor-project.eu (Down)
Technos : C# - Framework XNA 3.0
Description : EPITA 2015. Jeu de stratégie en temps réel fortement inspiré de Age Of Empires en 2D-Isométrique. Techniquement injouable, réseau qui marche (presque) pas. Par contre, contenu en ligne, système de liste d'amis et un éditeur de carte.
Note : 18/20
Nom : V0rTeX
Site : http://V0rTeX.fr (Down) Mirror ici : http://cijay.fr/v0rtex.fr/
Regardez la partie Téléchargement. Vraiment. J'ai fait les rapports en pensant qu'ils pourraient servir de guide aux futurs sups : VOUS, tout est expliqué de A à Z, de façon pédagogique (dans mes parties tout du moins), j'ai vraiment soigné cet aspect
Technos : C# - SlimDX (wrapper DirectX, parce que XNA c'est pour les faibles)
Description : On voulait faire un Portal-like.
Nom : Dokan Protocol
Site : http://www.dokanprotocol.com (Down)
Technos : C# - Framework XNA 4.0
Description : EPITA 2015. Jeu en 3D (+ stéréoscopie, vous pouvez tester si vous avez des lunettes avec filtres vert-cyan), inspiré de Bomberman. Le but reste de poser des bombes et de vaincre une IA plutôt douée (un peu trop --'). Des bonus s'ajoutent. Possibilité de créer un compte joueur, avec un panier, des sousous pour acheter des nouveaux items dans le Dokan Store, un panel de niveaux dans différents univers, et plein de trucs kikoos...
Note : 18.62/20
Nom : Yello Killer
Site : http://www.yellokiller.com (Down)
Technos : C# - XNA
Promo : EPITA 2015
Description : Jeu d'infiltration en 2D type RPG-16bits vue de dessus, style les premiers metal gear.
Le but est de s'infiltrer dans une base plein d'ennemis et d'assassiner tout les boss de la map sans se faire repérer, donc IA assez forte.
Un editeur de map vraiment trés complet s'ajoute au menu principale pour laissé au joueur la possibilité d'étendre toute son imagination à travers Yello Killer.
Note : 18.6/20
(balancez vos sites de projets avec description et notes, ça serait cool)
Si j'ai oublié des éléments, signalez et je rajoute.
En espérant que cela vous aide.
__________________________________________________________
Commentaire de Nass :
Ça c’était pour le quote des conseils. Maintenant à mon avis vous devriez essayer d’autres choses que les jeux vidéos car vous avez quand même le libre choix ce qui vous offre une infinité de possibilités.
Vous aurez le choix entre le C# et l’OCaml. Si vous ne voulez pas faire du graphique, je vous recommande l’OCaml qui est un language super cool au fond car il laisse pas mal de liberté malgré le typage.
De plus, les professeurs ne notent pas la difficulté de votre projet mais la façon de le vendre en soutenance. Vous pouvez coder windows pour la première soutenance, des gens qui bullshit bien sur leur jeu de tetris auront une meilleure note que vous.
Sachez qu’au final, tout le monde a au dessus de 15-16 et qu’il y a beaucoup de random. (des groupes qui ont montré moins à la seconde qu’à la première soutenance sont passé de 17 et quelques à major vers les 19.3) C’est la raison pour laquelle il faut coder pour vous et votre plaisir, c’est une très bonne raison de passer toutes ses soirées en SM à travailler et de se faire des petites nuits blanches de prog chaque semaine. Vous avez une année avec énormément de temps libre donc utilisez-le pour la programmation d’un projet ardu.
ps: Si vous avez des questions, join #epita ou #epita-sup sur irc.rezosup.org. On vous répondra du mieux que l’on peut.
Bonne chance !
Don Ares, dit "Le Parrain"
EpiM**** recrute !
EpiM**** recrute !