Ergebnis 1 bis 13 von 13

Thema: Die Power von Einheiten – Militärwert und Stadtstaatenerpressung

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.03.15
    Beiträge
    14

    Civ5: Brave New World Die Power von Einheiten – Militärwert und Stadtstaatenerpressung

    Für alle die sich immer schon mal gefragt haben wie der Militärwert in der Demo zustande kommt oder warum die Stadtstaaten plötzlich doch keine Angst haben gibt es hier ein paar aus dem Quellcode herausgefischte Erkenntnisse:
    Den ganzen Text gibts mit schönen Formeln (aber ohne Smileys) als PDF im Anhang.

    1. Unit Power

    Civ weist jeder Einheit einen gewissen Wert zu um dessen Stärke einzuschätzen. Im Quellcode heißt der Power deswegen nenn ich den jetzt auch einfach mal so. Dieser Wert hat mit Kampfstärke oder Kämpfen nix zu tun sondern dient nur dazu die Armeestärke einzuschätzen. Die Power einer Einheit hängt ab von:

    • Einheitentyp
    • Anzahl Beförderungen/Level
    • Hitpoints


    Der vom Einheitentyp abhängige Grundwert wird in Abhängigkeit von Bewegungspunkten/Kampfstärke und besonderen Fähigkeiten für jede Einheit beim Spielstart berechnet. Für eine einfache Nahkampfeinheit die sonst nix besonderes kann (z.B. Krieger) ist das Kampfstärke^1.5, für alles andere (Speerkämpfer, Katapult…) wird’s aber schon recht kompliziert. Deshalb hab ich im Anhang eine Excel-Datei in der die Grundwerte pro Einheit alle drinstehen.
    Der Grundwert wird dann pro Level der Einheit um 12,5% (nichtkumulativ) erhöht, also folgendermaßen:

    L = Level der Einheit
    G = Grundwert
    PL = Power nach Berücksichtigung des Levels

    PL = G*(1+L*0,125)

    Man beachte dass Einheiten (ohne Beförderung) bei Level 1 Starten, es gibt also immer mindestens auf den Basiswert 12,5% oben drauf. Das Ergebnis wird abgerundet.
    Danach wird noch mit dem Anteil der Hitpoints multipliziert:

    H = Hitpoints (zwischen 0 und 100)
    P = Power der Einheit

    P = (PL*H)/100

    Das Ergebnis wird wieder abgerundet.

    2. Militärwert

    Der Militärwert errechnet sich zunächst einmal ganz einfach dadurch dass die Power jeder einzelnen Einheit aufsummiert wird, Schiffe aber nur zur Hälfte (abrunden) gezählt werden.
    Danach wird das Gold noch Folgendermaßen berücksichtigt:

    S = Summer der Einheitenpower wie oben beschrieben
    G = Anzahl Gold
    M = Militärwert
    M = S*(1+√G/100)

    Auch hier wird wieder (aber nur ganz am Ende) abgerundet.
    Es wird allerdings nicht mehr als 10.000 Gold berücksichtigt, der Militärwert kann also maximal doppelt so groß sein wie die Summe der Einheitenstärke.
    Damit erhält man den internen Militärwert des Spiels mit dem die Stadtstaaten (s.u.) und die KI ihre Berechnungen anstellen. Man muss noch sagen dass dieser Wert am Anfang jeder Runde berechnet wird, bevor der eigene Rundenwechsel eingeläutet wird (also bevor neues Gold erwirtschaftet wird und Einheiten fertig gebaut werden).
    Die Demo zeigt diesen Wert aber leider nicht an sondern versteckt ihn ein bisschen. Angezeigt wird letzten Endes folgendes:

    √M*2000

    Hier wird zur Abwechslung mal (weil in Lua ausgeführt) normal auf/abgerundet, spielt aber durch die Multiplikation mit 2000 keine sooo große Rolle .
    Wenn man die Formel kennt ist es dann aber auch nicht mehr schwer (durch 2000 Teilen und Quadrieren) aus dem Demowert den eigentlichen Militärwert zurück zu berechnen.

    3. Stadtstaaten

    Für die Erpressung von Stadtstaaten muss man einen Score über 0 drücken (kann man sich ja im Tooltip ganz schön anzeigen lassen), die verschiedenen Komponenten stehen in folgender Tabelle:
    Komponente Score

    Komponente Score
    Grundwiederstand - 110
    Platzierung Militärwert 0 bis 75
    Militär in der Nähe 0 bis 125
    Kanonenboot Sozialpolitik 50% von Score bei Platzierung Militärwert und Militär in Nähe
    Einfluss (das wofür man Zahlen muss) kleiner als 30 - 300
    Wurde in den letzten 10 Runden erpresst - 300
    Wurde in den letzten 20 Runden erpresst - 40
    Verbündet - 10
    Hat Schutzversprechen von anderer Civilisation - 20
    Feindlich gesinnt - 10
    Militärisch - 10

    Wenn man kein Gold sondern einen Bautrupp klauen möchte kommt noch folgendes hinzu:
    • - 30 Zusätzlich für das Einheitklauenwollen (man könnte auch anders sagen, um einen Bautrupp zu klauen braucht man einen Score von 30).
    • - 300 Falls der Stadtstaat echt weniger Bevölkerung als 4 hat (also 1-3)



    Zu Militär in Nähe:
    In einem gewissen Radius wird die Einheitenpower der Einheiten des Spielers und der des Stadtstaats summiert (hier zählen Schiffe normal). Der Radius ist Kartenbreite/10 (abrunden). Die Maße der Verschiedenen Kartengrößen kann man sich z.B. hier anschauen. Außerdem bekommt der Stadtstaat noch seine Stadtstärke folgendermaßen hinzugerechnet:

    PS = Power der Stadt
    S = Stadtstärke (angezeigt)
    PS=S^1,5

    Dann Wird der Quotient dieser Summen gebildet, also Summe Spielerpower durch Summe Stadtstaatenpower. In Abhängigkeit von diesem Quotienten gibt’s folgenden Score:

    Quotient Score
    >= 3 125
    >= 2 100
    >= 1,5 75
    >= 1 50
    >= 0,5 25

    Zu Militär Insgesamt:
    Hier wird aus allen Militärwerten (s.o.) eine Liste erstellt, die Liste sortiert und in Abhängigkeit der eigenen Position auf dieser Liste gibt’s Punkte. Bei Gleichstand entscheidet der Sortieralgorithmus! Es ist also nicht so wie bei der Demo, dass bei Gleichstand jeder für sich 1. Ist.
    Der Score berechnet sich aus der Position folgendermaßen:

    S = Score durch Militärranking
    P = Position in der Liste (beginnt bei 0 und geht bis Spieleranzahl – 1)
    A = Anzahl der Spieler
    S = (A-P)/A*75

    Man bekommt also Maximal 75 und Minimal 75/A Punkte.


    Quellenangabe

    Ich weiß nicht ob das rechtlich einwandfrei ist den Code von Firaxis hier im Forum zu posten (zumindest hab ich nirgendwo was gefunden dass ich das darf), deswegen hab ich mal davon abgesehen und einfach nur beschrieben was passiert… Trotzdem natürlich noch in paar Hinweise, wo man was findet:

    Die Grundpowerwerte werden von Civ gecacht und ich hab den Cache ausgelesen. Berechnet werden Sie in der CvUnitClass.cpp CvUnitEntry:: DoUpdatePower(). Falls sich da jemand für interessieren sollte bitte nicht wundern, der Code macht teilweise mehr oder weniger das Gegenteil von dem was als Kommentar drübersteht . Die Berücksichtigung von Level und Hitpoints ist in CvUnit.cpp CvUnit::GetPower(), die Aufsummierung und die Goldberücksichtigung in CvPlayer.cpp CvPlayer::calculateMilitaryMight(). Die Aufbereitung für die Demo findet sich in der Demographics.lua (die liegt im Spieleverzeichnis und nicht beim Code von Firaxis, genauen Pfad hab ich gerade vergessen…). Und die Berechnung des Scores für die Stadtstaatenerpressung macht CvMinorAI::CalculateBullyMetric in CvMinorCivAI.cpp
    Angehängte Dateien Angehängte Dateien
    Geändert von bbumblebee (06. März 2015 um 18:49 Uhr)

  2. #2
    Hans Dampf Avatar von Dromina
    Registriert seit
    30.04.13
    Beiträge
    3.569
    Sehr schön gemacht, endlich kann man mal sinnvoll die Militärstärke und auch die Demowerte berechnen, die Formeln kannte ich so noch nicht


    Dieser Malus heißt allerdings:

    - StSt hat Schutzversprechen (egal wie viele, es gibt immer genau -20 als Malus. Eigenes Schutzversprechen zählt nicht als Malus)


    Dann als Zusatz, da mir zumindest der Teil mit der geringen Bevölkerung letztens erstmals aufgefallen ist, gibt es bei der Erpressung eines BTs bis zu 2 zusätzliche Mali:

    Bild
    Angehängte Grafiken Angehängte Grafiken
    Civ 5 PBEMs:
    PBEM 106 - Äthiopien - gewonnen
    PBEM 112 - Polynesien - abgegeben
    PBEM 113 - Inka - gewonnen
    PBEM 116 - Hunnen - gewonnen
    PBEM 119 - Babylon - AW - verloren
    PBEM 121 - Schweden - IZA - abgegeben
    PBEM 171 - Dänemark - verloren
    PBEM 196 - AW - abgegeben
    PBEM 199 - China - verloren

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.03.15
    Beiträge
    14
    @Dromina: Danke für den Hint mit dem Schutzversprechen, hab gerade nochmal geschaut und wohl übersehen dass da ne Schleife nach der ersten Civ mit Schutzversprechen abgebrochen wird.
    Hab auch das mit dem Bautrupp hinzugefügt.

  4. #4
    Moderator Avatar von viktorianer
    Registriert seit
    14.07.07
    Ort
    Berlin
    Beiträge
    14.912
    Da macht sich einer aber Mühe

    Hier steht auch noch etwas Information (ganz weit unten, letzter Absatz):
    http://www.carlsguides.com/strategy/...citystates.php


    MP live streams | Civ6: Civ 6 - Allgemeines und Civ 6 Strategien-FAQ | PBEM-Tool : PBEM1 - Russland PBC6 - Ägypten+Sumerien PBC18 - Cree PBC19 - Australien

    Amateurastronomie Blog

    "Eine überragende Kultur kann nicht von außen her erobert werden, so lange sie sich nicht von innen her selbst zerstört hat"

  5. #5
    Registrierter Benutzer
    Registriert seit
    05.03.15
    Beiträge
    14
    Zitat Zitat von viktorianer Beitrag anzeigen
    Hier steht auch noch etwas Information (ganz weit unten, letzter Absatz):
    http://www.carlsguides.com/strategy/...citystates.php
    Jap hab ich auch schon gesehen, die Zahlen stimmen aber irgendwie nicht mehr, wurde wohl in irgendeinem Patch geändert...

  6. #6
    Moderator Avatar von viktorianer
    Registriert seit
    14.07.07
    Ort
    Berlin
    Beiträge
    14.912
    Ja, das müsste noch G&K sein. Daher um so besser wenn es hier neue gibt. Ich habe so eine Übersicht noch nicht gefunden, auch nicht bei den Fanatics.


    MP live streams | Civ6: Civ 6 - Allgemeines und Civ 6 Strategien-FAQ | PBEM-Tool : PBEM1 - Russland PBC6 - Ägypten+Sumerien PBC18 - Cree PBC19 - Australien

    Amateurastronomie Blog

    "Eine überragende Kultur kann nicht von außen her erobert werden, so lange sie sich nicht von innen her selbst zerstört hat"

  7. #7
    Registrierter Benutzer Avatar von Raupe
    Registriert seit
    06.10.14
    Beiträge
    4.407
    Ich hoffe, dass bei einem so guten Beitrag auch etwas Threat-Nekro erlaubt ist.

    Zunächst mal allerbesten Dank, bbumblebee, für diese wirklich sehr gelungene Zusammenstellung!

    Eine Winzigkeit ist mir aufgefallen:

    Zitat Zitat von bbumblebee Beitrag anzeigen

    Für die Erpressung von Stadtstaaten muss man einen Score über 0 drücken (kann man sich ja im Tooltip ganz schön anzeigen lassen), die verschiedenen Komponenten stehen in folgender Tabelle:
    Komponente Score

    Komponente Score
    Grundwiederstand - 110
    Platzierung Militärwert 0 bis 75
    Militär in der Nähe 0 bis 125
    Kanonenboot Sozialpolitik 50% von Score bei Platzierung Militärwert und Militär in Nähe
    Einfluss (das wofür man Zahlen muss) kleiner als 30 - 300
    Wurde in den letzten 10 Runden erpresst - 300
    Wurde in den letzten 20 Runden erpresst - 40
    Verbündet - 10
    Hat Schutzversprechen von anderer Civilisation - 20
    Feindlich gesinnt - 10
    Militärisch - 10
    Bei "Einfluss (das wofür man Zahlen muss) kleiner als 30" fehlt ein Minus. Sonst könnte man Stst nicht erpressen, wenn man nicht mit ihnen befreundet ist.


    Und zwei kleine Fragen:

    Gelten die Angaben "wurde in den letzten 10/20 Runden erpresst" für alle Spielgeschwindigkeiten?
    Stand da zufällig auch, wie hoch der Tribut (in Abhängigkeit von Spielgeschwindigkeit und Runde?) ausfällt?

    Vielen Dank nochmals für die Mühe. Ich habe lange erfolglos nach diesen Infos gesucht. Insbesondere die "Power-Werte" sehe ich für BNW zum ersten mal . Die Fanatics hatten diese Werte mal für Vanilla extrahiert.
    Geändert von Raupe (24. November 2015 um 12:56 Uhr)

  8. #8
    Spendet Blut Avatar von derboe
    Registriert seit
    02.02.12
    Ort
    Sesamstraße
    Beiträge
    11.706
    Bin zwar nicht bbumblebee, kann deine Frage aber hoffentlich auch beantworten.
    Zunächst gelten die Angaben "wurde in den letzten 10/20 Runden erpresst" auf jeder Spielgeschwindigkeit. Damit man auf den langsameren nicht extrem viel Kohle erpressen kann, wird das Erpressungsgold reduziert.
    Die Berechnung selbst erfolgt wie schon vermutet in Abhängigkeit von der Runde und der Spielgeschwindigkeit. Im Grunde ist der Verlauf linear (lediglich die Rundung auf 5er Werte macht es etwas ungleichmäßig)
    Hab mal eine kleine Tabelle angelegt. Für die exakte Berechnung für eine spezielle Runde bastle ich derweil n Excel. Wird dann wohl im 234er iwann auftauchen...

    Bild
    Angehängte Grafiken Angehängte Grafiken

  9. #9
    Registrierter Benutzer Avatar von Raupe
    Registriert seit
    06.10.14
    Beiträge
    4.407
    Vielen Dank, Boe. Mit der exakten Formel für den "Erpressungsertrag" wären dann wohl alle relevanten Infos zusammengetragen

    Kannst du deine Excel-Datei vielleicht irgendwo anders als im 234er präsentieren? Vielleicht hier oder im 237er? Ich bin so tippfaul und dein png so ähm unhandlich...

    Ich habe alles schonmal in einem Excel-Tool zusammengestellt. Ersten Tests zufolge funktioniert es tadellos. Wenn es auch noch hübsch ist und jemand Bedarf hat, kann ich es hier gerne zur Verfügung stellen.

  10. #10
    Spendet Blut Avatar von derboe
    Registriert seit
    02.02.12
    Ort
    Sesamstraße
    Beiträge
    11.706
    Zitat Zitat von Raupe Beitrag anzeigen
    Vielen Dank, Boe. Mit der exakten Formel für den "Erpressungsertrag" wären dann wohl alle relevanten Infos zusammengetragen
    Die Berechnung des Quotienten für die "Militär in der Nähe" Bedrohung ist noch nicht 100%ig vollständig. Muss mal schauen, ob ich da mal bissl Zeit finde, dass noch zusammenzutragen. Da gibts noch ein paar Formeln, die noch mal eine erhebliche Komplexität mit sich bringen (da hat wohl mal einer der Programmierer lange Weile gehabt). Allerdings sind die nicht soo wichtig für das eigentliche Erpressen wenn ich es richtig im Kopf habe

    Blöd, dass du im 234er selber mitspielst , aber sobald ich es dort gepostet habe, werde ich das Excel auch hier reinstellen

  11. #11
    Registrierter Benutzer Avatar von Raupe
    Registriert seit
    06.10.14
    Beiträge
    4.407
    Zitat Zitat von derboe Beitrag anzeigen
    Die Berechnung des Quotienten für die "Militär in der Nähe" Bedrohung ist noch nicht 100%ig vollständig. Muss mal schauen, ob ich da mal bissl Zeit finde, dass noch zusammenzutragen. Da gibts noch ein paar Formeln, die noch mal eine erhebliche Komplexität mit sich bringen (da hat wohl mal einer der Programmierer lange Weile gehabt). Allerdings sind die nicht soo wichtig für das eigentliche Erpressen wenn ich es richtig im Kopf habe

    Blöd, dass du im 234er selber mitspielst , aber sobald ich es dort gepostet habe, werde ich das Excel auch hier reinstellen

    Blöd, dass du dort mitspielst!
    Wenn dem nicht so wäre, dann müsste ich mich hier weniger bemühen und könnte einfach in unsere Story schreiben: "Der Stst dort sieht lecker aus. Kann mir jemand (Boe? ) sagen, ob ich den erpressen könnte?" Geschätzte 2 Stunden später wüsste ich dann, dass ich mit meinen "mickrigen Truppen" daheim bleiben könnte.


    Fehlt bei der Berechnung von "Militär in der Nähe" zufällig ein Faktor für Belagerungswaffen? Gerade Katapulte kommen bei den Werten von bbumblebee unerwartet schlecht weg. (Auch, dass sie bei der Berechnung des Soldatenwertes einen geringeren Beitrag leisten als Speerkämpfer, finde ich zwar gerechtfertigt aber doch überraschend...)

  12. #12
    Spendet Blut Avatar von derboe
    Registriert seit
    02.02.12
    Ort
    Sesamstraße
    Beiträge
    11.706
    Also die Militärwerte passen mit meinen überein (abgesehen davon, dass die Marinewerte bei mir später verrechnet werde)
    Damit sind auch Belagerungswaffen exakt so schwach wie sie hier gepostet wurden. Die Beförderungen für den Stadtangriff macht sich im Kampf dann aber deutlich mehr bemerkbar.

  13. #13
    Registrierter Benutzer Avatar von Raupe
    Registriert seit
    06.10.14
    Beiträge
    4.407
    Die Beförderungen für den Stadtangriff macht sich im Kampf dann aber deutlich mehr bemerkbar.
    Sie meinen? Bei der Aussage steh ich in diesem Zusammenhang auf dem Schlauch.

    Niemand hat die Absicht tatsächlich anzugreifen...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •