Einzelnen Beitrag anzeigen

Benutzerbild von Taladan
Taladan

Registriert seit: 5. Aug 2003
Ort: Osnabrück
505 Beiträge
 
Delphi 2005 Professional
 
#15

Re: [PHP] Kämpfe bei Browsergames mit verschiedenen Einheite

  Alt 26. Nov 2005, 22:46
Empfehlenswert wäre da nicht feste Werte auf Angriff oder Parade. Hatte mal vor einiger zeit was ähnliches Geplant. In meinen Test haben feste Werte plus modi doch recht wahrscheinliche Ende. Hier wäre ein anderer Modi (aus P&P RP abgeschaut), was das ganze doch unwahrscheinlicher macht, das ein kleiner einen großen umhaut aber trotzdem möglich läßt.

Alle werte sollten irgendwo zwischen 5-20 liegen (nicht zu hoch greifen, da an sonnsten die Rechnerei später fast außerdimensionale Zustände bekommen könnte).

Select * from Einheiten where Position=(eine position, falls Weltenbasierend oder Person, falls Personenbezogen)

Nu die Einheitenwerte eine aus eigener tabelle auslesen, hier besten jede Einheit eine eigene position (ich empfehle einzelne einheiten, da massen wieder ähm zu plump sind).

Zum Kampf:

Beispiel:

3 Krieger vs. 2 Monster

AT= 6 8
PA= 3 5
LeP= 6 9
TP= 1W3 2w4
RS = 3 1
Attacken: 1 1
Parade 1 1
Ini 3 5

So zu den Werten AT=Attacke PA= Parade LeP = Lebenpunkte, TP 1W3 bedeutet das dieser bei treffer 1x einen Schaden von 1-3 macht, das monster jedoch 2x von 1-4 (effektiv möglich 2-8).

Kampfscript würde ungefähr so aussehen (Kampf-Gruppierung aufstellen)
1x 1 Krieger vs 1 Monster
1x 2 Krieger vs 1 Monster

oder User-Defined
1x 3 Krieger vs 1 Monster
1x - vs 1 Monster
(was bedeutet, das das monster einen der drei monster angreift, aber einfachhalber immer den selben)

Jeder Krieger hat 1 Attacke und 1 Parade pro Runde.

Allgemeines Kampfscript:

Begin:
Die Figur mit den höchsten iniwert hat den ersten schlag (Hier kann man noch einen Randomwert von 1W6 einrichten, der jede Runde neu ausgewürfelt wird)

Attacken:
Random(20) < AT = daneben
Ranodm(20) > AT = getroffen

Paraden:
Random(20) < PA Abgewehrt
Random(20) > PA getroffen

Treffer:
Krieger: LeP - (Random(3) - RS(des Gegners))
Monster: LeP - (2xRandom(4) - RS(des Gegner))

Jeder darf so häufig angreifen wie er Attacken hat pro runde, selbe gilt für die auch Verteidigung, welche jedoch nur bei einer geglücken Attacke verbraucht wird (verfällt dann aber am Ende der Runde).
Bei 3K vs 1M bedeutet dies, das, wenn alle treffen, das monster nur den ersten schlag abweren könnte.
Nach jeder Runde muß sich jeder Kampfteilnehmer neu Orientieren, um evtl neuen gegner zu bestimmen.

3 vs 1M und - vs 1M
1 Runde
Monster1 greift Krieger 2 an. 9 = Daneben.
Monster2 greift Krieger 1 an. 12 = Daneben.
Krieger1 greift Monster1 an. 10 = Daneben.
Krieger2 greift Monster1 an. 2 = Getroffen.
Monster1 versucht zu parieren. 2 = Ausgewichen
Krieger3 greift Monster1 an. 14 = Daneben.

2 Runde:
Monster1 greift Krieger 2 an. 3 Getroffen.
Krieger 2 versucht zu parieren. 12 - Nicht pariert
Krieger 2 erhält 3 Schadenspunkte. (1w4 = 2 2w4=4 zusammen 6 - RS 3= Schaden 3)
Krieger1 greift Monster1 an. 10 = Daneben.
Krieger2 greift Monster1 an. 2 = Getroffen.
Monster1 erhält 2 Schadenspunkte. (1w3 = 3 - RS 1= Schaden 1)
Krieger3 greift Monster1 an. 4 = Getroffen.
Monster1 bekommt durch seine starke rüstung keinen schaden (1w3 =1 - rs 1 = schaden 0)

usw.
Irgrendwann ist einer hin und der Sieger muß sich einen verbleibenen Gegner suchen.
Evtl kann man hier neben Gold auch Erfahrungspunkte verteilen und so die Sieger aufsteigen lassen. Wodurch sie in höheren Stufen dann stärker zuschlagen oder besser Parieren, mehr attacken haben usw.

Natürlich kann man viel Modifizieren. So kann einer eine andere Waffe tragen (anderer Schaden) oder Kampfreflexe bekommen (höhrer Iniwert) oder besser mit der Waffe umgehen können, per Talent (Höhere AT Wert). Patzer, Kampfmanöver, Zauber usw. können vieles verändern.

Wie man das macht.
Um in Delphi Worten zu sprechen. Um bei obrigen Beispiel zu bleiben, mußt für jeden Teinnehmer ein eigenes Objekt erstellen. Nicht zu vergessen, das einige werte Statisch sind (AT, PA) andere Varibel (LeP und INI), daher brauchen letzte natürlich zwei zeilen (z.b., max. LEP und akt. LeP)
Dann noch eine INI Tabelle (Wann darf Object handeln) und eine Zieltabelle (Welches Object wen angreift). Evtl kommt noch eine Entfernungstabelle hinzu, was alles wieder komplierter machen kann. Dann kann man auch gleich Waffenreichweite usw. hinzufügen (ups ich schweife ab)
In einen Browsergame empfehle ich dir, nicht mehr als zwei Spieler einen Kampf machen zu lassen. da dies doch sehr viel (häufig nutzlosen) Skripting zu folge hat (davon abgesehen, das du dafür sogen mußt, das die spieler gleiche chancen haben bis hin zum Con-Verlußt).

Für weiteren Ideen stehe ich gern zur verfügung.

Gruß dat Tala

PS: Bevor du fragst. Außer auf dem Papier existiert mein Spiel mangels Zeit nicht.
Marco
Wer Rechtschreibfehler findet, der darf sie behalten

Carpe Diem - Nutze den Tag (und zwar den ganzen!)
  Mit Zitat antworten Zitat