Author Topic: Pont cassé, caténaire dépassant du sol, cars passant au travers de trains  (Read 2208 times)

0 Members and 1 Guest are viewing this topic.

Offline genx

Bonjour,

  je commence par poster ici car je suis nouveau et je voudrais savoir si les question et problèmes que je vais évoquer sont déjà connus (et traités ?), avant d'aller les poster dans la section anglaise qui va bien si ce n'est pas le cas.

  La version de Simutrans utilisée est la 120.0.1, avec le PAK128.

  • Construction automatique de pont : le pont est « cassé »

      Un problème de demi-hauteurs ?


  • Caténaire sous-terrain qui sort de terre

    Le type de caténaire est ogive_midi_catenary. Voyez les morceaux bleus qui dépassent de la surface à 3 reprises (+ les 2 entrées de tunnel mais ça reste acceptable dans ce cas, AMA) :

  • Les cars et camions passent au travers des trains

    Au début, avant que je rajoute le tramway, tout allait bien, il y avait les barrières de passage à niveau. Mais quand j'ai ajouté une voie de tram sur la route (perpendiculairement à la voie ferrée), les barrières ont disparu et la circulation sur la route ne s'arrête plus au passage des trains (en général). Remarquez, ça fluidifie la circulation ;) mais ce n'est pas très réaliste ;D

    Le tram, quant à lui, se comporte de la manière attendue.



Offline gauthier

1. A été corrigé depuis un bout de temps normalement. Télécharge le pak128 2.5.3.

2. Le graphismes de la caténaire utilisée a l'inconvénient d'être trop haut, du coup, à l'affichage, il dépasse de l'image du tunnel et vient s'afficher par-dessus le tile qui se trouve derrière. Cela dit, ce problème se produit avec n'importe quelle caténaire, selon la caténaire utilisée et le tunnel utilisé. La seule façon efficace de régler ce problème serait de modifier l'algorithme d'affichage du jeu, pas si simple ... malheureusement il y a beaucoup de soucis de ce genre avec les entrées de tunnel.

3. Bien que trams et trains aient des menus séparés, il s'agit fondamentalement du même type de voies. Quand tu construis un rail de tram sur un rail de train, pour le jeu c'est comme si tu construisais un rail sur un rail déjà existant et donc il fait un croisement. En conséquence tu n'as plus de passages à niveaux, du coup les trains qui vont venir rouler sur ce croisement, qui est un croisement de rail de tram, vont respecter les contraintes de circulation propres aux trams. Alors du coup tu obtiens ce bug ... encore une fois c'est une insuffisance du code du jeu qui est loin d'être triviale à régler.

Pour 2 et 3 tu peux toujours faire un rapport de bug en section internationnale, mais vu que ceux sont des problèmes difficiles à régler et connus de longue date, je doute que ça serve à quelque chose.

J'espère que mes explications ont été claires.

Offline genx

Je reviendrai probalement sur les points 2 et 3 plus tard, mais pour l'instant, j'ai testé ceci :

1. A été corrigé depuis un bout de temps normalement. Télécharge le pak128 2.5.3.

Je n'avais pas pensé à chercher la version du pak128 que j'utilisais, en effet. C'était la 2.5.2.

Alors, j'ai installé le 2.5.3 (simutrans affiche bien qu'il charge « pak128 2.5.3 New Landscape ») et  :
  • si je charge ma partie avec le pont déjà en place, il est toujours pareil. Bon, pourquoi pas ;
  • si je charge une partie datant d'avant que le pont soit construit et j'attends qu'il se construise, il se construit toujours pareil (cassé).

Est-ce que c'est normal (la correction apportée dans le PAK n'aurait peut-être d'effet que sur une partie toute neuve ?) ou est-ce que j'ai loupé un truc ?


Quote
J'espère que mes explications ont été claires.

Claires, détaillées et... super rapides  :)

Offline gauthier

J'ai à l'instant testé les ponts routiers du pak128 qui peuvent se construire en double-hauteur (ce n'est pas le cas au-delà de 100 km/h), aucun ne présente de problème. Plus déroutant en revanche: je m'aperçois que les graphismes de ton pont ne correspondent à aucun pont présent dans le pak actuellement. Deux causes possibles: ton pont vient d'un addon, auquel cas c'est à l'auteur de mettre à jour son addon pour les double-pentes, soit tu mets à jour ton pak de façon pas propre et c'est un ancien pont qui est resté.

Pour mettre à jour un pak, il faut bien supprimer complètement l'ancien et mettre le nouveau, pas fusionner les dossiers ou truc du genre.

Quote
Claires, détaillées et... super rapides  :)
A ton service ;)

