AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP] Kämpfe bei Browsergames mit verschiedenen Einheiten

[PHP] Kämpfe bei Browsergames mit verschiedenen Einheiten

Ein Thema von Master_RC · begonnen am 24. Nov 2005 · letzter Beitrag vom 11. Dez 2005
Antwort Antwort
Seite 2 von 4     12 34   
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#11

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

  Alt 26. Nov 2005, 23:01
Ich hab auch mal eins programmiert und habs so gemacht:
In der Tabelle wo die Ressourcen drinnen stehen, steht auch ein UNIX-Timestamp. Und zwar der, zu dem die Daten das letzte Mal aktualisiert wurden. Dann rechne ich mit die Sekunden aus, die nachzurechnen sind, und fertig. Dann kann man schon rechnen.
So kann man das im Prinzip mit jedem Zeitlichbedingten Faktor machen.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von Master_RC
Master_RC

Registriert seit: 18. Jan 2005
459 Beiträge
 
Delphi 7 Enterprise
 
#12

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

  Alt 26. Nov 2005, 23:03
k, leutz

Also das Ganze soll so aussehen:

Es gibt eine eigene Tabelle für Einheiten (hui...)

Meinetwegen:
id, name, owner, gruppe, ...

tja, jetzt wäre es richtig schön, wenn man auf einer seite (meinetwegen auf der man den angriff starten kann) per Haken bei den Einheiten anwählen kann, wer in den Krieg ziehen soll.
(Checkbox, weil ich es machen will, dass jede Einheit individuell sein kann )

So...
meine Probleme:
Wie löse ich das mit den Haken - bzw. wie mache ich dazu eine SQL-Abfrage?

und wie gehts dann weiter ^^

Ich hätte das gerne so:

Ich einer Tabelle wird abgespeichert, welche Kämpfe noch bevorstehen und wie lange es noch dauert, bis die schlacht anfängt.
=> Im Mittelalter dauerte es auch, bis man zum Schlachtfeld kam

So...
jetzt wenn ein Spieler meinetwegen eine neue Seite öffnet - oder sich ein Spieler neu einloggt - dann soll überprüft werden, welche Schlachten bereits überfällig sind und diese eben dann simuliert.

//EDIT:
-------------------------
Zitat von faux:
Ich hab auch mal eins programmiert und habs so gemacht:
In der Tabelle wo die Ressourcen drinnen stehen, steht auch ein UNIX-Timestamp. Und zwar der, zu dem die Daten das letzte Mal aktualisiert wurden. Dann rechne ich mit die Sekunden aus, die nachzurechnen sind, und fertig. Dann kann man schon rechnen.
So kann man das im Prinzip mit jedem Zeitlichbedingten Faktor machen.

Grüße
Faux
Tut mir Leid, verstehe den Zusammenhang nicht
Ein Volk ist nur soviel wert, wie es dessen Toten ehrt.
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#13

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

  Alt 26. Nov 2005, 23:22
Zitat von Master_RC:
//EDIT:
-------------------------
Zitat von faux:
Ich hab auch mal eins programmiert und habs so gemacht:
In der Tabelle wo die Ressourcen drinnen stehen, steht auch ein UNIX-Timestamp. Und zwar der, zu dem die Daten das letzte Mal aktualisiert wurden. Dann rechne ich mit die Sekunden aus, die nachzurechnen sind, und fertig. Dann kann man schon rechnen.
So kann man das im Prinzip mit jedem Zeitlichbedingten Faktor machen.

Grüße
Faux
Tut mir Leid, verstehe den Zusammenhang nicht
Das liegt vielleicht daran, dass faux die Ressourcenverwaltung meinte und nicht das Kampfsystem, um das es dir ja erstmal geht. Insofern ist die Aussage erstmal nicht so wichtig, zumindest solange es in deinem Browserspiel keine Ressourcen gibt.
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von Master_RC
Master_RC

Registriert seit: 18. Jan 2005
459 Beiträge
 
Delphi 7 Enterprise
 
#14

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

  Alt 26. Nov 2005, 23:32
Axo, ja

Ja, ja, so ein Ressourcensystem hab ich schon gemacht
Natürlich noch etwas ausgeschweifter, aber trotzdem danke für den hinweis

Bitte zurück zum Thema
Ein Volk ist nur soviel wert, wie es dessen Toten ehrt.
  Mit Zitat antworten Zitat
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, 23: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
Benutzerbild von Master_RC
Master_RC

Registriert seit: 18. Jan 2005
459 Beiträge
 
Delphi 7 Enterprise
 
#16

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

  Alt 27. Nov 2005, 00:12
boah, das ist jettz ein bisschen viel auf einmal
ich werds mal abspeichern und in ruhe durchgehen...

Natürlich werden nur max. 2 Spieler bei einem Kampf teilnehmen

Ist aber ne recht coole Idee und so wie ich das sehe aus schön erweiterbar

Jetzt nur mehr eins:
Wie genau lese ich das nun aus der DB aus?
Ich hätte das schon gerne mit den Checkboxen bei Einheiten

