Ankündigung

Einklappen
Keine Ankündigung bisher.

Brainstorming Überarbeitung altes Projekt

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Brainstorming Überarbeitung altes Projekt

    Hallöchen,

    ich hatte vor ca. 10 Jahren ein BG geschrieben. Es lief, bzw. funktioniert noch immer so, wie damals. Nun habe ich mir das Projekt wieder vorgenommen und möchte nun das Projekt von vorne beginnen, sowie eine komplette Codeoptimierung durchführen. Das ganze Projekt möchte ich nun mit einem Framework umsetzen und Schwanke zur Zeit zwischen Symfony und Laravel. Welches würdet ihr bevorzugen und warum? Überlege auch, ob ich, wenn ich Laravel nutze, ggf Doctrine oder doch Eloquent nutzen sollte.

    Nun zu meiner wichtigsten Frage.

    ​​​​​Mein Kampfsystem hat mir damals so ziemlich alles lahmgelegt, was nur ging. Ich vermute daß es einfach zu komplex in Verbindung mit schlechter Codequalität war.

    Wie würdet ihr sowas effektiv umsetzen. Ich baue Städte mit diversen Gebäuden, in diesen produziere ich ca 20 verschiedene Einheiten mit Vor - und Nachteilen gegenüber anderen Einheiten. Verteidiger erhalten durch Ihre Stadt zusätzliche Werte in der Verteidigung. Alle Einheiten können sich individuell entwickeln. Es gibt zusätzlich Angriff, Verteidigung, Moral, Energie pro Einheit. Jede Stadt hat eine maximale Kapazität von ca 10k. Wenn ich jemanden mit mehreren Städten angreife und diese in einem bestimmten Zeitfenster ankommen(Allianz-Mitglieder eingeschlossen), beteiligen sich alle am Angriff, aber jeder mit seinen Werten. So können auch kämpfe mit ca. einer Mio Einheiten im Angriff bzw. als Verteidigung vorkommen.

    Wie gesagt, es hatte funktioniert, aber nur im kleinen Rahmen. Was könntet ihr mir raten, wie ich hier am Besten vorgehen kann, um alles performanter zubekommen. Die Kämpfe hatte ich komplett via PHP mit den Daten aus SQL berechnen lassen. Jede Einheit gegen jede Einheit, was ggf bei einem Kampf noch funktionieren kann, aber da dort auch parallele Kämpfe zwischen anderen stattfinden, kommen dann ganz schnell die Herausforderungen mit der Performance. Die Kämpfe schon im Vorfeld berechnen, fällt aus, da theoretisch jeder aus der Allianz, jederzeit sich dem Angriff anschließen kann und zusätzlich beeinflussen kann. Fremdangriffe wären auch möglich, würden aber dann als zusätzlicher Angriff, entweder davor oder danach gewertet werden.



    Vielen Dank schon mal
    _cyrix_
    Github_Cyrix, Laravelgemeinschaft bei php.de,Laravel Chat

  • #2
    Das klingt doch nach einem klassichen Browsergame. Der User sendet Truppen los und nach x Stunden kommt die Meldung Gewonne/Verloren. Was willst du da mit "Jede Einheit gegen jede Einheit". Da reicht doch erstmal einfache Mathematik um zu berechnen wer Gewinnt und Verliert und ggf. in welchen Ausmaß.

    Ein Ganz einfaches Model. Es gibt nur Kämpfer. Die können z.B. Motivation haben die sich auf die Kampfkraft auswirkt und ein Verteitigungsbonus durch Bauwerke.

    Der Angreifer schickt z.B. 100 Kämpfer los. Motivation ist durch Sold ist neutral, wird durch gut Nahrung um x geboostet, da der Weg zur Schlacht lang ist, sinkt die Motivation um x.

    Der Verteitiger hat 50 Kämpfer. Verteitigung boostet Motivation um X. 5 Wachtümer boosten die Verteigung um X.

    Angriefer hat damit eine Angriffskraft von "100 Einheiten * Motivation (+ Sold + Nahrung + Weg)" = trölfhundert
    Verteiiger hat damit eine Verteitigungskraft von "50 Einheiten * Motivation (+ Verteitigung) * 5 Wachtürme" = etwas weniger als trülfhundert

    "tröflhunder" - "etwas weniger trölfhunder" = Angreifer gewinnt. Verliert aber 90% seiner Einheiten.

    Das ist ein extrem vereinfachtest Beispiel. Das lässt sich aber auch beliebig ausbauen. Du musst auch nicht alles in eine Entscheidung packen. Das Kunststück ist, dass sinnvoll auszubalancieren. Wenn du 20 verscheidene Einheitentypen hat, die auch nochmal alle x Parameter haben, wird es schwierig da eine Balance zu finden.



    Kommentar


    • #3
      Danke für die Antwort.

      Die Balance ist wirklich schwierig, da ich wirklich diverse Faktoren drinnen habe. Beispiel: Einheit A ist auf Reichweiten spezialisiert und hat einen hohen kritischen Schaden, im Nahkampf fast wirkungslos. Einheit B ist sehr schnell und verursacht Flächenschaden, statt kritische Treffer. Einheit C, verursacht kaum Schaden, kann dafür aber sehr viel einstecken und das Feuer auf sich ziehen, wodurch dann andere Einheiten z.B. Einheit A diese ausschalten können. Das sind jetzt wie gesagt, nur kleinere Szenarien. Deshalb Einheit gegen Einheit, weil ich partout keine Idee habe, wie ich das anders mit ordentlicher Performance umsetzen sollte.

      Du hast ein gutes Stichwort geliefert. Entscheidung. Vielleicht quasi Art Runden?
      Github_Cyrix, Laravelgemeinschaft bei php.de,Laravel Chat

      Kommentar

      Lädt...
      X