Use ← → or P/N keys
This article might be outdated

The English version was updated on December 24, 2025 at 9:21 AM, while this translation was last updated on October 26, 2025 at 12:14 AM. View English version

Ce guide explique comment créer des maps personnalisées pour DBus World à l’aide de fichiers de configuration XML. Une map se compose d’arrêts de bus, de lignes qui les relient, de tarifs de billets optionnels et de variations du flux de passagers selon l’heure.


Les Patreons peuvent désormais créer leurs propres lignes en utilisant le DBus World Line Creator facilement!

Aperçu de la structure des fichiers

Une map complète nécessite au minimum deux fichiers :

  • stops.xml (obligatoire) - Définit tous les arrêts de bus
  • lines.xml (obligatoire) - Définit les lignes de bus et leurs itinéraires

Fichiers optionnels :

  • city.xml - Définit les types de billets et les tarifs pour les systèmes tarifaires urbains
  • times.xml - Contrôle le flux de passagers selon l’heure de la journée (fonctionnalité Patreon)

Tous les fichiers doivent être nommés exactement comme indiqué et placés dans le même dossier.

stops.xml - Définitions des arrêts de bus

Ce fichier contient tous les arrêts de bus disponibles sur votre map.

Structure de base

<code><busstops>
    <busstop>
        <id>1</id>
        <name>Nordspitze Bauernhof</name>
        <zone></zone>
        <requestStop>false</requestStop>
        <location>-359.743;8.24964;520.188;0.146129;-0.163294</location>
    </busstop>
</busstops>
</code>

Explication des paramètres

  • id: Identifiant numérique unique pour l’arrêt. Chaque arrêt doit avoir un ID différent.
  • name: Nom affiché dans les horaires et l’interface du jeu.
  • zone: Classification de la zone (actuellement non utilisée, peut rester vide).
  • requestStop: Indique si les passagers doivent demander l’arrêt (actuellement non utilisé, mettre false).
  • location: Coordonnées au format X;Y;Z;RotX;RotZ définissant la position de l’arrêt dans le monde du jeu.

Création de plusieurs arrêts

Il suffit de répéter le bloc <busstop> pour chaque arrêt, en veillant à ce que chaque ID soit unique :

<code><busstops>
    <busstop>
        <id>1</id>
        <name>Central Station</name>
        <zone></zone>
        <requestStop>false</requestStop>
        <location>-100.0;5.0;200.0;0.0;0.0</location>
    </busstop>

    <busstop>
        <id>2</id>
        <name>Market Square</name>
        <zone></zone>
        <requestStop>false</requestStop>
        <location>150.0;5.0;300.0;0.0;0.0</location>
    </busstop>
</busstops>
</code>

lines.xml - Définitions des lignes et itinéraires

Ce fichier définit les lignes de bus et leurs itinéraires à travers les arrêts.

Structure de base

<code><lines map_type="base">
    <line uid="0" number="A2" adultCoef="75" reducedRate="15" city="true">
        <route uid="1" name="B1" time="0">
            <busstop uid="1" passengersMin="5" passengersMax="20" 
                     coefOn="100" nextStopTime="1" nextStopPrice="1"/>
            <busstop uid="5" passengersMin="0" passengersMax="0" 
                     coefOn="0" nextStopTime="0" nextStopPrice="0"/>
        </route>
    </line>
</lines>
</code>

Attribut du type de map

L’attribut map_type spécifie quelle map du jeu vous configurez :

  • base - SCS Base Europe et ses DLC
  • promods - Map ProMods
  • grundorf - Map Grundorf de DBus
  • tmp - TruckersMP (réservé)
  • Valeurs personnalisées ou laisser vide pour utiliser base par défaut

