Zurück   klamm-Forum > klamm-Lose > Lose4Scripts

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29.01.2011, 00:12:30   #1 (permalink)
Netzibank.de
Benutzerbild von Die-Fackel

ID: 42693
Lose-Remote

Die-Fackel eine Nachricht über ICQ schicken Die-Fackel eine Nachricht über Skype™ schicken
Reg: 23.04.2006
Beiträge: 3.781
Standard C++ Fachmann gesucht für Browsergameeventhandler

Hallo zusammen,

im Moment läuft gerade eine BETA zu einem Open Source Browsergame das ich ein wenig umändern habe lassen um es Klammfähig zu machen.

Das Problem ist, das es keinen anständigen Eventhandler gibt. Die ganze Kampfformel wurde in PHP umgesetzt und ist ... naja was soll ich sagen.
Das ist absoluter Schmarn.

Ich habe mich mit einem der Progger des Projektes unterhalten und er meint das man einen anständigen Eventhandler in C++ haben müsste.
In PHP kann man das nämlich vergessen. Da geht der Server in die Knie. Sonst hätten wir das auch selbst hinbekommen.

Von C++ verstehe ich absolut nur Bahnhof.

Ich habe hier von Ihm einen Link bekommen in dem ein Kampfscript in C++ geschrieben wurde.
Das ganze müsste jetzt so compiliert werden das es mit dem Script interagieren kann.

Kann sein das sich das ganz schön dubios anhört was ich da von mir gebe aber ich hab davon halt echt keine Ahnung.

Würde mich freuen wenn sich hier mal ein C++´ler finden würde der mal auf unserem Teaspeak vorbeischaut um das ganze näher zu erklären.

An Losen soll es nicht liegen

Gruß
Fackel
Intel I5-3570-K | Corsair H50 | Gigabyte Z77X-UD3H | MSI Gaming R290x 8GB
G.Skill Ripjaws 8GB | Logitech G9x | Razer Goliathus | Sennheiser PC161
Games: BF3 - BF4 - Mein Clan www.501st-Legion.de

Geändert von Die-Fackel (29.01.2011 um 00:38:30 Uhr)
Die-Fackel ist offline   Mit Zitat antworten
Alt 29.01.2011, 14:14:22   #2 (permalink)
return void
Benutzerbild von ice-breaker

ID: 93995
Lose-Remote

ice-breaker eine Nachricht über ICQ schicken
Reg: 27.04.2006
Beiträge: 6.271
Standard

Zitat:
Zitat von Die-Fackel Beitrag anzeigen
Ich habe mich mit einem der Progger des Projektes unterhalten und er meint das man einen anständigen Eventhandler in C++ haben müsste.
In PHP kann man das nämlich vergessen. Da geht der Server in die Knie. Sonst hätten wir das auch selbst hinbekommen.
nur weil es schlecht umgesetzt wurde, muss es nicht schlecht sein, dass in PHP zu bauen
Das Problem wird viel mehr der Algorithmus zur Berechnung sein bzw. die Komplexität dahinter, als das es in PHP geschrieben wurde.

Zitat:
Zitat von Die-Fackel Beitrag anzeigen
Ich habe hier von Ihm einen Link bekommen in dem ein Kampfscript in C++ geschrieben wurde.
Das ganze müsste jetzt so compiliert werden das es mit dem Script interagieren kann.
Bedenke:
Wenn es in C++ als PHP-Extension geschrieben wird, dann muss für jede Änderung am Kampfscript das PHP oder PHP-Modul neu kompiliert werden, also ein beträchtlicher Aufwand.

Zitat:
Zitat von Die-Fackel Beitrag anzeigen
Würde mich freuen wenn sich hier mal ein C++´ler finden würde der mal auf unserem Teaspeak vorbeischaut um das ganze näher zu erklären.

An Losen soll es nicht liegen
kannst du gleich vergessen
Du wirst zu 99% in Klamm niemanden finden, der die nötige Erfahrung und das nötige Wissen hat um eine PHP-Extension zu bauen, die stabil und sicher ist, denn dazu muss man sich auch sehr gut im PHP-Core auskennen, es scheitert hier ja schon daran ein PHP-Script sicher zu schreiben ....


