L’art des routes dans les jeux
(sandboxspirit.com)- Dans les jeux de construction de villes, une implémentation réaliste du système routier est un élément central, qui dépasse le simple aspect visuel pour déterminer la solidité structurelle de l’ensemble
- Les jeux existants utilisent des splines de Bézier pour représenter les routes, mais cette approche montre ses limites lorsqu’il s’agit de préserver la courbure et le parallélisme réels des routes
- Dans le monde réel, les routes doivent refléter la distance entre les essieux des véhicules et les contraintes liées aux courbes, alors qu’avec Bézier, la forme se déforme lors des offsets et produit des courbes irréalistes
- Pour résoudre ce problème, l’application de courbes d’ingénierie comme les arcs de cercle (Circle Arc) et les clothoïdes (Clothoid) permet d’obtenir des variations de courbure fluides et des offsets parallèles préservés
- L’auteur a ainsi construit son propre système routier pour dépasser ces limites et prévoit de dévoiler plus tard son processus d’implémentation technique
Le charme des routes et des motifs
- L’auteur retrouve dans les routes la satisfaction procurée par les motifs désordonnés au sein d’un ordre naturel
- Il compare cela aux fourmilières, aux ruches ou aux nervures des feuilles, où des règles simples s’accumulent pour former des structures complexes
- Les réseaux routiers sont eux aussi décrits comme l’un des motifs les plus fascinants créés par l’être humain
- En imaginant les traces laissées par les réseaux routiers même après la disparition des villes, il met en avant leur beauté structurelle
Les jeux de construction de villes et l’évolution des routes
- De SimCity 2000 à Cities: Skylines 2, les systèmes routiers n’ont cessé d’évoluer
- SimCity 4 a introduit les altitudes et routes diagonales, SimCity 2013 les routes courbes, et Cities: Skylines la pose libre et la composition d’intersections
- Pourtant, des problèmes persistent, comme le caractère artificiel des courbes, les rayons de braquage trop brusques ou les bretelles d’autoroute peu réalistes
- Les mods ont permis de mettre en place des voies, des marquages et des courbes plus réalistes, sans pour autant dépasser les limitations fondamentales du moteur
Les limites des splines de Bézier
- Les courbes de Bézier sont un outil mathématique puissant pour relier deux points de manière fluide, et elles sont utilisées dans la plupart des moteurs de jeu
- Mais ces courbes ne conservent ni leur forme ni leur courbure lorsqu’on leur applique un offset ; autrement dit, « l’offset d’une courbe de Bézier n’est pas une courbe de Bézier »
- Cela entraîne des écarts entre courbe intérieure et extérieure, des auto-intersections et des phénomènes de pincement (pinch)
- En conséquence, il est difficile d’implémenter des courbes parallèles reflétant la trajectoire réelle des véhicules, comme sur les routes du monde réel
Application des arcs de cercle (Circle Arc) et des clothoïdes (Clothoid)
- Les arcs de cercle offrent un parallélisme parfait, en conservant exactement la même forme après offset
- Le calcul des intersections entre deux arcs est bien plus simple qu’avec Bézier et reste efficace avec une complexité en O(1)
- En reliant des arcs de rayons différents, on peut construire des formes de routes techniquement cohérentes
- En revanche, les arcs ont une courbure constante, ce qui provoque une variation brutale de l’accélération latérale lors du passage d’une ligne droite à une courbe
- Pour compenser cela, on utilise les clothoïdes (Clothoid)
- Leur courbure augmente progressivement, ce qui procure une direction plus naturelle et un meilleur confort de conduite
- Elles sont mathématiquement plus complexes, mais indispensables à la conception des routes rapides
- Pour des zones lentes comme les intersections urbaines, une conception basée sur les arcs de cercle suffit à obtenir un réalisme convaincant
Pourquoi créer soi-même un système routier
- La plupart des joueurs accordent peu d’importance à la précision de la courbure des intersections, mais le développeur s’y intéresse par curiosité et défi technique
- Le niveau d’implémentation des jeux commerciaux existants est élevé, mais les ressources ou assets accessibles aux développeurs indés restent rares
- Au lieu de simples routes en grille, il a choisi de développer son propre système pour créer un ensemble plus sophistiqué et partageable
- Dans un prochain article, il dévoilera les détails techniques de l’implémentation, et il est possible de recevoir les mises à jour en s’abonnant
1 commentaires
Commentaires Hacker News
En lisant l’article qui disait que les routes sont au cœur des city-builders, je crois comprendre pourquoi les urbanistes en font des cauchemars.
La base d’une ville, ce n’est pas la route (road) pour les voitures, mais la rue (street) partagée par les piétons, les vélos et les transports en commun.
Pour approfondir, l’article sur le concept de Stroad vaut le détour.
La route est centrée sur le transport (transportation), tandis que la rue est centrée sur l’interaction publique (public interaction).
Cela dit, je trouve que la citation d’origine est critiquée de façon excessive. La société moderne a d’énormes besoins de transport, donc le réseau routier intérieur et extérieur à la ville constitue bien son ossature.
Avant les années 1900, on ne pouvait construire des villes qu’à proximité des voies navigables, alors qu’aujourd’hui les routes permettent aussi de le faire à l’intérieur des terres.
Si on veut créer une ville réaliste, je pense que cette approche est meilleure que de simples fausses routes.
J’imagine parfois à quoi ressemblerait une ville conçue par une civilisation qui n’utiliserait que le vélo et la marche.
Il y a un jeu que l’auteur devrait aimer : Junxions, un jeu sandbox centré sur la création de carrefours routiers.
Le subreddit associé est ici. Ce jeu devrait bien satisfaire cette envie de concevoir des routes.
J’aime aussi Junxions, mais mon approche est différente. Eux utilisent une structure de Bézier basée sur des nœuds, tandis que moi je génère automatiquement les intersections à partir des collisions entre segments de route.
Je compte détailler les différences entre les deux approches dans un prochain billet de blog.
On dit que seulement 1 % des gens se soucient du rayon des angles aux intersections, eh bien je fais précisément partie de ce 1 %.
Définir des routes avec des courbes de Bézier n’a rien de simple.
En particulier dans les virages serrés, on obtient vite des résultats visuellement peu convaincants.
J’ai eu le même problème l’an dernier sur le projet Azoth, et j’ai fini par trouver une solution simplifiée.
Références : dépôt Azoth, exemple Bézier
Des éléments qui paraissent évidents dans un jeu sont en réalité le produit d’un immense travail et de beaucoup de conception.
Par exemple, les routes, les joueurs ne les regardent pas de près, mais dès qu’elles paraissent étranges, ça saute aux yeux.
Je l’ai ressenti récemment en jouant à Kingdom Come 2 — tout paraît naturel, comme dans le monde réel, mais chaque détail a été fabriqué avec la sueur et les larmes des développeurs.
Du coup, on comprend pourquoi l’industrie du jeu souffre autant du crunch.
Articles liés : The Door Problem, article IGN
C’est pour ce genre de billet que je continue à lire Hacker News. J’aimerais dire à l’auteur de continuer à écrire.
Il semble y avoir beaucoup de gens avec des centres d’intérêt similaires, donc je pense continuer à publier.
Cet article est totalement mon style. J’ai exactement la même obsession pour les routes.
Les villes sont structurées par les routes comme des vaisseaux sanguins, et les chemins de villages en Europe et en Asie sont des histoires construites sur des traces de pas.
À l’inverse, les routes rurales de ma région natale partent tout droit puis bifurquent brusquement dès qu’un fermier refuse de vendre son terrain.
Seules certaines zones de la période coloniale ou certaines villes planifiées sont en grille ; la plupart changent de direction selon le cours des rivières ou le relief.
Ces points d’intersection entre différentes grilles sont les parties les plus belles et les plus intéressantes architecturalement d’une ville.
J’adorerais voir un jeu qui simule les transformations de la croissance urbaine.
Les vraies villes ont évolué comme une fourmilière, avec une complexité inscrite dans un ordre naturel.
J’aimerais écrire un billet séparé sur ce sujet plus tard.
Dans mon prochain jeu Canalpunk, je compte continuer à utiliser des splines de Bézier.
Un système de catastrophe lié au moment où un tracé s’auto-intersecte me semblerait intéressant.
Je suis en pleine obsession pour implémenter des clothoïdes (curve transition) dans un éditeur de voies ferrées.
C’est facile dans le vide, mais beaucoup plus difficile quand il faut raccorder les voies.
J’ai une ancienne ressource explicative ici : Euler Spiral Explanation
J’aimerais expérimenter pour voir si on pourrait interpoler une nouvelle spline à partir de ce point d’intersection.
Schéma de référence : exemple visuel
Il suffit de faire comme les Romains avec des routes droites, c’est simple :-)
Bien sûr, les Romains ne se préoccupaient guère de la propriété privée. Là où j’habite, dans le Lincolnshire au Royaume-Uni, on utilise encore des routes romaines.
Ils n’ont vraiment fait une exception qu’au moment de prolonger la piste de la RAF Scampton, où la route a été déviée.
Voir aussi : Roman aqueduct
Aujourd’hui encore, l’axe central des routes s’aligne parfaitement avec la direction des clochers. Cette conception du territoire centrée sur l’église ressemble à celle de Rome.