IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

Ville autogénéré L-Systeme


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre actif Avatar de SKone
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 333
    Points : 250
    Points
    250
    Par défaut Ville autogénéré L-Systeme
    Bonjour,
    je travail actuellement avec des amis programmeurs et graphiste sur un petit jeu. Un jeu sans prétention mais dont les algos à mettre en place me font devenir chauve. 2 principes pour ce jeu. Que chaque joueur est sa propre ville et sont propre scénario pour le scénario aucun problème un arbre conditionnel fera l'affaire. Il existera N scénario. Mais pour la ville cela se complique.
    En faisant des recherches sur les solutions existante les L-Systèmes semblaient s'imposer d'eux même. Je suis tombé sur un thèse très intéressante d'un certain Julien Perret (ici). Qui présentait toute les techniques existantes pour la modélisation de ville, la génération de ville, les réflexions sur la ville, les modélisations de bâtiment, ... Bref tout ce qui a été fait sur les villes.
    Et dans mes recherches je suis tombé sur 2 vidéos :
    http://www.youtube.com/watch?v=xo5zO4QULcE
    et
    http://www.youtube.com/watch?v=yI5YOFR1Wus
    Assez impressionnante dans la thèse Julien Perret parle que très bièvement des techniques utilisées pour réussir à faire cela. 4 modèles sont utilisés dans l'algo : Le modèle sans motif, Le motif San Francisco (pour les villes avec grand relief), Le motif New York très cartésien, et le motif radial style Paris.
    Mon objectif est de réussir dans un premier temps à faire un équivalent de la première vidéo.

    Pour l'instant mon L-Système est très simple puisque je ne sais pas par où commencé :
    A veut dire allez tout droit dans un intervalle de +-45°
    B veut dire allez à 90° à droite où à gauche.
    Mon axiome A à 0 degré.
    Mes règles :
    A donne A, B ou AB (bifurcation)
    B donne A ou AB
    Le tout avec une probabilité de présence uniforme.
    Et le résultat :
    au rang 3
    http://img297.imageshack.us/my.php?i...7792151bn9.jpg
    au rang 10 :
    http://img98.imageshack.us/my.php?image=10dn8.jpg
    au rang beaucoup :
    http://img299.imageshack.us/my.php?i...eaucouppw7.jpg
    Pas très jolie aucun motif, ...
    Donc je demande votre aide pour l'élaboration de cet algo.

    PS : Sur les exemples je n'est pas encore implémenté les algos correctifs au L-Système :
    1. Si la route tracer coupe une autre route on l'arrête avant et on crée une intersection
    2. Si devant la route tracer dans un cercle autour du point d'arrivé il existe une route dans ce cas on ce colle à la route
    3. Si devant la route dans un cercle donné il existe une intersection on ce colle à cette dernière


    Ces corrections n'ont pas été collé puisque qu'aucun motif n'apparait.
    Merci pour vos futurs réponse

  2. #2
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut
    j'ai déjà bossé pendant un bon petit temps avec les L-System (j'ai fait un compilateur L-System) et je pense qu'il y a certaines choses qui ne vont pas.
    Selon moi, il faudrait combiner plusieurs techniques.
    Le L-System que tu vas décrire te permettra de donner les grandes lignes de ta villes, mais pour ce qui est de faire les trois conditions que tu cites, ça va être difficile d'exprimer ça via un L-System...

    Tout d'abord, je me pose la question de savoir quel genre de villes parmi les trois que tu cites tu aimerais?

    Ensuite, crées ton L-System relatif à ce motif de ville. Tu transformes ce L-System généré en un graphe ce qui te permettra d'effectuer les trois modifications dont tu parles.

    Et puis, ça dépend aussi de quelles fonctions sont présentes dans ton L-System. Est-ce qu'il prend en compte plusieurs règles pour une variables? (A -> B ou A-> C) Est-ce qu'il est sensible au contexte? (AB -> C, mais BA->D)

    Sinon, tu peux aussi te créer une autre façon de faire:
    utiliser des algorithmes de création de chemins via une IA comme décrit sur ce site: http://www.rennard.org/alife/french/ants.html
    Tu n'auras plus qu'à créer les centres d'intérêts dans ta ville et déterminer ton nombre d'habitant. Mais ça, je suppose que ça peut être extrait du gameplay, non?

  3. #3
    Membre actif Avatar de SKone
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 333
    Points : 250
    Points
    250
    Par défaut
    Pour l'instant je me concentre surtout sur la ville style New York. Et l'algo correctif (3 conditions) je les faits lors de la création d'une branche de route.
    Pour l'instant l'objectif c'est de convergé vers les densités de population, esquivé les zones interdites (eau, parc, ...). Mais je ne saisi pas le truc a plusieurs variable ?
    Voilà ce que j'ai réussi à faire en jouant depuis tout a l'heure avec les densités de probabilité de présence des angles et des règles, ... (Après intégration sur le moteur kjAPI) :



    Les traits verticaux rouges sont les carfours, les traits fuchia son les A et les traits cyan les B.
    [EDIT]time=5h47
    Nous venons de faire un progrès en ajoutant le petit 1 des contraintes que j'appel algo correctif :
    résultat :

    et

    La dernière est au rang 123
    [/EDIT]

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Il faut effectivement combiner plusieurs techniques - un L-System, mais aussi un méta-langage qui est capable de décrire comment placer les différents éléments du décors (les affiches? les lampadaires? ...), comment la ville grandit (ce qui permet de situer un centre-ville historique ou le style de bâtiment est différent par exemple), etc.

    C'est ce que Gamr7 fait avec son middleware spécialisé. Lionel (le fondateur de la société) a accepté de nous parler un peu de sa technologie dans une interview en anglais qui a été postée l'an dernier sur gamedev.net (à l'occasion de la GCDC'07) (si vous n'arrivez pas à lire l'interview à partir de la page, le fichier MP3 est ici).

    C'est aussi le chemin qu'a pris la société Procedural Inc pour CityEngine. A noter que plusieurs publications scientifiques concernant ce projet sont disponibles. A voir aussi, le wiki du fondateur de Procedural Inc.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. [VB6] [Système] Récupérer le contenu d'une fenêtre DOS
    Par Nounours666 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 18/11/2004, 16h38
  2. [Kylix] libc.system
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 19/10/2002, 13h48
  3. [VB6] [Système] Barre des taches
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 08/10/2002, 15h16
  4. [VB6] [Système] Icones du systray qui veulent pas partir
    Par Ctof dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/10/2002, 09h41
  5. [TP7]systeme d'exploitation
    Par numeror dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 15/08/2002, 08h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo