Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Affichage des résultats 1 à 8 sur 8
  1. #1
    Bonjour!

    J'avais déjà commencé un topic sur l'avancement d'un de mes projets, malheureusement je ne l'ai pas mis à jour depuis un moment malgré le fait qu'il continue à avancer doucement (j'ai retrouvé un emploi à temps plein depuis le dernier post, ce qui me laisse moins de temps pour des mises à jour), j'espère pouvoir bientôt vous montrer de l'avancement dessus

    Aujourd'hui, je vous présente un jeu que j'ai commencé pendant une game jam organisée sur le site Developpez.com, et que j'ai un petit peu mis à jour pour répondre aux principales critiques.

    Le thème de la jam était un peu alambiqué, il y en avait d'ailleurs en fait 2: "le nombre 10" et "si on arrête de bouger, on meurt". Après m'être baladé sur la page Wikipédia du nombre 10 pour trouver l'inspiration et réfléchi à plusieurs idées, j'ai fini par décider de faire un runner inspiré de la 1ère des 10 plaies d'Égypte: le fleuve de sang.

    Vous pouvez en télécharger le résultat ici: https://lhuillia.iiens.net/wejv10/WEJV10.zip

    Vous voguez donc sur le Nil à toute vitesse pour échapper à la vague de sang qui l'envahit, et sur le chemin vous pouvez sauver les habitants du Nil qui veulent échapper au cataclysme en vous approchant des rives.


    Le jeu se joue tout aux flèches du clavier (les boutons dans les menus ne peuvent être interagis avec qu'avec la souris, ce qui n'était pas très inspiré): droite et gauche pour accélérer/freiner, haut et bas pour vous diriger.





    Niveau technos, j'utilise un moteur maison que j'améliore depuis plusieurs années, ce qui m'a permis de recycler certaines choses, notamment l'eau que j'ai faite pour un autre projet en pause, ou les bonshommes plus haut que j'ai repris de Fire Exit, et que Biscuiit s'est chargée d'habiller en Égyptiens. Elle s'est d'ailleurs chargée de tous les sprites sur ce projet
    Le moteur supporte actuellement DirectX12 et OpenGL3.0, l'exécutable "FirstPlague.exe" devrait être capable de choisir le bon selon votre machine, sinon essayez l'un des 2 autres.
    Le jeu n'a pas de son (pas eu le temps d'en ajouter, pas eu le temps d'y réfléchir pendant la jam ), mais le moteur en supporte déjà grâce à SoLoud.
    Ce qui m'a posé pas mal de galère, pendant la jam et même pour corriger quelques soucis par la suite, c'est le fait de mixer de la 2D dans un monde en 3D, ce qui était plus dur que ce à quoi je m'attendais, surtout en voulant refléter la 2D dans l'eau, et "tourner" le bateau comme dans le 2ème gif.

    Voilà, j'espère que vous vous amuserez bien, si vous avez des questions ou des soucis n'hésitez pas à poster ici Je vais essayer de continuer à l'améliorer un peu et par la suite pourquoi pas, après avoir ajouté beaucoup de contenu, le mettre sur itch.io.

    À bientôt
    Dernière modification par Guntha ; 02/12/2023 à 16h39.

  2. #2

  3. #3
    Merci deathdigger

    J'avais fait l'eau pour un autre projet qui est malheureusement en pause pour le moment, ça m'avait pris pas mal de temps pour la faire ^^'

    Un truc que j'ai repris du même projet, qui est un jeu d'aventure en 3D, c'est que j'avais faire en sorte de pouvoir faire mes niveaux avec Trenchbroom, qui est un éditeur de maps pour des jeux du style de Quake, ce qui me permet d'avoir rapidement à la fois des décors et les collisions qui vont avec.
    Dans ce jeu je l'ai utilisé pour créer les "chunks" du décor, que j'assemble les uns après les autres pour avoir un runner infini.


    Les bonshommes aussi je les ai repris d'un projet que j'ai pas mal entamé et que j'aimerais bien finir, j'avais d'ailleurs commencé un topic racontant son avancement ici


    Je suis actuellement sur 2 chantiers:
    =>Un des derniers défauts de la version jam du jeu, c'est que la zone où il fallait aller pour récupérer des bonshommes n'était jamais claire: à certains endroits il fallait beaucoup se rapprocher du bord, à d'autres on les récupérait même en restant en plein milieu du fleuve...
    J'ai donc fait en sorte de pouvoir dessiner les triggers correspondants dans l'éditeur (voir screenshot ci-dessus) (j'avais déjà fait ça pour le projet de jeu d'aventure sous-marin, mais je ne me rappelais plus comment l'utiliser )
    Je vais aussi les afficher dans le jeu pour mieux guider le joueur; pour l'instant c'est juste un gros bloc rouge, il faut que je trouve un joli effet.


    =>Je réorganise les fichiers contenant les données sur les chunks: jusqu'ici pour chaque chunk il y avait un tas de fichiers (un qui contient son mesh, un qui contient ses collisions, un qui contient les infos sur les emplacements des bonshommes, un autre pour les crocodiles, un autre pour les palmiers). Actuellement j'ai rassemblé presque toutes les données dans un fichier par chunk, et le but c'est d'avoir un seul fichier qui contient tout; l'un des buts, c'est de rendre leur chargement instantané (en n'ayant qu'un seul fichier à charger et virtuellement aucun traitement à faire dessus, à part les meshes et les textures qu'il faut ensuite envoyer au GPU), l'autre, c'est que comme je vais aussi sortir tout ce qu'il faut pour pouvoir éditer des chunks et faire son propre runner, c'est qu'un seul fichier sera plus facile à partager.

    À bientôt pour la suite des progrès!

  4. #4
    Bonjour,

    J'ai fait à peu près tout ce que je voulais pour les triggers où on récupère les bonshommes: je peux les dessiner et j'ai un petit effet sympa pour les afficher (qui pourrait encore être amélioré), et comme je peux les dessiner comme je veux dans TrenchBroom, j'en ai profité pour les arrondir pour les rendre plus jolis ^^




    Le chantier pour avoir un seul fichier de niveau facilement "partageable" avance, je sortirai une version dès que je l'aurai fini.

    Après ça il restera un autre gros chantier: faire un outil pour décider quels chunks sont "compatibles" entre eux (actuellement c'est hardcodé), et il y aura tout ce qu'il faut pour créer des niveaux.

    Ensuite, ce sera surtout du polish et de l'ajout de contenu.

    À bientôt!

  5. #5
    Bonjour!

    Je viens de sortir un nouvelle version avec les 2 tâches décrites ci-dessus terminées:
    https://lhuillia.iiens.net/wejv10/WEJV10.zip



    (En fait la tâche "tout rassembler dans une archive" n'est pas complètement terminée, il reste juste les textures du mesh du chunk qui sont séparées).
    Le problème avec FirstPlague.exe qui ne fonctionne pas sur toutes les machines a normalement été réglé (en tout cas, ça fonctionne sur la machine sur laquelle j'avais le problème), j'ai quand même laissé les 2 autres par précaution.

    Niveau gameplay, il reste les collisions avec les crocodiles qui sont désagréables, et puis j'attaquerai sérieusement l'outil de combinaison de chunks. Et puis un outil plus propre pour "compiler" un ensemble de chunks en un niveau.
    Il faudrait aussi que je trie mes sprites et les meshes avec de la transparence pour régler certains soucis de rendu.

    Après tout ça, je ferai sûrement des modifs qui feront que le jeu n'a plus grand chose à voir avec la version jam, donc je mettrai les prochaines versions sur une autre URL. Je trouve notamment que le défilement du décor à toute vitesse pète les yeux, je trouverai donc un moyen de changer la caméra pour rendre ça plus agréable (je suis même tenté de mettre une caméra 3ème personne à l'arrière ), et/ou réduire la vitesse du bateau (et donc rendre les niveaux plus accidentés pour rééquilibrer). Peut-être donner l'impression que le bateau navigue sur des vagues et ne glisse pas sur du plat.

  6. #6
    Bonjour!

    Les 3 tâches dont je parle ci-dessus ont été faites:
    =>Améliorer les collisions avec les crocos: maintenant elles sont mieux intégrées et marchent comme les collisions contre le décor
    =>Les sprites et les triggers translucides sont maintenant triés pour que le blending se fasse dans le bon ordre:

    =>L'éditeur, dont j'ai un peu documenté la progression à coups de vidéos:

    Le début du développement de l'éditeur: j'ai juste ajouté la possibilité de déplacer une caméra librement:
    https://streamable.com/z9c1x0

    Première version primitive de l'éditeur, qui permet juste d'assembler 2 chunks côte à côte pour décider s'ils sont compatibles ou non:
    https://streamable.com/9wxmko

    Une UI proche de la version actuelle de l'éditeur, qui permet déjà d'ouvrir/sauvegarder/compiler un niveau:
    https://streamable.com/7ezgx0

    Ici, à peu près toutes les features dont j'ai besoin étaient présentes, avec des features de qualité de vie supplémentaires, comme pouvoir compiler un niveau et y jouer immédiatement après:
    https://streamable.com/n2aa7e

    Ici 2 changements ont été ajoutés: la surface de l'eau fait maintenant partie des chunks (ce qui permettra plus tard d'avoir potentiellement plus de liberté, avec 2 chunks avec la surface de l'eau à différentes hauteurs séparés par une chute d'eau, ou un étang dans le décor avec des vagues moins vives...), et les chunks n'ont plus forcément tous la même longueur
    https://streamable.com/zmsf52


    -------------------------------

    Je songe à complètement changer la façon dont le décor fonctionne: actuellement il y a au premier plan une ligne de chunks "normaux", sur lesquels le joueur se déplace, et à l'arrière plan une ligne de chunks "de décor". Ça marche suffisamment bien tant que le jeu se déroule sur une ligne droite, mais j'ai des plans un peu plus ambitieux, où le parcours pourrait partir plus en biais, et avec le système actuel ça serait compliqué d'avoir un rendu correct.
    Je songe donc à me débarrasser du concept de "chunk de décor", et, à la place, sur les chunks normaux ou sur des chunks supplémentaires vides (si la caméra peut voir loin du parcours), pouvoir désigner des "zones de décor", sur lesquelles le jeu décidera de placer des éléments de décor (bâtiments en 3D, ensemble de sprites, foule de bonshommes...) aléatoirement.

    Avec ça, je veux aussi rendre le jeu moddable, et faire quelques changements de gameplay comme j'en parle dans le post précédent.

  7. #7
    Bonsoir,

    Le changement du fonctionnement des décors me demande un peu de réflexion pour trouver quelque chose qui me convient, alors en attendant j'ai avancé sur d'autres chantiers sur mon moteur:

    =>J'ai plusieurs années de retard sur le reste du monde, mais je peux enfin détecter automatiquement quand un asset a été changé et le recharger automatiquement. Ça marche avec les textures, les meshes et les shaders, et c'est relativement facile à ajouter le support d'assets spécifiques au jeu, ce que j'ai fait pour les chunks de First Plague.
    C'est illustré dans cette vidéo: https://streamable.com/a20vpn

    =>J'ai changé mon système de localisation pour pouvoir flat-loader le fichier contenant les textes et ne faire aucun traitement, et donc aucun temps de chargement pour ça. (En vrai il reste quand même le temps de générer tous les glyphes utilisés, à l'aide de Freetype, mais actuellement c'est déjà instantané et ça se refait même à chaque fois qu'on resize la fenêtre, pour avoir une font toujours à peu près pixel perfect). J'avais déjà pas beaucoup de traitement à faire et ça n'a jamais été un goulot d'étranglement, mais je suis un peu obsédé par les temps de chargement et j'essaie d'éviter de faire plus de traitements que nécessaire. J'ai peut-être aussi été traumatisé par des jeux d'aventure sur lesquels j'ai travaillé et où les textes localisés étaient stockés dans des fichiers XML, et le temps de chargement de ces fichiers était visible à l’œil nu

    J'aurais plein d'autres trucs comme ça que j'aimerais bien améliorer pour nettoyer un peu le code, faciliter la production de contenu et la création d'outils et d'autres développement futurs.

    Voilà, j'aimerais pouvoir vous donner des nouvelles des décors dans le prochain post
    =>Quelques petits changements d'architecture dans mon renderer, pour pouvoir ajouter d'autres backends plus tard éventuellement (je supporte déjà OpenGL et DirectX12, j'aimerais bien ajouter DirectX9 qui est supporté absolument partout et qui serait suffisant pour ce jeu, et ça pourrait aussi aider à supporter d'autres plate-formes).

  8. #8
    Bonjour, je n'ai pas encore fini le système qui ajoutera des décors à la volée autour du tracé mais j'avance, bien qu'assez lentement en ce moment.

    La première décision que j'ai prise est de finalement caser le jeu sur des tiles. L'ancien système était suffisant pour avoir un tracé qui ne soit pas une ligne droite, mais ça compliquait l'ajout de décor autour. Grâce au fait de forcer les chunks à avoir une taille en tiles, je suis sûr de pouvoir remplir tous les trous dans la map autour du chemin.
    Je fais en sorte de n'ajouter du décor que si l'angle de caméra le nécessite. À chaque frame, je remplis une grille pour savoir quelles tiles sont encore inoccupées, et lesquelles peuvent être vues par la caméra.

    Les cases blanches montrent les tiles inoccupées, les noires les tiles occupées, et celles qui ont aussi du rose les tiles vues par la caméra. Les tiles aux bords d'un chunk peuvent être colorées si les tiles contiguës sont encore vides, c'est pour signifier quels chunks voisins seraient "compatibles" et pourraient y être placés, c'est une capacité que je n'utilise pas encore dans mes assets.

    Ensuite, il m'a fallu définir où les décors en eux-même (ensembles d'arbres, de maisons...) pourraient apparaître (pour qu'ils ne puissent pas chevaucher l'eau ou apparaître sur une pente raide par exemple).
    Je dessine des zones de décor dans TrenchBroom, dont je prends l'une des faces dans le jeu pour définir le polygone où le décor peut apparaître. Pour que l'algo qui va remplir ces zones (que je n'ai pas encore écrit ) reste relativement simple, chaque zone doit être composé d'un seul brush, pour que ce soit forcément un polygone convexe.


    Voilà où j'en suis. Actuellement, je suis en train de m'occuper des décors en eux-même (qui seront traités presque comme un 3ème type de chunk), et ensuite je m'occuperais de remplir à la volée les zones de décor avec ces décors.

    À bientôt je l'espère!

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •