Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: [Simulator] Neuer Offline Kampfsimulator

  1. #1
    Wuseler
    Registriert seit
    Dec 2011
    Beiträge
    124
    Welt
    Schneefeuer

    [Simulator] Neuer Offline Kampfsimulator

    Hallo,

    ich habe einen neuen Offline Kampfsimulator geschrieben. Natürlich gibt es bereits andere Simulatoren, die allen bekannt sein sollten. Allerdings sind sie nur geeignet um einen festen Zustand des Spiels zu simulieren. Änderungen im Spiel (z.B. neue Einheiten oder Anpassungen bestehender Einheiten) können nicht simuliert werden, zumindest solange nicht bis der Simulator aktualisiert wird.

    Der neue Simulator versucht diese Lücke zu schließen, indem alle Daten aus Textdateien gelesen werden. Damit hat der Benutzer die Möglichkeit die Einheiten selber zu aktualisieren oder auch aus Spaß an der Freude nach seinen Vorstellungen anzupassen. Da diese Möglichkeiten nicht für alle (oder viele) Spieler relevant sind, ist der Simulator "einfach" implementiert und enthält auch keine grafische Oberfläche, d.h. es ist eine Konsolenanwendung (obwohl man es sich so einrichten kann, dass man trotzdem nur mit einem Mausklick simulieren kann).


    Der Simulator kann hier heruntergeladen werden - aktuell ist Version v1_8946 : https://googledrive.com/host/0B6VRI6...dhc0lYZlV6ZGc/

    (Beide Varianten *_mingw_* und *_msvc10_* sollten funktionieren, und sind nur mit verschiedenen Kompilern erzeugt)

    Der Quellcode kann bei Interesse hier eingesehen werden : https://code.google.com/p/tsosim/

    Die zip Dateien enthalten eine EXE Datei (den Simulator) und ein 'data' Verzeichnis, wo bereits alle Dateien enthalten sind welche alle Einheiten und eine Beispielkarte (IDF) definieren. Ebenfalls ist eine Datei für eine Beispielsimulation enthalten (data/sim_ex.txt).

    Den Simulator ruft man wie folgt auf :
    Code:
    $> tsosim pfad/zur/simulationsdatei.txt
    $> tsosim pfad/zur/simulationsdatei.txt > ausgabedatei.txt
    $> tsosim pfad/zur/simulationsdatei.txt -out ausgabedatei.txt
    Im ersten Fall erfolgt die Ausgabe direkt in der Konsole. Fall die Ausgabe lang ist, ist es empfehlenswert diese in eine Datei umzuleiten (zweite Variante) oder direkt in eine Datei zu schreiben (dritte Variante). Wenn man eine Verknüpfung auf den Simulator mit den entsprechenden Pfaden erzeugt, dann kann man mit einem Mausklick ein neues Simulationsergebnis erzeugen.

    Im Folgenden möchte ich das Format der Simulationsdatei kurz erklären. Eine genauere Beschreibung ist in den mitgelieferten Dateien enthalten.

    Eine einfache Simulation besteht aus der Definition von zwei Garnisonen und der Simulation selbst
    Code:
    -- Das ist eine Kommentarzeile
    
    -- hier muss man den Pfad eintragen, der zu den mitgelieferten Textdateien zeigt
    #usepath "D:/Pfad/zu/den/Daten"
    
    -- relativer Pfad zu den Einheitendefinitionen, wenn man #usepath nicht benutzt, dann muss man hier einen
    -- absoluten Pfad eintragen
    #import "units/units.txt"
    
    
    -- Spieler-Garnison
    #garrison : player_1
      Recruit : 100
      Soldier : 300
      General : 1
    
    -- Computer-Garnison
    #garrison : computer_1
      Elite : 500
    
    -- einfache Simulation, welche nur eine Statistik mit 100 Iterationen berechnet
    #sim : player_1, computer_1
    
    -- Simulation mit 200 Iterationen, 
    -- die Garnisone werden modifiziert, d.h. sie haben am Ende weniger Einheiten als zuvor
    -- zusätzlich zu den Statistiken (STATS) wird eine detailierte Kampfbeschreibung (LOG) ausgegeben
    #sim : player_1, computer_1
      repeats : 200
      modify : 1, 1
      results : STATS, LOG
    
    -- zweite Spieler-Garnison
    #garrison : player_2
      Militia : 200
      Cannon : 300
      General : 1
    
    -- zweite Welle (weil der Angriff auf 'computer_1'  davor modifizierend erfolgte)
    #sim : player_2, computer_1
      modify : 1,1
    Wie man sieht, können beliebige Garnisonsgrößen gewählt werden. Aus dieser Freiheit erwächst natürlich auch eine Pflicht, dass für eine Simulation des derzeitigen Spielzustandes man selber aufpassen muss, dass nicht mehr als 250 (270) Einheiten mitgenommen werden.

    Es können neue Einheiten definiert oder derzeitige Einheiten angepasst werden. So kann z.B. den Kanonieren die Fähigkeit zum Flächenschaden gegeben werden (dass ist zwar derzeit im Spiel nicht möglich, aber vielleicht kann man das machen wenn das Forschungssystem erweitert wird).

    Code:
    -- neue Einheit
    #unit : unit_ID, unit_name
      hitpoints : 123545
      damage : 20, 500
      accuracy : 99
      skills : SPLASH_DAMAGE, FIRST_STRIKE
      attack_id : 23546
    -- attack_id wird benutzt im die Reihenfolge beim Angriff festzulegen (vergleiche dazu die IDs der anderen Einheiten)
    
    -- Einheit umbenennen
    #unit : u_Can, Kanonier
    
    -- Einheitenparameter ändern
    #unit : u_Can, Kanonier
      skills : LAST_STRIKE, SPLASH_DAMAGE
    Einer Einheit kann ein anderer Name vergeben werden. Wenn man Sonderzeichen benutzt, dann sollte man die Dateien im UTF-8 Format abspeichern, ansonsten können Fehler in der Ausgabe entstehen (siehe auch data/units/units_de.txt). Wenn man Einheitenparameter ändert, dann werden die angegebenen Werte geändert. Anderer Parameter bleiben erhalten, d.h. wenn man den 'skills'-Parameter ändert, dann bleibt 'damage' etc. so wie ursprünglich definiert.


    Soviel zu der ersten Version des Simulators. Weitere Infos und Details können in den mitgelieferten Dateien (und im Quellcode) gefunden werden. Ich würde mich über Kommentare und weitere Anregungen freuen.

  2. #2
    Wuseler Avatar von KasiGen
    Registriert seit
    Jun 2012
    Beiträge
    397
    Welt
    Andosia
    Hallo, NuzoweR.

    Erstmal Danke für die tolle Arbeit. So etwas in der Art hab ich mir schon länger gewünscht, vor allem, wenn settlersonlinesimulator.com mal offline ist oder neue Einheiten noch nicht eingefügt sind. Ich bin da viel zu inkompetent, um so etwas zu erstellen. Toll, dass du das in Angriff genommen hast.

    Nach langem Rumprobieren hab ich es dann doch geschafft, meine erste Simulation zum Laufen zu bringen. Hatte vor allem Schwierigkeiten bei der Pfadangabe (z.B. dass nicht "C:\Pfad", sondern "C:/Pfad" eingegeben werden muss).

    Hier ist mein Ergebnis der Beispieldatei:

    Code:
    The Settlers Online - Combat Simulator (tsosim - v1:8946b65bee24).
    Copyright (c) 2013, NuzoweR@Schneefeuer.
    
    
    ==============================================================================================
           Units [##]  |    smin       |  average          |    smax      
      --------------------------------------------------------------------------------------------
          Rounds       |       5       |     6.88          |       9      
      --------------------------------------------------------------------------------------------
          Soldat [ 7]  |    0/ 7 ( -7) |  0.00/ 7 ( -7.00) |    0/ 7 ( -7)
     Elitesoldat [55]  |    0/55 (-55) |  1.62/55 (-53.38) |    7/55 (-48)
         General [ 1]  |    0/ 1 ( -1) |  0.47/ 1 ( -0.53) |    1/ 1      
    ==============================================================================================
    
    
    ==============================================================================================
            Units [###]  |      smin        |    average           |      smax       
      --------------------------------------------------------------------------------------------
           Rounds        |         5        |       6.88           |         9       
      --------------------------------------------------------------------------------------------
          Caltrop [ 30]  |     0/ 30 ( -30) |   0.00/ 30 ( -30.00) |     0/ 30 ( -30)
     Deckscrubber [100]  |     0/100 (-100) |   0.00/100 (-100.00) |     0/100 (-100)
           Gunman [ 40]  |     0/ 40 ( -40) |   4.80/ 40 ( -35.20) |    21/ 40 ( -19)
    ==============================================================================================
    
    
    ==============================================================================================
       Units [##]  |    smin       |  average          |    smax      
      --------------------------------------------------------------------------------------------
      Rounds       |       5       |     6.84          |      10      
      --------------------------------------------------------------------------------------------
      Soldat [61]  |    0/61 (-61) |  1.24/61 (-59.76) |   11/61 (-50)
     General [ 1]  |    0/ 1 ( -1) |  0.28/ 1 ( -0.72) |    1/ 1      
    ==============================================================================================
    
    
    ==============================================================================================
             Units [###]  |      smin        |    average           |      smax       
      --------------------------------------------------------------------------------------------
            Rounds        |         5        |       6.84           |        10       
      --------------------------------------------------------------------------------------------
           Caltrop [100]  |     0/100 (-100) |   0.00/100 (-100.00) |     0/100 (-100)
     Saber-rattler [ 70]  |     0/ 70 ( -70) |  13.72/ 70 ( -56.28) |    39/ 70 ( -31)
    ==============================================================================================
    
    
    Könntest du freundlicherweise erklären, was die einzelnen Werte bedeuten und wieso das in 3 Abschnitte untergliedert ist? Vielleicht hab ich es ja im ersten Post überlesen, aber ich blick da nicht zu hundert Prozent durch.

    LG Kasi

  3. #3
    Wuseler
    Registriert seit
    Dec 2011
    Beiträge
    124
    Welt
    Schneefeuer
    Hallo Kasi,

    erstmal danke dass du dir die Zeit genommen hast den Simulator auszuprobieren. Da gibt es sicherlich noch einiges was man erweitern oder verbessern könnte, aber ich wollte ihn schonmal veröffentlichen, weil ich da ansonsten noch lange irgendetwas "verbessern" könnte.

    Das es nicht mit "C:\Pfad" sondern erst mit "C:/Pfad" funktioniert hat, überrascht mich ein wenig, weil bei mir beide Varianten funktionieren. Es wäre nett, wenn du mir mehr Details darüber mitteilen könntest.

    Zu den Ergebnissen. Was man da sieht sind Statistiken wie man sie auch in anderen Simulatoren sieht. In den drei rechten Spalten sind die überlebenden Einheiten nach einem Kampf angezeigt. Links und rechts das statistische Minimum (smin) bzw. Maximum (smax) und in der Mitte der Durchschnittswert (average).
    Jeder Eintrag besteht aus drei Werten : A / B (-C)
    A ist die Anzahl der überlebenden Einheiten
    B ist die Gesamtanzahl der Einheiten (identisch mit dem Wert in der ganz linken Spalte)
    C ist die Anzahl der verlorenen Einheiten.
    D.h. B - C = A

    Diese Einträge sind für die jeweils verschiedenen Einheitentypen in einer Garnison zeilenweise untereinander angegeben.

    Beim Durschnittswert (average) kann für die Einheit "General" die Sieg- bzw. die Verlustwahrscheinlichkeit abgelesen werden, d.h. A ist die Sieg- und C die Verlustwahrscheinlichkeit, also 47% bzw. 53%. Daraus folgt, man sollte nicht vergessen der Garnison einen General zuzuweisen.

    Da bei einem Kampf zwei Garnisonen beteiligt sind, eins von Spieler und eins vom Computer, sind immer zwei Statistiken zusammen angegeben. Das sieht man an den Einheitentypen in der ersten Spalte. Außerdem ist die Anzahl der Runden gleich.

    Jetzt sieht man aber vier Statistiken. Das liegt daran, dass in der Beispieldatei zwei Simulationen berechnet werden. D.h. die ersten beiden Statistiken gehören zur ersten Simulation, und die letzten beiden zur zweiten Simulation.

    Er wäre vermutlich hilfreich die Ausgaben voneinander mit einer Linie oder ähnlichem zu trennen.

    -----


    Wenn du die Simulation nicht im Standardverfahren berechnen würdest, sondern als Simulationsparameter zusätzlich (results : STATS, MINMAX) angibst, dann würden in der Ausgabe zwei weitere Spalten hinzukommen, welche das absolute Minimum bzw. Maximum angeben. Bei der min-Variante wird die Simulation so berechnet, dass der Angreifer immer minimalen Schaden und der Gegner immer maximalen Schaden zufügt. Bei der max-Variante ist es genau umgekehrt. Hierbei würde man also sehen wie viele Einheiten man selbst oder der Gegner minimal oder maximal verlieren kann. Rein statistisch betrachtet, würden solche Ergebnisse vermutlich niemals eintreten. Man müsste aber zusätzlich die Standardabweichung zu dem Durchschnittswert berechnen um eine genauere Aussage treffen zu können.

  4. #4
    Wuseler Avatar von KasiGen
    Registriert seit
    Jun 2012
    Beiträge
    397
    Welt
    Andosia
    Danke für deine Antwort.
    Hab gestern aus Neugier selber noch paar Stündchen rumprobiert und einiges rausgefunden. Alles in allem gefällts mir sehr gut. Vergleichbarkeit ist auch gegeben: hab das dritte Lager vom IdF mit deinem und mit Asipak's Simulator getestet, ist nahezu identisch.

    Was mir gefällt:
    • Das Einbinden von Maps. Wenn man öfter mal was nachsimulieren will, ist das sehr praktisch. Wär natürlich ideal, wenn uns alle Maps mit den Lagern schon vorliegen würden, aber sowas kann man auch selber machen ^^
    • Die Schlichtheit des Simulators. Bin normalerweise kein Konsolen-Fan, weil ich damit fast keine Erfahrung habe. Aber wenn man sich erstmal reinfindet, ist es kein Problem mehr. Bisschen rumtüfteln macht auch Spaß.
    • Dass er überhaupt funktionert ^^

    Muss meine Aussage von gestern aber zurück nehmen. Es funktioniert auch mit
    Code:
    C:\path\data
    Ich war gestern total verwirrt, weil ich nicht wusste, ob ich
    Code:
    #usepath "C:\path\data"
    #import "C:\path\data\maps\idf.txt"
    
    oder
    
    #usepath "C:\path\data"
    #import "\maps\idf.txt"
    schreiben sollte. Und dann war da noch das Problem mit
    Code:
    tsosim sim_ex.txt -out ausgabedatei.txt
    
    oder
    
    tsosim C:\path\data\sim_ex.txt -out ausgabedatei.txt
    .
    Anhand er Fehlermeldungen konnte ich dann zum Glück nach und nach rausfinden, wie es am Ende aussehen soll. War aber nicht ohne, auch weil ein Leerzeichen in meinem Pfad war und ich vergaß, Anführungszeichen zu setzen.
    Beim nächsten Mal les ich mir die Anleitung genauer durch, bevor ich loslege ^^

    LG Kasi

  5. #5
    Wuseler
    Registriert seit
    Dec 2011
    Beiträge
    124
    Welt
    Schneefeuer
    Zitat Zitat von KasiGen Beitrag anzeigen
    Danke für deine Antwort.
    Hab gestern aus Neugier selber noch paar Stündchen rumprobiert und einiges rausgefunden. Alles in allem gefällts mir sehr gut. Vergleichbarkeit ist auch gegeben: hab das dritte Lager vom IdF mit deinem und mit Asipak's Simulator getestet, ist nahezu identisch.
    Das war der Plan

    Zitat Zitat von KasiGen Beitrag anzeigen
    Was mir gefällt:
    • Das Einbinden von Maps. Wenn man öfter mal was nachsimulieren will, ist das sehr praktisch. Wär natürlich ideal, wenn uns alle Maps mit den Lagern schon vorliegen würden, aber sowas kann man auch selber machen ^^
    Nun, es ist halt schwer abzuschätzen wieviele Leute den Simulator überhaupt benutzen werden. Da wollte ich mir für die erste Version nicht umsonst die Mühe machen alle Maps zu erstellen. Vor allem weil manche Maps recht groß sind.

    Zitat Zitat von KasiGen Beitrag anzeigen
    • Die Schlichtheit des Simulators. Bin normalerweise kein Konsolen-Fan, weil ich damit fast keine Erfahrung habe. Aber wenn man sich erstmal reinfindet, ist es kein Problem mehr. Bisschen rumtüfteln macht auch Spaß.
    Wie gesagt, man kann es so einrichten, dass man die Konsole nicht benutzen muss. Dazu erzeugt man eine Verknüpfung auf die exe Datei indem man das Programm mit der Maus anklickt, die Maustaste gedrückt hält, das Programm zieht und dann im leeren Bereich den Explorers loslässt und dabei die Steuerung- und Shift-Taste gedrückt hält. Wenn man dann auf die Verknüpfung mit der rechten Maustaste klickt und "Eigenschaften" auswählt, dann steht bei "Ziel"
    Code:
    C:\Pfad\zum\Programm\tsosim.exe
    Diese Zeile ändert man in
    Code:
    C:\Pfad\zum\Programm\tsosim.exe C:\Pfad\zur\Sim\Datei\sim.txt -out AusgabeDatei.txt
    Jetzt man mit einem Doppelklick die Simulationen ausführen so wie sie in der Datei "sim.txt" stehen. Die Ausgabe wird dann in die Datei "AusgabeDatei.txt" geschrieben.

    Zitat Zitat von KasiGen Beitrag anzeigen
    • Dass er überhaupt funktionert ^^
    Kleine Info am Rande, der Turmbonus einiger Einheiten kann noch nicht berechnet werden.

    [...], weil ich nicht wusste, ob ich
    Code:
    #usepath "C:\path\data"
    #import "C:\path\data\maps\idf.txt"
    
    oder
    
    #usepath "C:\path\data"
    #import "\maps\idf.txt"
    schreiben sollte.
    Wenn man in "#import" einen absoluten Pfad benutzt, dann sollte es "eigentlich" ganz ohne "#usepath" gehen. Ansonsten muss einfach "#usepath" + "#import" einen existierenden Pfad ergeben (salopp gesagt). Der Punkt ist dass wenn man mehrere "#import" Befehle benutzen will, dass man dann den Basispfad nicht mehr angeben oder "kennen" muss, sondern einfach immer sowas wie
    "#import "maps/map.txt" oder
    "#import "units/units.txt"
    benutzen kann, insbesondere wenn die Daten über mehrere Dateien verteilt sind.


    Und dann war da noch das Problem mit
    Code:
    tsosim sim_ex.txt -out ausgabedatei.txt
    oder
    Code:
     tsosim C:\path\data\sim_ex.txt -out ausgabedatei.txt
    Das ist schon eher ein Problem der Betriebssystems. Wenn man den zweiten Fall benutzt, dann sollte es eigentlich immer funktionieren. Wenn man aber den ersten Fall benutzen will, dann hängt es davon ab wo man sich gerade im Dateisystem befinden ob es funktioniert oder nicht. Hier muss wieder gelten dass "Aktueller/Pfad" + "Pfad/Zur/Sim.txt" einen gültigen Pfad bzw. Dateinamen ergibt.


    Wenn noch mehr Leute den Simulator ausprobiert haben, dann zögert nicht mit euren Kommentaren. Je mehr Rückmeldungen ich bekomme, desto zielgenauer kann ich den Simulator anpassen oder erweitern. Das kommt dann allen zugute.

  6. #6
    Federwolken Entfederer
    Registriert seit
    Oct 2010
    Beiträge
    4.311
    Welt
    Grünland
    ich hätte den simulator gerne getestet. verstehe aber nur bahnhof von dem was du schreibst.

    also ich installiere eine datei - und dann? was ist eine konsole? wieso soll ich beim simulieren plötzlich eine datei erzeugen oder was auch immer?

    ich vermute stark, dass ist eher was für die könner unter uns, oder?

    p.s: habe ihn natürlich nicht istalliert, weil mir schon die beschreibung zu kompliziert erschien.

  7. #7
    Wuseler
    Registriert seit
    Feb 2011
    Ort
    Wien
    Beiträge
    178
    Welt
    Steppenwald
    aber ein negativer beitrag, war nicht zu kompliziert, aber wenigstens wieder ein zähler mehr

  8. #8
    Wuseler
    Registriert seit
    Dec 2011
    Beiträge
    124
    Welt
    Schneefeuer
    Die Konsole ist dieses Ding hier
    Angehängte Grafiken

  9. #9
    Federwolken Entfederer
    Registriert seit
    Oct 2010
    Beiträge
    4.311
    Welt
    Grünland
    kein negativer beitrag. ich teile nur mit, dass nicht jeder ein könner auf dem gebiet ist.
    wenn man sowas für viele anbieten will, dann muss man auch an die denken, die absolut keine ahnung haben.

    wenn ich zu asipaks simulator gehe, dann weiß ich intuitiv was ich tun muss.

  10. #10
    Federwolken Entfederer
    Registriert seit
    Oct 2010
    Beiträge
    4.311
    Welt
    Grünland
    Ein Vorschlag.

    vielleicht machst du mal eine Anleitung mit Bilder usw. damit man eine vorstellung davon hat, bevor man es installiert.

Antworten
Seite 1 von 2 1 2 LetzteLetzte

Berechtigungen

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

Die von uns verwendeten Ubisoft-Cookies sollen sicherstellen, dass du unsere Websites optimal genießen kannst. Durch die Nutzung dieser Website erklärst du dich mit der Nutzung dieser Cookies einverstanden. Weitere Informationen zum Datenschutz.