Paramètres de la ligne

  • uid: Identifiant numérique unique pour la ligne. Aucun doublon possible.
  • number: Désignation de la ligne affichée dans le jeu (ex. : "A2", "15", "North Route").
  • adultCoef: Pourcentage de passagers adultes sur cette ligne (ex. : 75 = 75 % d’adultes).
  • reducedRate: Pourcentage de réduction pour les billets à tarif réduit (ex. : 15 = 15 % du prix complet).
  • city: Mettre sur true pour utiliser le système de tickets urbains (nécessite city.xml), false pour un tarif par arrêt.

Paramètres de l’itinéraire

Chaque ligne peut avoir plusieurs itinéraires (différentes directions ou variantes).

  • uid: Identifiant numérique unique pour l’itinéraire au sein de cette ligne.
  • name: Nom/désignation de l’itinéraire affiché aux joueurs.
  • time (optionnel): Fait référence à un profil horaire dans times.xml pour les variations du flux de passagers.

Paramètres des arrêts de bus dans les itinéraires

Chaque arrêt dans un itinéraire définit le comportement des passagers :

  • uid: Fait référence à l’ID d’un arrêt dans stops.xml.
  • passengersMin/Max: Génère ce nombre de valeurs aléatoires (0-100) représentant les passagers potentiels.
  • coefOn: Seuil pour monter ou descendre. Les valeurs inférieures = passagers montant, les valeurs supérieures = passagers descendant (généralement 100 = tous montent, 0 = tous descendent).
  • nextStopTime: Temps de trajet jusqu’au prochain arrêt en minutes de jeu.
  • nextStopPrice: Tarif pour voyager jusqu’au prochain arrêt (ignoré si city="true" est défini).

Important: Le dernier arrêt de chaque itinéraire doit avoir toutes les valeurs réglées sur 0 (sauf uid) pour fonctionner correctement.

Exemple : Ligne complète avec deux itinéraires

<code><line uid="0" number="12" adultCoef="70" reducedRate="20" city="false">
    <!-- Outbound route -->
    <route uid="1" name="To Airport">
        <busstop uid="1" passengersMin="10" passengersMax="25" 
                 coefOn="100" nextStopTime="3" nextStopPrice="2"/>
        <busstop uid="2" passengersMin="5" passengersMax="15" 
                 coefOn="50" nextStopTime="5" nextStopPrice="2"/>
        <busstop uid="3" passengersMin="0" passengersMax="0" 
                 coefOn="0" nextStopTime="0" nextStopPrice="0"/>
    </route>

    <!-- Return route -->
    <route uid="2" name="To Downtown">
        <busstop uid="3" passengersMin="8" passengersMax="20" 
                 coefOn="100" nextStopTime="5" nextStopPrice="2"/>
        <busstop uid="2" passengersMin="5" passengersMax="15" 
                 coefOn="50" nextStopTime="3" nextStopPrice="2"/>
        <busstop uid="1" passengersMin="0" passengersMax="0" 
                 coefOn="0" nextStopTime="0" nextStopPrice="0"/>
    </route>
</line>
</code>

city.xml - Système de billets (optionnel)

Lorsque city="true" est défini sur une ligne, ce fichier définit les types de billets disponibles.

Structure