Last Comment:
Ich würde lieber nochmal eine 2. unparteiische Meinung einholen, was die dazu sagt, denn PHP sollte vollkommen ausreichend sein um das Kampfscript schnell ausführen zu können, vor allem sollte man aber nicht auf gut dünken eine Problemursache bennen und versuchen die zu beheben sondern mit Profiling den wahren Grund suchen.
"Die Wahrheit entgeht dem, der nicht mit beiden Augen sieht." -Orici

www.internet-dsl-flatrate.de
ice-breaker ist offline   Mit Zitat antworten
Alt 29.01.2011, 15:28:21   #3 (permalink)
Woohooo!
Benutzerbild von chrissel

ID: 211634
Lose-Remote

chrissel eine Nachricht über ICQ schicken
Reg: 20.04.2006
Beiträge: 4.495
Standard

@ice-breaker: exec() ?
chrissel ist offline   Mit Zitat antworten
Alt 29.01.2011, 15:46:28   #4 (permalink)
return void
Benutzerbild von ice-breaker

ID: 93995
Lose-Remote

ice-breaker eine Nachricht über ICQ schicken
Reg: 27.04.2006
Beiträge: 6.271
Standard

Mit exec wird ein externer Prozess ausgeführt, welcher natürlich in C++ entwickelt werden kann, jedoch mit jeglichem Overhead der durch solch einen Prozessaufruf verbunden ist, was vermutlich langsamer als die Implementierung in PHP wäre.
"Die Wahrheit entgeht dem, der nicht mit beiden Augen sieht." -Orici

www.internet-dsl-flatrate.de

Geändert von ice-breaker (29.01.2011 um 15:46:45 Uhr)
ice-breaker ist offline   Mit Zitat antworten
Alt 29.01.2011, 17:04:17   #5 (permalink)
Woohooo!
Benutzerbild von chrissel

ID: 211634
Lose-Remote

chrissel eine Nachricht über ICQ schicken
Reg: 20.04.2006
Beiträge: 4.495
Standard

Achso. Wieso gibt es denn da so einen großen Overhead? Da wird doch normalerweise nur ein Prozess gestartet und die Rückgabe an PHP gegeben.
Oder ist es schon "aufwendig" alleine einen extra Prozess zu starten?
Sonst wäre doch die Möglichkeit, einen "GameEventHandler"-Server zu erstellen und über Socket-Verbindung in PHP sich mit diesem zu verbinden... Da muss dann allerdings bei jedem Aufruf eine Verbindung hergestellt werden - keine Ahnung, was günstiger wäre
chrissel ist offline   Mit Zitat antworten
Alt 29.01.2011, 17:11:15   #6 (permalink)
return void
Benutzerbild von ice-breaker

ID: 93995
Lose-Remote

ice-breaker eine Nachricht über ICQ schicken
Reg: 27.04.2006
Beiträge: 6.271
Standard

Wie gesagt vertrete ich die Auffassung, dass PHP mehr als schnell genug sein müsste dieses Kampfscript auszuführen, wenn es ordentlich und effizient programmiert wurde, wenn nicht hat man in anderen Sprachen die gleichen Probleme.
Denn wenn der Algorihtmus murks ist wird man mit einer Sprache die doppelt so schnell ist das Ergebnis auch nur in der Hälfte der Zeit berechnen können, betrachtet man dann noch, dass solch ein Kampfscript nur aus wenigen Schleifen, Bedingungen und arithm. Operationen bestehen wird, halte ich einen Speedup von 2x für sehr hoch.

Dementsprechend empfinde ich eben einen Prozess zu erzeugen und die nötigen Context-Switches oder einen Socket zu öffnen und wieder die Context-Switches bis der SocketServer es verarbeitet und wieder an PHP geliefert hat, als deutlich höher, wie wenn es direkt in PHP synchron an einem Stück gemacht werden kann.

Für 2. möchte ich trotzdem mal Gearman in den Raum werfen, falls jemand mal auf diesen Thread stoßen sollte, weil er deine 2. Lösung umsetzen möchte.
"Die Wahrheit entgeht dem, der nicht mit beiden Augen sieht." -Orici

www.internet-dsl-flatrate.de

Geändert von ice-breaker (29.01.2011 um 17:13:33 Uhr)
ice-breaker ist offline   Mit Zitat antworten
Alt 29.01.2011, 17:17:18   #7 (permalink)
Gesperrt

ID: 316075
Lose-Remote
Gesperrt

Helo eine Nachricht über ICQ schicken
Reg: 31.03.2008
Beiträge: 742
Standard

Zitat:
Zitat von ice-breaker Beitrag anzeigen
Wie gesagt vertrete ich die Auffassung, dass PHP mehr als schnell genug sein müsste dieses Kampfscript auszuführen, wenn es ordentlich und effizient programmiert wurde, wenn nicht hat man in anderen Sprachen die gleichen Probleme.
Dieser Auffassung kann ich nur beipflichten. Ich spreche da aus Erfahrung, habe ich doch selbst zum PHP lernen mal eines geschrieben. Meine damaligen Tests haben auf einem (mittlerweile etwa 6 Jahre alten VServer) ergeben, dass ein (End-)Kampf in etwas mehr als 1 Sekunde berechnet wird. Dabei muss man jedoch bedenken, dass damals "Leistungsoptimierung" für mich ein Fremdwort war. Es ist meiner Meinung nach also definitiv möglich - auch in PHP - ein passabel schnelles Kampfscript zu schreiben. Wenn man auf Effizienz achtet dürfte ein (End-)kampf nicht viel länger als eine schätzungsweise 1/8 bis 1/2 Sekunde dauern.

Grüße
Helo
 
Helo ist offline   Mit Zitat antworten
Alt 29.01.2011, 17:22:00   #8 (permalink)
return void
Benutzerbild von ice-breaker

ID: 93995
Lose-Remote

ice-breaker eine Nachricht über ICQ schicken
Reg: 27.04.2006
Beiträge: 6.271
Standard

Zitat:
Zitat von Helo Beitrag anzeigen
Wenn man auf Effizienz achtet dürfte ein (End-)kampf nicht viel länger als eine schätzungsweise 1/8 bis 1/2 Sekunde dauern.
125msec hätte ich als absolutes Maximum geschätzt, je nachdem was gemacht werden muss, wie man es Optimieren kann, ist das denke ich durchaus erreichbar.

Als Beispiel:
2 Truppen laufen aufeinander zu, da ist es dann natürlich nutzlos jede Gruppe einen Meter vorlaufen zu lassen und dann alles mögliche zu machen und dies solange zu wiederholen bis sich die Gruppen treffen. Da könnte man schon Zeit einsparen, aber was ist mit Bogenschützen, diese profitieren ja von dem Zulaufen?
Korrekt, dann unterteilt man das Zulaufen eben in mehrere Runden und senkt damit die Anzahl der Iterationen, die man durchführen muss für eine kleine Ungenauigkeit im Ergebnis, die sowieso keinen Einfluss nimmt.


(Ich hoffe Die-Fackel reißt uns nicht den Kopf ab)
"Die Wahrheit entgeht dem, der nicht mit beiden Augen sieht." -Orici

www.internet-dsl-flatrate.de

Geändert von ice-breaker (29.01.2011 um 17:22:42 Uhr)
ice-breaker ist offline   Mit Zitat antworten
Alt 29.01.2011, 17:28:02   #9 (permalink)
Gesperrt

ID: 316075
Lose-Remote
Gesperrt

Helo eine Nachricht über ICQ schicken
Reg: 31.03.2008
Beiträge: 742
Standard

Zitat:
Zitat von ice-breaker Beitrag anzeigen
125msec hätte ich als absolutes Maximum geschätzt, je nachdem was gemacht werden muss, wie man es Optimieren kann, ist das denke ich durchaus erreichbar.
Dabei muss man beachten, dass das Kampfscript ähnlich komplex dem von OGame war. Ich habs nicht mehr genau im Kopf, jedoch mussten 5 Runden berechnet werden, mit jeweils bis zu 750.000 (das war das damalige Maximum) Einheiten, die teilweise gezielt, teilweise per Zufall geschossen haben und mehrere Werte hatten (Schilde, Angriff, Energie, etc.). Da kamen also richtig viele Berechnungen zusammen. Je einfacher das Kampfscript wird, desto schneller kann es natürlich auch rechnen (absolut gesehen), von daher denke ich, dass deine 125msec (also 1/8 Sekunde) auch locker unterschritten werden können.

Grüße
Helo
 

Geändert von Helo (29.01.2011 um 17:34:33 Uhr) Grund: Hab eben nachgesehen, 750k war das Maximum, nicht 1.500k
Helo ist offline   Mit Zitat antworten
Alt 29.01.2011, 17:39:48   #10 (permalink)
return void
Benutzerbild von ice-breaker

