Kampfsystem

Aus OWiki
Wechseln zu: Navigation, Suche

Allgemeines

Das Kampfsystem ist eine sehr komplexe, servergestützte Software zur Berechnung der Spielerkämpfe und damit elementarer Bestandteil des Spiels. Es wird durch den Eventhandler aufgerufen wenn sich zwei feindliche Flotten und deren Verteidigung auf einem Planeten oder Mond bzw. in deren Orbit begegnen. Es wird auch Kampfskript genannt, da es in früheren Versionen als PHP Script auf den Servern lief.


Es gibt Nachbildungen dieser Software in Form der Kampfsimulatoren wie Speedsim, Dragosim und Dragosim2 sowie Holiosim.


Aufgabe ist in allen Fällen die Berechnung der kämpfenden Einheiten (bei allen Schiffstypen von der Spionagesonde bis hin zum Todesstern) als Schlacht mit dem Ergebnis von Trümmerfeldern, die Entstehung von Monden, die Erstellung der Kampfberichte und Spionageberichte, usw.


Man erkennt die zentrale Rolle des Kampfsystems, wenn man sich die Abfolge der Ereignisse im Spiel bewusst wird. Alles was mit Schiffsbewegungen zu tun hat, kann im Gegensatz z.B. zum "Baumenü" oder "Forschungsmenü" den Aufruf dieses Softwareteilsystems auslösen. Spionieren, saven, handeln, recyceln, angreifen, auf Expedition gehen usw. Die ungenügende Stabilität des Kampfskripts ist wie auch der Eventhandler scheinbar für diverse Bugs zuständig. Der 2-Rundenkampfbug ist hier ebenso zu nennen, wie z.B. nicht oder falsch berechnete Kämpfe oder früher der Abschuss von Recyclern durch das Trümmerfeld bzw. dem Benutzer Space.

Das Kampfsystem wird stetig verbessert und hat viele Änderungen erfahren. Auch die Gewichtung von Schiffen wie z.B. die "Abschwächung" von Todessternen oder die 1%-Regel fließen in das Kampfskript ein.

Durch Einführung des Allianzkampfsystems (AKS) ist das System noch komplexer geworden. Inzwischen hat man das Kampfsystem in einer systemnahen, kompilierbaren Programmiersprache (nach Angaben der Entwickler C++) umgesetzt und so die Berechnungszeiten von früher bis zu 15 Min. auf wenige Sekunden gekürzt. Dies scheint auch einer der wichtigsten Änderungen zu sein, um "alte" Universen mit dem AKS ausstatten zu können. Da sich nun im AKS mehrere Gegner und damit sehr viele Flotten gegenüber stehen können, sind auch entsprechend große Zahlenräume notwendig geworden.


Das Kampfsystem muss mit sehr großen Zahlen arbeiten und hatte in der Vergangenheit daher immer mal wieder Schwierigkeiten mit der Berechnung sehr großer Flottenkämpfe. Der Absturz des Kampfsystems aus diesem Grund hat meist eine blockierende Wirkung auf den Eventhandler und damit sehr weitreichende Folgen für alle Spieler des Universums. Beobachtet wurden bisher z.B. stark verzögerten Flottenankünfte (Spionagesonden bis zu 2 Std. unterwegs) bis hin zu Totalausfall eines ganzen Universums.

Das Kampfsystem gehörte lange zu den bestgehüteten Geheimnissen von OGame; ist jedoch heute (wahrscheinlich) vollständig erfasst.

