if-de :: Forum Foren-Übersicht
Autor Nachricht
<  Über Mauer klettern
Atera
BeitragVerfasst am: Do, 10 Jul 2003 - 18:05  Antworten mit Zitat
Neuling
Neuling


Anmeldungsdatum: 22.06.2003
Beiträge: 4
Wohnort: Bochum

Hi!

Ich versuche mich gerade an einem eigenem Adventure bzw. versuche ich mich so ein wenig in TAG einzuarbeiten.
Ich möchte nun einen Raum Straße kreiern, der auf der westlichen Seite eine Mauer hat. Wenn man auf die Mauer klettert, kann man auf der anderen Seite runterspringen und gelangt in den Garten.
Ich habe noch keinen Code aufgestellt, weil ich mich frage wie ich das am besten aufstellen soll.
Ich schätze mal zunächst brauche ich die Definition des Befehls 'klettern' und vielleicht eine Zufallschance, wann man es auf die Mauer schafft. Im Moment überlege ich aber, wie ich die Räume aufteile. Soll ich Garten und Straße in einen großen Raum fassen mit der Mauer als Objekt und mit Erreichbarkeit und Sichtbarkeit von Objekten arbeiten oder ist es einfacher Garten, Mauer und Straße einzeln als Räume zu machen oder die Mauer als Objekt in beiden Räumen Straße und Garten vorkommen zu lassen (wobei ich da das Problem habe, dass man ja nur nach Westen bzw. Osten gehen können sollte, wenn man auf der Mauer ist).

Hat jemand eine Idee, was sich da am besten eignet? Den Richtungsbefehl "hoch" hier bei der Mauer zu verwenden, scheidet da leider irgendwie aus, da ich den schon für die östliche Häuserfassade nehmen wollte, wo man aufs Dach klettern kann.

Also danke schon mal vorab für Hilfe (o:

-Atera
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
NearDark
BeitragVerfasst am: Fr, 11 Jul 2003 - 2:46  Antworten mit Zitat
Gast





Hi !

Also erstmal vorweg: Ich kann nur eine Empfehlung auf Grund meiner geringen Erfahrung geben. Natürlich gibt es verschiedene Lösungen und Möglichkeiten.

Meine Tips und Gedanken:
Wenn ich dich richtig verstanden habe, so soll die Spielfigur auf der Mauer stehen können und der Spieler muss sie von dort per Befehl in den Garten oder umgekehrt bewegen. Das halte ich persönlich für nicht so gut, weil du eine Menge von Möglichkeiten abfangen und vorhersehen müsstest.

>springe in den Garten
und
>springe nach Westen
und
>kletter nach Westen die Mauer runter
sollten dann ebenso möglich sein wie,
>kletter an der Mauer runter

Derlei würde es einige Beispiele mehr geben. Da könnten also einige Probleme lauern für deren Beseitigung du vielleicht viel Energie verschwendest, die du woanders reinstecken könntest.

Wenn dem Spieler nicht irgendwas interessantes auf der Mauer erwarten soll, so würde ich ihn einfach über die Mauer in den Garten transportieren.
Code:
Du stehst auf einer Straße die bla bla bla bla. Im Westen, zwischen alten Häuserfronten, versperrt dir eine fünf Meter hohe Mauer den Weg.

>kletter an Mauer hoch               !! oder >kletter über Mauer

Zielstrebig setzt du deine Füße in kleine Spalten, während deine Hände jede Unebenheit des Mauerwerks ausnutzen um dich immer höher zu ziehen. Nach kurzer Zeit bist du oben angekommen und läßt dich federnd auf die andere Seite fallen.


Ein bunter und wohlriechender Garten umfängt wohltuend deine gekränkte Seele. bla bla bla bla
usw.

Was mich gleich zur Raumaufteilung führt. Für mein obiges Beispiel würde ich die Straße und den Garten als Raum einbauen. Die Mauer wiederrum als Objekt oder Deko in beiden. Jetzt nur noch den Befehl "klettern" entsprechend modifizieren und aus die Maus. Mit Sichtbarkeit und Erreichbarkeit bräuchtest du bei diesem Fall auch nicht rumfummeln.

In meinem Projekt existiert ein ähnlicher Fall wie bei dir. Statt der Mauer erwartet dem zukünftigem Spieler eine Grube zwischen zwei Räumen und eine Planke darüber. Bei mir kannst du entweder
a) über die Planke balancieren
b) über die Grube springen
c) einfach nach Westen oder Osten gehen
Bei c) erscheint ein Menü welches die Punkte a) und b) und den Abbruch durch eine Zifferauswahl regelt.
Und bei mir findest du zwei Räume und zweimal die Deko Grube. Und obwohl an dieser Stelle für den Spieler einiges passieren kann, empfand ich diese Lösung beim proggen als nicht schwer oder gar unübersichtlich.

So, das war es erstmal. Bin schon neugierig auf weitere Antworten und Anregungen. :D

Bye,
ND
Nach oben
zuDaniel
BeitragVerfasst am: Mo, 14 Jul 2003 - 14:20  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 13.06.2003
Beiträge: 33
Wohnort: Köln

Code:


!Erst einmal den Befehl
Bef       'Klettern'
Verb      'Klettere'
Syntax    auf dasObj
Ausf
       Wenn (aObj=Mauer) dann
        Text  'Du kletterst mühsam auf die Mauer.[#]'
GeheZu  Auf_der_Mauer
!Hier müssen noch die Namen der Objekte rein, auf denen man
!auch klettern kann(siehe unten bei Gast)
...
!Jetzt die reaktion, falls man nicht draufklettern kann:
  sonst
Stop 'Wie willst du den da Hochklettern und warum?'
!Achte darauf; für jedes 'Wenn_dann' musst du unten ein Ende dranhängen!
Ende !Dieses Ende ist eines davon!
EndeAusf


!Jetzt der zwischenraum, auf der Mauer
Raum      'Auf_der_Mauer'
N         Garten
S         Stadt
Besch      'Du bist auf der Mauer, im Norden siehst du einen Garten, und im Süden siehst du wieder die Stadt.'



Das müsste dann so aussehen:
Code:

Du bist in der Stadt, im Norden siehst du eine Mauer.
> Kletter auf die Mauer

Du kletterst mühsam auf die Mauer.

Du bist auf der Mauer, im N siehst du einen Garten, und im Süden siehst du wieder die Stadt.
> Gehe Nach Norden
...


Natürlich musst du noch einige Stellen im Quelltext ändern, ich glaube nicht, das du die gleichen Bezeichnungen genommen hast.

Ich habe den Quelltext nicht ausprobiert, er müsste aber jetzt eigentlich klappen.
_________________
[[BUH!]]


Zuletzt bearbeitet von zuDaniel am Mo, 21 Jul 2003 - 13:47, insgesamt 4-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Gast
BeitragVerfasst am: Di, 15 Jul 2003 - 13:26  Antworten mit Zitat






Hallo!

Danke für eure Antworten, ich bastle gerade an dem Quelltext herum. Wegen dem Befehl klettern, das wird komplizierter als ich anfangs dachte, da ich mindestens drei Sachen habe worauf der Spieler klettern dürfen sollte.
Ich habe nun überlegt, ob ich vielleicht ein neues Objekt Attribut 'erkletterbar' definieren sollte. Und man vielleicht automatisch, wenn man auf dem betreffenden Objekt steht in den betreffenden Raum gebracht wird.
Also z.B. erklettere Balkon usw.

Mein Code sähe nun so aus:

Code:


ObjAttr   erkletterbar

