Pizza Tycoon : questions pour une traduction française

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

    • avril 2004
    • 23

    #16
    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

    Commentaire

    • Hrvg
      Abandonwarriors


      • février 2007
      • 3263

      #17
      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....

      Commentaire

      • Hrvg
        Abandonwarriors


        • février 2007
        • 3263

        #18
        PS : Oui, il permet aussi de redessiner les lettres/signes.

        Commentaire

        • Sylvain_rocher
          Paladin


          • septembre 2024
          • 708

          #19
          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 !!!

          Commentaire

          • StraToN
            Peon

            • avril 2004
            • 23

            #20
            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

            Commentaire

            • StraToN
              Peon

              • avril 2004
              • 23

              #21
              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 :	97 
Taille :		52,5 Ko 
ID : 			895479
              ​
              Pour cette police en tout cas, je devrais pouvoir m'en sortir.
              Fichiers attachés

              Commentaire

              • Hrvg
                Abandonwarriors


                • février 2007
                • 3263

                #22
                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.

                Commentaire

                • StraToN
                  Peon

                  • avril 2004
                  • 23

                  #23
                  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.

                  Commentaire

                  • Sylvain_rocher
                    Paladin


                    • septembre 2024
                    • 708

                    #24
                    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.

                    Commentaire

                    • StraToN
                      Peon

                      • avril 2004
                      • 23

                      #25
                      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.

                      Commentaire

                      • StraToN
                        Peon

                        • avril 2004
                        • 23

                        #26
                        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).

                        Commentaire

                        • Godcedric
                          Bob le bio-couleur


                          • mai 2001
                          • 13355

                          #27
                          Bon courage!! C'est un boulot de dingue mine de rien les traductions.
                          POUR LES CHANGEMENTS DE CD DANS UN JEU EN INSTALLATION FACILE (et pour Dosbox en général), IL FAUT FAIRE LA COMBINAISON DE TOUCHES CTRL F4.

                          NOTEZ QU'A CHAQUE DÉMARRAGE D'UN JEU INSTALLATION FACILE, UNE AIDE S'AFFICHE. MERCI DE LIRE AVANT D'APPUYER DIRECTEMENT SUR UNE TOUCHE POUR JOUER. CA PREND 5 SECONDES A LIRE ET CA ÉVITE DE CHERCHER UNE DEMIE JOURNÉE POUR TROUVER LA RÉPONSE.

                          Merci.

                          Commentaire

                          Chargement...