Maniac Mansion Mania Forum
MMM-Werkzeugkiste => Technik => Thema gestartet von: Bòógieman am 25. Februar 2008, 20:37:26
-
so, hab meine neue episode (tollhaus-starterpack) mal von 2.72 auf 3.0 konvertiert
grundsätzlich geht ja alles, aber ein unterschied ist mir jetzt aufgefallen
bei einer aktion auf eine tür läuft folgendes skript ab
...
FadeOut(1);
Wait(40);
PlaySound(65);
Wait(40);
PlaySound(65);
Wait(40);
PlaySound(65);
SetBackgroundFrame(1);
Wait(20);
FadeIn(1);
...
dabei sind in dem raum einige objekte und 2 chars (einer davon ist der player-char)
das fadeout lauft schön bei allem ab, aber dann beim fadein sieht man nur den neuen hintergrundframe, die objekte und chars erscheinen erst, wenn fadein vorbei ist ???
in 2.72 hat das noch funktioniert, in 3.0 nicht mehr :'(
hat jemand eine ahnung warum, oder noch besser: einen workaround für dieses problem? ;)
-
Passiert das gleiche Phänomen wenn du erst den Background direkt vor dem FadOut änderst?
Mfg
LilaQ
-
hmm, gute frage :-\
das hab ich noch nicht ausprobiert
ich hab nur mal einen längeren Wait nach SetBackgroundFrame bzw. ein schnelleres FadeIn probiert, aber ohne erfolg
mit baselines der objekte bzw. BackgroundFrameDelay war auch nichts zu machen
ich hoffe halt, dass das problem an SetBackgroundFrame liegt, sonst ist nämlich der workaround den ich mir überlegt habe auch hinfällig
ich werde statt dem neuen hintergrund einfach ein riesiges objekt mit der niedrigsten baseline einblenden
ist zwar meines erachtens nach eine sehr unschöne lösung (vor allem weil es ein ziemlich großer scrollroom ist), aber wenn sie funktioniert soll es mir recht sein ;)
aber vorher probiere ich mein glück noch mit AGS3.0.1
-
Wenn ich jetzt wüsste wie genau die FadeIn / FadeOut Funktionen funktionieren, könnte man probieren je nachdem die Chars / Objecte wieder auf Visible zu setzen, Transparency auf 0 o.ä.
Der KhrisMUC weiß da doch bestimmt genaueres, oder?
Mfg
LilaQ
-
FadeIn und FadeOut sind blockierende funktionen
das aktuelle skript wird also angehalten bis FadeIn/Out durch ist
da wird wohl eine schleife im hintergrund sein, die nix anderes macht, als alle chars/objekte und den hintergrund mit Tint einzufärben
das bringt mich aber auf eine idee
zur not kann ich ja diese funktionalität selbst ausprogrammieren...
ich denke mal, das problem entsteht dadurch, dass SetBackgroundFrame den hintergrund neu zeichnet, aber die chars & objekte scheinbar nicht
das wird wohl ein anderes skript übernehmen und dieses wird durch Wait bzw. FadeIn geblockt :-\
naja, falls ich zeit finde, werde ich mich heute abend ausführlicher damit auseinandersetzen ;)
-
Ich vermute eher, dass der Bildschirminhalt ein- bzw. ausgeblendet wird, also das fertig aus Hintergrund und Charakteren/Objekten zusammengesetzte Bild.
Bei jedem Wait() läuft üblicherweise einmal pro Loop die Funktion durch, die alles neu zeichnet.
Es scheint sich hier um einen Bug zu handeln.
Mir fällt als einziges ein, den Grafikmodus auf Direct3D umzustellen. Dann kann man zwar keinen Grafikfilter benutzen, aber vielleicht hilft es insofern, als dass es eindeutig ein Bug ist, falls es mit D3D funktioniert.
-
mit direct3d läuft fadeout und fadein viel schneller ab, da kann man nicht erkennen ob alle grafiken an ihrem platz sind oder nicht ;)
nach langem herumspielen habe ich dann festgestellt, dass das FadeIn nach einem FadeOut das problem verursacht
ein FadeIn ohne FadeOut funktioniert problemlos und SetBackgroundFrame hat da überhaupt keine auswirkung
in AGS3.0.1beta3 ist das ebenfalls noch so
naja, ich werde mir dann mal eine ersatzfunktion mit Tint schreiben... ::)
EDIT: verdammt, TintScreen hat keine alphawerte, also kann man da garnicht bis ganz schwarz färben, da geht nur eine art schwarz-schleier :'(
ich glaube ich bleibe wohl doch besser bei AGS2.72 :-\
-
Hab auch mal rumgespielt:
Unter D3D funktioniert das Faden überhaupt nicht. Der Bildschirm wird einfach schwarz bzw. bunt.
Unter DD5 funktioniert zwar das Faden, allerdings nur ohne Filter; mit Filter wird vor dem FadeOut auf die linke obere Ecke "gezoomt". Außerdem erscheint Roger erst nach dem Fade, wie ja von Dir gesagt.
-
YIHA! in 3.0.1 RC2 ist der fade-in bug gefixt :D
endlich kann ich umsteigen :)
-
Ansich kein richtiges Problem, aber eine durchaus interessante Frage.
Als ich das letzte mal Episoden gespielt habe, die mit AGS 3.0 erstellt wurden,
erschien im Ordner "Eigene Dateien" ein neuer Ordner mit dem Titel "My saved games".
Gibt es bei AGS 3.0 auch eine Deaktivierfunktion, damit beim
erneuten Spielen/Testen der Ordner nicht mehr gespeichert wird?
-
Ja, gibt es. Mann muss nur in den Global Settings die Angabe bei "Save games folder name" rauslöschen.
-
Danke! :)
-
Also, ich arbeite momentan an BRv2 mit einem konvertierten Bernard-Pack und habe folgendes Problem:
Immer, wenn Britney ein neu erstelltes Objekt benutzen will, stürzt das Programm mit dieser Meldung ab:
Error: prepare_script: error-18(no such function in script) trying to run 'oObject1_AnyClick' (Room 3)
Ich konnte bereits den anscheinend verantwortlichen Teil des Scripts ausfindig machen:
if (any_click_move (160, 130, DIR_UP))
Ich hab mich dabei an Timers Tutorial gehalten.
-
Hast du die geschweiften Klammern auch hinten dran gesetzt? Ansonsten hätte ich keine Idee, warum es nicht funktioniert.
-
Dann heißt wohl die Funktion mit dem script des Objects anders, vllt weil du ihm einen anderen Namen gegeben hast.
-
Ich gehe mal davon aus, dass du AGS 3 verwendest?
-> Ist in der Event-Tabelle des Objekts (Knopf mit Blitz) beim Event "Any click on object" auch "oObject1_AnyClick" eingetragen?
-> Gibt es die Funktion "oObject1_AnyClick" (im Room script)? Das muss die Funktion sein, in der dein script für das Objekt steht. Beispiel:function oObject1_AnyClick() {
// script for object1: Any click on object
if (any_click_move (160, 130, DIR_UP))
Solche Fehler treten bei mir meistens nur auf, wenn ich alte 2.72-Starterpacks von AGS 3 konvertieren lasse.
Das Problem damit ist eben, dass irgendwie nicht alles komplett umgewandelt werden kann.
Falls du das auch so gemacht hast, empfehle ich dir, eher eines der neuen Starterpacks für AGS 3 zu nutzen. Die sind auf jeden Fall bugfrei.
Hoffe, das hilft dir weiter. :)
Leider ist eben das Tutorial nicht wirklich auf aktuellem Standard, sondern immer noch auf 2.7-Niveau. Ich arbeite aber gerade an einem Update...
-
Geht jetzt, danke. ;)