Also was ausgelesen werden muss:
Checkboxen - welche Einheiten sollen mit?
und
Wie soll ich auslesen, welche Einheiten in einer Schlacht sind?

IDEE:
Ich starte einen Angriff:
Auswahl per Checkboxen (öh... wie geth das? ^^)
Dann werden die ids der Einheiten (auto_increment - id) in eien DB gespeichert.
Die DB "schlachten" könnte folgendermaßen aussehen:
id int(x) [um per Admin eine Schlacht rauszulöschen]
angreifer int(x) [id des Spieler, der angreift]
verteidiger int(x) [id des Verteidigers eben]
einheiten string(x) [alle ids der angreifenden Einheiten - Bsp.: "1,4,22,24,31,5"]

So...
wenn nun eine Schlacht stattfindet, wird einfach überprüft, welche Einheiten des Verteidigers grade eben zum Verteidigen bereit sind und die Einheiten des Angreifers werden halt so ausgelesen, dass ´einheiten´ exploded wird, etc...

Kann das so klappen oder hat jemand was besseres?

//EDIT:
Am Rande: Kennt jemand ein Opensource-Spiel, das diesen "Idealen" sntspricht? Wenn ja, kann man ja was rausgucken
Ein Volk ist nur soviel wert, wie es dessen Toten ehrt.
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#17

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

  Alt 27. Nov 2005, 03:39
Zitat von Master_RC:
IDEE:
Ich starte einen Angriff:
Auswahl per Checkboxen (öh... wie geth das? ^^)
Dann werden die ids der Einheiten (auto_increment - id) in eien DB gespeichert.
Die DB "schlachten" könnte folgendermaßen aussehen:
id int(x) [um per Admin eine Schlacht rauszulöschen]
angreifer int(x) [id des Spieler, der angreift]
verteidiger int(x) [id des Verteidigers eben]
einheiten string(x) [alle ids der angreifenden Einheiten - Bsp.: "1,4,22,24,31,5"]

So...
wenn nun eine Schlacht stattfindet, wird einfach überprüft, welche Einheiten des Verteidigers grade eben zum Verteidigen bereit sind und die Einheiten des Angreifers werden halt so ausgelesen, dass ´einheiten´ exploded wird, etc...

Kann das so klappen oder hat jemand was besseres?
Der "explodierte" String gefällt mir nicht so recht. Man kann es zwar so machen, aber das optimale ist es nicht, da man den String jedesmal zerlegen muss uns somit die Datenbank-Abfragen erschwert werden. Statt dem String einheiten könnte man zwei zusätzliche Spalten nehmen, in denen IDs gespeichert werden:
int angriffID
int verteidigungID

Dann macht man eine zusätzliche Tabelle, nennen wir sie mal "Look-Up-Table", mit zwei Spalten:
int angriffID
int einheit

Der erste Wert entspricht der Spalte angriffID oder verteidigungID aus der Tabelle "schlachten". Der zweite Wert (einheit) ist eine eindeutige Nummer (ID) für eine bestimmte Einheit (die genauen Angriffswerte der Einheit könnten dann z.B. in einer weiteren Tabelle gespeichert sein).
Ein Ausschnitt daraus könnte wie folgt aussehen:
Code:
angriffID   einheit
1            1
1            4
1            22
1            24
1            31
1            5
2            7
2            9
...         ...
Somit weiß man dann, dass z.B. die Einheiten mit der ID 1,4,22,24,31,5 zum gleichen Angriff/Angriffsziel gehen.

Somit bekommt man z.B. über SELECT * FROM look_up_table WHERE angriffID=x alle Einheiten-IDs für den Angriff mit der Nummer x.
Nehmen wir also an, der obige Tabellenausschnitt stelle alle bisherigen Einträge dar, und ein Beispieldatensatz aus der Tabelle "schlachten" wäre
Code:
id angreifer verteidiger angriffID verteidigungID
77  23        45          1         2
Demzufolge hätte der Spieler mit der ID 23 den Spieler 45 angegriffen. Die angreifenden Einheiten sind unter der AngriffsID 1 zusammengefasst, laut zweiter Tabelle sind das also die Einheiten 1,4,22,24,31 und 5. Die verteidigenden Einheiten des anderen Spielers, zusammengefasst unter der verteidigungsID 2, sind die Einheiten 7 und 9.

Das wär's erstmal dazu.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von Master_RC
Master_RC

Registriert seit: 18. Jan 2005
459 Beiträge
 
Delphi 7 Enterprise
 
#18

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

  Alt 27. Nov 2005, 13:15
Boah, du hast mich genau verstanden

Mir selbst hat der Explode auch nit gefallen, abe rich wär zu der Uhrzeit auf nichts anderes gekommen ^^'

So...
jetzt eigentlich nur mehr die letzten beiden Fragen:

1. Wie finde ich eine einmalige Schlachten-ID, die ich dann auch für die Einheiten in der look_up nehmen kann?

