Autor |
Nachricht |
< deform: Pronomen |
|
Verfasst am:
Mi, 21 Jan 2015 - 9:20
|
|
|
Experte
Anmeldungsdatum: 25.03.2010
Beiträge: 660
|
|
Code: | Object cabinet "Schrank"
has male
with name 'schrank' 'schraenkchen' 'n.' |
B SCHRANK setzt korrekt "er" und "ihn". B SCHRAENKCHEN hat keinerlei Auswirkungen auf die Pronomen.
Ist schonmal jemand über das Problem gestolpert? Oder liegt meinerseits ein Denkfehler vor? |
|
|
|
|
|
Verfasst am:
Mi, 21 Jan 2015 - 13:35
|
|
|
Experte
Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Ich kann das Verhalten hier nicht reproduzieren:
Das Testspiel (Z5) hat folgendes geschrieben: | >pronomen
Die Pronomen beziehen sich im Moment auf Folgendes:
"er": der Schrank
"sie": die Decke
"es": nicht gesetzt
"ihn": der Schrank
"ihm": der Schrank
"ihr": die Decke
"ihnen": nicht gesetzt
"damit", "darauf", usw.: der Schrank
"ihm/r": der Schrank
>u schränkchen
Du siehst nichts Besonderes an dem Schrank.
>pronomen
Die Pronomen beziehen sich im Moment auf Folgendes:
"er": der Schrank
"sie": die Decke
"es": der Schrank
"ihn": der Schrank
"ihm": der Schrank
"ihr": die Decke
"ihnen": nicht gesetzt
"damit", "darauf", usw.: der Schrank
"ihm/r": der Schrank |
Funktioniert. Für den Schrank habe ich deinen Code verwendet.
EDIT: Oder meintest du die Ausgabe der Pronomen? Da greift der Changing Gender nämlich nicht. Er wird vor der Ausgabe zurückgesetzt. |
|
|
|
|
|
Verfasst am:
Mi, 21 Jan 2015 - 16:55
|
|
|
Experte
Anmeldungsdatum: 25.03.2010
Beiträge: 660
|
|
Spannend. Tatsächlich kann ich das korrekte Verhalten bei einem Minimalspiel auch nachvollziehe, das Problem taucht also nicht auf. Ich werde wohl nochmal einen Tag investieren müssen zwecks Isolierung. Vielen Dank schonmal fürs Testen! |
|
|
|
|
|
Verfasst am:
Do, 22 Jan 2015 - 10:28
|
|
|
Experte
Anmeldungsdatum: 25.03.2010
Beiträge: 660
|
|
Es liegt nicht am Code, sondern an der Größe. Wenn ich ein Drittel der Objekte einfach rauslasse ist alles in Ordnung. Ich habe den exakten Punkt identifiziert: Wenn ich von dan ein weiteres Objekt hinzufüge oder einem bestehenden Objekt zwei neue Worte zum Namen hinzufüge, tritt der Fehler auf.
Ich kompiliere mit der s-Flag und da ist keiner der Werte kritisch an einer Grenze. Die mir interessant scheinenden Memory-Compilervariablen (MAX_DICT_ENTRIES, MAX_STATIC_DATA) lösen die Sache ebenfalls nicht. Bin ratlos, was ich weiter vrrsuchen könnte.
Nach Glulx zu kompilieren löst es, aber möchte ich eigentlich nicht. Das Spiel passt knapp in Z5! Z8 wäre in Ordnung, aber hat auch den Bug. Ich kenne mich zu wenig mit den Unterschieden zwischen Z und Glulx aus, um gezielt weiterzusuchen. |
|
|
|
|
|
Verfasst am:
Do, 22 Jan 2015 - 11:39
|
|
|
Experte
Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Was passiert, wenn du in German.h die CG-Puffergröße von 8 z.B. auf 16 anhebst? (Nur mal so als Experiment.)
Code: | !Constant MAX_CG_STACK = 8;
Constant MAX_CG_STACK = 16; |
|
|
|
|
|
|
Verfasst am:
Do, 22 Jan 2015 - 12:45
|
|
|
Experte
Anmeldungsdatum: 25.03.2010
Beiträge: 660
|
|
Leider keine Verbesserung. |
|
|
|
|
|
Verfasst am:
Do, 22 Jan 2015 - 14:27
|
|
|
Experte
Anmeldungsdatum: 08.12.2009
Beiträge: 923
Wohnort: Berlin
|
|
Hast du es schon mit einer anderen Compiler-Version (oder hier) versucht? Auch wenn es unwahrscheinlich anmutet, kann im neuen I6.33 ein Bug stecken. Da der Fehler bereits in der englischen Version aufscheint, darf die Library als Fehlerquelle versuchsweise mal ausgeschlossen werden. _________________ interactive fiction database |
|
|
|
|
|
Verfasst am:
Do, 22 Jan 2015 - 14:51
|
|
|
Experte
Anmeldungsdatum: 25.03.2010
Beiträge: 660
|
|
Inform 6.32 verhält sich identisch. Auf Englisch tritt der Fehler logischerweise nicht auf, weil es bei normalen Objekten gar keinen Genus gibt. |
|
|
|
|
|
Verfasst am:
Do, 22 Jan 2015 - 16:16
|
|
|
Experte
Anmeldungsdatum: 08.12.2009
Beiträge: 923
Wohnort: Berlin
|
|
Hannes hat folgendes geschrieben: | Inform 6.32 verhält sich identisch. Auf Englisch tritt der Fehler logischerweise nicht auf, weil es bei normalen Objekten gar keinen Genus gibt. |
Die 6.32-Downloads hab ich online gar nicht mehr gefunden, wohin ist das denn entschwunden??? Da es in den Fingern juckt, hab ich ein Perlskript geschrieben, das einen Quelltext mit 500 Objekten mit abweichenden Synonymen für n/f erzeugt und mit 6.33 resp. 6.30 kompiliert, der Fehler tritt beides mal auf. Durch Intervallschachtelung kam raus, dass das Pronomen-Handling bei 431 Objekten mit je 4 name-Einträgen noch geht, beim 432. dann nicht mehr (plus Beiwerk wie Raum). Im Englischen können "it/them/him/her" verwendet werden, was in der englischen Lily-Version nicht immer zuverlässig ging. _________________ interactive fiction database |
|
|
|
|
|
Verfasst am:
Do, 22 Jan 2015 - 16:25
|
|
|
Experte
Anmeldungsdatum: 25.03.2010
Beiträge: 660
|
|
Keine Ahnung, ich hab 6.32 einfach noch für genau solche Fälle auf dem System. Danke für die Tests - scheint dann ja wohl mindestens seit 10 Jahren so drin zu sein.
Ich habe als Übergang 193/194 Objekte ausgemacht - allerdings mit durchschnittlich sehr viel mehr Namen. DEr Zusammenhang ist allerdings nicht linear (ein Name gegen ein Objekt). Ein zusätzliches Objekt wiegt mehrere Namen auf.
Im Englischen tritt es natürlich bei Singular-/Pluralunterscheidung auf. Aber da gibt es ja auch keine Behandlung diesbezüglich, insofern ist es dort kein Bug, sondern ein fehlendes Feature. |
|
|
|
|
|
Verfasst am:
Do, 22 Jan 2015 - 20:38
|
|
|
Experte
Anmeldungsdatum: 08.12.2009
Beiträge: 923
Wohnort: Berlin
|
|
Zur Pronomentabelle: Da hakt wohl eine Konstante bei etwa 1.700 Wörterbucheinträgen, die deform vermurksen könnte. Ich weiß es einfach nicht und poste einfach mal das Beipliel "Heidi" aus dem IBG mit 433 zusätzlichen Objekten "objxyz" mit xyz=0 bis 432, wobei die mit "x mobjxyz" als männliches und "fobjxyz" als weibliches Synonym jeweils mit mit "f"- und "m"-Beginn angesprochen werden können. Ein Ausstieg aus dem Pronomen-Handling ist sicher nicht im Sinne der Erfinder, egal wie viele Objekte ein Spiel beheimatat. Kompiliert wurde mit I6.33 und I6.30, die identische Ergebnisse liefern: Ab Objekt 432 ist Schluss mit dem zu erwartendem Pronomen-Handling, auszuprobieren am Ende der Objektliste mit "!!!". Ich hab das übrigens auch mit dem englischen Versionen Lib 6/11 und 6/12beta ausprobiert, was super funktioniert ("it" zumindest). Die undokumentierte Konstante MANUAL_PRONOUNS spielt dabei keine Rolle. Hier die I6-Datei:
http://forum.ifzentrale.de/pub/Test.inf _________________ interactive fiction database |
|
|
|
|
|
Verfasst am:
Mi, 6 Mai 2015 - 22:47
|
|
|
Experte
Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Ist zwar schon ein Weilchen her, aber ich habe gerade gesehen, dass die Changing-Gender-Tags nicht ganz zuverlässig abgefragt werden: In parserm.h in der Routine WordInProperty() wird darauf gesetzt, dass die Adressen der Tags > 255 sind. Die können aber durch Überlauf auch ab und zu negativ werden, und dann funktioniert das mit der Abfrage nicht mehr.
Hannes, proc, versucht doch mal bitte diese Variante der Routine WordInProperty(), falls das jetzt noch akut ist:
Code: | [ WordInProperty wd obj prop k l m g;
k = obj.∝ l = (obj.#prop)/WORDSIZE;
for (m = 0 : m < l : m++)
if (wd == k-->m) {
g = IsGenderAttribute(k-->(m+1));
if (m < l-1 && g) {
GenderNotice(obj, g);
}
rtrue;
}
rfalse;
]; |
Damit scheint es hier zuverlässig zu laufen. Die Routine StringInProperty() müsste wohl auch entsprechend geändert werden, aber die wird in der offiziellen deform-Version gar nicht benutzt, glaube ich. |
|
|
|
|
|
Verfasst am:
Fr, 8 Mai 2015 - 11:58
|
|
|
Experte
Anmeldungsdatum: 08.12.2009
Beiträge: 923
Wohnort: Berlin
|
|
ChristianB hat folgendes geschrieben: | falls das jetzt noch akut ist: |
Also sowas ist ja wohl in alle Ewigkeit akut...
Ich habs jetzt mit oben verlinktem Beispiel mit I6.33 und 500 Objekten kompiliert ausprobiert:
Code: | >u obj1
Objekt: obj1 (n), mobj1 (m), fobj1 (f).
>pronomen
Die Pronomen beziehen sich im Moment auf Folgendes:
"er": nicht gesetzt
"sie": nicht gesetzt
"es": das obj1
"ihn": nicht gesetzt
"ihm": das obj1
"ihr": nicht gesetzt
"ihnen": nicht gesetzt
"damit", "darauf", usw.: das obj1
"ihm/r": das obj1
>u mobj2
Objekt: obj2 (n), mobj2 (m), fobj2 (f).
>pronomen
Die Pronomen beziehen sich im Moment auf Folgendes:
"er": das obj2
"sie": nicht gesetzt
"es": das obj2
"ihn": das obj2
"ihm": das obj2
"ihr": nicht gesetzt
"ihnen": nicht gesetzt
"damit", "darauf", usw.: das obj2
"ihm/r": das obj2
>u fobj3
Objekt: obj3 (n), mobj3 (m), fobj3 (f).
>pronomen
Die Pronomen beziehen sich im Moment auf Folgendes:
"er": das obj2
"sie": das obj3
"es": das obj3
"ihn": das obj2
"ihm": das obj3
"ihr": das obj3
"ihnen": nicht gesetzt
"damit", "darauf", usw.: das obj3
"ihm/r": das obj3
|
Funktioniert mit dem Patch an sich super, unbefriedigend ist nur, dass "es" und "ihm" offenbar immer unabhängig vom Genus auf das letzte angesprochene Objekt gesetzt werden. Da gäbe es noch etwas Verbesserungspotential. Immerhin funktioniert schon einiges mehr als zuvor, Danke!!! _________________ interactive fiction database |
|
|
|
|
|
Verfasst am:
Fr, 8 Mai 2015 - 19:54
|
|
|
Experte
Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
proc hat folgendes geschrieben: | ... unbefriedigend ist nur, dass "es" und "ihm" offenbar immer unabhängig vom Genus auf das letzte angesprochene Objekt gesetzt werden. |
Du meinst, jedes zuletzt angesprochene Objekt, egal, ob Männlein oder Weiblein, bekommt auch noch die Pronomen fürs Neutrum verpasst? Das kann ich hier momentan nicht nachvollziehen:
Das Testlabor hat folgendes geschrieben: | Testlabor
Hier wird getestet, was das Zeug hält.
Du siehst hier einen Schrank.
>pronomen
Die Pronomen beziehen sich im Moment auf Folgendes:
"er": der Schrank
"sie": nicht gesetzt
"es": nicht gesetzt
"ihn": der Schrank
"ihm": der Schrank
"ihr": nicht gesetzt
"ihnen": nicht gesetzt
"damit", "darauf", usw.: der Schrank
"ihm/r": der Schrank
>u schrank
Du siehst nichts Besonderes an dem Schrank.
>pronomen
Die Pronomen beziehen sich im Moment auf Folgendes:
"er": der Schrank
"sie": nicht gesetzt
"es": nicht gesetzt
"ihn": der Schrank
"ihm": der Schrank
"ihr": nicht gesetzt
"ihnen": nicht gesetzt
"damit", "darauf", usw.: der Schrank
"ihm/r": der Schrank
>u schränkchen
Du siehst nichts Besonderes an dem Schrank.
>pronomen
Die Pronomen beziehen sich im Moment auf Folgendes:
"er": der Schrank
"sie": nicht gesetzt
"es": der Schrank
"ihn": der Schrank
"ihm": der Schrank
"ihr": nicht gesetzt
"ihnen": nicht gesetzt
"damit", "darauf", usw.: der Schrank
"ihm/r": der Schrank |
Wenn man dann wieder SCHRANK sagt, bleibt im nächsten Zug aber auch das Pronomen für "es" bestehen. Die pronomen werden additiv ergänzt, bis sie irgendwann mit einem aktuelleren Objekt verknüpft werden. |
|
|
|
|
|
Verfasst am:
Sa, 9 Mai 2015 - 9:47
|
|
|
Experte
Anmeldungsdatum: 25.03.2010
Beiträge: 660
|
|
Sieht für mich bestens aus! Wenn man einen Alias referenziert, wird gleichzeitig immer auch das Pronomen des Hauptgeschlechts gesetzt, also im Eingangsbeispiel:
B SCHRAENKCHEN setzt auch "ER" (von "SCHRANK").
Das finde ich aber logisch. Vielen Dank, Christian! |
|
|
|
|
|