mmofacts.com

Grafisches Kampfsystem

gepostet vor 15 Jahre, 5 Monate von TheUndeadable

Traditionellerweise findet ein Kampf in Browserspielen in rein numerischer Art und Weise statt. Einige andere Browserspiele versuchen den Kampf selbst grafisch darzustellen.

Dies habe ich persönlich nun auch mal versucht. Die eigentliche Idee habe ich aus folgendem Blog:

http://mission-unknown.de/blog/index.php?/archives/14-Der-Kampf.html

Herausgekommen ist folgendes:

400 Raumschiffe gegen 400 Raumschiffe

2.000 Raumschiffe gegen 2.000 Raumschiffe (mit modifiziertem Kampfsystem und etwas ruckelig auf Grund ineffizienter Programmierung und Auslastung der Silverlight-Engine)

Zum Abspielen wird Silverlight benötigt.

Wollte nur mal eine mögliche Umsetzung präsentieren, ob ich sie weiter verfolge, weiß ich noch nicht...

Nachtrag: Auf Grund von Rückfragen die Kernroutinen:

http://rafb.net/p/N1lWRx72.html - http://nopaste.php-q.net/137542

gepostet vor 15 Jahre, 5 Monate von Redrick

finde ich echt geil, erinnert an Reuinion, das waren noch zeiten, aber silverlight......, pfui teufel^^

gepostet vor 15 Jahre, 5 Monate von buhrmi

Verdammt geil. Allein davor zu sitzen und die Muster anzugucken hat einen anreiz.

Die Kampfberechnung geschieht in diesem fall komplett clientseitig, oder? Kann man das (zumindest in der theorie) irgendwie absichern?

gepostet vor 15 Jahre, 5 Monate von TheUndeadable

Die Kampfberechnung geschieht in diesem fall komplett clientseitig, oder? Kann man das (zumindest in der theorie) irgendwie absichern?

Klar. Die gleiche Rechnung ohne grafische Ausgabe auf dem Server ausführen und einen deterministischen Zufallsgenerator nutzen (oder gleich die Rechnung auf dem Server vorbereiten und das Ergebnis an den Client senden)

aber silverlight

Ich nutz, was ich kann. In weniger als 2 Stunden war das obige zusammengeschrieben (dementsprechend läuft es...)

gepostet vor 15 Jahre, 5 Monate von Redrick

Original von TheUndeadable

aber silverlight

Ich nutz, was ich kann. In weniger als 2 Stunden war das obige zusammengeschrieben (dementsprechend läuft es...)

logo, war auch nicht ernst gemeint, ärgert mich nur, dass womöglich noch lernen müsste, wenn sich weiter wie pest verbreitet, zum glück gibts alternativen

gepostet vor 15 Jahre, 5 Monate von Fobby

Wow, klasse Ansatz. Wenn man da noch unterschiedliche Waffen, Raumschiffverhalten, Taktiken, Formationen ... das würde den Kämpfen mal was richtig lebendiges geben. Mach mal weiter! :)

gepostet vor 15 Jahre, 5 Monate von TheUndeadable
logo, war auch nicht ernst gemeint, ärgert mich nur, dass womöglich noch lernen müsste, wenn sich weiter wie pest verbreitet, zum glück gibts alternativen

Der Vorteil ist halt auch, dass ich im Client (Silverlight) und auf dem Server den gleichen Code (C#, VB.Net, Ruby, Python) nutzen kann und ich so die Simulation grafisch zeigen kann und auf dem Server bei ordentlicher Trennung zwischen Logik und Ansicht unverändert übernehmen, warten und modifizieren kann.

gepostet vor 15 Jahre, 5 Monate von tector

wirklich nice!

... und das alte DOS-Game "Reunion" kann ich wirklich jedem nur empfehlen der was für Weltraum-Strategie/4X übrig hat! ^^ gibts bei abandonia.com legal zum download

gepostet vor 15 Jahre, 5 Monate von Phoscur

Innerhalb von 2h? Wow..

Die Raumschiffe fliegen beim 2kvs2k Kampf aus dem Bild heraus^^

Hatte auch schon mal an sowas wie grafischen Kampf gedacht, hab das aber in die ferne Zukunft und zu Flash geschoben, weil ich einfach zuviel anderes zu tun und zu lernen hatte..

Nur weiter so!

gepostet vor 15 Jahre, 5 Monate von SysWar-Admin

ist wirklich interessant, aber wie sieht es mit der rechendauer aus, wenn das ganze script serverseitig läuft?

und wie würde dann die ergebnisübergabe an den client laufen? welche daten müssen dan übertragen werden, nur das ergebnis?

aber ansosten sehr schön, ist interessant anzuschauen. :-)

