Pizza Tycoon : questions pour une traduction française

Réduire
X
 
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Godcedric
    a répondu
    Bon courage!! C'est un boulot de dingue mine de rien les traductions.

    Laisser un commentaire:


  • StraToN
    a répondu
    Quelques nouvelles : la traduction avance. J'essaie de garder au maximum l'humour des différents dialogues que contient le jeu. Il y en a tout de même plus que je m'imaginais. La raison est que beaucoup de ces dialogues sont facultatifs (par exemple les entretiens d'embauche qui sont assez loufoques), ce qui se comprend pour un jeu de gestion, c'est assez facile de passer à côté.

    J'ai continué d'essayer de déterminer la structure des fichiers de fonts. J'ai réussi à en décoder la moitié en comparant avec les versions AMIGA correspondantes. Cependant il y a encore un certain nombre d'octets qui restent obscurs pour le moment. On va dire que ça sera un projet à part de réussir à finir de déchiffrer ces fichiers, je ne lâcherai pas l'affaire. J'ai encore quelques options pour y arriver, dont la rétro-ingénierie pure en essayer de comprendre ce que fait le code C décompilé. Ce sera difficile sans pouvoir recompiler derrière, mais ça reste tout de même passionnant.

    Pour les caractères accentués, normalement ça devrait être bon, j'ai pu modifier les bitmaps des fichiers de police pour avoir des accents.

    En ce qui concerne les traductions présentes dans le fichier .EXE, je vais me retrouver avec un problème : beaucoup de chaînes présentes dans le fichier semblent être accédées avec un pointeur direct (auquel cas je ne peux pas faire dépasser la taille de la chaîne qui la précède, ce qui est malheureusement trop souvent nécessaire parce que... bah le français est le français : c'est plus long). Il sera donc nécessaire de déplacer les chaînes ailleurs dans l'EXE et de modifier les pointeurs. Je ne sais pas encore comment je vais faire pour ça, je verrai probablement en dernier (ça et la modification des quelques images qui pourraient contenir du texte).

    Laisser un commentaire:


  • StraToN
    a répondu
    Envoyé par Sylvain_rocher Voir le message
    Il y a peut être un moyen d’agrandir la taille des font. J’ai réussi à le faire sur Ultima Underworld, ou je retrouvais dans les fichiers font les mêmes infos que tu montre la (nb d’octets par caractère, largeur, hauteur etc…). Après faut faire attention quand on augmente la hauteur, ça modifie l’interligne, et ça peut ne plus être adapté pour les fenêtres du jeu. Perso je ne pouvais agrandir que d’un seul pixel les font sans risquer d’effets de bord

    Et il y a peut être aussi un moyen d’ajouter de nouveaux caractères. Je ne connais pas la structure fine de ton fichier : est ce qu’ils sont référencés par un ID en ASCII ? Comme il y a forcément un lien entre la touche du clavier et où aller chercher la font, il y a peut être un moyen d’ajouter des caractères supplémentaires.
    Alors pour le coup augmenter la hauteur c'est possible car je sais qu'il s'agit du tout premier octet du fichier. En tout cas je l'espère : comme ces fichiers ont été convertis des versions AMIGA de polices, qui sont composées d'un fichier "métadonnées" et d'un dossier contenant 1 ou plusieurs fichiers numérotés qui sont les "descripteurs" de la font pour la taille indiquée par le nom du fichier, et celui-ci correspond à la hauteur de la font pour ce fichier (si la police est disponible en 3 hauteurs de caractères différentes, alors ça fait autant de fichiers dans le dossier). Tout cela est bien expliqué dans ce billet de blog en 3 parties.

    Cependant, il y a eu conversion pour la version MS-DOS : je n'ai plus 2 fichiers mais un seul, et la structure de celui-ci est différente. Comme je le disais, tout ce que je sais c'est que le 1er octet correspond au nom du fichier descripteur d'AMIGA. Ensuite, grâce au petit soft magique de Hrvg et à ses captures d'écran plus haut, j'ai pu déterminer le bit de départ de la partie "bitmap" du fichier. Tout ce qui se trouve avant cette section est le header du fichier, mais je ne connais pas les données qu'il contient, ni l'ordre. Je pourrais me baser sur les fichiers de fontes AMIGA, mais ça nécessite vraiment une étude approfondie. Il doit notamment contenir l'offset de départ du bitmap, un tableau d'offsets pour déterminer à quel bit démarre chaque glyphe de la font, la largeur de celui-ci (car certaines polices du jeu ne sont pas monospace) ainsi que l'octet qui permet de l'afficher.

    J'adorerais vraiment pouvoir trouver cette structure du header, car si j'arrive à l'avoir, je peux littéralement tout faire. Pour l'instant je suis limité à la modification du bitmap existant. Peut-être que ça suffira.

    Laisser un commentaire:


  • Sylvain_rocher
    a répondu
    Envoyé par StraToN Voir le message
    Oui j'ai trouvé tous les paramètres pour modifier les fichiers FNT dans GBS.
    Les voici :
    Cliquez sur l'image pour la voir en taille réelle   Nom : 		image.png  Affichages :	0  Taille :		16,0 Ko  ID : 			895486
    Le problème de remplacer les signes par un caractère accenté c'est surtout une question de largeur. En effet, les fichiers FNT encodent la largeur de chaque glyphe quelque part, or les signes font généralement 2 ou 3 pixels de large, trop peu pour y caser une lettre accentuée. Du coup il est possible que je m'en sorte en remplaçant des lettres allemandes, très peu utilisées en français, par des caractères accentués français. Je traduirai tout ce que je peux en français puis je ferai un petit script qui fera le remplacement des caractères accentués par la lettre allemande qu'ils remplacent.

    Toutefois, certaines polices sont extrêmement simplistes et n'ont aucun caractère accentué ou spécifique à l'anglais que je pourrais remplacer. C'est le cas de CSTANDAR et de SUPERSMA. Je vais chercher où ces polices sont utilisées ; je pourrai peut-être en utiliser une autre.
    Il y a peut être un moyen d’agrandir la taille des font. J’ai réussi à le faire sur Ultima Underworld, ou je retrouvais dans les fichiers font les mêmes infos que tu montre la (nb d’octets par caractère, largeur, hauteur etc…). Après faut faire attention quand on augmente la hauteur, ça modifie l’interligne, et ça peut ne plus être adapté pour les fenêtres du jeu. Perso je ne pouvais agrandir que d’un seul pixel les font sans risquer d’effets de bord

    Et il y a peut être aussi un moyen d’ajouter de nouveaux caractères. Je ne connais pas la structure fine de ton fichier : est ce qu’ils sont référencés par un ID en ASCII ? Comme il y a forcément un lien entre la touche du clavier et où aller chercher la font, il y a peut être un moyen d’ajouter des caractères supplémentaires.
    Dernière modification par Sylvain_rocher, 27 novembre 2024, 17h58.

    Laisser un commentaire:


  • StraToN
    a répondu
    Oui j'ai trouvé tous les paramètres pour modifier les fichiers FNT dans GBS.
    Les voici :
    Cliquez sur l'image pour la voir en taille réelle   Nom : 		image.png  Affichages :	7  Taille :		16,0 Ko  ID : 			895486
    Le problème de remplacer les signes par un caractère accenté c'est surtout une question de largeur. En effet, les fichiers FNT encodent la largeur de chaque glyphe quelque part, or les signes font généralement 2 ou 3 pixels de large, trop peu pour y caser une lettre accentuée. Du coup il est possible que je m'en sorte en remplaçant des lettres allemandes, très peu utilisées en français, par des caractères accentués français. Je traduirai tout ce que je peux en français puis je ferai un petit script qui fera le remplacement des caractères accentués par la lettre allemande qu'ils remplacent.

    Toutefois, certaines polices sont extrêmement simplistes et n'ont aucun caractère accentué ou spécifique à l'allemand que je pourrais remplacer. C'est le cas de CSTANDAR et de SUPERSMA. Je vais chercher où ces polices sont utilisées ; je pourrai peut-être en utiliser une autre.

    Laisser un commentaire:


  • Hrvg
    a répondu
    Bonsoir,
    Tu as trouvé tous les fonts des fichiers x.FNT ?
    Tu peux aussi remplacer des signes par des lettres accentuées, par exemple, les [], etc. Mais, je pense que tu connais ce truc.

    Laisser un commentaire:


  • StraToN
    a répondu
    Ok le test est concluant : j'ai ajouté le caractère 'é' à la police PIZ-NUMB.FNT en faisant sauter le caractère Ä (probablement jamais utilisé en français, en tout cas pas dans ce jeu).
    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		image.png 
Affichages :	119 
Taille :		2,5 Ko 
ID : 			895480

    Le test est concluant. Le texte suivant :
    Accents àäâéèëêïîöôùüûÀÄÂÉÈËÊÏÎÖÔÙÜÛ.
    S'affiche comme suit dans le jeu :

    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		Capture d’écran du 2024-11-27 13-56-09.png 
Affichages :	98 
Taille :		52,5 Ko 
ID : 			895479
    ​
    Pour cette police en tout cas, je devrais pouvoir m'en sortir.
    Fichiers attachés

    Laisser un commentaire:


  • StraToN
    a répondu
    Je pense que je suis un peu en train de me perdre à essayer de déchiffrer la structure du fichier FNT pour pouvoir le modifier "proprement", et surtout avoir le droit de l'agrandir, car pour certaines polices j'ai assez peur de ne pas avoir suffisamment d'espace pour ajouter tous les caractères accentués qui me manquent. C'est assez passionnant de faire la rétro-ingénierie de ces choses, ça me donne aussi l'occasion d'essayer de me faire aider par l'IA (ce qui me servira dans mon travail de tous les jours, je bosse dans ce secteur mais pour de l'outillage classique) et j'adore faire des outils.

    Pour le fun voici l'extraction que je suis parvenu à obtenir (avec l'aide de l'IA qui m'a aidé à sortir un script Python).
    edit : le script en question en bas de ce message, si ça peut intéresser quelqu'un.


    Cette image affiche tous les glyphes de l'image, mais le script se base sur des largeurs de caractères que j'ai moi même mesurés. Du coup, techniquement on doit trouver toutes ces largeurs régulièrement dans le ficher, mais je n'ai pas encore pu déterminer où.



    Je vais tout de même essayer de modifier le fichier en dessinant dedans directement avec GBS comme tu l'as indiqué Hrvg, au moins pour confirmer que ça fonctionne.



    Code:
    # Import necessary libraries
    import numpy as np
    import matplotlib.pyplot as plt
    
    # File path for the uploaded file
    file_path = "/hdd2to/Lutris/pizza-tycoon/data/FONTS/PIZ-NUMB.FNT"
    
    # Read the first byte of the file
    def read_first_byte(file_path):
        with open(file_path, "rb") as file:
            first_byte = file.read(1)
        return first_byte.hex().upper()
    
    # Visualize the file data starting from a specific bit
    def visualize_from_bit(file_path, start_bit, height, max_width=None):
        start_byte = start_bit // 8
        bit_offset_in_byte = start_bit % 8
    
        # Read sufficient bytes from the file
        with open(file_path, "rb") as file:
            file.seek(start_byte)
            raw_data = file.read()
    
        # Convert the raw data into binary format
        binary_data = np.unpackbits(np.frombuffer(raw_data, dtype=np.uint8))
    
        # Adjust for the starting bit offset
        binary_data = binary_data[bit_offset_in_byte:]
    
        # Calculate the number of bits per row and reshape the binary data
        width_bits = max_width if max_width else 384
        rows = binary_data[:height * width_bits].reshape((height, width_bits))
    
        return rows
    
    # Detect and visualize glyphs based on variable widths
    def detect_and_visualize_glyphs(rows, initial_widths, height):
        start_position = 0
    
    
        all_widths = initial_widths
        positions = np.cumsum([0] + all_widths)
    
        # Plot each glyph
        fig, axes = plt.subplots(len(all_widths) // 10 + 1, 10, figsize=(15, (len(all_widths) // 10 + 1) * 2))
        axes = axes.flatten()
    
        for i, ax in enumerate(axes[:len(all_widths)]):
            start = positions[i]
            end = positions[i + 1]
            glyph = rows[:, start:end]  # Extract the glyph based on detected widths
            ax.imshow(glyph, cmap='binary', interpolation='nearest')
            ax.axis('off')
            #ax.set_title(f"{i + 1}")
    
        for ax in axes[len(all_widths):]:
            ax.axis('off')
    
        plt.tight_layout()
        plt.show()
    
        return all_widths
    
    # Visualize the data from bit 195 with a height of 8 pixels
    rows = visualize_from_bit(file_path, start_bit=195, height=8)
    
    """
    "#$%&´()*+,-./0123456789:;<=>?
    un petit symbole infini
    ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]
    un symbole qui semble représenter un cadenas, composé d'un rectangle surmonté d'un arc de cercle
    _`abcdefghijklmnopqrstuvwxyz{}~
    un symbole rectangulaire en damier
    ÄÖÜßäöü!
    """
    
    # Initial widths provided for the first glyphs
    chars1_widths = [3, 5, 4, 4, 4, 2, 3, 3, 4, 3, 2, 4, 2, 3]
    numbers_widths = [4, 3, 4, 4, 4, 4, 4, 4, 4, 4]
    chars2_widths = [2, 2, 3, 4, 3, 4, 5]
    alphaCAP_widths = [4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 4, 5, 5]
    chars3_widths = [3, 3, 3, 4, 5, 2]
    #                                    g     h  i  j  l  k  m  o  p  q  r
    alphaMin_widths = [5, 4, 4, 5, 4, 3, 4, 1, 4, 2, 4, 4, 5, 4, 4, 4, 4, 3, 4, 3, 4, 3, 5, 4, 4, 4]
    chars4_widths = [3, 3, 4, 5]
    alpha_DE = [4, 4, 4, 4, 5, 4, 4, 4]
    
    joined_widths = chars1_widths + numbers_widths +chars2_widths + alphaCAP_widths + chars3_widths + alphaMin_widths + chars4_widths + alpha_DE
    print(len(joined_widths))
    
    # Detect and visualize all glyphs
    glyph_widths = detect_and_visualize_glyphs(rows, joined_widths, height=8)
    print(f"Detected glyph widths:\n{glyph_widths}")
    Fichiers attachés

    Laisser un commentaire:


  • Sylvain_rocher
    a répondu
    Envoyé par StraToN Voir le message
    Hé, ça progresse !
    Je suis en train de récupérer les codes hexa de chaque caractère dans un tableau Excel. Cependant j'ai l'impression que toutes les polices du jeu n'ont pas tous les caractères accentués.
    Je continue à tester.
    Hrvg merci beaucoup pour le petit programme. J'ai l'impression qu'il permet également de dessiner, ce qui veut dire que je pourrais peut-être intégrer des caractères accentués dans des fichiers qui n'en ont pas.
    ​
    Super tu avances Ca y est, tu vas être pris dans une spirale tu vas plus en sortir !!!

    Laisser un commentaire:


  • Hrvg
    a répondu
    PS : Oui, il permet aussi de redessiner les lettres/signes.

    Laisser un commentaire:


  • Hrvg
    a répondu
    Envoyé par StraToN Voir le message
    Hé, ça progresse !
    Je suis en train de récupérer les codes hexa de chaque caractère dans un tableau Excel. Cependant j'ai l'impression que toutes les polices du jeu n'ont pas tous les caractères accentués.
    Je continue à tester.
    Hrvg merci beaucoup pour le petit programme. J'ai l'impression qu'il permet également de dessiner, ce qui veut dire que je pourrais peut-être intégrer des caractères accentués dans des fichiers qui n'en ont pas.
    ​
    Ce logiciel te permet d'exporter une font et de la modifier. Mais attention, elle devrait être de la même taille. En gros, voilà ce je fais : J'essaye d'avoir la font qui soit la plus propre avec GBS. J'exporte la font, mais je n'éteins pas GBS. Je modifie la font et je l'importe la font modifiée dans GBS. Je clique sur "Save changes" et je teste.
    Des fois, on peut agrandir la font dans des fichiers FNT. Mais, je pense qu'on ne peut pas dans ceux-là, car ils ne sont pas propres et on dirait qu'il y a le code des lettres dans le fichier. Là, il faut être un connaisseur en informatique. Ce qui n'est pas mon cas....

    Laisser un commentaire:


  • StraToN
    a répondu
    Hé, ça progresse !
    Je suis en train de récupérer les codes hexa de chaque caractère dans un tableau Excel. Cependant j'ai l'impression que toutes les polices du jeu n'ont pas tous les caractères accentués.
    Je continue à tester.
    Hrvg merci beaucoup pour le petit programme. J'ai l'impression qu'il permet également de dessiner, ce qui veut dire que je pourrais peut-être intégrer des caractères accentués dans des fichiers qui n'en ont pas.
    ​
    Fichiers attachés

    Laisser un commentaire:


  • Hrvg
    a répondu
    Envoyé par Sylvain_rocher Voir le message

    Tu peux aussi tenter d’essayer toutes les valeurs d’octets et voir comment réagit le jeu (j’ai fait ça sur Ultima 1, où le FONT ne correspond pas au caractère ASCII de la lettre).

    Mais de ce que montre Hrvg , on dirait bien que tu n’as que les lettres avec l’Umlaut Allemand (les trémas )
    Il y a des fonts avec toutes les lettres accentuées, mais qui doivent servir pour d'autres textes.

    Laisser un commentaire:


  • Hrvg
    a répondu
    @ StraToN,
    Je t'ai envoyé le lien en MP. Dis-moi si tu l'as reçu, merci.

    Laisser un commentaire:


  • Sylvain_rocher
    a répondu
    Envoyé par StraToN Voir le message

    Hmm, s'il y a les lettres accentuées dans le fichier alors il "suffirait" d'utiliser l'octet qui correspond. Mais si le caractère accenté dans le fichier n'est pas mappé à un octet "standard" alors je suis marron.
    Peux tu me donner un lien vers ce logiciel magique que tu as utilisé dans tes captures d'écran s'il te plaît ? Ça me semble très intéressant.
    Tu peux aussi tenter d’essayer toutes les valeurs d’octets et voir comment réagit le jeu (j’ai fait ça sur Ultima 1, où le FONT ne correspond pas au caractère ASCII de la lettre).

    Mais de ce que montre Hrvg , on dirait bien que tu n’as que les lettres avec l’Umlaut Allemand (les trémas )

    Laisser un commentaire:

Chargement...