- Durch den Befehl "loadgame()" werden alle Objekte und Charakter, Bools und Variablen auf den Wert gesetzt, der im angegebenen Slot gespeichert ist. Ich befürchte dass das mit einmal ausgegebenen Textzeilen nicht so funktioniert, also dass sie durch "loadgame()" nicht mitgeladen werden.
- Ein "textout()"-Befehl in einer Textscene unmittelbar nach einem "loadgame()"-Befehl funktioniert nicht. Gebe ich, nachdem das Spiel geladen ist, den Befehl in die Konsole ein, so wird der Text wohl angezeigt. Ich kann mir das so vorstellen, dass das Spiel nach dem Laden nicht "wait" auf folgende Befehle wartet, dass also das Laden zu spät eintritt.
Allgemeine Fragen (Questions)
Fragen bezüglich Speicherständen:
Doch, wird mit gespeichert und nach dem laden sofort angezeigt, gerade noch mal getestet.Ich befürchte dass das mit einmal ausgegebenen Textzeilen nicht so funktioniert, also dass sie durch "loadgame()" nicht mitgeladen werden.
Zum zweiten : versteh ich noch nich so ganz, lädts du innerhlab einer textscene ein spiel? oder davor? Erklär am besten mal ne kleine SchrittfürSchritt Anleitung wie ich das nachstellen kann.
Danke dass du das gleich getestet hast. Seltsam, dann kann ich mir nicht erklären wieso die vor dem Abspeichern ausgegebene Textzeile später nicht mehr geladen wird. Im Grunde ist das ganze Problem ja ein Punkt: Es handelt sich nämlich in meinem Fall um eine Textzeile im Überallraum (gebunden mit "bindtext()"), auf den Screens ist das die Score-Anzeige. Das ist übrigens die einzige Textzeile im Überallraum.
Also, der Reihe nach: Beim Starten eines neues Spiels wird die Textzeile ausgegeben und gibt ab dann die Punktanzahl an (Variablen). Das Spiel wird nun abgespeichert und beendet. Nach erneutem Spielstart wird über das Startmenü (eine Textscene) der Speicherstand geladen. Ergebnis: Man gelangt zur abgespeicherten Szene, im Überallraum sind alle Objekte zurückgesetzt (korrekt), doch die zuvor ausgegebene Textzeile wird nicht angezeigt. Erst durch manuellen Aufruf durch die Konsole ist die Score-Anzeige zu sehen.
...nun habe ich eben, weil ich dachte, Text würde nicht mitgespeichert, im Lademenü nach den "loadgame()"-Befehl noch selbst den Textout-Befehl gesetzt - geändert hat das nichts.
Übrigens: Kann es sein, dass einige im Editor vorgenommene Änderungen am Projekt nicht in Spielständen integriert sind, sodass man ein neues Spiel starten muss, damit z.B. geänderte Startzoomwerte im Charakterfenster übernommen werden?
Also, der Reihe nach: Beim Starten eines neues Spiels wird die Textzeile ausgegeben und gibt ab dann die Punktanzahl an (Variablen). Das Spiel wird nun abgespeichert und beendet. Nach erneutem Spielstart wird über das Startmenü (eine Textscene) der Speicherstand geladen. Ergebnis: Man gelangt zur abgespeicherten Szene, im Überallraum sind alle Objekte zurückgesetzt (korrekt), doch die zuvor ausgegebene Textzeile wird nicht angezeigt. Erst durch manuellen Aufruf durch die Konsole ist die Score-Anzeige zu sehen.
...nun habe ich eben, weil ich dachte, Text würde nicht mitgespeichert, im Lademenü nach den "loadgame()"-Befehl noch selbst den Textout-Befehl gesetzt - geändert hat das nichts.
Übrigens: Kann es sein, dass einige im Editor vorgenommene Änderungen am Projekt nicht in Spielständen integriert sind, sodass man ein neues Spiel starten muss, damit z.B. geänderte Startzoomwerte im Charakterfenster übernommen werden?
Werde ich zu der Todo Liste setzen, hat bestimmt irgendwas mit der bindtext funktion zu tun, glaub nicht das es an der textscene liegt. Aber das könntest du noch kurz abtesten, einfach aus der konsole raus manuell mit loadgame den spielstand laden ohne die textscene dabei, damit wir wissen das es daran nicht liegt.
Es ist daher beim entwicklen (und ich kann dir bei alühn und später alühn2 auch ein Lied von Singen) unvermeidlich immer mal wieder komplett von vorne zu spielen, wenn in einem Save zu viele Diskrepanzen drin sind.
Das ist richtig, trifft auf Charzoomwerte wie auch auf die walkmap zu (begehbar, blockiert).. das ist auch so nicht zu verhindern. Beide Sachen sind nun mal Werte die während eines Spiels verändert werden können daher müssen sie mit abgespeichert werden. Selbst wenn ich jetzt einbauen würde das der gespeicherte Wert mit dem Startwert verglichen wird, woher soll man wissen ob dieser Unterschied im Savegame an einer bestimmten Stelle nicht gewollt ist?Übrigens: Kann es sein, dass einige im Editor vorgenommene Änderungen am Projekt nicht in Spielständen integriert sind, sodass man ein neues Spiel starten muss, damit z.B. geänderte Startzoomwerte im Charakterfenster übernommen werden?
Es ist daher beim entwicklen (und ich kann dir bei alühn und später alühn2 auch ein Lied von Singen) unvermeidlich immer mal wieder komplett von vorne zu spielen, wenn in einem Save zu viele Diskrepanzen drin sind.
Habe ich soeben getan. Das verblüffende Ergebnis ist:Zimond wrote:Aber das könntest du noch kurz abtesten, einfach aus der konsole raus manuell mit loadgame den spielstand laden ohne die textscene dabei, damit wir wissen das es daran nicht liegt.
- Start des Spiels, Textzeile an Überall-Raum gebunden, Laden des Speicherstands über eigenes Menü (Textscene): Textzeile wird nicht angezeigt.
- Start des Spiels, Textzeile nicht an Überall-Raum gebunden, Laden des Speicherstands über eigenes Menü (Textscene): Textzeile wird nicht angezeigt.
- Start des Spiels, Textzeile an Überall-Raum gebunden, Laden des Speicherstands über Konsole: Textzeile wird angezeigt.
- Start des Spiels, Textzeile nicht an Überall-Raum gebunden, Laden des Speicherstands über Konsole: Textzeile wird angezeigt.
aber: - Start des Spiels, Laden des Speicherstands über eigenes Menü (Textscene), dann Neuladen des Speicherstands über Konsole: Text wird immer noch nicht angezeigt.
Kann ich daraus schließen dass das Problem am Textscene-Menü liegt? Das Skript des Lademenüs lautet wie folgt:
Code: Select all
level(1)
{
row(1;OK;true)
{
stopmusic()
playsound(splat12)
stopeffect (all)
hidealltext()
if_num(slot;1)
{
loadgame(1)
timer(10)
textout(49)
break()
endscene()
}
if_num(slot;2)
{
loadgame(2)
timer(10)
textout(49)
break()
endscene()
}
(...)
}
row(2;Abbrechen;true)
{
(...)
}
}
Im Ernst?Zimond wrote:Es ist daher beim entwicklen (und ich kann dir bei alühn und später alühn2 auch ein Lied von Singen) unvermeidlich immer mal wieder komplett von vorne zu spielen, wenn in einem Save zu viele Diskrepanzen drin sind.
Dann muss ich mir früher oder später wohl ein Büroäffchen zulegen, das das für mich erledigt
Vielen Dank für die Arbeit, die du dir wieder einmal machst, Zimond.
Ich ahbe jetzt mal ausprobiert was du mir vorgeschlagen hast. Bisher hatte ich ja in der betreffenden Textscene-Row die Befehlsabfolge "loadgame(#)" --> "endscene()". Nun habe ich vor das "loadgame(#)" noch einen "timer(0,5)" gesetzt. Resultat: Die Textscene wird nicht beendet, der Speicherstand wird nicht geladen. Das Spiel springt wieder zum Textscene-Level.
Ich möchte anmerken, dass es hier und dort in meinem Projekt mehrere Bugs gibt, die ich mir nicht erklären kann (bspw. Objektverschiebungen im Spiel) - ich denke, ich mache die geplante Version mit dem Umfang erst einmal so fertig und kümmere mich, wenn sonst alles steht, also zum Schluss, um die Fehlerchen, sofern sie nicht vorher den Spielablauf grundlegend stören.
Zimond wrote:Doch, wird mit gespeichert und nach dem laden sofort angezeigt, gerade noch mal getestet.Ich befürchte dass das mit einmal ausgegebenen Textzeilen nicht so funktioniert, also dass sie durch "loadgame()" nicht mitgeladen werden.
Daraus folgt, dass ich in keinem Fall im Textscene-Lademenü nach den "loadgame()"-Befehl noch extra einen "textout()"-Befehl setzen muss. Stimmt's?...nun habe ich eben, weil ich dachte, Text würde nicht mitgespeichert, im Lademenü nach den "loadgame()"-Befehl noch selbst den Textout-Befehl gesetzt - geändert hat das nichts.
Ich ahbe jetzt mal ausprobiert was du mir vorgeschlagen hast. Bisher hatte ich ja in der betreffenden Textscene-Row die Befehlsabfolge "loadgame(#)" --> "endscene()". Nun habe ich vor das "loadgame(#)" noch einen "timer(0,5)" gesetzt. Resultat: Die Textscene wird nicht beendet, der Speicherstand wird nicht geladen. Das Spiel springt wieder zum Textscene-Level.
Ich möchte anmerken, dass es hier und dort in meinem Projekt mehrere Bugs gibt, die ich mir nicht erklären kann (bspw. Objektverschiebungen im Spiel) - ich denke, ich mache die geplante Version mit dem Umfang erst einmal so fertig und kümmere mich, wenn sonst alles steht, also zum Schluss, um die Fehlerchen, sofern sie nicht vorher den Spielablauf grundlegend stören.
Gilt das auch für die Tiefenmap? Das wäre überaus ärgerlich, da die Einstellung gerade der Tiefenmap häufig nachgebessert werden muss.Zimond wrote:Das ist richtig, trifft auf Charzoomwerte wie auch auf die walkmap zu (begehbar, blockiert).. das ist auch so nicht zu verhindern.Übrigens: Kann es sein, dass einige im Editor vorgenommene Änderungen am Projekt nicht in Spielständen integriert sind, sodass man ein neues Spiel starten muss, damit z.B. geänderte Startzoomwerte im Charakterfenster übernommen werden?
könntest du mir nen Gefallen tun und noch mal versuchen eine kleines test projekt zu erstellen das den Fehler nachstellt? Ich hab mal probiert irgendwas ähnliches zu erhalten aber das muss irgendeinen anderen Grund haben...
Eine Idee hätt ich vielleicht noch : In dem Raum der geladen ist wo die Textscene ausgeführt wird.. gibt es dort ein on(exit) skript? Ich hab nämlich folgendes beim testen gesehen. In Alühn2 lass ich den Screen mit dem SFX Fog nebelig werden wenn ich das Hauptmenü aufrufe. Da auch die SpecialFX im Savegame landen ist nun auch diese Effekteinstellung darin.
Erst aber als ich mittels einer Textscene den Save geladen hab war diese Einstellung auch auf einmal da, sonst wenn man per Menü lädt ist sie das nicht.. der Grund ist (auch wenn ich jetzt so klinge als hätt ichs nich selber gecoded, kommt öfter vor das die Engine was macht was ich gar nicht wusste) das wohl nach dem Laden das on(exit) des Hauptmenu Raums noch ausgeführt wird indem steht das der Fog effekt ausgeschaltet wird.
Wenn du also im on(exit) ein texthide drin hast (weil im Intro der Text nicht da sein soll) könnte das der Grund sein. Wenn ja hätte ich gerne 3 tanzende Bananen.
Eine Idee hätt ich vielleicht noch : In dem Raum der geladen ist wo die Textscene ausgeführt wird.. gibt es dort ein on(exit) skript? Ich hab nämlich folgendes beim testen gesehen. In Alühn2 lass ich den Screen mit dem SFX Fog nebelig werden wenn ich das Hauptmenü aufrufe. Da auch die SpecialFX im Savegame landen ist nun auch diese Effekteinstellung darin.
Erst aber als ich mittels einer Textscene den Save geladen hab war diese Einstellung auch auf einmal da, sonst wenn man per Menü lädt ist sie das nicht.. der Grund ist (auch wenn ich jetzt so klinge als hätt ichs nich selber gecoded, kommt öfter vor das die Engine was macht was ich gar nicht wusste) das wohl nach dem Laden das on(exit) des Hauptmenu Raums noch ausgeführt wird indem steht das der Fog effekt ausgeschaltet wird.
Wenn du also im on(exit) ein texthide drin hast (weil im Intro der Text nicht da sein soll) könnte das der Grund sein. Wenn ja hätte ich gerne 3 tanzende Bananen.
Das Raumskript in dem die Textscene läuft ist leer.
Natürlich würde ich dir (und damit mir selbst) einen Gefallen tun und aus meinem Projekt eine Demo schneiden, indem ich alles unnötige rauswerfe,
allerdings ist der Fehler, der beim Laden die Textzeile nicht anzeigt, ja doch recht komplex, deshalb schlage ich vor, dass ich mir diesen Fehler merke, aber erst einmal die erste Version des Spiels soweit fertig erstelle, wenn das okay ist. Dann können wir uns immer noch an die Beta ransetzen und Fehler ausmerzen. Ich denke, ich komme schneller voran, wenn ich mich noch während der Erstellung nur um Fehler kümmere, die den Spielablauf stören oder leicht zu beseitigen sind, und erst wenn ich durch bin, mich um den Feinschliff kümmere.
Wenn du aber bereits fest Fehlerquellen am Suchen bist, dann gib Bescheid damit ich dir einen Projektausschnitt zukommen lassen kann.
Natürlich würde ich dir (und damit mir selbst) einen Gefallen tun und aus meinem Projekt eine Demo schneiden, indem ich alles unnötige rauswerfe,
allerdings ist der Fehler, der beim Laden die Textzeile nicht anzeigt, ja doch recht komplex, deshalb schlage ich vor, dass ich mir diesen Fehler merke, aber erst einmal die erste Version des Spiels soweit fertig erstelle, wenn das okay ist. Dann können wir uns immer noch an die Beta ransetzen und Fehler ausmerzen. Ich denke, ich komme schneller voran, wenn ich mich noch während der Erstellung nur um Fehler kümmere, die den Spielablauf stören oder leicht zu beseitigen sind, und erst wenn ich durch bin, mich um den Feinschliff kümmere.
Wenn du aber bereits fest Fehlerquellen am Suchen bist, dann gib Bescheid damit ich dir einen Projektausschnitt zukommen lassen kann.
Die Raumposition wird natürlich mitgespeichert und erstmal behalten. Wird ein Raum mit einem Char im normalen Spielbetrieb betreten setzt sich der Blickwinkel sofort auf den Char drauf ohne zu scrollen. Wenn du allerdings innerhalb einer Cutscene (welcher Form auch immer) den Raum lädst und kurz darauf die Cutscene verläßt, kann es zu so einem Schwenken kommen.
Wenn du eben mit so einer Cutscene einen Raum wechselst (weil du vielleicht noch ein paar Animationen zum Rausgehen einbauen willst) brauchst du nur noch in diese Cutscene einen setpos Befehl einbauen um das Schwenken zu verhindern.
Wenn du eben mit so einer Cutscene einen Raum wechselst (weil du vielleicht noch ein paar Animationen zum Rausgehen einbauen willst) brauchst du nur noch in diese Cutscene einen setpos Befehl einbauen um das Schwenken zu verhindern.
Für dasselbe Minispiel habe ich zu Beginn eine Variable mit dem Wert z.B. 3. Dieser wird immer wieder durch 2 geteilt mit "setnum(name;/2)". Was ich aber erhalte, sind der Reihe nach die Werte 2, 1 und 0. Was mache ich falsch?
Ich meine zwar, schon einmal gelesen zu haben, dass Kommawerte bei Variablen nur intern gültig sind, aber das mit den Kommastellen hat aber auch schon mal funktioniert.
Ich meine zwar, schon einmal gelesen zu haben, dass Kommawerte bei Variablen nur intern gültig sind, aber das mit den Kommastellen hat aber auch schon mal funktioniert.
Im Minigame wird Gegenständen ausgewichen. Das Intervall der nahenden Fässer nimmt ständig ab. In der Function hängt die Länge des Intervalls ab von "wait([minigame-time])". Pro Function-Durchlauf wird diese Variable halbiert, sodass der Schwierigkeitsgrad des Minigames steigt. Momentan wird der Wert halbiert, ich hatte aber auch schon mal Werte wie "setnum(minigame-time;*3/4)" oder so drin, da hat das tatsächlich funktioniert, dass das Intervall immer kürzer wurde. (An den genauen Wert kann ich mich nicht erinnern, *3/4 wars nicht)
Unter den "1" Wert muss ich deshalb gehen, weil alles über 1 zu einfach ist auszuweichen.
Unter den "1" Wert muss ich deshalb gehen, weil alles über 1 zu einfach ist auszuweichen.