gepostet vor 15 Jahre, 5 Monate von Blabbo

Ganz lustig.

Ich fände es aber wesentlich interessanter, wenn es wenige, als unterschiedliche Raumschiffe erkennbare Raumschiffe wären.

So sind es halt nur Punkte, und Taktik oder ähnliches ist nicht erkennbar. Wird recht schnell langweilig, fürchte ich.

gepostet vor 15 Jahre, 5 Monate von Kallisti

Was mich mehr interessiert ist eher, wie es dann im Detail spaeter wird und was dann noch die Vorzuege von Silverlight sind. ;) Ich meine im Grundsatz habe ich aehnliches vor: Die einzelnen Schritte eines Kampfes transparent machen, zu visualisieren und dem Spieler Moeglichkeiten geben einzugreifen. Allerdings werde ich das wohl ohne Plugin-Krams realisieren wollen - und wie Blabbo sagt mit max. 10 Schiffen je Seite und mehr Einfluss anderer Faktoren.

Dass das Ganze erstmal nur eine Tech-Demo ist, ist mir klar, aber du hast ja sicher bereits Hintergedanken dabei. ;) Und ich bin eben etwas skeptisch, dass Silverlight dabei letztendlich einen Mehrwert bietet.

Ich meine die eigentliche Berechnung musst du zwangslaeufig im Server machen, alles andere steht aus Sicherheitsgruenden nicht zur Diskussion, das ist ja klar.

Dann ist die Frage: Wie uebermittelst du das Ergebnis vom Server zum Client? Also nicht technisch, ob das nun JSON, XML oder was auch immer ist, ist ja ziemlich wurscht. Aber welche Daten sind essentiell genug, um sie zu uebermitteln? Welchen Input braucht deine Visualisierung, um das Ergebnis anzuzeigen? Ist die Visualisierung desselben Kampfes immer identisch, wenn man sie mehrfach betrachtet, oder weitestgehend zufaellig?

Wenn das naemlich ein konsistentes Ergebnis liefern soll, musst du eine Menge Daten herumschaufeln, oder? ;)

Hat dann der Spieler Moeglichkeiten noch einzugreifen und etwas am Verlauf des Kampfes zu aendern? Wie synchronisierst du das bei beiden/mehreren Beteiligten?

gepostet vor 15 Jahre, 5 Monate von dreaddy

Erinnert mich echt Reunion ;)

http://de.youtube.com/watch?v=AoHxdLIJ0Oo&feature=related -> Minute 3

Die Kämpfe waren dort immer recht interessant, könnte echt eine recht gute Idee sein.

So viele Daten zwischenspeichern würde ich gar nicht, ganz im Gegenteil: ich würde die Berechnung vom grafischen Kampf unabhängig machen, nicht umgekehrt und nur speichern wie viele Schiffe welcher Sorte verrecken.

Im grafischen Kampf stirbt dann halt nacheinander die Anzahl weg, vielleicht immer dasjenige, welches am Meisten Gegner um sich herum hat.

gepostet vor 15 Jahre, 5 Monate von Kallisti

Wenn die Visualisierung bis auf das Resultat nichts mit dem eigentlichen Kampverlauf zu tun hat, dann guckt der Spieler sich das die ersten 3-4 Male interessiert an und will danach nur noch das Resultat sehen. Zumindest wäre das mein Verhalten als Spieler.

