Problem bei New game

Das Board für Schwierigkeiten beim Adventure-Machen und zum Melden von Bugs
Post Reply
parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Problem bei New game

Post: # 74019Post parkiii
08 Jul 2009, 01:11

Hey,

wenn in meinem Spiel die HP unter 1 sinken, öffnet sich autpmatisch der Game over Screen. Danach kommt man zum Hauptmenü zurück. Wenn man dort aber New game klickt, sind alle Objekte usw vom Spiel noch aktiviert, was für ein neues Spiel ziemlich unpraktisch ist.

Gibt es eine Möglichkeit, das zu verhindern, oder muss ich bei der New game cutscene extra jedes Objekt usw neu definieren und wieder in den Ursprungszustand setzen?

Danke im VOrraus, parkiii

:pcprob:

Wuji
Adventure Enthusiast
Posts: 223
Joined: 07 Dec 2008, 17:25
Contact:

Post: # 74020Post Wuji
08 Jul 2009, 12:37

ist gibt immer wieder Probleme mit dem restart befehl zumindest bei parkiii und mir
wie man das direkt löst weiss ich auch nicht
aber bei meinem neuen Spiel klappt das weil ich eine eigene Lade Anzeige gemacht habe
das funktioniert so du bist im Menü und drückst auf den Button Start game danach
- Loadroom(einen lerren Raum) ->cutscene (load) ->
Cutscene load:
subroom(Lade anzeige) -> Moveobj(...) -> setobj(...)-> loadchar(...) -> loadroom(...) ->functions -> wait(2) -> return()
Durch diese Load cutscene werden alle objekte an ihre Position geschoben
und in den richtigen Zustand versetzt alles wird schön sauber geladen. Zwichen durch kannst du immer move obj befehle einbauen die den Lade Balcken verschieben in meinem Spiel steht unten per textout was es gerade lädt . das wait am Ende ist wichtig wie lang es ist muss man ausprobieren,ist es nicht vorhanden stockt das Spiel am Anfang und genau das soll ja eine Lade sequenz verhindern :wink: . Vorteile: Sieht sehr professionell aus , die lade zeit am Anfang des Spiel wird verkürzt , restart befehl zeigt in diesem fall keine Schwächen , Lade Zeit kommt einem sehr schnell vor da das Gehirn das Spiel mit anderen Spielen vergleicht (meine Theorie)

Ich glaub das war jetzt zwar eher ein tutorial aber villeicht willst dus ja ein bauen Sieht zumindest bei mir verdammt gut aus und die Lade Zeit beträgt max 3 Sekunden

parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Post: # 74021Post parkiii
08 Jul 2009, 13:50

okay, danke. das werd ich mal versuchen =)

Baelavay
PaC-DK God
Posts: 1168
Joined: 04 Jun 2006, 19:24
Contact:

Post: # 74022Post Baelavay
08 Jul 2009, 17:48

Ihr meint, durch den restart() Befehl werden nicht alle Variablen und Objekte zurückgesetzt? Dass parkiis Objekte nach Laden noch aktiviert sind, lässt ja darauf schließen. Aber dann wäre der restart() ja völlig nutzlos :? Leider habe ich aber auch festgestellt, dass es zu unerwünschten Ereignissen kommt, wenn man den loadgame() Befehl verwendet. Ich glaube, mich zu erinnern, dass jemand, der GCV 0.1 gespielt hatte, berichtet hat, dass nach dem Neuladen Variablen nicht zurückgesetzt wurden... oder so. Habe das nicht mehr näher untersucht, vielleicht auch einfach verdrängt weil ich dieses PaCDK-Problem gar nicht selbst beheben kann. Wäre noch genauer zu untersuchen.

Wujis Vorschlag zur Loadgame-Alternative schaut sicher professionel aus, aber es ist auch eine Heidenarbeit, alle Objekte und Variablen aus dem ganzen Spiel manuell zurückzusetzen. Bei einem Spiel in größerem Umfang ist das praktisch unmöglich!

