Sprechblasen?

Das Board für Schwierigkeiten beim Adventure-Machen und zum Melden von Bugs
Post Reply
DerCorni
Adventure Enthusiast
Posts: 117
Joined: 09 Aug 2008, 17:50
Contact:

Sprechblasen?

Post: # 81468Post DerCorni
09 Sep 2014, 22:02

Hallo liebe Forenmitglieder,

eigentlich wollte ich mich nach langer Stille erst wieder melden, wenn ich mein aktuelles, kleines Projekt fertig vorlegen kann. Aber nun habe ich auf den letzten Metern doch nochmal ein kleines Problem. Es ist nicht unbedingt entscheidend für das fertige Spiel, wäre aber ganz nett zu haben.

Mehrere meiner Testspieler haben sich über die schlechte Lesbarkeit der speech-Texte vor dem cartoon-Hintergrund geäußert und ich habe nun versucht das Problem mit einer Sprechblase zu lösen.
Vermutlich ist das ohne einen enormen, unsauber gescripteten Aufwand gar nicht möglich aber ich wollte wengistens kurz mal eure Meinungen einholen, bevor ich aufgebe. Vielleicht hat ja doch jemand eine schlaue Idee.

Die Frage ist: Seht ihr einen Weg, der es ermöglicht, das Ein- und Ausblenden eines (Sprechblasen-)Objektes mit der Dauer der Sprachanzeige zu synchronisieren? Mir scheint fast als wäre das jenseits des Machbaren. Eine direkte Abfrage existiert ja wohl nicht und den Zustand des Charakters kann man soweit ich das überblicke ja auch nicht auslesen. Der einzige unmöglich-möglige Weg der mir bisher einfällt ist es, mit manuell gesetzten Bools vor jedem Speech-Befehl zu arbeiten und selbst dann müsste man noch timer setzten, die den Bool genau passend zum Ende der speech-Anzeige wieder umschalten.

Oder seht ihr das anders?

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Sprechblasen?

Post: # 81469Post japanhonk
09 Sep 2014, 22:08

Hi,

spontan fällt mir da etwas ein, was Du mal versuchen könntest :

wenn ich mich recht erinnere, wird beim Speech Befehl der Char solange auf die Speech Animation gesetzt, wie
das Soundfile dauert.

Wenn Du also in die gehen/stehen usw Animationen einen Bool "nospeech" z.B. an den Anfang setzt und in
der "Sprechen" Animation diesen umsetzt, kannst Du ihn dann per Mainscript abfragen.

Somit würde ein Bool beim Sprechen auf "true" gesetzt, solange wird dann eine Sprechblase eingeblendet per Funktion und wenn die Figur dann vom SPrechen wieder auf einen anderen Zustad zurückgesetzt wird, wird das
"Sprechblasenfenster" wieder geschlossen.

Das ließe sich sogar mit relativ wenig Aufwand einbauen.

Ob das aber so klappt, habe ich noch nie ausprobiert.

Gruss

Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

DerCorni
Adventure Enthusiast
Posts: 117
Joined: 09 Aug 2008, 17:50
Contact:

Re: Sprechblasen?

Post: # 81470Post DerCorni
09 Sep 2014, 22:15

Hey,
danke dir für die gute Idee. Das klingt genau nach dem was ich gesucht habe. Dass ein Wert für die Sprachdauer je nach länge des Textes/Soundfiles irgendwo im Hintergrund existiert und z.B. für die Animationen genutzt wird war mir bewusst aber mir ist keine Möglichkeit eingefallen den anzuzapfen.
Die Scriptzeile in den Animationsframes klingt aber super. Ich probier es gleich mal aus.

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Sprechblasen?

Post: # 81471Post japanhonk
09 Sep 2014, 22:17

Viel Glück

:banana:
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Sprechblasen?

Post: # 81472Post japanhonk
09 Sep 2014, 22:19

Hey,

ich bin doch doch doof, mensch, geht doch noch einfacher...

in die Speech Animation direkt den Befehl zum Öffnen des Fensters schreiben und in die Anderen zum Schließen.

Brauchst das Mainscript nicht dazu...
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

DerCorni
Adventure Enthusiast
Posts: 117
Joined: 09 Aug 2008, 17:50
Contact:

Re: Sprechblasen?

Post: # 81473Post DerCorni
09 Sep 2014, 23:11

:D Ja, dass hab ich dann auch gemerkt.