Letztendlich bietet die Visualisierung in dem Fall nämlich keinen Mehrwert, außer dass es "ganz nett herumwuselt". Wenn das Kampfsystem sehr komplex sein sollte und gewisse Zwischenschritte dadurch transparent und verständlich gemacht würden - okay - dann hat es eine Daseinsberechtigung. Nur das ist dann sehr systemspezifisch und man braucht diverse Zustände und Zwischenstände, die man wiederum vorberechnen und übertragen muss. Und dann braucht man vor allem einen Grund weshalb es für den Spieler einen Vorteil gegenüber einer reinen Ergebnisanzeige bietet.

Ich finde es wichtig erst einmal den wirklichen Benefit einer technischen Spielerei zu hinterfragen, als "boah cool" zu rufen und auf den Zug aufzuspringen. ;) Es gibt mit Sicherheit gute Konzepte, die in diese Richtung gehen, nur entscheidet nicht die verwendete Technologie und nicht die Anzahl sich bewegender Pixel über den Erfolg, sondern ein bis ins Detail durchdachtes System bei dem eben obige Fragen geklärt sind und sich für den Spieler wirklich ein Mehrwert gegenüber der einfachen Ergebnisdarstellung ergibt, der auch nach 100 Kämpfen noch wirkliche Vorteile bietet und nicht einfach abgeschaltet wird (sofern möglich).

gepostet vor 15 Jahre, 5 Monate von dreaddy

Eine grafische Darstellung immer besser als eine langweilige Tabelle und Textwüsten, relativ unabhängig vom tatsächlichem Nutzen. Das gilt für normale Anwendungen und für Browerspiele erst Recht.
Eine Behinderung im Spielfluss sollte es aber auch nicht geben, bei denen der User gelangweilt auf den Ausgang der Animation wartet.
Theoretisch kann man alles als Tabellen ausdrücken was ja bekanntlich auch einige große Browserspiele exzessiv nutzen ;) .

Ich würde mir sowas auch eher als Verschönerung des eigentlichen Kampfberichtes vorstellen um eben KEINE langweilige Tabelle zu haben, also der Kampfbericht zeigt oben den Verlauf den Kampfes grafisch als pixelschiffchen mit PLAY Funktion an, eventuell noch mit etwas mehr Information(wer killt wen, Geländevor/nachteile bzw Planetenbeschuss/Meteoritensturm/unterstützende Raumstation etc) und direkt dadrunter stehen die Werte als Zahlen und ggf Diagramme und Hinweisen was besonders schlecht oder gut gelaufen ist um einen Lerneffekt zu erzielen("unsere Jäger nahmen hohe Verluste gegen die Schnellfeuerlaser der Zerstörer hin").

Ob der Kampf in Echtzeit oder vorberechnet wird spielt nicht wirklich eine Rolle, wenn man ihn nicht beeinflussen kann, was schwer werden könnte.
Bei einem normalen Browserspiel kommt es nunmal häufig zu Kämpfen, bei denen mindestens ein Spieler nicht anwesend ist, das ist so tief in der Tatsache "Browserspiel" verwurzelt, dass es fast unmöglich ist es zu ändern ohne im Endeffekt eher ein browserbasiertes Clientspiel zu haben als ein klassisches  Browserspiel.

Ich könnte mir da spontan höchstens einen sehr lange andauernden Kampf vorstellen(mehrere Stunden) in dem man sich jederzeit einklinken kann und neue Befehle vergeben kann(Agressiv angreifen, Rückzug, starke Gegner angreifen etc), aber ob das so der Hit wird und die Darstellung sich dafür eignet?

gepostet vor 15 Jahre, 5 Monate von Kallisti

Das kann man aber alles vollkommen problemlos ohne grosse Animationen umsetzen. Dazu braucht man keine nervige Clienttechnologie, wenn der Ausgang sowieso "statisch" ist.