Bef     klettern
Name    'klettern'
Verb    'klettere' 'klettre' 'erklimme'
Verb    'kraxle'
Syntax  auf dasObj (NichtBeiMir erkletterbar)
Syntax   an demObj (NichtBeiMir erkletterbar)
Präp   'hoch' 'über'
Ausf
  Wenn (aObj erkletterbar) dann
      Text 'Du setzt deine Füße in kleine
      Mauerritzen, nutzt jede Unebenheit aus,
      um dich mit den Händen nach oben zu ziehen
      bis du es geschafft hast.[#]'
  sonst
  Text 'Du kannst nicht auf [den aObj] klettern.'
Ende
EndeAusf

Obj   Mauer
Name   'Mauer' f
Adj   'hoch' 'hohe'
Vor   'backstein'
Subst   'wand' f 'mauer' f
Ort   Strasse
Attr   fest erkletterbar
Besch   'Eine hohe lange Mauer, die sich
   die ganze Westseite über erstreckt.
   Zwischen den Backsteinen gibt es einige
   Ritzen und Lücken.'
NachAusf
 (klettern)
 GeheZu Auf_der_Mauer
 Ende
EndeAusf

Raum   Auf_der_Mauer
Name   'Auf der Mauer'
O   Strasse
Besch   'Du stehst nun auf der Mauer.'



Ja, natürlich müßte man den Raum Auf_der_Mauer noch ausbauen, aber im Prinzip glaube ich/hoffe ich klappt das so (o;

Hm, mal ne andere Frage:

In den Standartantworten gibt es ja auf den Befehl 'untersuche mich' etc. die übliche Antwort 'Du siehst hinreißend aus' blablabla. Ist es möglich diese Antwort zu verändern ohne dass man gleich eine neue Standard-Antworten Datei dafür erstellen muss?

Und ein zweites Problem, dass ich immer wieder habe, ist, dass beim Betreten des Raumes Objekte mit aufgelistet werden, die ich da eigentlich nicht aufgelistet haben wollte.
Beispiel: Hinter einer Kiste steht eine Whiskyflasche. In der Flasche ist Whisky.
Wenn der Spieler nun den Raum betritt bekommt er die Meldung, dass hier eine Kiste steht und dass in der Whiskyflasche Whisky ist. Ich frage mich also wie man solche Meldungen unterdrücken kann.

-Atera
Nach oben
Atera
BeitragVerfasst am: Di, 15 Jul 2003 - 13:28  Antworten mit Zitat
Neuling
Neuling


Anmeldungsdatum: 22.06.2003
Beiträge: 4
Wohnort: Bochum

Ups, war wohl nicht mehr eingeloggt. Obiger Post ist von mir.
Sorry.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Martin
BeitragVerfasst am: Di, 15 Jul 2003 - 14:22  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München

Ein Wissender hat folgendes geschrieben:
Na da geht mir ein Licht auf!

So? Mir geht da eher der Hut hoch.

Code:

Bef       'Klettern'
Verb      'Kletter' 'Klettere'
Syntax    auf denObj
Ausf
   Text  'Du kletterst mühsam auf die Mauer.[#]'
   GeheZu  Auf_der_Mauer
EndeAusf

Es muss dasObj heißen. Außerdem sind 'kletter' und 'klettere' redundant, da T.A.G. das Verb 'klettere' auch in den Formen 'kletter' und 'klettre' versteht.

Code:

Raum      'Auf_der_Mauer'
N         'Garten'
S         'Stadt'

Die Angabe der Zielorte müssen ohne Anführungszeichen angegeben werden.

Das Ganze sieht dann so aus:

Code:

Bei den Abflussrohren am Strand.
Der Strand erstreckt sich hier scheinbar endlos nach
Osten und Westen. Ein paar rostige Abflussrohre, die
aus dem Industriegebiet im Norden kommen, leiten eine
übel riechende Flüssigkeit in das Meer.

Hier sind eine Plastiktüte und ein toter Fisch

> klettere auf toten Fisch
Du kletterst mühsam auf die Mauer.

Auf der Mauer
Du bist auf der Mauer, im Norden siehst du einen Garten,
und im Süden siehst du wieder die Stadt.

Der Code fürs Klettern üerprüft gar nicht, auf welches Objekt geklettert werden soll. In die Ausf des Befehls gehört eine allgemeine Absage, der Code fürs Auf-die-mauer-Klettern sollte beim Objekt Mauer stehen.

Zitat:
Natürlich musst du noch einige Stellen im Quelltext ändern.

Natürlich.

Zitat:
Ich habe den Quelltext nicht ausprobiert, er müsste aber eigentlich klappen.

Leider ist der Quelltext sehr fehlerhaft. Wieso probierst Du ihn nicht aus, bevor Du ihn postest? In seiner jetzigen Form isr er, besonders für Einsteiger, nicht hilfreich, sondern eher verwirrend. (Ok, ok, ich poste auch öfters Code ins Forum, ohne ihn getestet zu haben, aber ich habe auch schon etwas mehr Erfahrung mit T.A.G. Und ich schaue meistens vorher im Handbuch nach.)

Aber mal zum eigentlichen Thema des Threads:

Aufteilung der Räume. Ich würde alles so einfach wie möglich halten und auf Modifikationen von Sicht und Reichweite verzichten. Also wäre die Straße ein Raum und der Garten ein anderer. Vom Garten kann man nicht auf die Straße sehen und umgekehrt. Die Mauer wäre dann entweder auch zwei Objekte, Mauer_Straße und Mauer_Garten, oder eine Deko, die sich in beiden Räumen befindet.

So wie ich Dich verstanden habe, Atera, soll der Spieler auch auf der Mauer sein können. In dem Fall würde ich "Auf der Mauer" ebenfalls als Raum implementieren, von dem aus der Spieler in einen der anderen Räume gelangen kann.

Richtungen. Wenn der Spieler in der Straße ist, ist die Mauer im Westen. Außerdem gibt es eine Fassade im Osten, auf die man ebenfalls klettern kann. Vielleicht geht die Straße nach Norden und/oder Süden weiter. Mit "W" sollte der Spieler gesagt bekommen, dass dort eine Mauer ist, vielleicht mit einem Hinweis darauf, dass er darauf klettern kann. Bei "Hoch" sollte ebenfalls eine negative Antwort kommen, oder eine Nachfrage, ob der Spieler auf die Mauer oder die Fassade klettern will. (Diese Antwort sollte aber nicht aussehen wie eine Parserantwort, da der Spieler ja den Befehl zum Klettern explizit eingeben muss. Vielleicht etwas wie "Direkt über dir ist freier Himmel. Du könntest aber auf die Mauer und die Fassade klettern.") Zum Klettern muss also immer "klettere auf x" angegeben werden, die Richtungen geben nur Hinweise darauf.

Genauso im Garten: "O" sagt, dass die Mauer im Weg ist, mit "klettern" kommt man dann auf die Mauer.

Auf der Mauer selbst kann man dann nach Osten oder Westen springen. Oder in den garten und auf die Straße. Hier wäre Eingabevielfalt wünschenswert. Dass man von der Mauer aus nur nach Westen und Osten gehen kann, ist ja leicht zu bewerkstelligen. Nur sollten die anderen Ausgänge eine eigene Antwort anstelle der Standardantwort bekommen.

Befehle. Der Hauptbefehl ist hier wohl klettern, der in seiner Reinform dem Spieler eine Absage erteilt:

Code:

    Bef klettern
    Name 'klettern'
    Verb 'klettere'
    Syntax auf dasObj
    Ausf
        Bed (aObj fest)
            'Auf [den aObj] zu klettern ist lächerlich.'
        Text 'Das würde dich nicht wesentlich weiter
            bringen.'
    EndeAusf


Beim Mauerobjekt würde man dann das Klettern abfangfen.

Code:

    Deko Mauer
    ...
    Ort Straße Garten
    VorAusf
        (klettern)
        Bed (Bergschuhe angezogen)
            'Du bekommst keinen Halt zwischen den
            brüchigen Steinen.'
        'Mit den Begstiefeln suchst du Halt zwischen
            den Steinen und erklimmst die Mauer.[#]'
        geheZu Auf_der_Mauer
    EndeAusf


(Von einer Zufallschance würde ich absehen und eher eine andere Bedingung einfügen.)

Verfeinerungen. Man könnte jetzt noch von der Mauer aus alle Gegenstände im Garten und auf der Straße mit SichtUndRw sichtbar machen. Und man könnte den Spieler die Mauer nur mit leeren Händen hochklettern lassen und ihm dafür die Möglchkeit geben, Dinge auf die Mauer zu legen, wenn er auf der Straße und im Garten ist. Und natürlich fehlen noch Synonyme zum Klettern.

Also:


  • Orte, die klar räumlich voneinander getrennt sind, als verschiedene Räume implementieren. (Die Verschachtelung von Objekten, die der Spieler betreten kann und SichtUndRw sind eher etwas für Fortgeschrittene, meist kommt man ohne sie aus.)

  • Neue Befehle immer allgemein formulieren (Was passiert, wenn ich den Stein esse? Oder die Betonbrücke schüttele?) und Besonderheiten immer beim Objekt selbst abfangen, auch wenn der Befehl nur auf dieses Objekt zugeschnitten ist.

  • Nie etwas implementieren, das nicht eindeutig ist, wie z.B. "hoch" von der Straße aus als Klettern auf die Fassade interpretieren. Im Zweifelsfall immer nachfragen und auf die voneinander verschiedenen Alternativen hinweisen.



Oh! Mittlerweile hast Du ja eine Lösung gefunden. Sieht gut aus, trotzdem würde ich alles bei den Objekten in der VorAusf abfangen und beim klettern nur die Absage stehen lassen. Das Attribut erkletterbar ist aber gut, denn es hilft beim Disambiguisieren:

Code:

> klettere
(auf den Telegrafenmast)
Behende kletterst du auf den Mast.


Atera hat folgendes geschrieben:
In den Standartantworten gibt es ja auf den Befehl 'untersuche mich' etc. die übliche Antwort 'Du siehst hinreißend aus' blablabla. Ist es möglich diese Antwort zu verändern ohne dass man gleich eine neue Standard-Antworten Datei dafür erstellen muss?

Jein. Ein Alternative ist, den ganzen Block mit Standardantworten in die Spieldatei zu kopieren und das Wort "Standard" davor zu schreiben. Ob das aber einfacher ist, bezweifle ich. (Einzelne Antworten auszutauschen, wie in Inform, ist nicht möglich.)

Zitat:
Und ein zweites Problem, dass ich immer wieder habe, ist, dass beim Betreten des Raumes Objekte mit aufgelistet werden, die ich da eigentlich nicht aufgelistet haben wollte. Beispiel: Hinter einer Kiste steht eine Whiskyflasche. In der Flasche ist Whisky.

Das ist wohl ein Bug in T.A.G. Der Whisky ist eigentlich nicht da, da die Flasche nicht da ist. Hier würde ich den Fehler des Interpreters umgehen, indem ich das Schauen hinter die Kiste anfange:

Code:

    Obj Kiste
    ...
    VorAusf
        (schauen)
            wenn (aPräp = 'hinter') dann
                Bed (Flasche in nirgendwo)
                    'Da ist nichts.'
                Text 'Du findest eine Flasche.'
                ObjNach Flasche aRaum
            Ende
    EndeAusf
   
    Obj Flasche
    Ort nirgendwo
    ...
   
    Obj Whisky
    Ort in Flasche
    ...

_________________
Every silver lining has a cloud.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
zuDaniel
BeitragVerfasst am: Mi, 16 Jul 2003 - 13:59  Antworten mit Zitat
Wasserträger
Wasserträger


Anmeldungsdatum: 13.06.2003
Beiträge: 33
Wohnort: Köln

Da hattest du ja ganz schön viel an mir auszusetzen. :cry:
Martin hat folgendes geschrieben:

Leider ist der Quelltext sehr fehlerhaft. Wieso probierst Du ihn nicht aus, bevor Du ihn postest?



-Ich probiere ihn nicht aus, weil ich nicht bei mir Internet habe, und nicht jederzeit ins Internet kann, d.h. wenn ich ihn testen würde, bräuchte ich 2-3 Tage, um ihn zu posten, und auf dem Internet Pc darf ich keine Daten speichern(ich speichere sie ddirekt auf Disketten) (Mehr wird nicht verraten).

Martin hat folgendes geschrieben:

In seiner jetzigen Form isr er, besonders für Einsteiger, nicht hilfreich, sondern eher verwirrend.



-Vergiss bitte nicht, ich bin auch ein Einsteiger(Mehr oder weniger).


Martin hat folgendes geschrieben:

(Ok, ok, ich poste auch öfters Code ins Forum, ohne ihn getestet zu haben, aber ich habe auch schon etwas mehr Erfahrung mit T.A.G. Und ich schaue meistens vorher im Handbuch nach.)


-Erwischt!!! :wink:


Danke fürs zuhören!

Ich entschuldige mich höflichst dafür, das mein (Quell-)Text Falsch war/ist.

Übrigens habe ich den Quelltext jetzt wieder geändert...
_________________
[[BUH!]]


Zuletzt bearbeitet von zuDaniel am Mo, 21 Jul 2003 - 13:54, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Atera
BeitragVerfasst am: Mi, 16 Jul 2003 - 16:19  Antworten mit Zitat
Neuling
Neuling


Anmeldungsdatum: 22.06.2003
Beiträge: 4
Wohnort: Bochum

Danke schön erstmal für die vielen Tipps. Auf das mit dem Whisky wäre ich jetzt auf Anhieb (bzw. wahrscheinlich auch nicht nach mehreren Anläufen gekommen ;)) nicht gekommen. Hat mir auf jeden Fall weitergeholfen.

Liebe Grüße

-Atera, die jetzt weiterbastelt (o;
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Beiträge der letzten Zeit anzeigen:   
Alle Zeiten sind GMT + 1 Stunde (MEZ)

Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Seite 1 von 1
if-de :: Forum Foren-Übersicht  >  T.A.G.

Neues Thema eröffnen   Neue Antwort erstellen


 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.



Kontakt: Administrator

Powered by phpBB and NoseBleed v1.05