<code><city>
    <[[ticket uid="0" name="20min" price="5" probability="35" upsell="25"/>
    <ticket uid="1" name="60min" price="8" probability="55" upsell="8"/>
    <ticket uid="2" name="24h" price="20" probability="5" upsell="2"/>
    <ticket uid="3" name="7d" price="150" probability="1" upsell="0"/>
</city>
</code>

Paramètres des billets

  • uid: Identifiant numérique unique pour chaque type de billet.
  • name: Nom du billet affiché dans le jeu.
  • price: Prix du billet.
  • probability: Pourcentage de chance qu’un passager achète ce type de billet.
  • upsell: Pourcentage de chance que le passager passe au billet suivant.

Règles importantes

  • Listez les billets du moins cher au plus cher.
  • La somme de toutes les valeurs probability doit être inférieure à 100 %.
  • Chaque billet doit avoir un uid unique.

times.xml - Flux de passagers basé sur l’heure (optionnel, Patreon)

Cette fonctionnalité permet au nombre de passagers de varier en fonction de l’heure dans le jeu.

Structure

<code><times>
    <time uid="0">
        <hour uid="0" percentage="70"/>
        <hour uid="6" percentage="60"/>
        <hour uid="8" percentage="100"/>
        <hour uid="16" percentage="120"/>
        <hour uid="22" percentage="60"/>
    </time>
</times>
</code>

Paramètres

  • time uid: Fait référence à l’attribut time dans la définition d’un itinéraire.
  • hour uid: Heure de la journée au format 24 h (0-23).
  • percentage: Multiplicateur pour la génération de passagers (100 % = normal, 50 % = moitié, 200 % = double).

Règles

  • Nécessite au moins deux entrées horaires par profil horaire.
  • Les heures non spécifiées sont interpolées entre les heures définies les plus proches.
  • Le pourcentage est appliqué aux passagers montant et descendant, arrondi au nombre entier le plus proche.
  • Disponible uniquement pour les contributeurs Patreon.

Liaison aux itinéraires

Dans lines.xml, faites référence au profil horaire :

<code><route uid="1" name="Morning Rush" time="0">
    <!-- This route uses time uid="0" from times.xml -->
</route>
</code>

Exemple complet : petite map

Voici un exemple complet fonctionnel d’une map simple avec deux arrêts et une ligne :

stops.xml:

<code><busstops>
    <busstop>
        <id>1</id>
        <name>Town Center</name>
        <zone></zone>
        <requestStop>false</requestStop>
        <location>0.0;0.0;0.0;0.0;0.0</location>
    </busstop>

    <busstop>
        <id>2</id>
        <name>Industrial Park</name>
        <zone></zone>
        <requestStop>false</requestStop>
        <location>500.0;0.0;0.0;0.0;0.0</location>
    </busstop>
</busstops>
</code>

lines.xml:

<code><lines map_type="base">
    <line uid="0" number="1" adultCoef="80" reducedRate="15" city="false">
        <route uid="1" name="Outbound">
            <busstop uid="1" passengersMin="10" passengersMax="20" 
                     coefOn="100" nextStopTime="5" nextStopPrice="3"/>
            <busstop uid="2" passengersMin="0" passengersMax="0" 
                     coefOn="0" nextStopTime="0" nextStopPrice="0"/>
        </route>

        <route uid="2" name="Inbound">
            <busstop uid="2" passengersMin="8" passengersMax="18" 
                     coefOn="100" nextStopTime="5" nextStopPrice="3"/>
            <busstop uid="1" passengersMin="0" passengersMax="0" 
                     coefOn="0" nextStopTime="0" nextStopPrice="0"/>
        </route>
    </line>
</lines>
</code>

Astuces et bonnes pratiques

Commencez simple : Commencez avec 2-3 arrêts et une seule ligne, puis développez.

Testez progressivement : Après avoir ajouté chaque ligne, testez-la dans le jeu avant de continuer.

Équilibre du flux de passagers :

  • Utilisez coefOn="100" aux terminus de départ (tous montent)
  • Utilisez coefOn="50" aux arrêts intermédiaires (montée/descente mixte)
  • Utilisez coefOn="0" aux arrêts finaux (tous descendent)

Temps de trajet réaliste : Prenez en compte des temps de trajet réalistes entre les arrêts lors de la définition de nextStopTime.

Tarification urbaine vs. par arrêt : Utilisez les tickets urbains pour les réseaux en ville avec des correspondances fréquentes, et la tarification par arrêt pour les itinéraires plus longs.

Gestion des UID : Tenez un tableau de vos UID pour éviter les doublons à mesure que votre map s’agrandit.

Coordonnées des emplacements : Utilisez les outils du jeu ou les éditeurs de map pour déterminer les positions exactes des arrêts.

Dépannage

Tarifs incorrects : Si vous utilisez des tickets urbains, assurez-vous que city="true" est défini sur la ligne.

Variations horaires non fonctionnelles : Vérifiez que vous avez accès à Patreon et au moins deux entrées horaires.