Autor |
Nachricht |
< Übersetzung eines Spiels |
|
Verfasst am:
Sa, 1 Feb 2014 - 13:45
|
|
|
Abenteurer
Anmeldungsdatum: 05.03.2008
Beiträge: 285
Wohnort: Wien
|
|
Wie würdet ihr eine Übersetzung eines (Inform 6) Spiels angehen?
Den kompletten Source-Code kopieren und dann übersetzen?
(Hätte den Nachteil, dass man möglicherweise das gleiche Spiel zweimal parallel warten muss!)
Oder alle Texte in einem Spiel per Sprach-Switch unterbringen?
(Scheint mir recht komplex...)
Es gibt ja eine Compileroption, um Texte aus dem Spiel zu exportieren.
Gibt's das auch in die andere Richtung? :-) |
|
|
|
|
|
Verfasst am:
Sa, 1 Feb 2014 - 13:57
|
|
|
Experte
Anmeldungsdatum: 25.03.2010
Beiträge: 660
|
|
Ich habe das per Versionsverwaltungssystem gehandhabt: Zwei Branches, zwischen denen ich per eingebauter Merge-Funktion rein die Spiellogik betreffende Änderungen pflege, während Strings und Schlüsselworte natürlich unterschiedlich sind.
Martin empfiehlt auf seiner Seite dagegen ja die Pseudo-Präcompiler-Option. |
|
|
|
|
|
Verfasst am:
So, 2 Feb 2014 - 19:53
|
|
|
Experte
Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München
|
|
Hannes hat folgendes geschrieben: | Martin empfiehlt auf seiner Seite dagegen ja die Pseudo-Präcompiler-Option. |
Ach, ich empfehle die eigentlich nicht. Die Seiten über Übersetzung sind aus dieser unseligen und schon lange verschollenen Google-Gruppe Rakonto Interaktiva entstanden. Die Teilnehmer wollten das so und das durch die vielen Sprachdefinitionen extrem unübersichtliche Jade-Beispiel war eher ein Projekt, wo jeder mal was beitragen konnte. Bei zwei Sprachen geht's aber vielleicht.
Ich hatte mir einmal ein System, das ähnlich wie gettext arbeitet, überlegt, was aber eher kompliziert geworden wäre.
Man hätte den Quelltext gescannt und daraus ein Skelett für die Spiellogik und eine Sprachdatei extrahiert. Die Sprachdatei wird übersetzt und dan in das Skelett zurückgeführt.
Man kann allerdings nicht alle Texte einfach so übersetzen, weil durch die komische I6-Print-Syntax die Texte nicht schön gekapselt sind. Außerdem sollte man alle Properties, die mit der Eingabe und mit der Ausgabe des Objektnamens zu tun haben, zusammenfassen.
Aus dem I6-Original
Code: | Object black_book "schwarz@00 Buch"
has neuter
with name 'schwarz' 'buch'
with description
"Das schwarze Buch ist in einer dir unbekannten
Schrift geschrieben."
with before [;
Take, Remove:
deadflag = 1;
print "Dich trifft der Blitz, als du das Buch
aufheben willst.";
rtrue;
]
; |
würden das Skelett
Code: | Object black_book
${BLACK_BOOK_INPUT}
${BLACK_BOOK_OUTPUT}
${BLACK_BOOK_DESCRIPTION}
with before [;
Take, Remove:
deadflag = 1;
${BLACK_BOOK_TEXT_1}
rtrue;
]
; |
und die Sprachdatei
Code: | ${BLACK_BOOK_INPUT}
! with name 'schwarz' 'buch'
${BLACK_BOOK_OUTPUT}
! "schwarz@00Buch"
! has neuter
${BLACK_BOOK_DESCRIPTION}
! with description
! "Das schwarze Buch ist in einer dir unbekannten
! Schrift geschrieben."
${BLACK_BOOK_TEXT_1}
! print "Dich trifft der Blitz, als du das Buch
! aufheben willst."; |
extrahiert. Die Sprachdatei muss man dann übersetzen:
Code: | ${BLACK_BOOK_INPUT}
! with name 'schwarz' 'buch'
with name 'black' 'book'
${BLACK_BOOK_OUTPUT}
! "schwarz@00Buch"
! has neuter
"black book"
|
Wie gesagt, ich hatte das überlegt, mehr nicht, denn durch die nicht sehr einheitliche I6-Syntax wird das sehr verwirrend. Und ein Übersetzer muss auch I6 können. Und wenn sich die Spiellogik im Original ändert, braucht man eh wieder eine Versionskontrolle.
Lange Rede, kurzer Sinn: Parallele Versionen, deren Logik dann abgeglichen wird, ist gewiss die einfachere Variante.
Mischa hat folgendes geschrieben: | Es gibt ja eine Compileroption, um Texte aus dem Spiel zu exportieren. Gibt's das auch in die andere Richtung? :-) |
Das wäre gar nicht so dumm, aber es hat dieselben Probleme wie oben beschrieben: Man muss bei Textadventures die Eingabe und die Ausgabe übersetzen und zur Ausgabe gehören halt auch Dinge wie Genus und besondere Artikel, und und und. _________________ Every silver lining has a cloud. |
|
|
|
|
|
|
Alle Zeiten sind GMT + 1 Stunde (MEZ) |
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|