Gefährtenproblem mathematisch lösbar Zitat:
Zitat von Rako Befürchtet sonst noch jemand überall Klonen seiner Gefährten über den Weg zu laufen? |
Ich zitiere Dich mal, Rako, weil Du als erster diese Frage aufgeworfen hast. Laut einer Aussage von Bioware in einer der Interviews hat denen das ja lange Kopfzerbrechen bereitet. Ich habe nicht verfolgt, wie die aktuelle Lösung aussieht. Nach der Diskussion hier in diesem Thread zu folgen, treffen wir eben alle Nase lang auf jemanden mit dem gleichen Begleiter. Das muß aber keine Klonbegegnung sein. Zumindest könnten sich die gleichen Gefährten äußerlich unterscheiden.
Das Problem ist mathematischer Natur und trivial. Also auch trivial lösbar. Hier kommt sie:
(1) Jeder Begleitcharakter hat
äußerliche Eigenschaften, die diesen definieren. (Hautfarbe, Haare, Größe, Flecken, etc.)
(2) Diesen Satz an Eigenschaften darf Bioware nicht fixieren, sondern muß ihn
variabel halten. (Beispiel: Die Hautfarbe der ersten bekannten Gefährtin 'Vette' kann von einem tieferen zu einem etwas helleren Blau variabel sein.)
(3) Die Anzahl der möglichen
Varianten ein und desselben Gefährten ergibt sich aus den Faktoren: Anzahl variabler Äußerlichkeiten (Merkmale) und Anzahl der Parameterwerte für jede Äußerlichkeit.
(4) Diese Merkmale stellt der Spieler nicht selber ein, wegen der Gefahr gleicher Einstellungen unter zwei oder mehreren Spielern. Die Einstellungen werden
vom System bei Erstellung des Hauptcharakters vorgenommen.
(5) Das einzige Kriterium, was zwei Spieler gleicher Klasse (beim Spielstart) unterscheidet, ist auch die Basis zur eindeutigen Bestimmung der Äußerlichkeiten der Gefährten: Das ist der
Name des Hauptcharakters. Dieser Alphacode [a...z]* ist einmalig.
(6) Das mathematische Problem läßt sich jetzt auf zwei zu optimierende Parameter reduzieren:
S : Summe der Varianten ein und desselben Gefährten
L : Mindestlänge der Namen der Hauptcharaktere
Diese beiden Parameter (S und L) müssen so groß gewählt sein, daß sie jeweils ihre folgenden Bedingungen (a) und (b) erfüllen:
(a) S >= Z Z : Obergrenze der Anzahl der Spieler
Z definiert also eine angenommene Obergrenze an Spielern, die teilnehmen.
[Beispiel: Z = 20 Millionen]
m : Anzahl äußerlicher variabler Merkmale
[Beispiel: Haarfarbe, Augenfarbe, Hautfarbe, Größe, Narben, Statur, etc.]
i : Äußerliches Merkmal (1 <= i <= m)
[Beispiel: i = 12 -- Fleckenmuster auf Armen; i = 6 -- Haarlänge]
Ai : Anzahl der Parameterwerte für äußerliches Merkmal i
[Beispiel: A3 = 8; Basis für Vettes Hautfarbe #4f24bd, #3a0bb3, ...]
S = A1 * A2 * A3 * ... * Ai * ... * Am
S = Produkt(Ai) über alle 1 <= i <= m
Beispiel: S = 16 * 18 * 8 * 15 * 11 * 12 * 5 = 22.809.600 > Z = 20.000.000
Hier habe ich 7 Merkmale gewählt mit einer Bandbreite von 5 (bei A7) bis 18 (bei A2) Ausprägungen.
Wie die 22.809.600 Vettes aussehen, bestimmt also das System. Die Haare deiner Vette können 4 cm länger ausfallen und sie kann 7 cm kleiner sein als bei deinem Nachbarn. Die ästethische Kunst für die Designer ist es, hier das richtige Maß für die Ausprägungen zu finden; sprich, die einzelnen Eigenschaften frei von Extremen zu halten (beispielsweise keine 2m Körpergröße).
(b) Bestimme L so, daß Länge(w = Decodiere(Charaktername der Länge L)) = m
Die Mindestlänge der Namen für einen Hauptcharakter muß so groß sein, daß es auf ein eindeutiges alphanumerisches Wort w der Länge m abgebildet werden kann. Das ist trivial und kann auf tausend verschiedene Wege erreicht werden.
Zur eindeutigen Bestimmung einer der beispielsweise 22.809.600 Gefährtenvarianten von Vette braucht man ein alphanumerisches Wort w ([a..z,A..Z,0..9]*) der Länge m. Das Wort w = b1b2b3...bm muß also soviel Zeichen beinhalten, wie es äußerliche Ausprägungen gibt. Im Beispiel oben sind das 7; also w = b1b2b3b4b5b6b7, wobei "bi" der Buchstabe des Wortes an der Stelle i bedeutet.
Das
Alphabet für den Buchstaben b an der Stelle i des Wortes muß mindestens so groß sein, wie es Parameterwerte für diese Ausprägung i gibt. (Das ist natürlich kein Problem, ASCII hat ja schon 255 Zeichen). Ein Buchstabe/Zeichen definiert also einen ganz konkreten Parameterwert einer Ausprägung.
Beispiel: w = vjEo-9t (Das sind 7 Zeichen. b3 = E wählt die 5. Basisfarbe für Vettes Hautfarbe von 8 möglichen Farben)
Wie macht man nun aus einem eindeutigen Charakternamen "Darth Sidious" ein eindeutiges Wort "vjEo-9t"? Das ist mit Verschlüsselungstechnik trivial und muß hier nicht diskutiert werden.
Ist mir heute morgen eingefallen. Kann Schwachstellen enthalten. Dann bitte Feedback. Bioware wird das nicht mehr jucken, die haben ihre Lösung im Kasten. Und dem System zu vertrauen, daß jede Kombi an Ausprägungen eine Vette immer noch nach Vette aussehen und nicht verunstalten läßt, ist ja auch eine Überwindung. Alle 22 Mio. Varianten kann man ja nicht auf Ästhetik abklappern.
EDIT: Hmm... Ne, klappt nicht mit dem Beispiel. Die Verschlüsselung von "Darth Sidious" wird beispielsweise folgendes liefern "bfjks6f7ds6ifutgzr3o2hf7ilfagis7ezf4hi4fgifjs df47 886gdg". Daraus muß man dann die eindeutige Parametrisierung einer Vette filtern.