Problem bei Wujis Vorschlag sehe ich auch in der Bestimmung der Wartezeit für wait(), schließlich hängt die benötigte Zeit von der jeweiligen Prozessorleistung ab.
Wuji wrote:Lade Zeit kommt einem sehr schnell vor da das Gehirn das Spiel mit anderen Spielen vergleicht (meine Theorie)
:mmh: Ok!?

Schiman
PaC-DK God
Posts: 1177
Joined: 20 Dec 2006, 21:48
Contact:

Post: # 74023Post Schiman
08 Jul 2009, 18:05

Dass bei restart() und loadgame() (wenn sie während des laufenden Spiels benutzt werden) einige Objekte nicht auf ihren Ursprungszustand gesetzt werden ist ein altes Problem. Das hatten wir glaube ich schon beim Sherlock und auf jeden Fall bei GCV angesprochen.
Dieser Bug sollte eigentlich ganz oben auf der ToDo-Liste stehen, weil das schon ziemlich schwerwiegend ist, dadurch kommt es zu heftigen Bugs, aber irgendwie scheint das Problem doch nicht trivial zu sein^^.

parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Post: # 74024Post parkiii
08 Jul 2009, 18:29

wie siehts eigentlich bei quit () , einem manuellen neustart und danach loadgame () aus?

Baelavay
PaC-DK God
Posts: 1168
Joined: 04 Jun 2006, 19:24
Contact:

Post: # 74025Post Baelavay
08 Jul 2009, 18:33

Wenn du das Spiel komplett schließt und neu startest, ist garantiert alles zurückgesetzt, weil das PaCDK nichts noch außerhalb speichert. Also bleiben geänderte Werte, wenn überhaupt, nur so lange gespeichert, bis das Spiel beendet wird. Im saves-Ordner finden sich nur die Spielstände und die mit savenum() extra abgespeicherten Variablen (die ja auch nur dann wieder im Spiel geladen werden, wenn man loadnum() benutzt).

Wenn du dann allerdings nach dem Neustart wieder einen Spielstand lädst, hast du ja wieder das Problem, dass bis zum Laden geänderte Werte u.U. nicht aus dem Speicherstand übernommen werden. Wirklich "frisch" sind alle Werte nur ab dem Start der Spiel.exe und bis zum Laden eines Speicherstands.
Last edited by Baelavay on 08 Jul 2009, 18:35, edited 1 time in total.

parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Post: # 74026Post parkiii
08 Jul 2009, 18:35

klingt einleuchtend ^^
danke trotzdem :)

Baelavay
PaC-DK God
Posts: 1168
Joined: 04 Jun 2006, 19:24
Contact:

Post: # 74028Post Baelavay
08 Jul 2009, 20:11

Am einfachsten lässt sich das mit den Werten nach quit() so erklären: Sobald du quit() ausführst bzw. das Spiel schließt, ist alles weg, was nicht im saves-Ordner ist.

parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Post: # 74029Post parkiii
08 Jul 2009, 20:14

eben, klingt einleuchtend :D

Wuji
Adventure Enthusiast
Posts: 223
Joined: 07 Dec 2008, 17:25
Contact:

Post: # 74031Post Wuji
08 Jul 2009, 21:00

Baelavay wrote:
Wujis Vorschlag zur Loadgame-Alternative schaut sicher professionel aus, aber es ist auch eine Heidenarbeit, alle Objekte und Variablen aus dem ganzen Spiel manuell zurückzusetzen. Bei einem Spiel in größerem Umfang ist das praktisch unmöglich!
Naja mein spiel hat bis jetzt 3 Spielbare räume mit 54 objekten das komplette Spiel wird an die 100 Räume haben also ich denke das ist umfangreich.
sobald man ein objekt hinzufügt schreibt man einfach auch einen neuen Befehl in die Cutscene


Wuji wrote:Lade Zeit kommt einem sehr schnell vor da das Gehirn das Spiel mit anderen Spielen vergleicht (meine Theorie)
ja wenn ich Dawn of War anmachen dann dauert das laden bei meinem
schlechten rechner 2-3 Minuten .