Ich habe ja nie behauptet es soll eine langweilige Tabellen- oder Textloesung sein. Visualisierung und Uebersicht sind definitiv wichtig. Nur seh ich eben noch keinen Mehrwert bei der hier vorgestellten Silverlight Variante, ausser es kommen noch sehr spielspezifische Details und Vorstellungen dazu.

Mehr Interaktion ist sicher moeglich, erfordert aber ingesamt weit dynamischere Spielkonzepte, als die meisten aktuellen Spiele bieten. Ob das der Hit wird und ob man es darstellen kann, kann ich nicht beantworten, das wird die Zukunft zeigen.

Es spielt sehr wohl eine Rolle ob der Kampf vorberechnet ist oder nicht, denn es tut dem "Fluff" des Spiels nicht gut, wenn der Spieler beim zweiten Beobachten des Kampfberichtes einen voellig anderen Ablauf zu Gesicht bekommt. Oder wenn er sich mit seinem Gegenspieler unterhaelt und beide ein voellig anderes Bild des Kampfes gezeigt bekommen haben.

Im Endeffekt moechte der Spieler doch auf Dauer lediglich so viele Informationen wie moeglich, so kompakt und verstaendlich wie moeglich praesentiert bekommen und dafuer moeglichst wenig Zeit aufwenden. Das Interesse des Spielers ist es nicht mit sekundenlangen Animationen hingehalten zu werden, um dann ein Ergebnis zu sehen, das ihm eine Grafik auch gezeigt haette, vor allem wenn die Animationen "random" sind und nicht einmal Rueckschluesse auf die tatsaechliche Berechnung erlauben.

Insofern bringen fancy Clients dem Spieler keinen Vorteil, sondern eher Nachteile, solang sie nicht auch mehr Interaktion erlauben, oder Informationen darstellen, die man nicht kompakter visualisieren kann (aka. den wirklichen, detaillierten Kampfablauf mit vielen Details - und dann interessiert mich die technische Umsetzung).

gepostet vor 15 Jahre, 5 Monate von Redrick

@kalli:

na dann muss ich aber eher dem dready recht geben, mit dem zusatz dass der optische merhwert nie von nachteil seien kann

natürlich darf dieser mehrwert den spielflow nicht entscheidend beeinträchtigen, du hast es selber angepsrochen, man muss es im zweifel auch wegklicken können. Sicherlich wird es keine Lösung gegeben die alle zufrieden macht und genau darum versucht man eben, sofern machbar und nutzen bringt(in diesem fall optischen) alle interessen mit zuberücksichtigen.

Ich weiss nicht ob Reunion gezockt hast, aber mir persönlich kamen solche Kampfdarstellungen mit am spannendsten vor im gesamten Spiel. Doch vorsicht: ich glaub bei Reunion wusste man nicht wievielen Gegnerschiffen man gegenübersteht VOR dem Kampf. Diese Tatsache dürfte man nicht ausseracht lassen.

Nun zum technischen (ohne grossartig nachzudenken) wird man die vorberechnugen des kampfs in form einer entsprechenden matrix doch locker den beiden beteiligten übermitteln können. 

Vorgehen: der server lässst  den Kampf "zufällig" einmal für sich ablaufen (genau wie von undead aufgezeigt), zeichnet aber genau auf welches schiff was zerstört hat (hier also die matrix). Der Client müsste angepasst werden. Wenn man jetzt voraussetzt, dass jedes Schiff abhängig von seiner ausgangsposition immer die selbe "umlaufbahn" fliegt und das Ziel(vom server vorberechnet) bereits beim ersten Beschuss killen darf/muss, dann hat man doch die gewünschte Synchronisation locker in der Tasche. Könnte je nach Ansatz dadurch zu mehr rechenaufwand durch den client kommen, aber man muss das spiel nicht gleich so auslegen dass ganze armaden gebaut und gegeneinander kämpfen dürfen. Oder wenn kampf dann jeweils in kleineren Verbänden pro Kampf.

gepostet vor 15 Jahre, 5 Monate von Kallisti

Nein, kenne Reunion nicht. Und wie gesagt: Nichts gegen optisches Aufbuegeln, nur sollte eben die Animation eine klare Aussagekraft haben, die es ohne sie nicht gaebe, finde ich.

Vielleicht geh ich jetzt von zu komplexen Kampfsystemen aus, aber wenn jedes Objekt ein individuelles Schadensmodell, Schilde, verschiedenstarke und -artige Waffen, Focus Fire Einfluesse, Formationseinfluesse, Einfluesse in Reichweite und Position, Einfluesse durch Besatzung und Module und dergleichen hat, dann ist ein enormer Detailgrad an Informationen und auch an Darstellungsdetails noetig, um das animiert in eine uebersichtliche Form zu bringen und gleichzeitig weder zu langweilen, noch Probleme in der Uebersicht zu schaffen.

Selbst wenn man "nur" Bewegungsvektoren, Quell- und Zieleinheit, Schussstaerke (es stirbt ja nicht alles 1 hit, oder? Dann braeuchte man keine verschiedenen Schiffstypen), verbleibenden Rumpf-/Schild-Status und Zerstoerungsmeldungen uebertraegt, ist es imho immens schwierig und aufwaendig die entsprechende Visualisierung in einer Animation nachzustellen und es fallen ziemlich viele Daten an. Zumindest bei der Menge an Einheiten, die hier im Gespraech ist. Und wenn man alles in einem Rutsch uebertraegt, geh ich jede Wette ein, dass nach kurzer Zeit greasemonkey scripts existieren, die direkt lediglich die finalen Zahlen darstellen und den ganzen Animationskram wegschneiden. :P

gepostet vor 15 Jahre, 5 Monate von Sarge

Original von Redrick

Vorgehen: der server lässst  den Kampf "zufällig" einmal für sich ablaufen (genau wie von undead aufgezeigt), zeichnet aber genau auf welches schiff was zerstört hat (hier also die matrix). Der Client müsste angepasst werden. Wenn man jetzt voraussetzt, dass jedes Schiff abhängig von seiner ausgangsposition immer die selbe "umlaufbahn" fliegt und das Ziel(vom server vorberechnet) bereits beim ersten Beschuss killen darf/muss, dann hat man doch die gewünschte Synchronisation locker in der Tasche. Könnte je nach Ansatz dadurch zu mehr rechenaufwand durch den client kommen, aber man muss das spiel nicht gleich so auslegen dass ganze armaden gebaut und gegeneinander kämpfen dürfen. Oder wenn kampf dann jeweils in kleineren Verbänden pro Kampf.

 Um eine identische Darstellung bei allen beteiligten zu bekommen müssen ledeglich die gleichen Ausgangsbedingungen (welche Schiffe sind beteiligt) und der vom Server gewählte Seed für den verwendeten Pseudo-Zufallsgenerator übermittelt werden. Der Ablauf ist somit völlig deterministisch solange keine nicht-deterministischen Eingaben von außen (sprich weitere Benutzereingaben, Systemuhrzeiten etc) verwendet werden. Eine solche Matrix wäre absolut überflüssig.

gepostet vor 15 Jahre, 5 Monate von Redrick

Original von Sarge

 Eine solche Matrix wäre absolut überflüssig.

da sagst du aber was, ist mir passiert, weil ich ursprünglich eine dynamischere variante im kopf ausgemalt hatte, wo alle schiffe beliebig fliegen dürfen und auch sich nicht um schuss-range kümmern (reuinion like), in diesem fall wäre die matrix als absicherung sicherlich von nöten

Original von Kallisti

Selbst wenn man "nur" Bewegungsvektoren, Quell- und Zieleinheit, Schussstaerke (es stirbt ja nicht alles 1 hit, oder? Dann braeuchte man keine verschiedenen Schiffstypen), verbleibenden Rumpf-/Schild-Status und Zerstoerungsmeldungen uebertraegt, ist es imho immens schwierig und aufwaendig die entsprechende Visualisierung in einer Animation nachzustellen und es fallen ziemlich viele Daten an. Zumindest bei der Menge an Einheiten, die hier im Gespraech ist. Und wenn man alles in einem Rutsch uebertraegt, geh ich jede Wette ein, dass nach kurzer Zeit greasemonkey scripts existieren, die direkt lediglich die finalen Zahlen darstellen und den ganzen Animationskram wegschneiden. :P

ist alles eine frage der persönlichen motivation, wie weit möchte man persönlich gehen, über sinn/unsinn kann man sonst jahrelang streiten.

ein ähnliches beispiel: ich brauchte ein inventory für mein RPG. Wie weit geht man, bin den aufwändigsten weg gegangen und hab multicell-variante (diablo 2 lässt grüssen) incl überschneidungsanzeige und vorberechneter Zellenbelegung gemacht,

Sinn? Nutzen? keine Ahnung, ich find's von der optik/darstellung halt Hammer und das war die Motivation in diesem speziellen fall

gepostet vor 15 Jahre, 5 Monate von TheUndeadable

Kallisti muss ich im Großen und Ganzen recht geben. Nach der Konzeption des Kampfsystems habe ich mir überlegt wie man diese Darstellung auch sinnvoll nutzen kann.

Als rein visuelle Darstellung mag es mal schön sein, ist mir aber persönlich zu wenig.

Ein paar Kommentare zu den Aussagen von Kallisti:

- Warum Silverlight?

Weil ich es einfach kann. JS/DOM hatte ich mir erst überlegt, aber dies beherrsche ich nicht so und es wäre der 10fache Zeitaufwand zur Programmierung. Nebenbei kenne ich einen großen Browser, der dabei Performance-Probleme hat. Flash und JavaFX sind vielleicht äquivalent zu Silverlight, vielleicht nicht?

- Validierung auf dem Server

Theoretisch wäre es möglich, dass man sämtliche Random-Seedwerte und die Kampfeinstellungen sowohl auf dem Client, als auch auf dem Server berechnen kann. Es sollte immer das gleiche Ergebnis herauskommen.

Allerdings kann ich mir vorstellen, dass manche Prozessoren eine andere Fließkommaberechnung haben (PowerPC, ARM, x86, x64, etc) und es daher zu Ungenauigkeiten kommen kann. Inwieweit Silverlight/Flash/Java eine exakte Berechnung verspricht, weiß ich nicht. Theoretisch gibt es den IEEE-Standard, aber theoretisch gibt es ja auch angeblich einen HTML-Standard.

Nebenbei gibt es das Problem, dass man verschiedene Client-Versionen besitzen muss, wenn man das Kampfsystem ändert. Ansonsten kann man alte Kämpfe nicht nachsimulieren.

Ergo: Versand der kompletten Kampfdaten.

Bei 5.000 Raumschiffen kostet es pro Frame etwa 5000 * hypothetischen 6 Double-Werten = 240 KB an Rohdaten. Man kann diese Datenmenge durch Interpolation und Kompression reduzieren, durch Rückgriff auf float um den Faktor 2. Aber ein Kampf wird im Megabyte-Bereich bleiben. Unschön, aber schaffbar.

- Live-Beeinflussung

Die Live-Beeinflussung sehe ich als kritisch an, da ich vermeiden möchte, dass sich eine Art Echtzeitstrategie ausbildet und Aktivität krass belohnt wird. Technisch lässt sich dies über Streaming lösen. Das ist das kleinste Problem. Nur sehe ich spielerisch große Probleme.

- Technische Demo

Wie ich oben schon schrieb, entstand die Idee aus einem Silverlight-Test und Drezils-Kampfsystem. Es kann sein, dass ich die Sache weiter ausbauen werde, andere Schiffssysteme einzufügen oder Raketen zu inkludieren, ist ein kleineres Problem, muss nur gemacht werden.

Die Frage ist: Wie integriert man dies spielerisch?