ID: 93995
Lose-Remote

ice-breaker eine Nachricht über ICQ schicken
Reg: 27.04.2006
Beiträge: 6.271
Standard

Zitat:
Zitat von Helo Beitrag anzeigen
jedoch mussten 5 Runden berechnet werden, mit jeweils bis zu 1.500.000 (das war das damalige Maximum) Einheiten, die teilweise gezielt, teilweise per Zufall geschossen haben und mehrere Werte hatten (Schilde, Angriff, Energie, etc.). Da kamen also richtig viele Berechnungen zusammen.
ja kann ich mir vorstellen, aber da kommt dann eben zum Tragen was ich so an Optimierungen vermute, nehmen wir an, es würden wirklich 1.5Mios Einheiten gegen eine andere gleich große Gruppe kämpfen, ist es realistisch anzunehmen, dass jede Einheit gezielt bzw. nach Zufall eine Einheit anvisiert?
Ich denke nicht.

Optimierung: Man packt mehrere Einheiten in Gruppen (Cluster) und lässt die Gruppen nur noch gegeneinander kämpfen, nimmt man nur 100 Einheiten in eine Gruppe, dann hat jeder Partei nur noch 15k Gruppen, bedeutet also pro Runde (unter der Annahme niemand stirbt) nur noch 30k Berechnungen, im Gensatz zu 3Mio von vorher, das entspricht einer Verbesserung von 100x.
Da schnell einige Einheiten sterben werden, sinkt die Komplexität für weitere Runden.

Geht man also noch strikter an das Thema ran und macht Gruppen größer oder lässt sich noch mehr einfallen, ließe sich die Geschwindigkeit noch viel viel weiter erhöhen, bei einer relativ kleinen Ungenauigkeit durch die Vergröberung der Berechnung.
"Die Wahrheit entgeht dem, der nicht mit beiden Augen sieht." -Orici

www.internet-dsl-flatrate.de

Geändert von ice-breaker (29.01.2011 um 17:41:01 Uhr)
ice-breaker ist offline   Mit Zitat antworten
Alt 29.01.2011, 20:44:43   #11 (permalink)
Netzibank.de
Benutzerbild von Die-Fackel

ID: 42693
Lose-Remote

Die-Fackel eine Nachricht über ICQ schicken Die-Fackel eine Nachricht über Skype™ schicken
Reg: 23.04.2006
Beiträge: 3.781
Standard

Zitat:
Zitat von ice-breaker Beitrag anzeigen
Bedenke:
Wenn es in C++ als PHP-Extension geschrieben wird, dann muss für jede Änderung am Kampfscript das PHP oder PHP-Modul neu kompiliert werden, also ein beträchtlicher Aufwand.
Das ist natürlich unschön.

Zitat:
Zitat von ice-breaker Beitrag anzeigen
(Ich hoffe Die-Fackel reißt uns nicht den Kopf ab)
Ganz im Gegenteil.
Mit einem Posting von Dir hatte ich sowieso gerechnet / gehofft

Zitat:
Zitat von Helo Beitrag anzeigen
Dabei muss man beachten, dass das Kampfscript ähnlich komplex dem von OGame war. Ich habs nicht mehr genau im Kopf, jedoch mussten 5 Runden berechnet werden, mit jeweils bis zu 750.000 (das war das damalige Maximum) Einheiten, die teilweise gezielt, teilweise per Zufall geschossen haben und mehrere Werte hatten (Schilde, Angriff, Energie, etc.). Da kamen also richtig viele Berechnungen zusammen. Je einfacher das Kampfscript wird, desto schneller kann es natürlich auch rechnen (absolut gesehen), von daher denke ich, dass deine 125msec (also 1/8 Sekunde) auch locker unterschritten werden können.
Bleiben wir am besten beim Beispiel von oGame. Es handelt sich nämlich auch um einen oGameclone und es werden genau die von Dir beschriebenen Werte mit berücksichtig.

Also Angriffskraft, Schilde und Hüllenpanzerung.