Baelavay wrote:Problem bei Wujis Vorschlag sehe ich auch in der Bestimmung der Wartezeit für wait(), schließlich hängt die benötigte Zeit von der jeweiligen Prozessorleistung ab.
naja der wait befehl sorgt eben dafür das das Spiel am Anfang nicht stockt wie es bei vielen anderen Spielen ist.das ist halt eine sekunde un die restlichen 2 kommen von der Prozzessor leistung
und am längsten wir am Character und Raum geladen :wink:

wenn ich mein Spiel an mache dauert das laden max. 3 sekunden
da wünsch man sich manchmal das Laden wäre langsamer
( der Lade anzeige in meinem Spiel schaue ich am liebsten zu :mrgreen: )

parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Post: # 74032Post parkiii
08 Jul 2009, 21:21

[quote=Wuji]sobald man ein objekt hinzufügt schreibt man einfach auch einen neuen Befehl in die Cutscene [/quote]
naja, da ich schon ca. 1/4 des spieles fertig gestellt habe, ist das eine enorme arbeit, alles zurückzusetzen. habs heute mal versucht und bei jedem testdurchgang erschien wieder etwas, was ich vergessen hatte.

ich denk mal, dass ich auch den quit () befehl verwenden werde (es sei denn, restart () würde plötzlich funktionieren ^^ )

trotzdem bin ich der meinung, dass eine solche ladeleiste schon eindruck hinterlässt, auch wenn sie nur so kurz abläuft, was natürlich auch ein positiver effekt ist.

Lachi
An Adventure Creator
Posts: 316
Joined: 07 Aug 2008, 22:32

Post: # 74034Post Lachi
08 Jul 2009, 21:44

trotzdem bin ich der meinung, dass eine solche ladeleiste schon eindruck hinterlässt, auch wenn sie nur so kurz abläuft, was natürlich auch ein positiver effekt ist.
Solange man sie nicht 5 Minuten anschauen muß, wie beim Booten von so vielen Vista-Rechnern, dann ist doch alles OK :wink:
[img]http://img269.imageshack.us/img269/4060/enjoylachibalken.png[/img]

parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Post: # 74036Post parkiii
08 Jul 2009, 21:52

das ist selbstverständlich :mrgreen:

Benni
Tutorial Reader
Posts: 65
Joined: 09 Jan 2009, 23:38

Post: # 74038Post Benni
09 Jul 2009, 00:42

Baelavay wrote:Wenn du das Spiel komplett schließt und neu startest, ist garantiert alles zurückgesetzt, weil das PaCDK nichts noch außerhalb speichert. Also bleiben geänderte Werte, wenn überhaupt, nur so lange gespeichert, bis das Spiel beendet wird. Im saves-Ordner finden sich nur die Spielstände und die mit savenum() extra abgespeicherten Variablen (die ja auch nur dann wieder im Spiel geladen werden, wenn man loadnum() benutzt).

Wenn du dann allerdings nach dem Neustart wieder einen Spielstand lädst, hast du ja wieder das Problem, dass bis zum Laden geänderte Werte u.U. nicht aus dem Speicherstand übernommen werden. Wirklich "frisch" sind alle Werte nur ab dem Start der Spiel.exe und bis zum Laden eines Speicherstands.
Ich hatte bei meinem Spiel seltsamerweise genau den umgekehrten Fall. In meinem letzten Raum habe ich im on(loop) Skript einige Anweisungen, die nur ausgeführt werden, wenn eine bestimmte Aktion im Spiel noch nicht ausgeführt wurde:

Code: Select all

on(loop1)
{
  if_bool(aktion_durchgeführt; false)
  {
    (* blablabla *)
  }
}
Soweit funktioniert das auch alles super. Wenn ich jetzt aber in diesem Raum speichere, nachdem aktion_durchgeführt bereits auf true gesetzt wurde, dann das Spiel komplett beende und den Spielstand wieder lade, dann scheint die Variable wieder auf false zu stehen und der blablabla Skriptteil wird ausgeführt.
Wenn ich dann mit restart() das Spiel resette und den Spielstand nochmal lade, funktioniert alles.

Post Reply