Sie haben, wie ich finde, zwei unterschiedliche Probleme. Eines ist ein Designproblem: Wie geht man mit mehreren unterschiedlichen Objekten um, die keine unterschiedlichen sichtbaren Eigenschaften haben? Das zweite Problem ist ein technisches Problem, bei dem es einfach ist, einzelne Objekte aus einer Gruppe über Befehle zu identifizieren.
Technische Lösung
In meinen MUD-Programmiertagen habe ich gerade die Syntax für die Angabe von Ordnungszahlen hinzugefügt. Die meisten MUDs machen dasselbe, obwohl die meisten nur eine knappe Syntax unterstützen.
Beispielsweise können Sie die folgenden Wörter aus einem Feind- oder Gegenstandsargument zu einem Befehl analysieren: erstes, zweites, anderes, drittes, viertes, fünftes usw.
Sie können normalerweise zwischen "Drittel" und "Fünftel" anhalten, je nachdem, wie häufig diese Gruppengrößen in Ihrem Spiel sind. Ich habe "other" als Synonym für "second" verwendet.
Sie möchten auch eine Möglichkeit, die Ordnungszahl nur mit Ziffern einzugeben, damit Sie kein großes Wörterbuch benötigen (oder zumindest die ganze verrückte Logik, um mit englischen Ordnungszahlen umzugehen). Das Parsen von "1st", "2nd", "3rd" usw. ist ziemlich einfach. Es gibt nur wenige Sonderregeln für diese ("11.", "12." und "13.") und der Rest folgt einem einfachen Muster. Wenn Sie diesen Weg gehen, machen Sie die Suffixe optional.
Das Ergebnis ist, dass Sie Sätze eingeben können wie:
attack third goblin
pet other wolf
get 4th sword
Sie können sogar ein führendes "the" analysieren und wegwerfen, wenn Sie den 0,02% Ihrer Spieler gefallen möchten, die das Bedürfnis haben, vollständige englische Sätze auszutippen. (Es ist eine nette Funktion zur Demo, aber wirklich, niemand, der diese Spiele spielt, ist daran interessiert, so viel zu tippen, und heutzutage haben Sie Glück, wenn die Hälfte Ihrer Spieler "viertens" richtig buchstabieren kann, geschweige denn die richtige Grammatik verwenden.)
Typische MUDs und Textabenteuer verwenden eine engere Methode zur Angabe von Ordnungszahlen, normalerweise mit einer speziellen Interpunktion. Beispielsweise müssen Sie möglicherweise einen Punkt oder einen Doppelpunkt oder einen solchen einfügen, gefolgt von einer Zahl, z. B. ".5", und erhalten eine Syntax wie eine der folgenden:
kill .5 goblin
kill :5 goblin
kill 5:goblin
Beachten Sie, dass diese Lösung auch dann funktioniert, wenn Sie unterschiedliche Namen haben. Vielleicht haben Sie einen "großen Ornery-Goblin" und einen "kleinen schüchternen Goblin". Der Spieler möchte das alles nicht eingeben. Der Spieler ist am glücklichsten, wenn Sie Teilspiele unterstützen. Der Spieler möchte dennoch beide Goblins beim Tippen leicht identifizieren können. Ordnungszahlen sind eine Möglichkeit, wie der Spieler dies tun kann, vorausgesetzt, die Goblins haben eine klare Reihenfolge.
Designlösung
Haben Sie keine nicht unterschiedlichen Gegenstände und Kreaturen oder lassen Sie sie, wenn Sie dies tun, implizit als Ganzes handeln. Sie haben dies als Option zur Lösung des Problems aufgeführt. Es ist wirklich gut, aber nur, wenn Sie es vollständig können.
Stellen Sie sich den Fall vor, in dem Sie fünf Goblins in einer typischen MUD-ähnlichen Umgebung haben (miteinander verbundene "Räume"). Der Spieler betritt den Raum und sieht:
[Cavern Entrance]
There are five goblins (hostile) here.
Exits to the north and south.
Der Spieler möchte zuerst angreifen, also tippt er:
attack goblin
Der Spieler greift den ersten Goblin an (zuerst, indem er impliziert, dass kein anderer angegeben wird. Dies ist nur der Goblin, der willkürlich an erster Stelle in der Liste der feindlichen Spielobjekte steht. Der Spieler fügt dem Goblin Schaden zu. Dann sieht der Spieler:
A goblin flees north.
Der Spieler sieht sich noch einmal um und sieht:
[Cavern Entrance]
There are four goblins (hostile) here.
Exits to the north and south.
Ein Kobold floh. Das Problem ist, welcher Kobold war es? Der, den der Spieler verletzt hat? Einer der anderen Kobolde? Der Spieler weiß es nicht. Nehmen wir an, es war der verletzte Kobold für dieses Beispiel.
Der Spieler kämpft weiter:
attack goblin
Der Spieler greift den Goblin an, der jetzt der erste Goblin ist (aber zuvor der zweite Goblin war). Ein paar Momente später sieht der Spieler:
A goblin enters from the north.
Der geflohene Kobold bekam seinen Mut zurück und kehrte zurück. Wahrscheinlich wird es am Ende einer Liste im Spielcode hinzugefügt, also ist es jetzt der fünfte Kobold. Wenn der Spieler noch einmal hinschaut, sieht er:
[Cavern Entrance]
There are five goblins (hostile) here.
Exits to the north and south.
Wieder greift der Spieler an. Nur hat der Spieler keine Ahnung, welchen Kobold er angreift. Ist es der Verletzte? Ein anderer? Wie sagt er, dass einer der Kobolde verletzt ist? Wie kann er diesen Kobold ins Visier nehmen? Wir wissen, dass der Verletzte der fünfte Kobold ist, aber ohne dies zu visualisieren, kann der Spieler es nicht sicher wissen. Und Sie möchten wahrscheinlich eine übermäßig ausführliche Ausgabe vermeiden wie:
[Cavern Entrance]
There are five goblins (hostile) here.
The second goblin is injured.
The third goblin is injured.
The fourth goblin has a nasty rash.
The fifth goblin looks longingly at the second
goblin, but the second goblin is out of his league.
Exits to the north and south.
Hier kommt die Designentscheidung ins Spiel.
Eine Möglichkeit besteht darin, alle Spielobjekte desselben Typs als eine Einheit zu gruppieren. Daher haben Sie nicht fünf einzelne Goblins mit individuellen Gesundheitswerten. Sie haben eine Gruppe von fünf Goblins mit einem einzigen gemeinsamen Gesundheitswert. Immer wenn dieser Gesundheitswert unter Null gesenkt wird, wird die Anzahl der Goblins um eins verringert und die Gesundheit um den Gesundheitswert pro Goblin erhöht.
Beispiel: Angenommen, Goblins haben 12 Gesundheit und es gibt 5 Goblins. Sie haben ein einzelnes Goblin-Objekt mit einer Anzahl von 5 und einer Gesundheit von 12. Der Spieler fügt der Gruppe 20 Schadenspunkte zu. Gesundheit ist jetzt -8. Ein Goblin wird von der Anzahl abgezogen (es gibt jetzt 4 Goblins) und die Gesundheit wird um 12 erhöht (Gesundheit ist jetzt 4). Wenn der Spieler 4 weitere Schadenspunkte verursacht, wird ein weiterer Goblin getötet.
Das Kombinieren und Aufteilen von Gruppen ist in diesem Fall ein wenig wackelig, kann aber verfälscht werden. Wenn eine zweite Gruppe von Goblins auftaucht, nehmen Sie die Summe ihrer Zählungen und das Minimum ihrer Gesundheit. Wenn eine bestimmte Anzahl von Goblins fliehen sollte, wird ihre Anzahl von der Anzahl abhängig gemacht, die nicht flieht, und ein neues Gruppenobjekt mit dieser Anzahl wird mit voller Gesundheit erstellt (die ursprüngliche Gruppe sollte im Rahmen dieser Operation auch den Raum verlassen, damit Sie werden nicht automatisch wieder zusammengeführt.
Dies verändert natürlich die Dynamik des Spiels ein wenig. Der Spieler kann sich nicht mehr entscheiden, alle Goblins zu schwächen und sie dann alle in einem Flächenangriff zu beenden. Er greift implizit immer den schwächsten Kobold an. Dieser kleine Kompromiss bei der Flexibilität bietet Ihnen jedoch eine viel offensichtlichere, sauberere, verständlichere und zugänglichere Benutzeroberfläche für ein Textspiel. Es liegt an Ihren Designbeschränkungen, zu entscheiden, ob der Kompromiss angemessen ist.
Es gibt andere Variationen dieses Ansatzes, die Sie ebenfalls verwenden können. Alles, was sich einer Gruppe von Personen mit einigen breiten Gruppennummern statistisch annähert, funktioniert einwandfrei. Strategiespiele wie Heroes of Might & Magic oder Warlords machen so etwas. Anstatt sich mit einzelnen Einheiten zu befassen, verfügt der Spieler über "Stapel" von Einheiten, die als eine Einheit behandelt werden.
#
in der Ordnungsnotation zu sehen , zattack goblin #5
. Das scheint die natürlichste Sprache auf Englisch zu sein.The fifth goblin looks longingly at the second goblin, but the second goblin is out of his league.
- eigentlich klingt das lustig und FANTASTISCH. Wollen.Anstatt sie durch verschiedene Namen oder Farben zu unterscheiden, können Sie dem Spieler eine Vielzahl von Befehlen mit der Fähigkeit zur Unterscheidung geben.
Wenn beispielsweise "fünf Goblins dich angreifen" , könnten Sie entweder nummerierte oder benannte Befehle erfinden, wie "" ersten Goblin angreifen "oder" Goblin 1 anhängen ".
Dieser Ansatz ist fast so, wie Sie es bereits vorgeschlagen haben, aber anstatt eine langweilige Liste von Feinden zu benennen oder zu präsentieren, teilen Sie dem Spieler einfach den Betrag mit und der Spieler entscheidet, wie er gerne interagiert / tippt.
Sie können auch eine Datenbank mit zufälligen Namen zur Auswahl haben, wenn Sie wirklich eindeutig zwischen Feinden unterscheiden möchten.
quelle
Die Art und Weise, wie klassische Text-Abenteuerspiele im Infocom- Stil dieses Problem lösten, bestand in der Tat darin, sicherzustellen, dass jedes einzelne Objekt tatsächlich einen Namen hatte, der es ermöglichte, es eindeutig zu identifizieren.
Ein zu beachtendes Detail ist, dass man in Parsern im Infocom-Stil durch eine beliebige Kombination von Wörtern in seinem Namen auf ein Objekt verweisen kann. Wenn der Spieler also auf a
red chrysanthemum
, ared circular amulet
und a stießgreen triangular amulet
, tippte er entweder:oder nur:
würde dem Spieler erlauben, das rote kreisförmige Amulett zu nehmen, während er tippt:
würde (wenn beide Objekte tatsächlich vorhanden wären) eine Klärungsanfrage erzeugen wie:
Objekte können auch Synonyme haben, die nicht Teil ihres Anzeigenamens waren. Geben Sie beispielsweise Folgendes ein:
würde sehr wahrscheinlich auch zum Aufnehmen der roten Chrysantheme funktionieren. In der Tat würden die Spieler sehr erwarten (und dies auch immer noch tun), dass jedes gut geschriebene Spiel solche natürlichen Synonyme versteht. In ähnlicher Weise könnte ein Amulett auch mit dem Wort übereinstimmen
pendant
, insbesondere wenn es irgendwo im Spiel als eines beschrieben oder ähnlich beschrieben wurde, und das kreisförmige Amulett könnte auch als beschrieben werdenround
.Tatsächlich wird dieser Analysestil in der modernen interaktiven Fiktion immer noch sehr häufig verwendet. Sie möchten beispielsweise einen Blick darauf werfen, wie der Parser Objekte in Inform 7 erkennt , einer speziellen Sprache, die zum Schreiben dieser Art von Spielen entwickelt wurde.
Ps. Roguelike- Spiele, die normalerweise viel mehr Objekte enthalten, lösen das gleiche Problem im Allgemeinen auf andere Weise: Sie können das gewünschte Objekt aus einem Menü auswählen. Einige von ihnen erlauben es dem Spieler, einzelne Objekte oder sogar ganze Klassen von Objekten zu benennen, um das potenzielle Problem scheinbar identischer Objekte zu lösen, die sich dennoch irgendwie unterscheiden, so dass man z
quelle
Es sieht so aus, als ob der größte Teil des Territoriums für wichtige Methoden abgedeckt wurde, aber ich dachte, es wäre eine gute Gedankenübung, durchzugehen, wie Sie diese Entscheidung sowieso konzipieren möchten, und mich zu strecken, um einige Methoden abzudecken, die ich nicht gesehen habe.
Perspektiven- und Quantifizierungsmethoden
Einige der Lösungen beinhalten das Umgehen dieser Frage, indem Namen oder Merkmale verwendet werden, um die Monster zu identifizieren. Um die reinste Version dieser Frage zu beantworten, gehen wir davon aus, dass Sie mit N identischen Goblins konfrontiert sind.
Sie sind unweigerlich in einer räumlichen Anordnung angeordnet, und Sie werden am Ende einige Möglichkeiten haben, ihre Anordnung in Bezug auf Sie zu beschreiben:
Top-Down-Perspektive
Ich-Perspektive
Quantifizierung
In beiden Fällen kann die räumliche Anordnung angezeigt werden, es wird jedoch nichts zur Klärung zwischen Vielfachen im selben relativen Raum unternommen. Wir können ein Konzept der Nähe hinzufügen, das entweder allein angewendet werden kann oder um eines der oben genannten Konzepte zu erweitern.
Andere
Benennungs- und Beschreibungsmethoden
Hier gibt es eine Reihe von Ansätzen, bei denen alle die Notwendigkeit umgangen werden müssen, die Schwäche des Textmediums bei diesen Referenzformen zu beheben:
Radikalere Lösungen
Alle bisherigen Lösungen basieren auf der Annahme, dass die Aufgabe, andere Objekte mit Aktionen anzuvisieren, die des Spielers ist. Wenn wir dieser Annahme misstrauisch sind, eröffnen sich uns einige neue Möglichkeiten:
Entscheidung: Mechanik, Langeweile und Eintauchen
Eine nützliche Diskussion mit Ihnen ist wahrscheinlich: Welche Art von Tempo und Umfang möchten wir für unser Spiel haben? Sie könnten Fragen zu Ausführlichkeit und sprachlicher Reinheit stellen, aber ich denke, dies sind Werte, die letztendlich im Einklang mit Ihrer primären Entscheidung darüber stehen müssen, wie Ihr Spiel spielen wird. Wenn Ihr Spiel gelegentliche Kämpfe mit einer spärlichen Sammlung von NPCs beinhaltet, ist es meines Erachtens sehr sinnvoll, ein beschreibendes Auswahlsystem zu haben. Wenn es sich bei Ihrem Spiel um einen Hack-and-Slash handelt, bei dem Spieler Hunderte von Handys pro Stunde töten, ist es entweder mühsam, die Eigenschaften häufig zu lesen und neu einzugeben, oder sie werden auf Auslöser verschoben.
Ein Teil der Diskussion um diese Entscheidung scheint auf der Idee zu beruhen, dass "Get Amulet 2" oder "Get 2nd Amulet" das Eintauchen in die Intrusionsmetadaten irgendwie unterbricht. Ich würde im Gegenteil argumentieren, dass die Frage des Spielparsers, ob ich das rote oder das grüne Amulett gemeint habe, ein weitaus ungeheuerlicherer Angriff auf meine Aufhebung des Unglaubens ist als der erstere - er untergräbt meine Entscheidungsfreiheit und erinnert mich an das allgegenwärtige Rolle des Parsers und spricht mit körperloser Stimme. Wir leben in einer Welt, in der räumliche Entscheidungen sinnvoll sind. Du stehst nicht vor einer Polizeiaufstellung und wählst den Kerl mit verprügelten Levi's, schwarzen Haaren und Pornostache aus;
Fazit
Nur zwei der vorgeschlagenen Antworten lösen tatsächlich die Grundfrage: Wie unterscheidet das Spiel zwischen Verweisen auf ähnliche Objekte, wenn / wann sie auftreten? Eine davon besteht darin, vom Spieler nach der Anfrage eine Klärung zu verlangen, und die andere darin, eine logische räumliche Anordnung anzunehmen und anzunehmen, dass der Spieler die Mehrdeutigkeit nicht klären muss. Es gibt eine Zeit und einen Ort für beide, aber es gibt einen großen Unterschied zwischen den beiden - und ich denke, es liegt wahrscheinlich an den meisten Textspielen, diese Frage im Parser zu beantworten, anstatt zu versuchen, ein Spiel zu erfinden, in dem zwei identische Elemente verwendet werden niemals anwesend sein und sich darauf beziehen müssen.
Ich bin natürlich ein Fan einer numerischen Referenz, aber ich denke, Sie können auch eine Vielzahl der verschiedenen Ideen kombinieren, die aufgetaucht sind, um das Gefühl Ihres Spiels zu formen. Sie können diese Entscheidungen auch dem Spieler überlassen und ihm die Möglichkeit geben, zwischen einem Parser, der auf mehrdeutige Anforderungen mit einer Frage reagiert, und einem Parser, der mehrdeutige Anforderungen mit einer Annahme ausführt, zu wählen. Sie können den Spielern außerdem die Möglichkeit geben, für jedes Element einen Metadatenindikator zu generieren, mit dem sie darauf verweisen können.
quelle