2. Wie führe ich nun dann den Kampf aus?
Also wie das thematisch funktioniert, hat ja Taladan schon erklärt, aber wie programmiere ich sowas?
Ihr müsst wissen, dass ich zwar schon länger progge (auch Browsergames) aber bisher nur Rollenspiele mit 1v1 Systemen Also so ein Strategiespiel ist für mich absolut neues Gelädne
Ein Volk ist nur soviel wert, wie es dessen Toten ehrt.
  Mit Zitat antworten Zitat
Benutzerbild von Taladan
Taladan

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

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

  Alt 27. Nov 2005, 13:44
Zitat von Master_RC:
1. Wie finde ich eine einmalige Schlachten-ID, die ich dann auch für die Einheiten in der look_up nehmen kann?
Meistens sind DB mit PHP ja MySQL, diese haben ein Auto_Inc feld. Jede Schlacht bekommt eine Kennung. Das wäre in einer weiteren Tabelle fein. Dort kannst du dann auch für später das ergebnis hinpacken. Diese Kennung packst du dann in dein Look-Up-Table. Damit hast du gleich zwei dinge auf einmal. 1. deine Uniquire-ID und zweites eine Art Logbuch. So wollte ich es zumindest machen.

Zitat von Master_RC:
2. Wie führe ich nun dann den Kampf aus?
Also wie das thematisch funktioniert, hat ja Taladan schon erklärt, aber wie programmiere ich sowas?
Ihr müsst wissen, dass ich zwar schon länger progge (auch Browsergames) aber bisher nur Rollenspiele mit 1v1 Systemen Also so ein Strategiespiel ist für mich absolut neues Gelädne
Oh da fallem mir viele Möglichkeiten.
1. Automatiesiert: Die einfachste ist, es automatisiert machen zu lassen (Der Server bestimmt die Handlung). Bedeutet der Spieler erhält am Schluß nur eine Auswertung des Schlachtenverlaufs (wie bei meinen vorherigen Posting). Dieses kann man über Formeln und Proceduren in PHP lösen.
Die anderen Möglichkeiten sind nur möglich, wenn beide Teilnehmer eingeloggt sind. Hier muß man zusätzlich auf evtl Con-Lost achten.
2. Ein Kampfscreen, halbautomatiesiert: Eine Quasigegenüberstellungsanzeige. Hier kann der Spieler den Kampfablauf im vorfeld der Runde bestimmen, was er mit seinen Einheiten macht. Diese werden dann Automatisch im Inizeitraum ausgeführt. Jeder Spieler hat eine bestimmte Zeit seine Befehle für die Runde zu gehen.
3. Ein Kampfscreen, manuell: Eine Art Kampffeld wird beiden Teilnemern angezeigt. Ähnlich einen Schachbrett (wobei hier 6eck-Felder eher die richtige Wahl ist). Abwechselnd darf jeder in seiner Ini-Phase seine Einheitenbefehle bestimmen. (Gehen, Angreifen, Zaubern). Jeder spieler hat eine bestimmte Zeit seine befehle pro Einheit zu geben.

Am leichtesten ist natürlich Nr. 1 zu scripten. Hier gäbe es noch eine Abwandlungsmöglichkeit, das jede Einheit eine art Kampfscript vom Spieler bekommt. Magier z.b. erst starke Zauber, dann Schwache, dann Kämpfen. usw. Ein Kampfscript ist aber fast genau so schwer zu scripten wie Nr.2, daher wähle hier lieber Nr.2
Am schwirigsten ist Nr. 3. Was ich rein über PHP eher als nahezu unmöglich ansehe (nicht so ASP.Net, hier sehe ich es eher als Herausforderung).
Da mich dieses Thema sehr interessiert, kannst du dich auch gern per ICQ an mich wenden.

Gruß Marco

PS: Wer P&P RPG spielt, merkt, das sich fast jedes Computer-Spiel (mit Verstand), sei es Rollenspiel, Ego-Shooter oder Strategie, ein wenig nach diesen oder jenen RPG-Schema orientiert. Allein Wertveränderungen und Geschwindigkeiten (und damit die dahinterliegenden Formeln) werden häufig intern ähnlich gehandelt. Im laufe der Zeit haben sich natürlich andere Wege gebildet, aber die Grundzüge sind fast überall halt ans RPG angelehnt.
Marco
Wer Rechtschreibfehler findet, der darf sie behalten

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

Registriert seit: 18. Jan 2005
459 Beiträge
 
Delphi 7 Enterprise
 
#20

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

  Alt 27. Nov 2005, 13:47
Ja, schon klar, wie das aussehen soll, das Kampfscript, nur wie soll das in PHP aussehen? Also dass zwei Einheiten mit drei kloppen, etc? (Variante 1)

So...
die Unique-ID per auto_increment ist mir auch klar, nur wie kann ich dann bereits beim Eintragen wissen, wie die lautet? Kann man die irgendwie sogar gleich ebstimmen?
Ein Volk ist nur soviel wert, wie es dessen Toten ehrt.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 22:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf