Ich hätte gerne zufällige Leute mit Präferenzen für ein wirtschaftliches Strategiespiel. Nehmen wir zur Vereinfachung an, jede Person hat Alter (Anzahl), Heimatgebiet und Typ (Stadt, Dorf, ...) und Vorlieben (wie Eiscreme, ..).
Das Problem ist, wenn ich eine einheitliche Zufallsgenerierung verwenden würde (wählen Sie zufälliges Alter, Zuhause und Präferenz), wären alle Menschen ... gleichmäßig verteilt und es gäbe keine demografischen Daten, die der Spieler entdecken könnte. Mit Merkmalen meine ich zum Beispiel, dass junge Leute wie Soda, zusätzlich Leute, die im Dorf leben, dazu neigen, rot gefärbte Verpackungen zu bevorzugen (=> Spieler, die es mit verschiedenen Verpackungen nach Land versenden, verkaufen mehr). Ich möchte, dass die Personen so generiert werden, dass in den Daten immer einige demografische Besonderheiten vorhanden sind (die dem Spiel selbst nicht bekannt sein müssen).
Die Funktionen müssen und sollten nicht denen der realen Welt ähneln. Der Algorithmus sollte funktionieren, ohne dass Datenbanken von Drittanbietern erforderlich sind. Häuser für Menschen werden als Input aus dem Schritt der vorherigen Generation als Array von Tupeln mit Siedlungs-ID und Kapazität (also auch Typ) angegeben.
Was könnte ein allgemeines Verfahren für diese Art der Verfahrensgenerierung sein?
Sie scheinen eine Reihe sichtbarer Attribute zu haben, die selbst keinen Gameplay-Effekt haben (Alter, Ort ...), aber einen Hinweis auf die unsichtbaren, Gameplay-bezogenen Attribute (ihre Vorlieben) bieten.
Was Sie tun können, ist, die sichtbaren Attribute zuerst zufällig zu generieren und sie dann beim Generieren der spielbezogenen Attribute abhängig von den sichtbaren Attributen zu beeinflussen.
Zum Beispiel könnte die Formel für die Süße-Präferenz sein
random(0, 100) - random(0, age)
. Dies macht einen Senior, der Süßigkeiten mag, weniger wahrscheinlich als ein Kind, das Süßigkeiten mag.Eine andere Möglichkeit wäre, einige Charakterstereotypen (Kind, älterer Mann, Geschäftsfrau, Hipster, Punk ...) zu definieren und ihnen Standardwerte zuzuweisen.
Wenn Sie einen neuen Charakter erstellen, wählen Sie ein Stereotyp. Wenn Sie dann für die Zeichenattribute würfeln, würfeln Sie mehrere Zufallszahlen und wählen Sie den Wert aus, der dem Standardwert des Stereotyps für dieses Attribut am nächsten kommt. Auf diese Weise wird die Mehrheit Ihrer Charaktere dazu neigen, ihrem Stereotyp zu entsprechen, aber es kann und wird Ausreißer geben. Je mehr Rollen Sie machen, desto weniger Ausreißer haben Sie.
Wenn eine Reihe vorgegebener Stereotypen für Sie nicht prozedural genug ist, können Sie die Menge der Stereotypen und ihre Standardattribute sogar zufällig generieren. Ihre Spieler können dann weiterhin Korrelationen zwischen Charakteren erkennen, die auf demselben zufälligen Stereotyp basieren. Zum Beispiel mögen Leute, die Soda mögen, auch rote Verpackungen, weil es (dem Spieler unbekannt) ein Stereotyp gibt, das sowohl eine hohe Standard-Soda-Präferenz als auch eine hohe Standard-Rot-Präferenz hat und alle davon stammen.
quelle