PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Algorithmus Zufallskämpfe



Ghabry
07.07.2013, 23:42
Hallo,

ist zufällig der Algorithmus bekannt, mit dem RPG2k/3 bestimmt, wann ein Zufallskampf gestartet wird?

Also in den Map-Einstellungen gibts doch diese "Encounter Rate", welche ungefair angibt, nach wie vielen Schritt ein Kampf startet. Mich würde die Zufallskomponente interessieren ^^.

Corti
08.07.2013, 09:00
Aus der Hilfe:

· [Encounter Rate] The minimum number of steps needed to initiate an encounter. For example, if the value was 20, the probability of a battle would increase every step, until you reached 20 steps, when a battle would occur. If this value is set to 0, you will never get into a battle.
Sagt im Detail nicht viel aber man kann sich grob ableiten wie mans wohl nachbauen könnte.

MagicMaker
08.07.2013, 10:28
Wenn man mal davon ausgeht, dass das nicht in irgendwelchen komplizierten Kurven ausartet,
würde ich von einem konstanten Anstieg ausgehen, der sich hieraus ermittelt:

Schrittzahl / Kampfrate

20 eingestellt, 7 gelaufen, 7/20, 35% Fight (0.35)
30 eingestellt, 30 gelaufen, 30/30~>1/1, 100% Fight (1.0)

Es würde zumindest das wiedergeben, was die Hilfe aussagt.

Thuin8
08.07.2013, 15:42
Wenn man mal davon ausgeht, dass das nicht in irgendwelchen komplizierten Kurven ausartet,
würde ich von einem konstanten Anstieg ausgehen, der sich hieraus ermittelt:

Schrittzahl / Kampfrate

20 eingestellt, 7 gelaufen, 7/20, 35% Fight (0.35)
30 eingestellt, 30 gelaufen, 30/30~>1/1, 100% Fight (1.0)

Es würde zumindest das wiedergeben, was die Hilfe aussagt.

Ich hab mich noch nicht groß damit beschäftigt und weiß auch gerade nicht, wie hoch man den Wert setzen kann. Ich hätte jetzt aber irgendwie erwartet, dass die Zahl, die man einstellt der Mittelwert ist, wann ein Kampf anfängt, und nicht die absolute Spitze an Schritten, die nur im äußerst seltenen Fall erreicht werden kann und wann der Kampf allerspätestens beginnt. Alles andere wäre in meinen Augen idiotisch.
Wenn das so ist, wie ich mir das vorstelle, kann ich jetzt natürlich nicht sagen, ob das über eine Normalverteilung bestimmt wird, oder wie auch immer. Um das sicher zu bestimmen, muss man wahrscheinlich einfach mal viel testen und sich die Ergebnisse notieren. Dann weiß man ja, nach vielen Versuchen, in welchem Rhythmus die Kämpfe im Mittel beginnen, wenn man was für einen Wert einstellt.

Corti
08.07.2013, 16:18
Der Wert wird nicht ohne Grund als "Encounter every X Steps" angegeben, auch wenn das sachlich nicht ganz richtig ist. Eine Chance bei jedem Schritt führt zu sehr zufälligen Werten. Diese Chance in Abhängigkeit der schon gemachten Schritte stellt sicher, dass der Effekt innerhalb von X Schritten garantiert auftritt. Will man zB alle 33 Schritt einen Kampf ist die Chance 100/33 = ~ 3% und mit einer 3% Chance auf einen Kampf kannst du es locker haben, dass du durch den halben Dungeon läufst ohne einen Kampf.


Die genaue Chance kannste simulieren, oder auch berechnen. Ich benutze etwas ähnliches für zufällige Effekte in meinem Spiel und simuliere mir das.D.h. wenn im Tooltip steht 36% Chance dann ist das 20% + X% bei jedem Failproc. Statistisch kommt der Effekt in 36 von 100 Anwendungen vor aber man hat 'ne Sicherheit in einem gewissen Zeitfenster ein vorkommnis zu haben. Besonders spieldynamikrelevante Effekte lassen dadurch nicht den reinen Zufall bestimmen, ob die Klasse funktioniert.

Ghabry
08.07.2013, 19:37
So habe jetzt einfach mal paar simple Tests gemacht.

Also linear scheint der Anstieg nicht zu sein.

Beobachtungen:
Bei 1 ist wirklich jeden Schritt ein Kampf. (wobei 1 eine dusslige Einstellung ist die hoffentlich niemand macht ^^)
Bei 2 ist nach 2 Schritten wesentlich häufiger ein Kampf als nach 1 Schritt (hab das mit 30 Kämpfen probiert, fast alle waren nach 2)

Der Vorschlag von Corti scheint also nicht ganz zu passen, bei 2 müsste dann jeder Schritt 50% haben, wirkt aber weniger. Aber die Idee findet ich auf jeden Fall gut.

Bei 3 sind auch öfter mal 5 Schritte möglich.

Bei 10 war das höchste was ich erreicht hatte 17.

Maximal das doppelte schein also der Höchstwert zu sein.

Hier mal noch rein informativ der Algorithmus vom RPG XP bis Ace Lite in Pseudocode (bei RGSS kann man so schön spicken ;)):


Sei n die Encounter rate
Sei X = zufall(0, n-1) + zufall(0, n-1) + 1.
Verringere X nach jedem Schritt um 1, um 2, sofern in Gebüsch.
Wenn X = 0, dann beginnt der Kampf
[Gehe zu Anfang]


Wegen 2x würfeln erzeugt der Algorithmus eine Normalverteilung (sonst wäre alles gleichwahrscheinlich), Bsp. für encounter rate = 5:

0: 0,0
1: 0,1 0,1
2: 0,2 1,1 2,0
3: 0,3 1,2 2,1 3,0
4: 0,4 1,3 2,2 3,1 4,0
5: 1,4 2,3 3,2 4,1
6: 2,4 3,3 4,2
7: 3,4 4,3
8: 4,4

Was auch Thuin8s Idee bestätigen würde.