Zitat:
Zitat von ice-breaker Beitrag anzeigen
ja kann ich mir vorstellen, aber da kommt dann eben zum Tragen was ich so an Optimierungen vermute, nehmen wir an, es würden wirklich 1.5Mios Einheiten gegen eine andere gleich große Gruppe kämpfen, ist es realistisch anzunehmen, dass jede Einheit gezielt bzw. nach Zufall eine Einheit anvisiert?
Ich denke nicht.
Genau so ist es.
Es gibt Einheiten die, so sollte es zumindest sein, andere Einheiten als Ziel bevorzugt angreifen.
Rein von der Beschreibung der Einheiten Ingame gibt es Schiffstypen die spezielle Eigenschaften zugeschrieben bekommen welche Sie anderen Einheiten gegenüber als Pendant ausweist.

Zitat:
Zitat von ice-breaker Beitrag anzeigen
Optimierung: Man packt mehrere Einheiten in Gruppen (Cluster) und lässt die Gruppen nur noch gegeneinander kämpfen, nimmt man nur 100 Einheiten in eine Gruppe, dann hat jeder Partei nur noch 15k Gruppen, bedeutet also pro Runde (unter der Annahme niemand stirbt) nur noch 30k Berechnungen, im Gensatz zu 3Mio von vorher, das entspricht einer Verbesserung von 100x.
Da schnell einige Einheiten sterben werden, sinkt die Komplexität für weitere Runden.

Geht man also noch strikter an das Thema ran und macht Gruppen größer oder lässt sich noch mehr einfallen, ließe sich die Geschwindigkeit noch viel viel weiter erhöhen, bei einer relativ kleinen Ungenauigkeit durch die Vergröberung der Berechnung.
Ich hatte schon mit Mano (Admin von Losecatcher.de) einen Plausch gehabt der mir eine ähnliche Idee mit dem Berechnen in Gruppen als mögliche Lösung vorgeschlagen hatte.

Leider fehlt uns bisher die zündende Idee wie man so etwas genau umsetzen könnte.

--------

Als eventuelle Hilfestellung könnte die SVN von Speedsim herhalten.
Das ist eine Page die für oGame einen externen Kampfsimulator entwickelt hat der auf den Beschreibungen des oWiki beruht.
Es ist zwar nicht das genaue Kampfscript das auch oGame nutzt aber mehrere Test damit haben schon ergeben das es ziemlich gute Ergebnisse liefert.
Wäre im Vergleich zu dem eingebauten Kampfscriptcode schon eine um Lichtjahre bessere Lösung.

Das ganze liegt als C++ vor und darauf könnte man sich, so hoffe ich zumindest, ein wenig stützen.

Das Ding liegt hier

---------

Das aktuelle Kampfscript z.b. nutzt einfach einen Multiplikator.

Also ein Kampfstern hat z.b. einen Multiplikator von 1250 gegenüber einem Transportschiff und 500 gegenüber einem Kreuzer.

Die gegnerische Einheit besteht allerdings aus verschiedenen Schiffsystem.
Alles was das Kampfscript aber macht ist zu sehen welche Schiffe drin sind.

das sieht dann mit unter so aus.

Angreifer:
4 Todessterne

Verteidiger:
10 Transporter = Angriffskraft der Sterne mal 1.250
50 Kreuzer = Angriffskraft der Sterne mal 500
100.000 kleine Jäger (die eigentlich in Ihrer Masse und aufgrund Ihrer kleinen Größe gut gegen Todessterne wären)

Ergebnis ist dann aber, dass durch den Multiplikator mit dem die Angriffskraft aufgrund der beiden Schiffstypen in der Feindflotte multipliziert wird. Ergebnisse von mehreren Billionen Angriffspunkten zustande kommen.

Also total unsinnig.


---------

@ice-breaker

Fühlst Du Dich in der Lage so etwas umzusetzen?
Ich weiss Du bist nicht billig aber wer Qualität will muss dafür halt auch bezahlen

Fackel
Intel I5-3570-K | Corsair H50 | Gigabyte Z77X-UD3H | MSI Gaming R290x 8GB
G.Skill Ripjaws 8GB | Logitech G9x | Razer Goliathus | Sennheiser PC161
Games: BF3 - BF4 - Mein Clan www.501st-Legion.de

Geändert von Die-Fackel (29.01.2011 um 20:52:31 Uhr)
Die-Fackel ist offline Threadstarter   Mit Zitat antworten
Alt 29.01.2011, 21:05:49   #12 (permalink)
return void
Benutzerbild von ice-breaker

ID: 93995
Lose-Remote

ice-breaker eine Nachricht über ICQ schicken
Reg: 27.04.2006
Beiträge: 6.271
Standard

