CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Générateur de Labyrinthe automatique fin

Fvirtman
Fvirtman
Niveau 10
16 mai 2006 à 14:38:46

Je vous présente ici aussi mon dernier bébé, présenté sur "création de jeux" mais sous un angle différent :
http://perso.numericable.fr/~fvirtman/klostro.zip

Aspect jeu :
Vous etes dans un laby 3D : les couloirs peuvent partir dans tous les sens, y compris en haut et en bas (a la Descent)
Vous devez trouver la sortie.
Controls : souris ou fleches, et bouton I pour avancer (+ d´autres commandes que j´ai la flemme d´énumérer)

Aspect technique :
Générateur de labyrinthe automatique : c´est ce que je voulais mettre en place avant tout : générer un laby connexe (donc possible)
Déplacement dans une structure de gestion de voxels.
6 degrés de liberté : controle géométrique de repere.

dnob700
dnob700
Niveau 10
17 mai 2006 à 00:05:56

sympathique (j´ai toujours voulu "jouer" à ce vieile écran de veille de windows 95 qui représentait un labyrinthe de ce type).

La seule chose c´est qu´on aimerait en voir le code source ...
Puice que tu dit que tu l´a codé en 4 soirée, ça ne doit pas être trop long et donc pas mal présenter certaines technique. Entre autre je suppose que tu as des méthode pour définier quels murs sont affiché ou non (je veux dire, lesquels tu tente d´afficher ; tout ne se résoud pas au depth buffer, si ?)

Fvirtman
Fvirtman
Niveau 10
17 mai 2006 à 00:56:34

Je diffuserai le code source quand le projet aura un peu vieilli je pense. Pour le moment, comme il s´agit de mon dernier bébé, je garde une certains pudeur.

Cependant, je suis d´accord pour parler de toutes les techniques que j´ai utilisé.

En ce qui concerne les optimisations, j´en ai fait quelques unes, bien entendu, meme si j´aurais pu en faire encore davantage, je me suis suffi aux 2 suivantes :

- la boite en globante du frustrum :
Mon laby est un tableau en 3 dimesions de cubes (voxels). En définissant le clipping, je définis 5 points : la caméra, et les 4 bords du plan far.
La boite englobante de cela me fait déja éliminer tout ce qui est dehors, ainsi, je ne traite que les cubes étant dans cette boite
- les parois élémentaires : au lieu de dessiner les 6 faces de chaque cube, je ne dessine une paroi que si le voisin d´un mur est un trou. Cela me fait éliminer beaucoup de faces.

J´avais pensé a d´autres optimisations que je n´ai pas implémenté :
- ne pas afficher les paroi qui me "tournent le dos" (ça, un calcul de produit scalaire aurait pu faire l´affaire)
- ne pas afficher les couloir que je ne vois pas : (cela est + complexe : si je fais le schéma suivant :

-> |1 |2

la fleche est mon regard
le |1 est un mur qui masque entierement le mur 2.
En théorie, je peux éliminer entierement le mur 2
et pourtant, detecter qu´il est éliminable est difficile (surtout que mon repere peut etre dans n´importe quelle direction, je ne peux me ramener a aucun cas particulier)
J´avais pensé a sortir l´artillerie lourde : l´arbre BSP, mais je me suis dit que ce n´était pas nécessaire pour un si petit projet.

Bref, pour conclure : y´a de l´optimisation, mais juste la base, ça pourrait etre améliorable...

godrik
godrik
Niveau 30
17 mai 2006 à 08:58:30

j´avais fait un labyrinthe sur gameboy advance. L´affichage etait en 3D mais le labyrinthe en 2D.
Je crois me rappeler qu´une simple coloration de graphe "avec sens" suffisait

l´idée était de dire, je suis en 0,0, je regarde vers la droite (10, 0 par exemple).
Je vois la case 1,0 avec une vision droite, haut et bas.
Je vois la case 2,0 avec une vision droite, haut et bas.
Je vois la case 1,1 avec une vision droite, haut. (mais pas bas, parceque j´ai fait un pas vers le haut).
Pour ne pas tout colorier, il vaut mieux s´arreter a profondeur fixé.

Fvirtman
Fvirtman
Niveau 10
17 mai 2006 à 12:02:24

Je n´ai pas utilisé cet algo, voici celui que j´ai utilisé :

Tout d´abord, je prépare un gruyere régulier : c´est a dire un truc ayant cette tete (attention a l´ASCII art sous JV)

xxxxxxxxxxx
xoxoxoxoxox
xxxxxxxxxxx
xoxoxoxoxox
xxxxxxxxxxx
xoxoxoxoxox
xxxxxxxxxxx

Chaque "o" est un trou, chaque x un mur : comme tu vois, chaque trou est isolé, mais un seul trou pourrait permettre a 2 trous de se voir.
Comme c´est un laby 3D, tu imagines ça sur plusieurs étages (avec une plan de mur plein entre chaque couche.

Chaque trou isolé fait donc un graphe a lui tout seul, je leur donne une "couleur" (= un id propre) unique a chacun.
Je note dans un "set" (une liste L si tu preferes, toutes les couleurs utilisées, donc autant de couleurs que de trou isolé (que de graphe))

Voila, je suis pret a commencer l´algo :

Tant que la liste contient plusieurs éléments, on boucle, on s´arretera que quand la liste L ne contiendra plus qu´un élément.
{
je fais un random pour choisir une case au hasard.
si ce n´est pas un mur, on refait le random (oui, on ne creuse que dans les murs)
on regarde les voisins du mur qu´on s´apprete a creuser, il faut qu´il y aie au moins 2 trous de couleurs différentes comme voisin : ainsi relier 2 graphes indépendants.
si c´est la cas, alors on creuse, puis, comme relie une zone A et une zone B, on repeint toute la zone A de la couleur B (avec un algo de pot de peinture 3D)
du coup, la zone A disparait, on la retire de la liste L.
}

A la sortie, on n´a plus qu´une couleur, donc un seul graphe connexe, ce qui garantie que le laby est possible.

Fvirtman
Fvirtman
Niveau 10
17 mai 2006 à 12:03:51

Saleté de font : les x n´ont pas la meme largeur que les o.
Bref, pour bien voir l´ascii art, recopiez le dans "bloc note"

guyver2
guyver2
Niveau 10
17 mai 2006 à 12:41:02

c´est vraiment sympa. les mouvement sont marrant mais donne un peu la gerbe. ça donne l´impression d´évoluer en apeusenteur (apres 2 virage on ne sait plus ou est le haut ou est le bas :) )

une version precompilé pour linux serait-elle possible en attendant les sources.

Fvirtman
Fvirtman
Niveau 10
17 mai 2006 à 12:50:55

C´est envisageable :)

Fvirtman
Fvirtman
Niveau 10
17 mai 2006 à 14:15:55

Hum, finalement ça sera plus difficle que prévu : la seule machine Linux que j´ai, c´est une machine de ma boite que je peux piloter en telnet. Le soucis est qu´il n´y a pas SDL (voir carrément OpenGL) d´installé dessus, et je ne vais pas me permettre ça, donc faudra attendre pour une version Linux.

PS : (méchanceté gratuite (au 2e degré)) z´avez qu´a mettre Windows comme tout le monde, non mais ! :-)

godrik
godrik
Niveau 30
17 mai 2006 à 14:50:46

je parlais de l´affichage, pas de la génération du labyrinthe! :)

Fvirtman
Fvirtman
Niveau 10
17 mai 2006 à 14:55:58

ah oui, en effet !! j´avais pas percuté ! Cet affichage pourrait etre pas mal :)
Bon, je ne suis pas sur de toute retoucher tout de suite, mais c´est une idée !

guyver2
guyver2
Niveau 10
17 mai 2006 à 17:16:50

j´ai windows (sinon je n´aurais pas pu essayer...)

mais c´est juste que j´essaye de m´en separer.

godrik
godrik
Niveau 30
17 mai 2006 à 21:09:42

elles font mal aux yeux tes textures! :)
plein de couleur! :)

Fvirtman
Fvirtman
Niveau 10
17 mai 2006 à 23:29:00

Et oui :) Cependant, elles ne sont pas protégées : c´est a dire que tu peux les changer sans toucher a l´exe :)
Lis le fichier "lisezmoi.txt" fourni avec pour les changer :-)

godrik
godrik
Niveau 30
18 mai 2006 à 12:38:45

oui, oui j´ai vu...
Je serais curieux de voir le code. J´avais implémenté un peu le meme en 2D.
Si je retrouve le code, ca vous interesse que je le partage ?

guyver2
guyver2
Niveau 10
18 mai 2006 à 14:14:23

ça m´interesse godrik.

godrik
godrik
Niveau 30
18 mai 2006 à 18:00:22

http://godrik.mandragor.org/~godrik/labyrintheFinal.tar.bz2
c´est hebergé chez moi. donc quand ma machine est eteinte, ca ne fonctionne pas... :)
il y a du code glut/gl ainsi que du code GBA. Le labyrinthe est hardcodé par contre!

d´ailleurs dans ce bout de code, je n´utilise pas ce que j´ai raconté plus haut sur "quels cases afficher", la je fais un bete affichage par quartier (comme un gros sale, mais bon, ca tournait sur une gba alors sur un PC ...)

godrik
godrik
Niveau 30
18 mai 2006 à 21:25:05

en fait, j´ai plein de bug d´affichage... je ne me rappelais pas les avoir en gba...
a mediter...

LGV
LGV
Niveau 28
19 mai 2006 à 02:01:13

ah tiens ca me rappelle un ancien projet scolaire !

http://netabarons.chez-alice.fr/projects.html#maze

c´est du Java (pas le choix..), ca supporte qq trucs amusants comme un CVS pour des labyrinthes TREEES grands sans ralentissements aucun, tessation auto pour spotlight, pseudo motion blur, etc. Et il y a les sources !

Altonfrere
Altonfrere
Niveau 10
19 mai 2006 à 12:59:48

Fvirtman, pour ton problème de Linux, si tu n´as pas envie d´installer en plus de windows sur ta machine, tu as la solution VMWare ... une machine virtuelle, tu installes ton linux dans une image sur ton disque dur. Et tu peux lancer depuis windows sans problème et basculer Windows/Linux avec 2-3 touches (en même temps). Bon le seul pb (que j´ai pas encore résolu) c´est le transfert des fichiers où c´est un peu merdique mais ca le fait plutôt bien.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment