Concours de programmation #2 - Février Mars Avril Mai 2014



  • Bonjour à tous !
    Voici le deuxième concours de programmation de l'année et du forum !!!!

    Donc, déjà, je vous annonce le sujet.
    Le sujet est : la 2D

    Pourquoi la 2D ? Parce que je suis un gros flemmard et que j'ai la flemme de chercher un sujet recherché (humour).
    La 2D est quasiment oubliée, remplacée par la 3D. Mais je veux vous prouver qu'un jeu n'est pas forcément bon même s'il est en 3D.
    Il est possible de faire une 2D magnifique autant qu'une 3D hideuse (minecraft en est la preuve, même si on s'y habitue à force, et que les packs de textures et shaders peuvent le rendre beau).

    Donc, dans ce programme 2D, je veux voir :

    • Un jeu
    • Un système de luminosité effectif (ombres, nuit, jour, etc).
    • Un système monomap ou multimap, sachant que les maps doivent être assez grandes.
    • Un jeu adapté pour les petites résolutions et les grandes résolution (choix de la résolution dans les options, par exemple).
    • Un système de sauvegarde cryptée.
    • Un jeu assez léger, il doit faire au maximum 1 Go, mais essayer d'être le plus léger possible.
    • Une vraie histoire.
    • Un jeu intéressant, qu'on ne fait pas comme ça en une heure.
    • Un choix de difficulté (au minimum 4, au maximum 10).
    • Des sons, pas forcément tout le temps, mais une ambiance quoi.
    • Les sons doivent être en rapport avec l'ambiance, n'allez pas mettre du rock dans un univers post-apocalyptique.

    Langage imposé : Java

    La récompense : 3 millions d'euros ! (non je rigole, ne me tuez pas pour cette vieille blague pourrie :D)
    Donc la récompense n'est pas encore choisie

    Bonne chance, et vous avez jusqu'au 25 mai pour développer ce jeu !



  • Là par contre j'ai commencé à en faire un mais je participerai pas je pense, je bloquais sur l'interface graphique donc bon ^^.



  • Tu peux toujours essayer, et n'oublie pas c'est en Java

    Concours rallongé de deux mois, on met plutôt 4 mois, car 2 ça fait tout de même court.



  • Je vais être gentil, et proposer une base ( aucun code ) :

    Tout d'abord, pour commencer, je vous conseille d'utiliser LWJGL.

    C'est probablement la meilleure librairie Java pour faire des jeux, et elle permet de gérer les inputs, les graphismes, mais malheureusement, elle ne gère pas la physique. C'est a vous d'y faire.

    Ensuite, en plus de LWJGL, utilisez les librairies Jinput et LWJGL_util fournie avec, c'est très pratique.

    Si vous voulez, la librairie Slick_util est sympatique, pour éviter des méthodes trop longues.

    Ensuite, commencez par la base : Un joueur représenté sans animation, ni rien, juste un carré, avec un terrain de base, etc… pour ensuite tout améliorer.

    Dans l'ordre, je vous conseille ceci :

    Préparation des idées du jeu ( Scénario etc... ) -> Début du code, faire toutes les bases -> Améliorer le jeu, en faire un prototype -> Revoir ses idées, voir si c'est toujours aussi bien une fois le prototype en main -> Faire des améliorations si nécessaire, et enfin, finir le jeu.

    Par exemple, les idées ( ceci est random, ne pas l'écouter ) :
    Personnage : Un lama
    But du personnage : Manger un gâteau au fraises
    Univers : Y'a une météorite au dessus du monde, donc pré-apocalypse etc..
    Gameplay : Plateformer sans plateformes ( wtf )

    Enfin bref, ce que vous voulez.

    Sur ce, bonne chance !


  • Moddeurs confirmés

    • Un jeu assez léger, il doit faire au maximum 1 Go, mais essayer d'être le plus léger possible.

    J'ai bien rit xD

    N'empêche on passe d'un POM tout con a un rush total sur un projet ultra complet xD
    Je ne pense pas avoir pas assez de disponibilité pour un concours comme ça malheuresement, mais j'attends les rendu avec impatience xD



  • Blackout, si tu as ris c'est bien, j'étais parti sur 2000 Mo max, mais on m'a dit qu'une limite était ridicule.
    Et je trouve que varier les projets est bien, voir un peu le niveau global, déjà pas assez de temps pour le POM.
    Après je pourrai adapter les concours au niveau et au temps global nécessaire pour faire un concours.


  • Moddeurs confirmés

    Je me demande surtout qui va avoir un code qui depasserai déjà les 100 Mo x) Et encore je vois gros en disant 100 Mo x)
    Je souhaite aussi bonne chance au jury, qui se tapera 30 000 lignes de code par personne x)
    Un concours de ce genre ne va pas t aider a avoir une vision globale des compétences de chacun. Puisqu'il est inacessible pour beaucoup.

    Varier les projets, oui heureusement, si vous ne proposez que des POM ça risque de perdre tout interets.
    Pour augmenter l'interet des concours vous devriez taper un peu plus dans l'originalité 😉



  • @'Blackout':

    Je me demande surtout qui va avoir un code qui depasserai déjà les 100 Mo x) Et encore je vois gros en disant 100 Mo x)
    Je souhaite aussi bonne chance au jury, qui se tapera 30 000 lignes de code par personne x)
    Un concours de ce genre ne va pas t aider a avoir une vision globale des compétences de chacun. Puisqu'il est inacessible pour beaucoup.

    Varier les projets, oui heureusement, si vous ne proposez que des POM ça risque de perdre tout interets.
    Pour augmenter l'interet des concours vous devriez taper un peu plus dans l'originalité 😉

    Un programme de mathématiques (calculatrice, solveur d'équations, traçage de courbes dans une fenêtre, gestion d'algorithmes) serait une bonne idée. Sinon un programme de conversion d'unités (mètres, millimètres, litres, joules, pascals etc…) ou un tetris aussi. Mais là c'est vraiment difficile, même pour Blackout j'imagine (même s'il aura 120% de chances en plus que nous).



  • Oublié de dire que je participe …

    Mais sinon, j'ai déjà fait la base du moteur 2d : Jump, collisions, mouvement, et player 😄

    J'utilise LibGDX ( basé sur LWJGL ) et pour les maps, Tiled

    http://puu.sh/6JEi4.png


  • Moddeurs confirmés Rédacteurs Modérateurs Administrateurs

    @Gugu42, on a eu la même idée de jeu à réaliser.

    Je vais essayé de participer, mais je ne promets rien.



  • @Superloup10

    T'inquiète, les graphismes, c'est temporaire, le temps d'avoir un graphiste / de meilleures sprites

    ( PS : Si ça abouti a quelque chose de beaucoup plus développé, je cacherais des easter eggs pour certains membres du forum etc… 😛 )


  • Moddeurs confirmés Rédacteurs Modérateurs Administrateurs

    @Gugu42, pour le son, tu conseilles quel librairie?



  • @'Superloup10':

    @Gugu42, pour le son, tu conseilles quel librairie?

    Paulscode ! Paulscode !



  • @'Superloup10':

    @Gugu42, pour le son, tu conseilles quel librairie?

    @'EclipseOnFire':

    @'Superloup10':

    @Gugu42, pour le son, tu conseilles quel librairie?

    Paulscode ! Paulscode !

    OpenAL est sympa pour les sons dans un environnement 3D / 2D, et il est de base dans LWJGL
    http://en.wikipedia.org/wiki/Java_OpenAL

    Après, j'ai oublié de mentionner LibGDX qui est un énorme ajout a LWJGL, et qui propose des sons ( pas sur si ils ont fait leur propre lib ou pas pour les sons.

    Paulscode, j'ai jamais testé, mais c'est ce que Minecraft utilise il me semble, donc en observant ce qui gère les sons sur Minecraft, on peut en obtenir un bon exemple d'utilisation.


  • Moddeurs confirmés Rédacteurs Modérateurs Administrateurs

    Ok, merci.


  • Moddeurs confirmés Rédacteurs Modérateurs Administrateurs

    @Gugu42, il vaut mieux utilisé la class Display de LWJGL ou créé une JFrame?



  • @'Superloup10':

    @Gugu42, il vaut mieux utilisé la class Display de LWJGL ou créé une JFrame?

    La classe Display est très simple a utiliser, et a des méthodes très pratiques.

    Je conseille la classe Display, car la JFrame est de Java, alors que la classe Display est de LWJGL, et donc plus optimisée pour OpenGL.

    PS : Je vais demander a Pchom si j'peux faire des petits exemples de base sous LWJGL + Slick_util genre collision etc… et vous donner le code.

    En exemple, j'avais un système de lumières très sympatique, j'ai plus le code, mais j'ai toujours le .jar du test

    Téléchargez le : http://puu.sh/6LTRN.jar

    Ce a quoi ça peut ressembler en plaçant des lumières : http://puu.sh/6LU0X.jpg

    Les contrôles :

    ZQSD = Déplacement
    F1 = Poser une lumière
    F2 = Poser une boîte
    C = Effacer les lumières et les boites.

    Cette démo a été faite en 2 heures, même pas, les lumières sont dynamiques ( Si je déplace la lumière déplaçable, les ombres vont bouger )


  • Moddeurs confirmés Rédacteurs Modérateurs Administrateurs

    Cool, merci, là je sèche au niveau de la gestion du clavier, je ne sais pas quoi mettre dans ma class Keybinding, et Minecraft n'aide pas à comprendre.



  • http://lwjgl.org/wiki/index.php?title=LWJGL_Basics_2_(Input)

    En gros :

    Tu fais une méthode input() qui sera appelée a chaque tick, et dans celle ci, deux types de check :

    Celui pour touche enfoncée ( Exemple : ZQSD pour les déplacements ) qui correspond a :

    
    if(Keyboard.isKeyDown(Keyboard.KEY_[YOURKEY]){
    //Ton action
    }
    
    

    Et un autre, pour les appuis "coup par coup", genre la touche F3 dans Minecraft, qui vérifie une seule pression, fait l'action, et arrête tant que la touche n'est pas re-pressée, ce qui permet d'éviter le spam d'action ( Afficher - Cacher le menu F3 ).

    Cet event correspond a ceci :

    
    while(Keyboard.next()){
    if (Keyboard.getEventKey() == Keyboard.KEY_A) {
    System.out.println("Touche A appuyée !");
    }
    if (Keyboard.getEventKey() == Keyboard.KEY_E) {
    System.out.println("Touche E appuyée");
    }
    }
    
    

    Ici, le message n'apparaît qu'une fois.

    Le troisième type, c'est tenir enfoncé puis de relacher, qu'on peut lier par exemple a l'arc de Minecraft.

    le code est dans la boucle "while(Keyboard.next())"

    
    if (Keyboard.getEventKey() == Keyboard.KEY_A) {
    if (Keyboard.getEventKeyState()) {
    System.out.println("A Key Pressed");
    }
    else {
    System.out.println("A Key Released");
    }
    }
    
    

    Petit plus :

    Le wiki ( qui buggait hier ) de LWJGL est superbe pour comprendre la base :
    http://lwjgl.org/wiki/index.php?title=Main_Page

    Je te le conseille 🙂


  • Moddeurs confirmés Rédacteurs Modérateurs Administrateurs

    T'inquiète, je l'avais déjà regardé mais je ne suis pas très bon en Anglais, donc j'avais pas tout compris.


Log in to reply