Zitat:
Zitat von Die-Fackel Beitrag anzeigen
Das aktuelle Kampfscript z.b. nutzt einfach einen Multiplikator.

[...]

Also total unsinnig.
jup, ich würde da ein Schere-Stein-Papier-Ansatz vorschlagen
Ein Sternenkreuzer ist besser als ein Raumgleiter (Kampfbonus), ein Todesstern ist besser als ein Sternenkreuzer (Kampfbonus).
Dann zählen nachher keine Multiplikatoren mehr, es gibt nur noch Angriffe die stärker, gleichstark oder schwächer gewertet werden.
Wenn man das noch ausbaut könnte man daraus eine Matrix machen und jedem Schiffstyp gegen einen anderen Schiffstyp einen Kampfbonus/Kampfschwäche zuordnen.

Beispiel:
1 Todesstern hat 800 HP mit 150 DPS
3 Sternenkreuzer haben je 200 HP und 50 DPS

somit würden die Sternenkreuzer theoretisch 150DPS Schaden beim Todesstern machen (Schilde und alles nicht beachtet), der Todesstern bei einem Sternenkreuzer jedoch 172.5, da er einen 15% Kampfbonus hat (technisch überlegene Einheit).

Zitat:
Zitat von Die-Fackel Beitrag anzeigen
@ice-breaker
Fühlst Du Dich in der Lage so etwas umzusetzen?
ich würde mal sagen, dass dir niemand aus dem Stehgreif schnell ein Kampfscript schreiben kann, du müsstest dir erstmal einen neuen Ansatz überlegen, den man dann umsetzen muss.
Wenn du einem potentiellen Entwickler zuviele Freiheiten lässt, dann kommt bestimmt nicht das raus, was du möchtest.
"Die Wahrheit entgeht dem, der nicht mit beiden Augen sieht." -Orici

www.internet-dsl-flatrate.de
ice-breaker ist offline   Mit Zitat antworten
Alt 29.01.2011, 22:28:30   #13 (permalink)
seltener hier
Benutzerbild von FischkopfXL

ID: 155669
Lose-Remote

FischkopfXL eine Nachricht über ICQ schicken FischkopfXL eine Nachricht über Yahoo! schicken FischkopfXL eine Nachricht über Skype™ schicken
Reg: 01.05.2006
Beiträge: 1.785
Standard

Mal ein unqualifizierter Einwurf von mir:

Die Rapidfire-Boni dürfen einfach nicht aufsummiert werden.

Zitat:
Angreifer:
4 Todessterne

Verteidiger:
10 Transporter = Angriffskraft der Sterne mal 1.250
50 Kreuzer = Angriffskraft der Sterne mal 500
100.000 kleine Jäger (die eigentlich in Ihrer Masse und aufgrund Ihrer kleinen Größe gut gegen Todessterne wären)
Die überschüssigen (Bonus-)Angriffspunkte, die nicht auf die Transporter und Kreuzer verbraten werden, müssen einfach verfallen, um die unsinnigen Ergebisse (dass die leichten Jäger vom Rapidfire auf die Transporter getroffen werden) zu unterbinden, die bisher auftreten.
Mein Ansatz dafür wäre die Angriffpunkte auf einen Vektor aufzuteilen, anstatt wie bisher (?) aufzusummieren.


Vorschlag #2

Wenn das geeignet ist, die Komplexität zu verringern, könnte man vielleicht auf die Schilde verzichten. Ich finde, es ist für mich als Spieler ohnehin kaum nachvollziehbar, wie die wirken. Wenn sie die Berechnung nur unnötig komplizieren - weg damit. Oder Schilde und Panzerung werden addiert und gleich behandelt.

edit: ich les grad im Wiki was merkwürdiges
Zitat:
Hat die Hülle mehr als 30% Schaden, dann kann das angegriffene Schiff mit der gleichen Prozentzahl die es an Schaden hat, auch das Explosionsflag gesetzt bekommen (z. B. 35% Schaden -> 35%ige Chance auf setzen des Explosionsflag).
Hinweis: Die Chance, zu explodieren, wird nach jedem (!) Treffer (auch vom Schild absorbierten Treffern) berechnet.
Ich finde diesen Ansatz irreführend. Die Argumentation, dass damit Verteidigungsanlagen aufgewertet werden, finde ich dünn, denn das kann man auch einfacher haben (Werte erhöhen!).
Von anderen Strategiespielen bin ich es gewöhnt, dass eine Einheit genau dann stirbt, wenn sie ihren letzten Hitpoint verliert. Ab 30% Schaden finde ich viel zu krass.
Jetzt mag mir jemand kommen und sagen kritischer Treffer und so weiter. Um solche Manöver (bzw Berechnungsformeln) vom Spiel zu erwarten, braucht es meiner Meinung nach aber mindestens eine graphische Umgebung bei nem Kampf, bei der ich meinen Einheiten sagen kann "hey schießt mal alle da drauf, das sieht wichtig aus". In nem textbasierten Kampf erwarte ich als Spieler einfachere Lösungen.
Wenn dann im Game solche "unerwarteten" Berechnungsformeln drin sein sollten, musst du das unbedingt klar kommunizieren und erklären. Weil wenn keiner versteht, was abgeht, sinkt die Motivation ganz schnell.

Wenn ihr schon mir Wahrscheinlichkeiten spielen wollt, dann führt halt Flottenbefehle ein a la "Alles oder nichts", "offensiv", "defensiv", "Formation" (kann man ja kreativ sein), wo dann jeweils Angriffs- und Defensivwerte (von mir aus auch Wahrscheinlichkeiten) verändert sind.
 

Geändert von FischkopfXL (29.01.2011 um 22:51:17 Uhr)
FischkopfXL ist offline   Mit Zitat antworten
Alt 29.01.2011, 22:43:49   #14 (permalink)
Netzibank.de
Benutzerbild von Die-Fackel

ID: 42693
Lose-Remote

Die-Fackel eine Nachricht über ICQ schicken Die-Fackel eine Nachricht über Skype™ schicken
Reg: 23.04.2006
Beiträge: 3.781
Standard

Mir würde es ja schon reichen wenn jemand mit den Dateien aus dem Speedsim etwas anfangen könnte um daraus ein Kampfscript in PHP zu schreiben.

Denn mein Game ist wie gesagt ein oGameclone. Die Mechanismen sind genau die gleichen wie die in Speedsim.
Man müsste also nur das was dort in C++ geschrieben wurde umsetzen.

Also braucht man das Rad ja nicht neu zu erfinden wenn es sich dort bereits dreht ;-)
Intel I5-3570-K | Corsair H50 | Gigabyte Z77X-UD3H | MSI Gaming R290x 8GB
G.Skill Ripjaws 8GB | Logitech G9x | Razer Goliathus | Sennheiser PC161
Games: BF3 - BF4 - Mein Clan www.501st-Legion.de
Die-Fackel ist offline Threadstarter   Mit Zitat antworten
Alt 29.01.2011, 22:54:30   #15 (permalink)
return void
Benutzerbild von ice-breaker

ID: 93995
Lose-Remote

ice-breaker eine Nachricht über ICQ schicken
Reg: 27.04.2006
Beiträge: 6.271
Standard

Also ich habe eben mal den Code von SpeedSim überflogen, der hat einige gewaltige Probleme:
  • die C++-Umsetzung funktioniert auf Windows (kann also nicht einfach für den Server genutzt werden)
  • der Code ist kein Stück dokumentiert oder kommentiert, was es sehr schwer macht diesen zu verstehen
  • der Code ist deterministisch, für die gleichen Angaben produziert er immer genau das gleiche Ergebnis, damit ist der Ausgang eines Kampfes immer zu 100% gleich, nicht sehr aufregend
"Die Wahrheit entgeht dem, der nicht mit beiden Augen sieht." -Orici

www.internet-dsl-flatrate.de
ice-breaker ist offline   Mit Zitat antworten
Antwort

Gesponsorte Links

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[S] Gesucht als Investoren: Partner / Progger / Grafiker etc. gesucht für einmaliges seitenübergreifendes Börsen-Script GermanHero Lose4Misc 19 21.07.2010 09:43:20
(S) Fachmann für Icecast bzw. Shoutcast mmps Lose4Scripts 1 21.05.2008 12:10:15
[S] CSS Fachmann mahaju Lose4Scripts 0 21.08.2007 17:43:35
Refs für Vulkan-Mailer gesucht! Mit Anmelderally!Refjäger gesucht(extra Angebot) danyi Suche Refs: andere 12 04.04.2007 10:55:18


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:48:44 Uhr.