Als reine Animation finde ich es zu schade, aber es würde schon helfen, wenn man keine Tabellenwüsten hat, sondern klar und deutlich sehen kann, warum man einen Kampf gewonnen oder verloren hat.

gepostet vor 15 Jahre, 5 Monate von Drezil

ich hatte bei mir geplant alle 10 sec nen 'snapshot' zum client zu senden und dieser kann dann aufgrund der bestehenden daten (kurs, geschwindigkeit) und den neu hinzugekommenen (ebenfalls kurs, geschwindigkeit) eine flugstrecke interpolieren (ich dachte da an etwas b-spline-technisches mit der geschwindigkeit als tangente etc.), sodass man "schöne" belibig flüssige fahrten bekommt.

Man muss ja nicht alles übertragen. wichtig ist nur, dass der spieler den eindruck hat, dass dem so wäre.

Außerdem lief mein kampfsystem in "ticks" ab, die alle 10 sec liefen. Somit zieht sich ein normaler kampf ca. 2-3h und ein "live"-eingreifen über z.b. ajax-calls wäre denkbar simpel zu implementieren.

den gesamten kampf zum "nachsehen" kann man auch gezipped übertragen (und gerade bei datenspeicherung ala JSON kann man extrem viel kompression rausholen).

Ein Beispielkampf bei mir wäre: http://mission-unknown.de/stuff/5608.json.txt - 213 runden, sprich 35:30 Kampfdauer. Einzelne Schüsse/Schussversuche sind nicht aufgezeichnet und iirc waren es auch nur ne hand voll schiffe. Aber ich hatte mein Spiel extra so ausgelegt, dass ein dickes schiff auch mal 2-3 Tagesproduktionen eines guten Spielers kostet, ergo habe ich mit 50 schiffen schon eine riesen Streitmacht.

wie gesagt: in einem schönen client (silverlight, java, flash, js+canvas, ..) kann man aus den daten sicher was tolles extrapolieren.

ps: und hab noch einen größeren kampf gefunden: http://mission-unknown.de/stuff/5616.json.txt - 1419 runden, 21 schiffe (wenn ich mich nicht verzählt hab), 5.2mb (unzipped), 389k mit 7z

gepostet vor 15 Jahre, 5 Monate von altertoby

Original von TheUndeadable

- Validierung auf dem Server

Theoretisch wäre es möglich, dass man sämtliche Random-Seedwerte und die Kampfeinstellungen sowohl auf dem Client, als auch auf dem Server berechnen kann. Es sollte immer das gleiche Ergebnis herauskommen.

Allerdings kann ich mir vorstellen, dass manche Prozessoren eine andere Fließkommaberechnung haben (PowerPC, ARM, x86, x64, etc) und es daher zu Ungenauigkeiten kommen kann. Inwieweit Silverlight/Flash/Java eine exakte Berechnung verspricht, weiß ich nicht. Theoretisch gibt es den IEEE-Standard, aber theoretisch gibt es ja auch angeblich einen HTML-Standard.

Nebenbei gibt es das Problem, dass man verschiedene Client-Versionen besitzen muss, wenn man das Kampfsystem ändert. Ansonsten kann man alte Kämpfe nicht nachsimulieren.

Ergo: Versand der kompletten Kampfdaten.

Wenn man dies aber bereits in der Programmierung beachtet? Sprich größtenteils mit Ganzzahlen rechnen bzw. mit einer "Bruch-Klasse",... dann könntest du den Vorteil von Silverlight voll ausschöpfen (so gut wie kein neuer Code, sondern echt nur noch die Darstellung muss für den Client (neu)geschrieben werden). Datentransfer wird auch auf die Anfangsbedinungen + verwendeter Zufalls-Seed reduziert. 

Dann bleibt nur noch das Problem mit der Simulation der alten Kämpfe... wie oft verändert man denn später das Kampfsystem? In diesen wohl doch eher seltenen Fälle berechnet man davor eben die Kämpfe und speichert sie ab. Dann überträgt man sie eben komplett, alzu oft dürften sie ja ohne hin nicht aufgerufen werden.

