Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Ergebnis 1 bis 13 von 13
  1. Homepage besuchen Beiträge anzeigen #1 Zitieren
    Exodus Avatar von Sektenspinner
    Registriert seit
    Jul 2004
    Ort
    Karlsruhe
    Beiträge
    7.827
     
    Sektenspinner ist offline

    [Tool] Beliebig langsam lesen ohne Sprachausgabe (B.lang.loS)

    Sumpfkrautjunkies Redefix beherrscht die Aufgabe die dieses Tool behandelt mindestens genauso gut und ist besser benutzbar. Ich empfehle daher Redefix anstelle von B.lang.los zu nutzen.

    Bei einer Mod ohne Sprachausgabe kommt man mit dem Untertitel lesen manchmal kaum hinterher. Daher habe ich mir ein Programm geschrieben, das mir hilft Dateien ohne Sprachausgabe mit stillen Wave-Dateien einer geeigneten Länge zu verknüpfen. Dies veranlasst Gothic die Untertitel solange anzuzeigen wie die stille Wave-Datei eben dauert.

    Auf Anfrage hab ich mich nun hingesetzt und das Programm für dritte benutzbar gemacht und mit einer kurzen Dokumentation versehen.

    Code:
    //#############################################################//
    //   ___       _                           _           ___     //
    //  (  _`\    (_ )                        (_ )        (  _`\   //
    //  | (_) )    | |    _ _  ___     __      | |    _   | (_(_)  //
    //  |  _ <'    | |  /'_` )' _ `\ /'_ `\    | |  /'_`\ `\__ \   //
    //  | (_) ) _  | | ( (_| | ( ) |( (_) | _  | | ( (_) )( )_) |  //
    //  (____/'(_)(___)`\__,_)_) (_)`\__  |(_)(___)`\___/'`\____)  //
    //                              ( )_) |                        //
    //                               \___/'                        //
    //#############################################################//
    
    //--------------------------------------
    // B.lang.loS? Was ist das?
    //--------------------------------------
    
    B.lang.loS ist ein Werkzeug, das Gothic Untertiteldateien bearbeitet.
    Denjenigen Dialogeinheiten (im Folgenden Output Units, OU), für die
    keine Sprachausgabe existiert, werden stille Wavedateien einer geeigneten
    Länge zuordnet, die sich an der Anzahl der Zeichen in der OU orientiert.
    
    //--------------------------------------
    // Warum braucht man das?
    //--------------------------------------
    
    Normalerweise bleibt ein Untertitel solange angezeigt, wie die
    zugehörige Sprachausgabe dauert. Das ist sinnvoll.
    Allerdings gibt es Mods, die keine Sprachausgabe mitliefern,
    in diesem Fall wird die Anzeigedauer anderweitig bestimmt.
    Leider hat Gothic ein schlecht eingestelltes Verfahren um diese
    Zeitdauer zu bestimmen. Oftmals verschwinden Untertitel bevor der
    Spieler sie zu Ende lesen konnte. Von den Scripten aus kann man da
    nicht viel machen. Was man aber machen kann, ist Gothic eine
    Sprachausgabe vorzutäuschen indem auch unvertonte Output Units
    mit Wave-Dateien verknüpft werden. Wenn diese Wave-Dateien
    still sind, bekommt der Spieler davon nicht mit.
    
    Hier setzt B.lang.loS an:
    B.lang.loS durchsucht die Untertitelbibliothek von Gothic ("*.CSL")
    und assoziert Dateien, für die keine Sprachausgabe existiert
    abhängig vom Länge der Textzeile mit wave Dateien eines bestimmten Musters.
    
    //--------------------------------------
    // Genaue Funktionsweise:
    //--------------------------------------
    
    Zunächst sucht B.lang.loS nach wave Dateien in einem vorgegebenen
    Verzeichnis (siehe config.ini -> SpeechFilePath). Diese Information wird
    genutzt um zwischen OUs mit Sprachausgabe und solche ohne Sprachausgabe
    zu unterscheiden.
    
    Anschließend durchsucht B.lang.loS die angegebene Untertitelbibliothek
    (siehe config.ini -> CSLPath). Für jede OU, für die keine Sprachausgabe
    existiert und die außerdem nicht "SVM_" im Namen trägt, wird eine neue
    wave-Datei eingetragen und zwar:
    
    [silenceDiaPrefix]_[X].wav
    
    wobei [silenceDiaPrefix] in der config.ini frei gewählt werden kann
    und [X] die für diese Datei berechnete Anzeigedauer in Sekunden ist.
    Dieses X berechnet sich auf folgende Art:
    
    X = L / [charsPerSecond]
    
    wobei L die Länge dieses Untertitels in Zeichen ist und [charsPerSecond]
    die in der config.ini einstellbare Anzahl von Zeichen, die ein Spieler
    in einer Sekunde vermutlich lesen kann. X wird stets aufgerundet.
    
    Dabei wird X niemals über den Wert [maximumLength] steigen. Dieser Parameter
    ist ebenfalls in der config.ini Datei konfigurierbar. [maximumLength] ist
    also eine obere Schranke, falls die oben genannte Formel etwas größeres
    als [maximumLength] liefert wird X trotzdem nur auf [maximumLength] gesetzt.
    
    Die veränderte CSL Datei wird im selben Ordner wird die Quelldatei abgelegt.
    
    //--------------------------------------
    // Benutzung von B.lang.loS:
    //--------------------------------------
    
    Die *.CSL Datei kann mit dem Spacer oder zum Beispiel mit Sumpfkrautjunkies
    Programm "Redefix" erstellt werden. An ihr kommt man bei der Untertitel-
    erstellung kaum vorbei, wenn man nicht gerade mit dem Gothic Sourcer arbeitet.
    
    Ist diese Datei einmal vorhandenn, muss vor dem Ausführen von B.lang.loS
    noch die config.ini im selben Ordner angepasst werden.
    Ist dies geschehen, kann das Programm gestartet werden.
    
    Die erstellte .CSL Datei kann anschließend von Gothic verarbeitet werden
    (vorher sollte man sie geeignet umbenennen).
    Dabei entsteht die .BIN Datei, die ins Modarchiv gehört.
    
    Fragen kann ich gerne im Releasethread beantworten. Ich hoffe das Tool
    hilft dir weiter und ist nicht allzu schwer zu verstehen.
    
    Viele Grüße
    Sekti
    Kurzes Beispiel für Leute, die mal eine CSL Datei aufgemacht haben: Vorher:
    Code:
    	[% zCCSBlock 0 8701]
    		blockName=string:DIA_VEL_ANDRE_ALBRECHT_17
    		numOfBlocks=int:1
    		subBlock0=float:0
    		[% zCCSAtomicBlock 0 8702]
    			[% oCMsgConversation:oCNpcMessage:zCEventMessage 0 8703]
    				subType=enum:0
    				text=string:Das verstehe ich nicht! Was kann denn noch unmittelbarer sein, als eine Bedrohung durch die Orks?
    				name=string:DIA_VEL_ANDRE_ALBRECHT_17.WAV
    			[]
    		[]
    	[]
    Nachher:
    Code:
    	[% zCCSBlock 0 8701]
    		blockName=string:DIA_VEL_ANDRE_ALBRECHT_17
    		numOfBlocks=int:1
    		subBlock0=float:0
    		[% zCCSAtomicBlock 0 8702]
    			[% oCMsgConversation:oCNpcMessage:zCEventMessage 0 8703]
    				subType=enum:0
    				text=string:Das verstehe ich nicht! Was kann denn noch unmittelbarer sein, als eine Bedrohung durch die Orks?
    				name=string:DIA_SILENCE_7.WAV
    			[]
    		[]
    	[]
    Das Programm ist relativ gut konfigurierbar (das heißt man kann in gewissen grenzen beeinflussen wie sich im obigen Beispiel die Zahl 7, das heißt die 7 Sekunden Stille für diese Datei berechnen).

    Ich hoffe ich kann damit zumindest mal Lonewulf helfen, wenns noch mehr gibt, umso besser.

    Downloadlink: B.lang.loS.zip
    Für Spieler:
    Velaya # Velaya in English # Exodus Demo # Irrwichtel
    Tools für Modder:
    DiaDepp # DOPA-PARTER # zSlang
    Scripte für Modder:
    Ikarus Skriptpaket # Floats # Broadcasts
    Geändert von Sektenspinner (04.12.2010 um 14:14 Uhr) Grund: Downloadlink sollte man auch noch anfügen...

  2. Homepage besuchen Beiträge anzeigen #2 Zitieren
    Team K Avatar von Klabautermann
    Registriert seit
    Aug 2004
    Beiträge
    4.154
     
    Klabautermann ist offline
    Hö?
    Ist das dafür da, damit die Textboxen nicht zu schnell verschwinden, wenn es keine Sprachausgabe gibt?

    Bei mir ist das immer so, wenn es keine Sprache gibt bleibt die Dialogbox so lange stehen bis ich sie wegklicke...
    Oder halluziniere ich? (Dabei hab ich das schon öfters bewusst erlebt und fand es immer sehr intelligent gelöst)

  3. Beiträge anzeigen #3 Zitieren
    Deus Avatar von Oparilames
    Registriert seit
    May 2004
    Ort
    ex contrariis
    Beiträge
    11.052
     
    Oparilames ist offline
    Dazu ist es.
    Allerdings scheinst du immer recht schnell zu klicken, bzw. du liest so schnell, dass du dann halt weiter klickst, ohne weiter zu warten.
    Bei langen Untertitelzeilen kann das aber mal nicht klappen (man ist zu langsam mit dem Lesen) und dann sind die Untertitel nunmal weg, bevor man zuende gelesen hat, da das Spiel eben nicht ewig auf einen Mausklick wartet.
    Oparilames nachdem er seinen Gesellenbrief erhalten hat:
    »Das war's mit dir, du Mistvieh!«

  4. Homepage besuchen Beiträge anzeigen #4 Zitieren
    Drachentöter Avatar von Marthog
    Registriert seit
    Apr 2009
    Beiträge
    4.986
     
    Marthog ist offline
    Es gibt in Constants.d die Konstante VIEW_TIME_PER_CHAR, in der die Zeit eingetragen wird, die Dialogfenster offen bleben, wenn keine Sprachausgabe existiert.
    Das Tool hilft halt, die Anzeigezeit einzeln anzupassen.
    Für Modder: Gothic NPC-Viewer

  5. Beiträge anzeigen #5 Zitieren
    Deus Avatar von Oparilames
    Registriert seit
    May 2004
    Ort
    ex contrariis
    Beiträge
    11.052
     
    Oparilames ist offline
    Besagte Konstanze scheint jedoch nicht benutzt zu werden, zumindest hat Lonewulf das hier erzählt, woraufhin der Bedarf für so ein Tool das vermutlich erste Mal öffentlich ausgesprochen worden ist.
    Das Programm passt halt die .wav-Dateibezeichnunen an (die AI_Output-Aufrufe für den Text bleiben dabei ja gleich) und schreibt glaube ich auch die benötigten Sound-Datein, die x-Sekunden lang "Nichts" abspielen und somit die Anzeigedauer überrumpeln.
    Oparilames nachdem er seinen Gesellenbrief erhalten hat:
    »Das war's mit dir, du Mistvieh!«

  6. Homepage besuchen Beiträge anzeigen #6 Zitieren
    Exodus Avatar von Sektenspinner
    Registriert seit
    Jul 2004
    Ort
    Karlsruhe
    Beiträge
    7.827
     
    Sektenspinner ist offline
    Zitat Zitat von kushel_baer Beitrag anzeigen
    Hö?
    Ist das dafür da, damit die Textboxen nicht zu schnell verschwinden, wenn es keine Sprachausgabe gibt?
    Genau!

    Bei mir ist das immer so, wenn es keine Sprache gibt bleibt die Dialogbox so lange stehen bis ich sie wegklicke...
    Oder halluziniere ich? (Dabei hab ich das schon öfters bewusst erlebt und fand es immer sehr intelligent gelöst)
    Zitat Zitat von Marthog Beitrag anzeigen
    Es gibt in Constants.d die Konstante VIEW_TIME_PER_CHAR, in der die Zeit eingetragen wird, die Dialogfenster offen bleben, wenn keine Sprachausgabe existiert.
    Das Tool hilft halt, die Anzeigezeit einzeln anzupassen.
    Wie Opa sagt: Die Konstante wird vom Spiel nicht benutzt.

    Die Anzeigezeit wird auf blöde Art berechnet:
    Zunächst mal wird viel zu viel Zeit veranschlagt für eine Menge Text. ABER: Es gibt ein Maximum von 8 Sekunden, sobald das erreicht ist, wird der Untertitel trotzdem nur 8 Sekunden angezeigt.
    Wenn man also dazu neigt kurze Untertitel zu machen, werden die Wartezeiten tendenziell zu lang sein, wenn man sehr lange Untertitel macht, werden sie eher zu kurz sein.

    Zitat Zitat von Oparilames Beitrag anzeigen
    Besagte Konstanze scheint jedoch nicht benutzt zu werden, zumindest hat Lonewulf das hier erzählt, woraufhin der Bedarf für so ein Tool das vermutlich erste Mal öffentlich ausgesprochen worden ist.
    Das Programm passt halt die .wav-Dateibezeichnunen an (die AI_Output-Aufrufe für den Text bleiben dabei ja gleich) und schreibt glaube ich auch die benötigten Sound-Datein, die x-Sekunden lang "Nichts" abspielen und somit die Anzeigedauer überrumpeln.
    Die Sounddateien werden von dem Tool nicht erzeugt, aber es liegt ein passender Satz Dateien bei für Länge von 1 bis 30 Sekunden.

    Ich konnte das Tool zum Beispiel für die Englische Velaya Version gebrauchen. Nicht jeder, der Velaya auf Englisch spielt ist ein Muttersprachler, außerdem hat Velaya tendenziell lange Untertitel. Entsprechend gabs Stress beim mitlesen, den ich so für die Spieler abgemildert habe.
    Auch zum Testen kann das nützlich sein, wenn man auf Rechtschreibfehler lesen möchte. Dazu kann man sich die Zeit einfach so hochstellen, dass es immer ausreicht (und wenn man fertig ist den Untertitel wegklicken).
    Für Spieler:
    Velaya # Velaya in English # Exodus Demo # Irrwichtel
    Tools für Modder:
    DiaDepp # DOPA-PARTER # zSlang
    Scripte für Modder:
    Ikarus Skriptpaket # Floats # Broadcasts

  7. Beiträge anzeigen #7 Zitieren
    Legende der Amazonen Avatar von Bisasam
    Registriert seit
    Dec 2006
    Ort
    Meine Faust in Sinis Gesicht
    Beiträge
    9.648
     
    Bisasam ist offline
    B.lang.loS... jungs, ihr habt die geilsten einfälle was programmnamen angeht, echt! ADOUSADS, Stampfer, B.lang.loS, Dia-DEPP... oh maaaaaaan, wie geil! Das ringt mir immer einen lachanfall ab!

    So und nun zum ernsten *crm crm*

    ich finde das Tool praktisch, weil mir echt immer die "Zeilen davonlaufen". So hat man endlich mal genug Zeit zum lesen.


    "Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
    -Korallenkette

  8. Beiträge anzeigen #8 Zitieren
    General Avatar von Rantragon
    Registriert seit
    May 2008
    Beiträge
    3.907
     
    Rantragon ist offline
    Zitat Zitat von Assasine91 Beitrag anzeigen
    B.lang.loS... jungs, ihr habt die geilsten einfälle was programmnamen angeht, echt! ADOUSADS, Stampfer, B.lang.loS, Dia-DEPP... oh maaaaaaan, wie geil! Das ringt mir immer einen lachanfall ab!

    So und nun zum ernsten *crm crm*

    ich finde das Tool praktisch, weil mir echt immer die "Zeilen davonlaufen". So hat man endlich mal genug Zeit zum lesen.
    Na, sooo lustig ist es nun auch mal wieder nicht.

    @topic: Ich finde die Idee grundsätzlich nicht schlecht, aber man wird es halt nicht oft nutzen können.

    In welcher Sprache ist es eigentlich geschrieben?

  9. Homepage besuchen Beiträge anzeigen #9 Zitieren
    Exodus Avatar von Sektenspinner
    Registriert seit
    Jul 2004
    Ort
    Karlsruhe
    Beiträge
    7.827
     
    Sektenspinner ist offline
    Zitat Zitat von Rantragon Beitrag anzeigen
    Na, sooo lustig ist es nun auch mal wieder nicht.

    @topic: Ich finde die Idee grundsätzlich nicht schlecht, aber man wird es halt nicht oft nutzen können.

    In welcher Sprache ist es eigentlich geschrieben?
    Ist in Delphi geschrieben. Wenn Interesse am Quellcode besteht, kann ich den auch noch hochladen.

    Dass es wenige Leute brauchen werden ist klar. Ich habe es wie gesagt für mich geschrieben, und jetzt nur veröffentlicht, weil sich abzeichnet, dass es evtl. auch bei Returning Verwendung dafür geben könnte.

    Eine andere Sache wo es nützlich wäre (ohne die Entwickler gefragt zu haben): Nox Corvi! Für die Latein-Texte wärs sicher auch gut, wenn sie nicht gleich wieder verschwinden.
    Für Spieler:
    Velaya # Velaya in English # Exodus Demo # Irrwichtel
    Tools für Modder:
    DiaDepp # DOPA-PARTER # zSlang
    Scripte für Modder:
    Ikarus Skriptpaket # Floats # Broadcasts

  10. Beiträge anzeigen #10 Zitieren
    Drachentöter Avatar von Lonewulf
    Registriert seit
    Jan 2008
    Beiträge
    4.852
     
    Lonewulf ist offline
    Hi Sektenspinner

    Wow, das ging ja schneller als erwartet, erst mal ein ganz großes Dankeschön von mir.

    Hab´s gerade mal kurz angetestet und die Voreinstellung scheint schon ganz passrecht zu sein.

    Das der Parameter "baseLength" nach deiner Aussage in der config.ini "nicht sonderlich praktisch" ist glaube ich eher nicht, denn nach dem erste Eindruck waren gerade die sehr kurzen Dialoge jetzt sehr fix, wogegen ich bei den richtig langen Dialogen am Ende manchmal noch ein klein wenig Zeit hatte.
    Folgt nach einem langen Dialog ein sehr Kurzer, und man lässt nach dem durchlesen des Langen den Blick kurz verträumt in der Landschaft schweifen muss man aufpassen das der darauf folgende Kurze nicht schon wieder weg ist bevor man die Augen drauf justiert hat.
    Daher scheint der Parameter "baseLength" sich ganz gut als allgemeiner Reaktionszeit-Aufschlag zu eignen.

    Folgendes Bild zeigt die Dialogverteilung mit der Standardeinstellung (nur die Dialoge zu denen aus DNDR kein Dialogfile existiert)
    [Bild: attachment.php?attachmentid=28108&d=1266662449&thumb=1]
    Im Bereich 14 bis 19 Sekunden befinden sich zwar nur zwei Dutzend Dialoge, aber da wären die meisten mit der von Gothic vorgegebenen Maximalzeit kaum bis zur Hälfte vorgedrungen.

  11. Beiträge anzeigen #11 Zitieren
    General Avatar von Rantragon
    Registriert seit
    May 2008
    Beiträge
    3.907
     
    Rantragon ist offline
    Zitat Zitat von Sektenspinner Beitrag anzeigen
    Ist in Delphi geschrieben. Wenn Interesse am Quellcode besteht, kann ich den auch noch hochladen.

    Dass es wenige Leute brauchen werden ist klar. Ich habe es wie gesagt für mich geschrieben, und jetzt nur veröffentlicht, weil sich abzeichnet, dass es evtl. auch bei Returning Verwendung dafür geben könnte.

    Eine andere Sache wo es nützlich wäre (ohne die Entwickler gefragt zu haben): Nox Corvi! Für die Latein-Texte wärs sicher auch gut, wenn sie nicht gleich wieder verschwinden.
    Achso, Delphi. Da entrinnt mir leider nur ein "schade", da ich selbst mich "nur" mit C# und C++ befasse.
    Naja, hätte mir den Quellcode gern mal angeschaut.
    Trotzdem schönes Tool.!

  12. Homepage besuchen Beiträge anzeigen #12 Zitieren
    Exodus Avatar von Sektenspinner
    Registriert seit
    Jul 2004
    Ort
    Karlsruhe
    Beiträge
    7.827
     
    Sektenspinner ist offline
    Zitat Zitat von Rantragon
    Naja, hätte mir den Quellcode gern mal angeschaut.
    Kannst du gerne tun.

    Ist nicht weiter kompliziert (das Programm ist kleiner als Readme und Config ). Ich habe den Quelltext mal angehängt. Beide enthaltenen Dateien sind Textdateien. RecSearch.pas enthält eine Hilfsroutine, die ich benötige, um alle Dateien in einem Verzeichnis zu finden.
    Project1.dpr ist das (nicht sinnvoll benannte) Hauptprogramm.
    Angehängte Dateien
    Für Spieler:
    Velaya # Velaya in English # Exodus Demo # Irrwichtel
    Tools für Modder:
    DiaDepp # DOPA-PARTER # zSlang
    Scripte für Modder:
    Ikarus Skriptpaket # Floats # Broadcasts

  13. Beiträge anzeigen #13 Zitieren
    General Avatar von Rantragon
    Registriert seit
    May 2008
    Beiträge
    3.907
     
    Rantragon ist offline
    Zitat Zitat von Sektenspinner Beitrag anzeigen
    Kannst du gerne tun.

    Ist nicht weiter kompliziert (das Programm ist kleiner als Readme und Config ). Ich habe den Quelltext mal angehängt. Beide enthaltenen Dateien sind Textdateien. RecSearch.pas enthält eine Hilfsroutine, die ich benötige, um alle Dateien in einem Verzeichnis zu finden.
    Project1.dpr ist das (nicht sinnvoll benannte) Hauptprogramm.
    Auch wenn ich mich mit Pascal und Delphi nie wirklich auseinandergesetzt habe, kann ich es mir ja mal anschauen. ^^

    Danke!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide