Autor Thema: Problem mit Tür  (Gelesen 3000 mal)

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 771
  • Geschlecht: Männlich
    • Profil anzeigen
Problem mit Tür
« am: 02. Februar 2013, 11:33:56 »
Hallo zusammen,

es ist ein seltsamer Fehler aufgetreten.

Eine geöffnete Tür hatte sich leicht verschoben (also die Grafik der geöffneten Tür hatte sich ein paar Pixel verschoben) und man konnte dann im Spiel durch diese Tür nicht mehr durch gehen. Öffnen und schließen sowie Schau an funktionieren alle.

Ich hab dann im AGS Editor das Objekt wieder richtig plaziert doch der Fehler bleibt. Öffnen, schließen und Schau an funktionieren aber die Spielfigur bleibt einfach vor der Tür stehen wenn man durch will. Der Objektname in AGS ist auch Ok. Die Baseline hab ich auch nicht verändert. Habe mal andere Werte ausprobiert aber das hat auch nix geholfen.

In welchem Script steht eigentlich die enterRoom oder changeRoom Funktion wenn ein Raum verlassen wird. Das find ich niergends, nicht im Room Script, nicht im Doors Script und auch nicht im GlobalScript. Irgendwo muss das doch stehen?

Weiß jemand Rat  ??? Der Bug ist echt der Supergau.

EDIT: Hab den Fehler gefunden. Es lag garnicht an der Tür. Die Walkeable Area war nur ein paar Pixel zu kurz. Deshalb ist die Spielfigur vor der Tür stehen geblieben. Ja ja so lernt man dazu.
« Letzte Änderung: 02. Februar 2013, 14:18:06 von Kiwa »
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

Tribble

  • Teenie Tentakel
  • ****
  • Beiträge: 411
    • Profil anzeigen
Re: Problem mit Tür
« Antwort #1 am: 03. Februar 2013, 12:31:25 »
EDIT: Hab den Fehler gefunden. Es lag garnicht an der Tür. Die Walkeable Area war nur ein paar Pixel zu kurz. Deshalb ist die Spielfigur vor der Tür stehen geblieben. Ja ja so lernt man dazu.
Hm, dass verwundert mich jetzt etwas. In den alten Starterpacks war es so, dass die Figur sich in diesem Fall der Tür einfach so weit nähert wie möglich, und dann der Raumwechsel erfolgt.

Kann mir einer sagen, wann und warum dies geändert wurde?
Don't feed the Troll-Haus

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 771
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Problem mit Tür
« Antwort #2 am: 03. Februar 2013, 18:09:26 »
EDIT: Hab den Fehler gefunden. Es lag garnicht an der Tür. Die Walkeable Area war nur ein paar Pixel zu kurz. Deshalb ist die Spielfigur vor der Tür stehen geblieben. Ja ja so lernt man dazu.
Hm, dass verwundert mich jetzt etwas. In den alten Starterpacks war es so, dass die Figur sich in diesem Fall der Tür einfach so weit nähert wie möglich, und dann der Raumwechsel erfolgt.

Kann mir einer sagen, wann und warum dies geändert wurde?

Ich muss dazu sagen das ich im besagten Raum die walkable Area komplett neu angelegt hatte. Vielleicht hängt das damit zusammen.
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Problem mit Tür
« Antwort #3 am: 03. Februar 2013, 19:42:30 »
Zitat
Vielleicht hängt das damit zusammen.
nicht vielleicht, sondern es ist so...
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 981
    • Profil anzeigen
Re: Problem mit Tür
« Antwort #4 am: 04. Februar 2013, 19:33:25 »
Warum? Die Position des Characters sollte kein Rolle spielen, und eine andere Auswirkung kann das Neuzeichnen einer WA nicht haben, oder?

rulaman

  • Moderator
  • Teenie Tentakel
  • *****
  • Beiträge: 353
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Problem mit Tür
« Antwort #5 am: 05. Februar 2013, 20:41:12 »
Doch!

Das wurde übrigens auf Wunsch geändert. Wenn zum Beispiel mehrere Walkable areas vorhanden sind, eine aber abgeschalten wurde; falls der Char nicht dort hin gehen kann. Dann würde der Spieler z.B. mitten im Raum stehen bleiben und dann ein Raumwechsel stattfinden.

Es gibt im Forum glaube ich eine passende Diskussion dazu.
Baden ist die einzige Möglichkeit, den Dreck der Füße an den Hals zu bekommen.

Bissiger Witzbold

  • volljähriger Tentakel
  • *****
  • Beiträge: 553
    • Profil anzeigen
Re: Problem mit Tür
« Antwort #6 am: 05. Februar 2013, 20:54:07 »
Wenn im Spiel eine Tür nicht benutzt werden darf (weil sie abgeschlossen ist, ein Türsteher sie blockiert oder mitten im Zimmer ein Haifischbecken den Weg versperrt) muß sie halt so gescriptet werden, daß man sie zu diesem Zeitpunkt nicht benutzen kann. Dann würde auch kein ungewollter Raumwechsel "mitten im Raum" stattfinden.

Diese Änderung finde ich ziemlich bescheuert und unnötig fehleranfällig (wenn man z.B. einen zweiten Character hat, der dem Spielercharakter automatisch folgt, so kann dieser mitunter so in der Tür stehen, daß der Spielercharakter nicht an den nötigen Punkt für den Raumwechsel kommt)
« Letzte Änderung: 05. Februar 2013, 20:55:47 von Bissiger Witzbold »

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 981
    • Profil anzeigen
Re: Problem mit Tür
« Antwort #7 am: 05. Februar 2013, 23:26:32 »
Es macht natürlich Sinn, dass die Interaktion nur stattfindet, wenn der Spieler die Zielkoordinaten auch erreicht; und wenn man das in seinem Spiel so haben will, muss man einfach statt if (MovePlayer(x, y)) den Check MovePlayer(x, y) == 2 benutzen. So war es zumindest bisher.

BiWi: ein dem Spieler folgender Charakter sollte grundsätzlich nicht solid sein. Ich finde die Änderung durchaus gut, schließlich ist es immer besser, wenn der Gamedesigner das Spiel so modular wie möglich erstellen kann; wenn also z.B. ein Objekt den Weg direkt versperrt, ohne dass das zusätzlich gescriptet werden muss.
Es sollte immer oberstes Gebot sein, dass eine spätere Änderung an einer Stelle so wenig wie irgend möglich andere Änderungen nach sich zieht.
Für fehleranfälliger halte ich deswegen eher die andere Methode.

Tribble

  • Teenie Tentakel
  • ****
  • Beiträge: 411
    • Profil anzeigen
Re: Problem mit Tür
« Antwort #8 am: 06. Februar 2013, 10:31:39 »
Dass der Follow Character im Idealfall nicht solid sein sollte ist ja durchaus richtig. Aber ich würde trotzdem nicht bei jedem Newbie drauf vertrauen, dass er auch die Geistesgegenwärtigkeit besitzt dies zu berücksichtigen. Zumal sich die Position des Follow Characters im Raum nicht vorhersagen lässt, und ein solcher Fehler somit auch leicht durch den Betatest rutschen könnte.

Dass eine Tür nicht benutzt werden kann, weil die Walkeable Area nicht ran reicht, ist eine sehr spezielle Form von Rätsel, bei dem ich mich nicht erinnern kann dass es schonmal in dieser Weise umgesetzt wurde. Indes besteht die Gefahr, auf diese Weise eine Tür kaputt zu machen, jedes mal wenn man einen neuen Raum erstellen will.
Zumal diese "Verbesserung", wenn ich Kiwa richtig verstehe, auch nur halbherzig umgesetzt wurde. Da nur das durchgehen verhindert wird, aber öffne/schließe trotzdem noch vom anderen Ende des Raum möglich ist.
Don't feed the Troll-Haus

Tribble

  • Teenie Tentakel
  • ****
  • Beiträge: 411
    • Profil anzeigen
Re: Problem mit Tür
« Antwort #9 am: 06. Februar 2013, 13:47:00 »
Sorry, Doppelpost
Da nur das durchgehen verhindert wird, aber öffne/schließe trotzdem noch vom anderen Ende des Raum möglich ist.
Was, wenn ich genauer drüber nachdenke, in gewisser Weise sogar Sinn macht. Denn wenn man eine Tür nicht erreichen kann, dann sollte auf öffne/schließe ja nicht etwa gar keine Aktion erfolgen, sondern ein Hinweis dass man die Tür nicht erreichen kann.

Wenn ich das ganze richtig sehe, müssten für diese beiden Behle also so oder so eine if-Abfrage eingebaut werden. Und wenn man diese schon drin hat, dann ist es ja wohl kein Problem mehr diese auch auf das durchgehen auszuweiten.
Don't feed the Troll-Haus

JackLD

  • Tentakelschleim
  • *
  • Beiträge: 4
  • LD steht für Qualität
    • Profil anzeigen
Re: Problem mit Tür
« Antwort #10 am: 08. Februar 2013, 00:01:11 »
Bei allem Respekt für Neueinsteiger, bei Sachen wie dem Starterpack sollte die explizite Lösung eines Problems immer vor einer impliziten stehen. Wenn ich will, dass eine Tür undurchquerbar ist, dann löse ich sowas doch besser explizit mit Globalints und Konsorten, anstatt implizit eine Walkable Area auszuschalten, was wie man hier sieht, schnell zu Fehlern führt.

Mit diesem (still eingeführten) Feature schleppen wir uns eigentlich nur Inkonsistenzen ein. Bei Türen muss ich keinen expliziten Erreichbarkeits-Check machen, bei allen anderen Hotspots aber schon? Dass MovePlayer(x,y)==2 geht, wusste ich nicht einmal, das ist nirgendwo dokumentiert, wie das meiste des Starterpacks.

Hier mal ein Vorschlag, um das ganze konsistenter und einleuchtender zu machen:

Wie wäre es mit optionalen Parameter für sowohl MovePlayer als auch die Tür-Funktionen, die dafür sorgen, dass die Funktionen false zurück liefern, falls der Punkt nicht erreicht wird und den Fall "nicht erreicht" in Unhandled abfängt? In den 99% der Fälle, wo man diese Abfrage nicht braucht, ignoriert man den Parameter schlicht und einfach, in allen anderen hängt man ihn an. Durch die Autovervollständigung sieht man ihn dann und weiß, dass es ihn gibt (geht mit Rückgabewert ==2 nicht, wenn man nicht die Kommentare im GS liest). Bei dieser Methode muss man explizit dazu sagen, was man gerade braucht und hat das Ganze zudem etwas ausdrucksstärker verpackt, so dass man dem Code anlesen kann, was er Besonderes tut.

Das Ganze könnte dann so aussehen:

[ags]if(MovePlayer(123,456,eCheckReached)) { ... }[/ags]

Analog mit den Türen.

Stelle das einfach mal als Alternative zur Diskussion.

Gruß
JackLD