VWF Helpertool - Programmierung & Bug Report

  • Hi Leute.


    Ich habe mich jetzt seit langer Zeit nicht mehr um die Übersetzung von Final Fantasy V gekümmert. An alle die denken das an dem Projekt nun nicht mehr weiter gearbeitet wird, kann ich versichern das ich nach wie vor den Willen habe es zu ende zu bringen. Nur bin ich derzeit an einer Stelle an der ich mit meiner Arbeit nicht mehr richtig weiter komme.


    Ein strich durch die Rechnung macht mir die "variable weight font". Um das mal kurz zu erklären: Bei einer "vwf" hat jeder Buchstabe eine individuelle Breite = ein "W" ist breiter als ein "i". Bei einigen Spielen ohne vwf hat jeder Buchstabe die selbe Pixelbreite, indem schmale Buchstaben künstlich breiter gemacht werden oder einfach die Lücken zwischen den Buchstaben größer gelassen werden. Bei Spielen mit vwf ist das anders. Hier der der Abstand zwischen den Buchstaben immer gleich und die Schrift sieht optisch geordneter aus. Final Fantasy V hat eine vwf.


    Das Problem dabei ist das ich bei der Übersetzung Teilweise zu lange Zeilen habe, manche Zeilen sind länger als die Massagebox hergibt. Das hat den Nachteil das der Text über den Rahmen der Massagebox geschrieben wird und dies zu Grafikfehler führt. Beim übersetzen des Textdumps habe ich die Zeilenumbrüche nach eigenem Ermessen gesetzt. Bei Spielen ohne wvf kann man einfach die Anzahl der Buchstaben/Zeichen pro Zeile abzählen (da jedes Zeichen die selbe Breite hat). Bei FFV geht das wegen der vwf nicht so einfach. Es besteht natürlich auch die Möglichkeit alle Zeilen Vorsichthalber kürzer zu machen. Das schaut aber später nicht schön aus wenn der Text in die nächste Zeile rutscht, rechts aber noch genug Platz ist. Wenn der Satz zu ende ist, ist das ok, aber nicht mitten im Satz einen Zeilenumbruch der den Text auseinander reist.
    Ändern kann ich das alles ohne Probleme im Textdump. Das Problem ist eher die Menge an Text die es zu kontrollieren gilt. Im Prinzip kann ich den Text nur ingame kontrollieren, in dem ich das Spiel zocke und versuche möglichst jeden Text auf zu rufen. Da schaue ich mir die Zeilenlängen (mit Lineal am Bildschirm (kein Scherz!)) an und verschiebe im Textdump die Zeilenumbrüche um die Zeilen länger oder kürzer zu machen und so den Text optimiere. Dann müsste ich eigentlich abspeichern und die überarbeitete Rom erneut testen.


    Was ich nun gebrauchen könnte währe ein Programm, was mir die Arbeit abnimmt die Zeilen auf Länge zu kontrollieren.
    Im Prinzip garnicht so kompliziert. Das Programm sollte mit Textdatein umgehen können und die Breite (in Pixel) jeder Zeile anzeigen können. Jedem Buchstaben, Zahl und Zeichen wird ein bestimmter Wert zugeordnet (die Anzahl der Pixel in der Breite) und das Programm errechnet daraus die Summe der Pixel für jede Zeile. Könnte man die Werte der Zeichen im Programm einstellen, währe das Programm universell für jedes vwf Spiel einsetzbar.


    Daher meine Frage: Wer kann so ein Programm programmieren?

  • ... Was ich nun gebrauchen könnte währe ein Programm, was mir die Arbeit abnimmt die Zeilen auf Länge zu kontrollieren.
    Im Prinzip garnicht so kompliziert. Das Programm sollte mit Textdatein umgehen können und die Breite (in Pixel) jeder Zeile anzeigen können. Jedem Buchstaben, Zahl und Zeichen wird ein bestimmter Wert zugeordnet (die Anzahl der Pixel in der Breite) und das Programm errechnet daraus die Summe der Pixel für jede Zeile. Könnte man die Werte der Zeichen im Programm einstellen, währe das Programm universell für jedes vwf Spiel einsetzbar.


    Daher meine Frage: Wer kann so ein Programm programmieren?


    Ich entsinne mich, dass mal jemand hier etwas über seine Arbeit beim Inserten schrieb, das klang, als wenn er sowas programmiert hätte ...
    Das wäre wirklich die optimalste Variante ...


    Man bräuchte nur ein Prog. welches nicht nur die Buchstaben anzeigt, die man eintippt, sondern die Pixelbreite jedes Zeichens mitzählt und Anzeigt.
    (Wäre auch super, wenn SinaP das in SnesEdit einbauen kann. - sonst schreibe ich ja jeden Text 2 x.)
    (Eingentlich wäre so'n Prog wohl wirklich kein großer Akt - Die Kunst ist ein Prog. welches dann auch inserten kann, sonst schreibt man ja wirklich jeden Text 2 x.)
    Die Pixelbreite der Zeichen bekommt man recht leicht, indem mann eine Diagonale in jedes Zeichen "reinpixelt" und das dann im Spiel vom BS abzählt.

  • Ich denke, dass so ein Programm kein Hexenwerk wäre und würde mir sowas auch mal anschauen, wenn man mir den Input dafür liefert. Sprich, Werte für Zeichenbreiten und eine Beispiel-Textdatei, mit der ich rumspielen könnte. Realisieren würde ich das ganze mit C# und .NET, einfach nur, weil ich damit am besten klar komme. Sollte auch insgesamt recht schnell umsetzbar werden, vor allem, wenn es eben nur darum geht, die Textlängen und vor allem die Überlängen farblich herauszuheben und nicht auch noch einen Inserter dazu zu schreiben. Damit habe ich nämlich keine Erfahrung, beim reinen Erstellen und Anzeigen von Informationen wären wir aber schnell am Ziel. Meld dich einfach mal, dann werd ich mich dransetzen ;)

  • So leicht ist das mit dem Zählen auch nicht ... das sind immer diese Alpträume von Anwendern die so etwas nicht selber Programmieren.


    Dazu müßte man die ganzen Buchstaben-Tiles der reihe nach auf Ihre Breite überprüfen, - wie -, muß man sich auch einfallen lassen.
    Dann einen Editor der zu jedem Buchstaben seine breite mitzählt und sie anzeigt.
    Am besten noch mit der maximalen Breite der Anzeigebox wo er erscheint.
    - Weis auch keiner wo das steht .- Vielleicht mit einem Massband auf dem Monitor ausrechnen ...


    Soviel zum leicht. Das ist eine ziemlich komplexe Angelegenheit.


    Besser ist es jemand macht euch denn vwf Hack rein und Ihr passt die länge entsprecend dem Aussehen im Spiel an. So wird es auch meistens gemacht.


  • Man bräuchte nur ein Prog. welches nicht nur die Buchstaben anzeigt, die man eintippt, sondern die Pixelbreite jedes Zeichens mitzählt und Anzeigt.
    (Wäre auch super, wenn SinaP das in SnesEdit einbauen kann. - sonst schreibe ich ja jeden Text 2 x.)
    (Eingentlich wäre so'n Prog wohl wirklich kein großer Akt - Die Kunst ist ein Prog. welches dann auch inserten kann, sonst schreibt man ja wirklich jeden Text 2 x.)
    Die Pixelbreite der Zeichen bekommt man recht leicht, indem mann eine Diagonale in jedes Zeichen "reinpixelt" und das dann im Spiel vom BS abzählt.


    Die Pixelbreite der Buchstaben kann ich auch in SNESedit bei der Grafikbearbeitung abzählen. Die breite der einzelnen Zeichen steht auch in der rom an einer Stelle. Als ich Umlaute eingefügt habe, musste ich die Pixelbreite in der rom auch anpassen.
    Ich denke ein Programm welches auch gleich inserten kann ist nicht notwendieg. Ich bearbeite alles mit SNESedit und habe damit einen Textdump erstellt, den ich mit einem normalen Texteditor bearbeite und mit SNESedit wieder inserten kann. Selbst die Bearbeitung des Textes muss nicht im Programm stattfinden. Das Programm sollte nur die Länge der einzelnen Zeilen anzeigen, die Bearbeitung findet dann nach wie vor im Texteditor statt. Eine Copy-Past Funktion währe aber trotzdem eine feine Sache.



    Hast Du das Programm TheCheat mal probiert?


    Nachtrag: Kontrollieren müsstest Du dann dennoch selbst. Also doch nicht das was Du wirklich suchst.


    Ja, TheCheat hatte ich mir auch schon mal vor einiger Zeit angesehen. Das ist eine etwas andere Herrangehensweise als die von mir beschriebene. Würde so aber auch gehen. In TheCheat muss ich die Font nachpixeln und kann auch die Massagebox wie im Game nachbauen. Der Text kann in einem Feld per copy-past eingefügt werden und das Prog zeigt mir dann an wie die Massagebox im Spiel aussehen würde. Leider sind aber die Möglichkeiten mit diesem Programm nicht ausreichend. Ich kann nicht alle gewünschten Zeichen und Umlaute einfügen. Meiner Meinung nach ist der weg auch unnötieg Kompliziert gemacht.

  • SinaP


    Eine maximale Breite die die Massagebox hergibt fest zu legen ist auch eine feine Sache, aber nicht zwingend erforderlich, solange man den Wert weiß. Es ist auch nicht schwer dies heraus zu finden. Ich kann mir einfach eine (zu) lange Zeile im Emulator ansehen und die Pixel abzählen bis wohin der Text angezeigt wird bzw ab wann er hinter dem Rahmen der Box verschwindet.
    Die Pixelbreite der einzelnen Zeichen/Buchstaben muss man dann natürlich auch abzählen. Im Grafikeditor von SNESedit zum Beispiel ist das doch kein Problem.
    Oder hab ich bei deinem Post etwas falsch verstanden?


    Bredator


    Wie oben beschrieben soll das ganze nix wildes werden. Toll währe natürlich eine grafische Oberfläche, aber nix aufwendiges. Man sollte eine Textdatei laden können oder alternative in einen Fenster per copy-past rein kopieren können. Wenn ich dir jetzt die Pixelbreite aller Buchstaben und Zeichen etc. gäbe, könntest du mir das Programm speziell für FFV schreiben. Besser währe aber ein Prog welches universell, auch für andere Games einsetzbar währe. Also währe es gut wenn man die Werte/Pixelbreite selber ein tippen könnte.


    Ein Beispieltext aus meinem Dump.
    Zur Erklärung: Ich habe absichtlich sämtliche Steuerzeichen nicht mit ins tbl aufgenommen. Das sind die Hexzahlen die hinter >H< stehen. Steuerzeichen für den Zeilenumbruch ist zum Beispiel h01, Pointer-ende ist h00. Das habe ich gemacht, da SNESedit mir so im Dump die Zeilen je Pointer untereinander schreibt und nicht alles in einem großen Textklumpen.



    [>Pointer 22<]
    Lenna: Vater!
    >H<17020F00
    [>Pointer 23<]
    Lenna: Musst du wirklich gehen?
    >H<0117020F010101
    König Tycoon: Du weißt, es
    >H<01
    geht nicht anders, Liebes.
    >H<01
    Deine Aufgabe ist es, das
    >H<01
    Schloss zu beschützen.
    >H<17040F01
    Du darfst mir unter keinen
    >H<01
    Umständen folgen, verstehst du?
    >H<17020F010101
    Lenna: Aber, Vater ...
    >H<17020F00
    [>Pointer 24<]
    König Tycoon: Etwas stimmt
    >H<01
    nicht mit dem Wind ...
    >H<17020F010101
    Ich muss zum Windschrein,
    >H<01
    um sicherzugehen, dass der
    >H<01
    Kristall unversehrt ist.
    >H<17040F00

  • Wénn Du es Zächlen willst und selbst eintippst dann kann dir das Bredator machen.


    Das ist nicht schwer.
    Erst eine Eingabe für die längen der einzelnen Buchtaben oder Einlesen aus Textdatei wie bei TBL. A=7 a=6 i=2 usw
    Wenn Du Deine Art der Dumps verenden willst dann ist es sogar ganz leicht.
    Einfach Dump einlesen, Buchtaben mit längen Zählen und (Ich würde die länge als erstes vor die Dumpzeile setzen) in Dump Speichern.
    Du hast dann 2 Dumps, einer mit längen angebe und einer ohne zum übersetzen.

  • ... Dazu müßte man die ganzen Buchstaben-Tiles der reihe nach auf Ihre Breite überprüfen ... Am besten noch mit der maximalen Breite der Anzeigebox wo er erscheint ...


    Ich dachte eher an die Variante, dass man die Pixelbreite der Buchstaben selbst herausfindet - und das dann SnesEdit ähnlich wie in der TBL angibt -
    SnesEdit Zählt dann die Zeilenbreite - in Pixeln - mit und gibt das oben an (nur für die aktuelle Zeile des Kursors) - und man muss dann selbst noch die Pixelbreite seiner Textbox wissen -
    Inserten mache ich mit SnesEdit nicht so gern - ich brauche oft mehr Platz als da ist - da überschreibe ich dann evtl. was, wwas ich gar nicht will ...

    • Official Post

    @ Mi: Ich hab heute auch von einer Übersetzung alle Sachen kontrolliert. Das Game hatte auch eine VWF und ich musste jeden Dialog testen.


    Ich hab dann mal mit manako gesprochen und er hat sowas in der Art und Weuse auch schon in der Mache., Ich denke er wird dazu auch noch was sagen.


    Gruß


    red


  • Ich dachte eher an die Variante, dass man die Pixelbreite der Buchstaben selbst herausfindet - und das dann SnesEdit ähnlich wie in der TBL angibt -
    SnesEdit Zählt dann die Zeilenbreite - in Pixeln - mit und gibt das oben an (nur für die aktuelle Zeile des Kursors) - und man muss dann selbst noch die Pixelbreite seiner Textbox wissen


    Dafür müsste SNESedit aber die einzelnen Zeilen erkennen, es müsste wissen welche Hexzahl das Steuerzeichen für den Zeilenumbruch ist. Aber ja, so in der Art hatte ich mir das gedacht, nur eben außerhalb von SNESedit. Eben als Programm welches eine reine Textdatei mit ascii Codierung umgehen kann.


    Vorsicht - der GrafikEditor (von SnesEdit) zeigt das nicht an - du kannst nur eine Diagonale reinpixeln und live im Spiel selbst auf dem BS nachzählen wie viele Pixel breit wirklich angezeigt werden.


    Natürlich haben die Buchstaben-Tiles erstmal alle die selbe Pixelbreite. Irgendwo in der rom steht aber die info (Hex-Wert) für jedes einzelne Tile welche Breite es hat, also viel viel Pixel (nach rechts gesehen) angezeigt werden sollen. Ich brauch aber nicht unbedingt eine Diagonale reinpixeln (würde natürlich das abzählen erleichtern).

  • Dafür müsste SNESedit aber die einzelnen Zeilen erkennen, es müsste wissen welche Hexzahl das Steuerzeichen für den Zeilenumbruch ist. Aber ja, so in der Art hatte ich mir das gedacht, nur eben außerhalb von SNESedit. Eben als Programm welches eine reine Textdatei mit ascii Codierung umgehen kann.


    Ich dachte In SnesEdit >>> im Dialog-Edit - angezeigt wird rechts oben die Pixelbreite der Zeile in der der Kursor steht ->
    Und ja, man muss SnesEdit ALLE verwendeten Zeichen bekanntgeben - auch die Steuerzeichen die mit Breite "0" zu rechnen sind ->
    Und es braucht eine Regel, was bei Variablen Zeichen passieren soll - also bei dem Hex-Wert, der dann gegen den Namen des Spielers ausgetauscht wird,
    und andere (z.B. gibt es in LoM einen Hex-Wert der für den AKTUELLEN 2. Mitspieler steht.).

    • Official Post

    Hmmm... sehe ich nicht ein allzu großen Aufwand(von der Position eines Laien aus)
    Nen Tool welches eine Message Box anzeigt, die vom Benutzer eine definierte Höhe und Breite hat.
    Die Buchstaben müssen mühsam(aber bei den gängigen RPGs lohnenswert) einzeln reingepixelt werden und deren Breite genau eingegeben werden.
    Das Programm liest den Text, schreibt ihn in das Textfenster und setzt bei einem def. Zeichen einfach einen Zeilenumbruch.


    Das würde erstmal enorm helfen. Egal bei welchen Spiel.

  • Jetzt eine TBL wo Du beim Einlesen der Zeile, oder Du hast sie schon eingelesen, die Zeichen mit denn längen Angaben vergleichst und zusammen zächlst.
    - Ich würde dann vor der Zeile die Länge anzeigen.


    Du mußt ja keinen Editor schreiben. Eine einfache Textanalyse für die Textlänge, je Zeile, in der Datei reicht ja

  • Hey Bredator,


    wenn das tool fertig is, magste ma den Sourcecode hochladen?
    Will mich ma n bisschen an .NET und C# ran arbeiten =)
    Da wärs ma ganz nett son etwas einfacheres Programm als sourcecode zu haben. Viel is das ja nich, was da passiert. Buchstabe auslesen, Zahl zuordnen, zur länge addieren und hinterher vergleich, ob größer als max zeilenlänge.
    Zumindest denk ich mal, is das der Weg, wie du es gemacht hast?