Algorithmus des Kampfsystems

  1. Initialisierung
  2. Jede Runde (maximal 6)
    • Schilde werden aufgeladen
    • Angreifer und Verteidiger schießen aufeinander (Reihenfolge der angreifenden Schiffe wie im KB: zuerst der Kleine Transporter, zum Schluss der Todesstern bzw. die Große Schildkuppel)
      • Zufällige Auswahl einer gegnerischen Einheit
      • Schild des angegriffenen Schiffes absorbiert so viel Schaden wie nur möglich, dabei wird die Schildladung entsprechend abgebaut
        • Sollte der Schaden geringer als 1% des maximalen Schildwertes des Verteidigers sein, dann wird dieser Schaden ignoriert, so dass Schildladung und Hülle durch diesen Schuss nicht verändert werden.
      • Restliche Schusskraft greift die Hülle an
        • 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.
      • Wenn ein Schiff eine andere Einheit trifft, hat es zusätzlich noch die Möglichkeit erneut feuern zu dürfen (siehe Rapidfire)
    • Alle Schiffe, die nach einer Runde das Explosionsflag besitzen, werden aus dem Kampf entfernt.
  3. Kampfausgang
    • Derjenige, der überlebt (also noch Einheiten besitzt), gewinnt auch. Wenn beide noch Einheiten besitzen, dann ist der Kampf unentschieden und die restlichen Schiffe vom Angreifer fliegen zum Ursprungsplaneten zurück
    • Kämpfen 2 Flotten gegeneinander, die in der ersten Runde zu wenig Hüllenschaden erzeugen (beispielsweise, weil alles von den Schilden abgehalten wird), so wird der Kampf ebenfalls mit einem Unentschieden abgebrochen - Allerdings schon nach der ersten Runde.
    • Der Angreifer kann im Falle eines Sieges max. 50% der vorhandenen Ressourcen des Verteidigers als Beute mitnehmen.
    • Beim Verteidiger werden nun mittels einer Zufallszahl die Verteidigungsanlagen pro Typ zu 60% - 80% vollständig repariert; wenn ein Einheitentyp kleiner gleich 10 ist, dann erfolgt eine eigenständige Berechnung des Wiederaufbaus je Verteidigungseinheit mit einer Chance von 70%. Ein Ingenieur halbiert die Wahrscheinlichkeit eines Nichtwiederaufbaus, d.h. erhöht die Reparaturquote auf 80%-90%.

Rapid Fire

Hauptartikel: Rapidfire

Das Rapidfire (kurz: RF) ist bereits relativ lange ein fester Bestandteil des Kampfsystems. RF beschreibt, wie groß nach einem Schuss von einem bestimmten Schiff auf ein anderes Einheit die Chance ist, nochmal in dieser Kampfrunde schießen zu dürfen. Die Höhe des RF ist allein abhängig vom feuernden sowie vom anvisierten Schiffstyp bzw. Verteidigungstyp. Die folgende Tabelle gibt Aufschluss über den jeweils konkret verwendeten Wert.

Angreifer Ziel Rapidfire (durchschnittliche Schusszahl)(RF x) Rapidfire % (RF x%)
Alle Schiffe außer
Sonden & Sats
& Todesstern
Spionagesonden & Solarsatelliten 5 80 %
Schwerer Jäger Kleiner Transporter 3 66,7 %
Kreuzer Leichter Jäger 6 83,3 %
Raketenwerfer 10 90 %
Schlachtkreuzer Kleiner Transporter & Großer Transporter 3 66,7 %
Schwerer Jäger & Kreuzer 4 75 %
Schlachtschiff 7 85,7 %
Bomber Raketenwerfer & Leichtes Lasergeschütz 20 95 %
Schweres Lasergeschütz & Ionengeschütz 10 90 %
Zerstörer Leichtes Lasergeschütz 10 90 %
Schlachtkreuzer 2 50 %
Todesstern Spionagesonden & Solarsatelliten 1.250 99,9 %
Transporter & Recycler & Kolonieschiff 250 99,6 %
Leichter Jäger 200 99,5 %
Schwerer Jäger 100 99 %
Kreuzer 33 97 %
Schlachtschiff 30 96,7 %
Bomber 25 96 %
Schlachtkreuzer 15 93,3 %
Zerstörer 5 80 %
Raketenwerfer & Leichtes Lasergeschütz 200 99,5 %
Schweres Lasergeschütz & Ionengeschütz 100 99 %
Gaußkanone 50 98 %
Todesstern & Plasmawerfer & Schildkuppeln 1 0 %

Dabei wird die Prozentzahl häufig als RF von x% angegeben. RF(x) ist dann die durchschnittliche Anzahl der Schüsse, die ein Schiff gegen ein anderes abgeben kann. Dies lässt sich wie folgt umrechnen:

  • RF x% = 100-(100/Rapidfire)
  • RF(x)= 100/(100-RF x%)