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.