In der Praxis funktioniert das ganze leider nicht ganz so gut.
Erstes Problem: Die Sprach- und Lauf-Animationen fangen immer da an wo sie zuletzt aufgehört haben. Also nicht notwendigerweise beim ersten Frame. Man muss also jeden Frame einzeln mit dem Befehl versehen, was ein ziemliches Rumgespame ist und auch jegliche anderweitige verwendung der Animationsframes blockiert.

Zweites Problem: Selbst nachdem ich jeden Frame mit dem Script versehen hatte, gab es ab und zu unschöne Verzögerungen bei der Anzeige und das sieht einfach nicht gut aus.

Ich habe jetzt anhand dieses "Prototypen" aber eh gemerkt, dass das Konzept Sprechblase nicht so gut aussieht wie ich mir das vorgestellt hatte.
Es reißt einen halt doch ganz schön aus der Spielatmosphäre, wenn da immer so ein großer, weißer Kasten aufleuchtet. Und der Text ist im Kasten nicht schön ausgerichtet und der Kasten ist teilweise viel zu groß für das bisschen text, da er alle eventellen Texte abdecken muss etc...

Also danke für die Hilfe, es ist gut das mal ausprobiert zu haben. Aber dann müssen sich die faulen Leute beim Lesen halt etwas mehr konzentrieren. Das scheint mir dann das kleinere Übel zu sein.

Grüße
Cornelis

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Sprechblasen?

Post: # 81474Post japanhonk
10 Sep 2014, 06:15

Ich arbeite ja mit halbtransparenten Hintergrüden bei Textfenstern...Das geht sehr gut...

So wie hier aus meinem allerersten Projekt damals...

Image


Hmm.Dann würde ich je drei Befehle vorne, mittig und am Ende der Animationen setzen, das müsste
bei einigermaßen zügigen Bewegungen reichen...
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

DeinTroll
Experienced PaC-DK User
Posts: 561
Joined: 07 Sep 2011, 21:33
Location: In der Ortenau
Contact:

Re: Sprechblasen?

Post: # 81475Post DeinTroll
10 Sep 2014, 14:42

Offtopic: Wenn dein Spiel den gleichen Grafikstil hat, wie die Bilder auf deiner Homepage. Dann wird das verdammt gut ^^
Image

DerCorni
Adventure Enthusiast
Posts: 117
Joined: 09 Aug 2008, 17:50
Contact:

Re: Sprechblasen?

Post: # 81476Post DerCorni
10 Sep 2014, 15:22

Vielleicht würden drei Frame-Befehle tatsächlich reichen. Das ist aber schwer zu sagen, da es aus irgendwelchen anderen Gründen noch zu Verzögerungen kommt. Aber wie gesagt, ich werde jetzt einfach drauf verzichten.

Bin aber trotzdem neugierig: Wie hast du das bei dir mit den Sprachkästen gelöst? Ich meine technisch macht es doch eigentlich keinen Unterschied ob man eine Sprechblase oder einen Kasten benutzt?

@DeinTroll: Bevor die Erwartungen zu hoch schnellen: Es ist nur ein sehr kurzes Spiel und reicht vom Umfang nicht annähernd an das "NoHolidays"-Projekt heran, was ich hier vor Jahren mal angekündigt hatte. Aber grafisch dürfte es sich schon ganz gut machen. Ich werde es euch bald näher vorstellen.

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Sprechblasen?

Post: # 81477Post japanhonk
10 Sep 2014, 16:24

ich habe kaum Speech dateien zum Abspielen, daher warte ich eine bestimmte Zeit.
Meine Texte werden alle per textout Befehl ausgegeben.
Ich habe einen Kasten als Fenster gewählt, weil ich 1. das gut fand und 2. das Vorbild auch sowas hatte.
Andere Formen sind natürlich möglich.

Um das alles zu erklären, muss ich etwas ausholen, denn da steckt reichlich dahinter...

Der Ablauf ist (beim einfachen Textfenster ) so, dass ich es mittels eines CLOSE Buttons ( Im Bild oben rechts neben dem Fenster ) schliesse. Fertig !

Wenn aber mehrere Textfenster , zB. bei Dialogen, hintereinander ablaufen sollen, geschieht Folgendes :

Aufruf beim ersten, anzuzeigendem Text (z.B. im Objekt )

setstring (txt_function;dialogues) ---> Dialogues enthält die Dialoge
setnum (txt_number;100) ---------->100 ist die gewünschte Dialognummer
setobj (txt_timerobject;2) ----------> Wartezeit, die das Fenster offen bleibt
setobj (txt_window_big;1)
setobj (txt_closewinbutton;1)


Die Funktion "dialogues" enthält alle Dialoge.
Die Nummer "txt_number" gibt an, ab wo ein Dialogablauf im Skript beginnt. ( Damit sind auch Schleifen möglich)
Der String "txt_string wird mit dem Namen des Skriptes mit dem gewünschten Dialog gefüttert.