Aber ich sehe wie auch schon Kallisti die Gefahr im Visualisierung um des Visualisungswillen und nicht damit der User einen Mehrwert hat. Wenn man die Schiffsanzahl reduziert, könnte man ähnlich zu normalen Client-Games die wichtigen Infos direkt anzeigen und die Details dann per PopUp oder MouseOver (mit Möglichkeit den Kampf zu pausieren). So ließt der User nicht was passiert sondern sieht es... braucht also keine Tabellen aber hat alle Infos die er braucht. (Die Tabellen könnte man ja trotzdem anbieten.).

Wie schön ich die Darstellung von Undead bisher auch finde, nützlich ist sie bisher noch garnicht -:)

gepostet vor 15 Jahre, 5 Monate von Todi42

Kann mal jemand einen Screen-Shot machen, damit ich sehen kann, wovon ihr redet, ohne das ich silverlight installieren muss?

Danke Todi

gepostet vor 15 Jahre, 5 Monate von Blabbo

Ohne jetzt alle techinschen Details gelesen zu haben.

Interessant fände ich sowas, wenn man vorher z.b. ne bestimmte angriffsformation für den kampf auswählen kann und dann an der visualisierung sieht, wie sich das auswirkt, weil z.b. Überzahlsituationen hergestellt wurden.

Ich persönlich halte ja nicht viel von solchen Massenkämpfen mit hunderten von Einheiten.
Das macht es nahezu unmöglich, unterschiedliche Einheitentypen darzustellen.

Für die Umsetzung sollte man imo vermeiden, mehr als den Ausgangsstatus und den Endstand zu übertragen.
Alles andere ist doch irgendwie Flickwerk.

Ist halt natürlich allgemein ein recht spezielles Thema, weil es extrem vom Kampfsystem an sich abhängt.
Da ich das kampfsystem von Undeadable´s BG nicht kenne, ists schwer, das einzuschätzen.
Denke jeder kann das für sein eigenes BG am besten einschätzen, was geht und was nicht.

Original von Todi42

Kann mal jemand einen Screen-Shot machen, damit ich sehen kann, wovon ihr redet, ohne das ich silverlight installieren muss?

Danke Todi

Man sieht rote und grüne punkte, die aufeinanderzufahren, ab ner besitmmten entfernung bildet sich eine weisse linie zwischen ihnen (wohl das zeichen dass sie sich beschiessen).

Sorry, zu faul für screenshot :)

gepostet vor 15 Jahre, 5 Monate von cherry

Hab mir erlaubt für die nicht-Silverlight Benutzer Screenshots zu machen. Sie vermitteln leider nicht ganz gut wie cool es animiert aussieht weil man nur in der Animation die Dreidimensionalität erkennt:

http://78.46.66.194/~cherry/delme/demo.png

Ich finde es ziemlich cool, Respekt! Ich könnte mir vorstellen, dass es nicht nur schön anzuschauen ist sondern auch strategischen Nutzen hat. Wenn man seine Flotten parametrisieren kann und damit ihr Kampfverhalten zu verändern wäre so ein grafisches System ideal um die Resultate zu begutachten. Man könnte zum Beispiel eine Formation festlegen in der die Schiffe fliegen (vgl. Homeworld) und ihr Verhalten einstellen, z.B. aggressiv, hit and run, defensiv, Rückzug nach Verlust von X% der Schiffe, nur spezielle Schiffsklassen anvisieren usw. Je nachdem wie die Spieler ihre Flotten einstellen ist der Kampf dann unterschiedlich.

Man müsste Kämpfe abspeichern können und per Link weiterschicken, so dass andere sie nachvollziehen können. Eine Replay-Funktion sozusagen.

Die floating-point Frage ist auch interessant. Weiss dazu jemand mehr? Google hat folgende Interessante Diskussion gefunden: http://stackoverflow.com/questions/328622/how-deterministic-is-floating-point-inaccuracy

Auf diese Diskussion antworten