Offline genx

J'ai à l'instant testé les ponts routiers du pak128 qui peuvent se construire en double-hauteur (ce n'est pas le cas au-delà de 100 km/h), aucun ne présente de problème. Plus déroutant en revanche: je m'aperçois que les graphismes de ton pont ne correspondent à aucun pont présent dans le pak actuellement. Deux causes possibles: ton pont vient d'un addon, auquel cas c'est à l'auteur de mettre à jour son addon pour les double-pentes, soit tu mets à jour ton pak de façon pas propre et c'est un ancien pont qui est resté.

Bien vu ! En effet si je regarde ces ponts, c'est du FrenchRoad2 qui s'est construit. FrenchRoad2 qui vient d'un addon qui doit être roadbridgesfrench.pak, qui vient de... chez vous  :D , je veux dire du site SNFOS, auteur mEGa (liens: http://simutrans.fr/doku.php?id=en:infrastructures(tout en bas) et http://simutrans.fr/doku.php?id=en:page_doc_ponts_route_mega).

Sinon, à force de mettre du tramway un peu partout, je suis tombé sur un autre petit bug graphique, je ne sais pas si tu le connais :

4. Tramway passant au travers du parapet d'une voie surélevée


À gauche, j'ai ajouté un bout de route, du coup l'accès à la voie surélevée se fait normalement.
À droite, j'ai tiré la voie de tramway directement dans l'herbe, ça m'a laissé faire (et les rames de tram passent comme si de rien n'était) mais ça n'a pas enlevé le parapet.
(Si j'essaye de rajouter un bout de route sur cette pente d'accès, le parapet disparait et la dernière tile de voie surélevée se transforme en tile d'angle.)

La voie surélevée est du Road_040_Elevated, la voie du Tram_Track_070_A (j'imagine qu'ils sont standards).



Offline gauthier

Mega n'est plus actif depuis un moment, à moins que Gwalch ait les sources de cet addon, il ne risque pas d'être mis à jour. Par contre tu fais bien de signaler le souci parce que du coup cet addon va aller droit à la page d'archives.

4. Encore un bug difficile à résoudre ... le parapet fait partie du graphisme de la route qui, autant le dire clairement, n'est pas prévu pour ce genre de situation. Au sol, on part du principe que rien de sayant de dépasse du sol et ne fait obstacle à une éventuelle voie de tram. Le raisonnement ne fonctionne pas du tout dès qu'on a un parapet, et tu auras le même type de souci si tu fais une voie de tram sur une route à 200 km/h avec ses glissières de sécurité hypertrophiées.

La solution propre serait, après avoir fait les modifications nécessaires dans le code du jeu, de séparer les graphismes de la route et du parapet (en soi c'est déjà fait si le parapet est sur une front-image, c'est à dire un graphisme affiché par-dessus les véhicules, mais ça ne fonctionne pas si ton rail part de l'autre côté), beaucoup de boulot en somme.

Je peux te conseiller une correction rapide: construis un petit bout de route sur la pente, sous le rail de tram, de façon à transformer ton cul de sac de route surélevée en virage, ouvert (sans parapet) là où se trouve ton rail de tram.

Offline genx

Mega n'est plus actif depuis un moment, à moins que Gwalch ait les sources de cet addon, il ne risque pas d'être mis à jour. Par contre tu fais bien de signaler le souci parce que du coup cet addon va aller droit à la page d'archives.

OK, du coup j'ai supprimé ce pak de mon répertoire addon.

Quote
4.
Je peux te conseiller une correction rapide: construis un petit bout de route sur la pente, sous le rail de tram, de façon à transformer ton cul de sac de route surélevée en virage, ouvert (sans parapet) là où se trouve ton rail de tram.

Oui, c'est ce que je disais dans ma parenthèse  :) (ou que j'essayais de dire avec peut-être le mauvais vocabulaire) et aussi ce que j'avais fait pour la rampe de gauche.

Quote
2. Le graphismes de la caténaire utilisée a l'inconvénient d'être trop haut, du coup, à l'affichage, il dépasse de l'image du tunnel et vient s'afficher par-dessus le tile qui se trouve derrière. Cela dit, ce problème se produit avec n'importe quelle caténaire, selon la caténaire utilisée et le tunnel utilisé. La seule façon efficace de régler ce problème serait de modifier l'algorithme d'affichage du jeu, pas si simple ... malheureusement il y a beaucoup de soucis de ce genre avec les entrées de tunnel.

Oui, j'imagine.

Je suppose que vous avez examiné toutes ces possibilités :
  • en redessinant la tuile de derrière (côté tunnel) après avoir dessiné celle de la bouche du tunnel (mais du coup il faut ensuite redessiner les tuiles devant celle qu'on vient de redessiner, et ainsi de suite...);
  • en ne dessinant pas les caténaires si elles sont sur une case de bouche (bof, et risque d'apporter plus de problèmes que ça en résout) ;
  • en coupant ce qui dépasse du graphisme de la caténaire et en n'affichant que ce qui ne dépasse pas du masque de tuile de la bouche ;
  • en imposant que le graphisme des caténaires ne fasse pas plus qu'une hauteur pleine, donc en refaisant les dessins des caténaires trop hautes (mais peut-être que les trains donneraient l'impression de passer au travers, ou que les proportions ne feraient pas réaliste ou beau) ;
  • en créant une version de caténaire différente pour les tunnels (de plus c'est aussi comme ça IRL, si je ne dis pas de bêtise) qui respecte la contrainte de hauteur, ce qui semble à la fois le plus simple, le plus sûr et le plus réaliste ;

Un truc qui m'échappe : je comprends le mécanisme qui fait qu'on voit les arches supérieures de la caténaire dépasser du sol ; par contre, je ne comprends pas pourquoi on peut aussi voir des bouts de montants. Si je reprend mon image, on peut en voir une occurence : je parle du bout bleu vertical qu'on voit sur la voie ferrée supérieure. Pourquoi diable la caténaire est-elle dessinée après la tuile du sol (herbe+voie ferrée)...


Offline gwalch

Bonjour genx

Pas accès à internet pendant quelques jours, mais je vois que Gauthier a déjà répondu à tes questions. Pour compléter ce qui a été dit :

- je n'ai pas les sources du pont de mEGa, pont effectivement dessiné avant l'introduction des "doubles hauteurs"... mEGa passe occasionnellement sur le forum, peut-être pourra t il faire qqch. En attendant, je suggère que ces ponts passent sur la page d'archives du site, n'étant plus compatibles avec les paks actuels.

- les caténaires sont effectivement gérés de manière un peu bizarres dans le jeu. Avec les tunnels, c'est flagrant, mais tu peux obtenir les mêmes bugs avec de simples ponts. Le problème d'affichage a déjà été évoqué plusieurs fois en section internationale (entre autre par gauthier pour ses stations), mais d'une part il n'y a pas de consensus clair sur les "priorités d'affichages" et d'autre part ça a l'air un peu compliqué à coder proprement.
Un autre bug d'affichage avec les caténaires concerne les signaux : dans certains directions, les caténaires masquent totalement les signaux, je pense par exemple à l'electrification moderne pour rails à 180 km/h... Mais pour corriger cela il faut soit redessiner les signaux, soit modifier en décalant toute la caténaire (et bibi n'en n'a pas envie !)
Pour être précis (c'est moi qui ai dessiné cette caténaire) : le fichier image des caténaires, pour une arche comme celà, se compose de deux parties : une partie "backimage" masquée lors du passage du train, et une partie "frontimage" qui reste visible au passage du train. Les erreurs graphiques avec uniquement des portions de caténaires viennent de là. Dans le cas précis que u montres, ça semble être un bug concernant la case de sortie du tunnel.
French Elements Creator :
-By Rail with trains and trams : X3800 Picasso and BB36000 Astride - trams from Nantes, St Etienne, Strasbourg, Montpellier, Lyon, Bordeaux, Le Mans, Reims...
-By Road with Trucks : Main painter for the "french trucks company", with trucks from 50ies (Willeme "Squale Nose") to 2000 (Renault AE500 "Magnum) and a lot of trailers... and with Trolley and Buses : Irisbus Cristalis, Man Lion's City, Irisbus Magelys...
- Industry : Collaborator for french food with Wine and Cheese...

Offline gauthier

Concernant le bout de montant qu'on voit carrément derrière, je pense que c'est un des nombreux bugs d'affichage qui se produisent, notamment quand on utilise les pentes artificielles.

En tous cas, pour les solutions que tu proposes, Genx, je ne sais pas du tout si la personne qui a codé l'actuel algo d'affichage (Dwachs) y a pensé ou non. En ce qui nous concerne, dans la communauté française, aucun d'entre nous n'a (encore) touché au code de Simutrans donc on ne peut pas être plus précis. Mais je pense que la plupart des solutions que tu proposes ont été envisagées et n'ont pas dû être retenues pour diverses raisons. Certes l'algo d'affichage actuel est loin d'être parfait, et, en tant que jeune développeur logiciel, je suis sûr que si on y mettait le temps on pourrait faire quelque chose de beaucoup plus abouti. Mais tout le problème est là: le temps !

Offline genx

Gwalsh : merci pour l'explication sur l'affichage des caténaires !

Gauthier : c'est pour ça que la dernière «proposition» que j'ai faite me paraît assez simple :
  • côté graphisme : pour un premier jet, il suffit de prendre les dessins des caténaires existantes et de n'en garder que la caténaire proprement dite (c.-à-d. juste enlever les poteaux/montant/supports), pas besoin de créer de zéro toute une gamme de dessins.
  • côté programmation : vu qu'il doit déjà y avoir un bit/flag/tag qui dit si un élément peut être placé en surface ou en souterrain (par exemple, les voies de surface vs les tunnels, les gares qui ne peuvent pas être placées sous terre, etc.), il suffirait d'appliquer le même fonctionnement aux caténaires. Donc il n'y aurait pas de grand chamboulement à effectuer et il n'y aurait pas non plus à aller se perdre dans les complications d'une refonte de tout l'algorithme d'affichage.

NB : ne vous inquiétez pas, j'ai bien conscience qu'avec mes «il suffit» je joue le rôle du pénible qui débarque au milieu d'un truc existant depuis très longtemps dont il ignore à peu près tout et qui dit "yaka ceci, yaka cela"  ;D

Offline gauthier

Ce que tu proposes est plein de bon sens, et on ne te reprochera pas de le proposer, rassure-toi. Le problème est le problème que rencontrent souvent les communautés comme la notre: personne n'a le temps de faire ce qu'il voudrait. D'un autre côté, j'avais déjà abordé ce genre de discussions précisément avec le membre responsable de l'algo d'affichage, mais il m'a semblé qu'il était peu enclin aux critiques, parfois jusqu'à faire passer des bugs d'affichage pour un comportement totalement normal, et ce même si j'avais proposé des solutions concrètes et relativement simples. Tant que personne n'aura le temps et la motivation de reprendre cette partie du code, ça ne risque pas d'évoluer. Le mot d'ordre avant tout ici c'est bien "do it yourself" :p

Offline genx

Après, c'est toujours le même problème dans ces cas-là : j'ai bien jeté un œil au programme, mais survoler quelques bouts vite fait n'est pas suffisant, il faut se plonger assez profondément dedans pour comprendre, et ce n'est pas le même investissement ; je crains de pas être motivé suffisamment en quantité et en durée pour faire cet effort, effort qui serait 10 fois supérieur à celui de quelqu'un qui connaît déjà le bouzin, pour un résultat même pas forcément aussi bon.
En plus, moi et le C++, on n'est pas super potes. Bon, là, c'est écrit en style C sans le ++, ça passe mieux ; mais il reste quand même que quand une fonction/méthode est appelée, on se sait jamais au premier coup d'œil laquelle des 18 versions éparpillées dans le programme est appelée, et ça ne facilite pas la découverte du truc. Par contre j'ai bien rigolé : je croyais être très fort dans le mélange de nommage français/anglais, mais là j'ai trouvé mes maîtres ; il y a de ces mélanges allemand/anglais de l'Espace...  ;D
Enfin, je ne suis pas à l'abri d'un raz de marée d'énergie et de motivation qui me tomberaient dessus, mais je n'y crois pas trop.  :)

Offline gauthier

Le code original était intégralement écrit en allemand, il a été partiellement traduit mais pas complètement visiblement.
Quote
on se sait jamais au premier coup d'œil laquelle des 18 versions éparpillées dans le programme est appelée
Je voulais m'y investir quand j'auras été débarrassé de mes études et que j'aurais eu plus de temps, mais tu me décourages d'avance là. La qualité d'un code se juge, à mon avis, sur trois critères:
_ la facilité à le lire et à le comprendre
_ un découpage clair des différentes parties du code, surtout quand on code avec un langage orienté objet. Si on ne sait pas, à un endroit, quelle méthode est appelée, ça me parait grave ...
_ l'optimisation, mais de ce côté-là il me semble que c'est plus que correct par rapport aux autres jeux qu'on peut trouver aujourd'hui.