Das Objekt "txt_timerobject" ist ein leeres Objekt im Raum "Everywhere" :
Dieses Objekt dient als Timer, der nach 30 Frames im vorvorletzten Frame die Nummer "txt_number" +1 setzt
Im vorletzten Frame wird die Funktion, die im String "txt_function" steht, aufgerufen
Im letzten Frame wird das Objekt "txt_timerobject" auf gesetzt, dann geht alles von vorne los.
Ein Sonderfall ist eben der Zustand 1 : In diesen Frames steht drin :
"setnum (txt_timer;+1)"
"function ([txt_function])

Jetzt passiert Folgendes : Die Frames laufen mit der gewünschten Zeit ab ( Zust. 2-8 unterschiedlich, je nach Bedarf ) und dann wird der Texttimer um 1 erhöht und die gewünschte Dialogfunktion wird
wieder gestartet.
Dort wird wieder geschaut, welche Dialognummer angezeigt werden soll, öffnet das Fenster, schreibt ein
hidealltext() und setzt das Timerobjekt auf die gewünschte Dauer ( Also den Zustand ) usw


Im Textfenster "txt_window_big" steht in den Fames 3+4 je ein setnum (mousex)... Befehl, damit
der Mauszeiger auf den Close Button gesetzt wird,
in den ersten beiden Frames wird die bisherige Zeigerposition in Variablen gespeichert, damit nach dem Schliessen des Fensters der Zeiger wieder an seine Ursprungspoition gesetzt wird.
In Frame 5 wird das Textfenster von Zustand 1 (Befehlszustand) auf den Zustand 2 ( Dauerzustand ) gesetzt.
Der Zustand 1 läuft mit 49 Frames ab, merkt also keiner.

Wenn ich das mal nicht brauche, dann setze ich das Fenster gleich auf Zustand 2.

Der Closebutton setzt alle Variablen und Strings zurück, das Timerobjekt auf 0 und schliesst die Fenster.


Klingt umständlich, wurde aber auch entwickelt, um Dialoge, die man kennt, einfach sofort weiterklicken
zu können, wenn man sie schon kennt.
Ansonsten wird eine angemessene Zeit gewartet ( beim grossen Textfenster hat das Timerobjekt einen
"langsameren" Zustand, als beim kleinen Fenster ) , die Dialognummer wird durch den timer erhöht und
der nächste Text erscheint.
Drücke ich bei laufendem Dialog den Close Button, setze ich damit den timer sofort hoch und rufe die Dialogfunktion auf.

Da muss dann ggf das Timerobjekt neu gesetzt werden, falls der folgende Text kürzer oder länger ist.

Das hat sich bewährt bei mir...
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

Zimond
Der Engine Papa
Posts: 3420
Joined: 06 Apr 2003, 19:34
Location: Krefeld
Contact:

Re: Sprechblasen?

Post: # 81478Post Zimond
10 Sep 2014, 22:40

Das mit den Anfängen von Animationen läßt sich richten. Hab ich ehrlich gesagt nicht drauf geachtet wo der anfängt zu laufen oder sprechen. Wüßte aber nicht warum das nicht jedes mal auf Frame 1 gesetzt werden könnte.
Image

DerCorni
Adventure Enthusiast
Posts: 117
Joined: 09 Aug 2008, 17:50
Contact:

Re: Sprechblasen?

Post: # 81487Post DerCorni
13 Sep 2014, 13:27

Also meinetwegen musst du das nicht extra ändern. Auf die Sprechblasen werde ich jetzt eh verzichten und ansonsten finde ich das mit den Animationen visuel sogar eher positiv, da es so eine Art Zufallskomponente reinbringt.
Was aber in Zukunft praktisch sein könnte, wäre eine Möglichkeit auf die "Speech-Dauer" die sich ja aus dem Soundfile oder der Textlänge ergibt direkt zuzugreifen. Das wäre meiner Meinung nach der Schlüssel zu mehr Freiheit bei der Gestaltung dieses Spielelements.

@Manni: Vielen Dank für die Ausführliche Erläuterung. Ich denke das System ist für mein kleines Spiel etwas overpowered und auch die Tatsache, dass man alle Sprachausgaben selber schließen muss halte ich in meinem Fall für ungeeignet. Bei Dialogen wie in deinem Spiel finde ich es aber eine kluge Lösung. Bei mir wäre das wohl eher nervig, da es ständig kleine Speech-Elemente gibt und der Charakter alles kommentiert.

Post Reply