Ankündigung

Einklappen
Keine Ankündigung bisher.

Truppenbewegungen

Einklappen

Neue Werbung 2019

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

  • Truppenbewegungen

    Hallo

    Viele von euch kenne sicher Browsergames wie Travian, Die Stämme oder wie sie alle heisen.
    Wenn ich so ein Spiel sehe / spiele hinterfrage ich irgendwie immer die Technik. Meist ist sie einfach zu verstehen. Bei Spielen mit z.b.Truppenbewegungen fällt es mir aber schwer zu begreifen wie so etwas berechnet wird.
    Als beispiel nehme ich einfach mal ein Dorf mit 500 Einheiten. Dieses wird nun mit 1500 Einheiten von Spieler A und mit 2500 Einheiten von Spieler B angegriffen. Nun kommt aber noch Spieler C und schickt weitere 1500 Einheiten als unterstützung und Spieler D schickt auch weitere 1000 Einheiten.
    Dann sieht es jetzt so aus:
    Beim Eintreffen von A stehen 2500 Verteidiger 1500 Angreifern gegenüber.
    Wenn B kommt sind vllt nur noch 1900 Verteidiger für 2500 Angreifer da.
    nun zu meiner Frage.
    Wenn kein Spieler eingelogt ist, wie kann dann der Kampf berechnet werden? Wenn sich keiner einlogt, und auf einmal noch ein Spieler das dorf angreift, muss der Kampf ja schon fertig berechnet sein.
    Mir fällt da nicht wirklich irgendwas ein, das man dafür verwenden kann.

    Kennt sich damit jemand aus?
    Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

  • #2
    cron – Wikipedia
    Entweder damit wird es realisiert, oder aber die Kämpfe werden nachträglich berechnet, also wenn sich irgendeiner der 4 Spieler einloggt.
    Wenn zum Beispiel Spieler B sich einloggt, dann merkt das System, dass einen Kampf mit Spieler C gab, aber bevor ich den Kampf berechne, prüfe ich erstmal ob noch ältere Events für Spieler C vorhanden sind um diese zuerst zu berechnen.
    Problem bei Version 2 ist, dass eine Berechnung unter Umständen sehr lange dauern kann. Stell dir mal vor Spieler A wird von den Spielern B-Y nacheinander angegriffen, aber niemand von denen ist online um sodass die Kämpfe nicht berechnet werden. Nun kommt Spieler Z, greift an und bei ihm müssen dann alle Kämpfe berechnet werden, dass kann sehr lange dauern

    Kommentar


    • #3
      ich würde behaupten , das ganze wird sofort berechnet und später verändert , falls weitere ereignisse eintreffen. ich denke das wichtigere dort ist nicht wann das ganze berechnet wird, sondern wann das ergebnis angezeigt wird. Cronjobs benutzt heut zutage kaum einer.

      MFG
      apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

      Kommentar


      • #4
        also login kann nicht der schlüssel sein. Weil z.b. in der Liste über gewinn und verluste der kapf angezeigt wird ohne dass ein spieler eingelogt ist.
        Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

        Kommentar


        • #5
          Na also ich würds auf Cronjobs nehmen - das is einfach praktischer, muss keiner online sein. Vorher berechnen is auch blöd, weil wenn zb. Spieler A Spieleer B angreift und dioe Bewegung 30 Min dauert würde das wenns vorher berehcnet wir voll verbugt sein, wenn innerhalb der 30 Minuten ein Spieler einen Angriff startet der schneller is als Spieler A. Ginge nur, wenn vorher geprüft wird, ob Bereits ein Angriff aussteht der schon berechnet wurde udn dann müssen alle neu berechnet werden - das wär zu blöd fänd ich.

          Kommentar


          • #6
            das wäre dann aber ein Corn der 60 mal pro minuten aufgerufen wird.
            Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

            Kommentar


            • #7
              Zitat von Ryuuzaki93 Beitrag anzeigen
              das wär zu blöd fänd ich.
              es wäre nicht zu blöd, es wäre einfach nur komplizierter als einfach alle x minuten ein Cronjob auszuführen.

              Außerdem angenommen du hast 600.000 spieler auf einem Server, was meinst du wie man den Server belastet wenn man für 600.000 Spieler prüfen muss ob die nun angreifen oder angegriffen werden, und ist man denn schon so weit dass man da was berechnen sollte. und und und. bei 10-100 spielern ist chronjob die einfachste lösung aber bei vielen spielern, hat man da wenig erfolg

              MFG
              apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

              Kommentar


              • #8
                Cronjobs benutzt heut zutage kaum einer.
                Wo hast Du denn das her? Bei so etwas werden fast nur Cronjobs benutzt. Um mal bei dem Bsp. mit dem Dorf und den gestaffelten Angriffen zu bleiben: Was wäre denn, wenn durch die Angriffe Rohstoffe des Dorfes verloren gehen würden und der User die aber gerade auf einem Marktplatz zum Verkauf anbietet. Dort müsste ja dann beim Betrachten des Angebots ebenfalls der Kampf mit berücksichtigt werden.

                Wenn jetzt hier noch angefangen wird, irgendwelche Queues mit Kämpfen, Naturkatastrophen und weiteren Spielelementen für alle möglichen Roshstoffanbieter abzuarbeiten - Na dann gute Nacht..

                Kommentar


                • #9
                  Zitat von xm22 Beitrag anzeigen
                  Bei so etwas werden fast nur Cronjobs benutzt.
                  Wo hast Du denn das her? Aus vielen Disskussionen im Entwicklerbereich von galaxynews.de konnte man sehr schön nachlesen , dass viele Entwickler Cronjobs nicht nutzen(finde nun blöderweise den Thread nicht). Aufjeden fall habe ich dort gelesen dass die meisten BGs sofort alles umrechnen und das ergebnis je nach ereignis überarbeiten, das ergebnis wird dann angezeigt , wenn es so weit ist. Von der Theorie her, ist es logisch usw. jedoch Praktisch ist es sehr kompliziert umzusetzen.
                  Um den Thread nicht noch sinnlos aufzublähen sage ich mal, es gibt viele wege das ganze umzusetzen, einige sind vorteilhaft, andere wiederum nicht, jeder benutzt das , was ihm gerade am besten passt. einige dieser Wege siehste ja hier im thread.

                  MFG
                  apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                  Kommentar


                  • #10
                    also login kann nicht der schlüssel sein. Weil z.b. in der Liste über gewinn und verluste der kapf angezeigt wird ohne dass ein spieler eingelogt ist.
                    Dann wird es wahrscheinlich automatisch berechnet oder auch berechnet, wenn irgendein Spieler online ist (ist aber sehr unwahrscheinlich)

                    Vielleicht nicht direkt ein Cronjob, sondern zum Beispiel ein Eventhandler der in C geschrieben ist oder so, der könnte dann zum Beispiel alle 10 Sekunden (Vielleicht auch länger oder kürzer) prüfen ob etwas zu tun ist, wenn nicht, dann wird weiter gewartet und wenn doch, dann wird gearbeitet

                    Aufjeden fall habe ich dort gelesen dass die meisten BGs sofort alles umrechnen und das ergebnis je nach ereignis überarbeiten, das ergebnis wird dann angezeigt , wenn es so weit ist.
                    Dann würde ich das ganze aber lieber erst berechnen wenn es soweit ist. Nicht auszudenken was man da alles bedenken muss. Habe zwar vorher schon das Ergebnis muss aber womöglich alles noch tausendmal umrechnen.

                    Wie gesagt, es gibt viele Wege

                    Kommentar


                    • #11
                      Zitat von KarlEgon Beitrag anzeigen
                      D
                      ... zum Beispiel ein Eventhandler der in C geschrieben ist oder so, der könnte dann zum Beispiel alle 10 Sekunden...
                      das ist eigentlich die meistbenutzte methode , die leute benutzten statt cronjobs eigene c/c++/c# programme und führen die alle x sekunden aus.
                      apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                      Kommentar


                      • #12
                        Ich "glaube" (!) ihr unterschätzt sowohl die Firmen als auch Computer . Spiele wie Travian etc laufen garantiert nicht auf einem kleinen Webspace sondern vielen Servern. Und da spricht meiner Meinung nach nichts dagegen z.B. auf einem exlusiv eine C++/C#/Java/wasauchimmer Applikation laufen zu lassen die die Berechnungen durchführt. So eine Berechnung ist ja nicht wirklich kompliziert und sollte in wenigen Sekunden, wenn überhaupt, fertig sein.

                        Kommentar


                        • #13
                          Haben wir doch geschrieben, oder nicht?

                          Ich glaube nur nicht, dass die Berechnungen vorher oder nacher durchgeführt werden (wobei ich nachher sinnvoller empfinde als vorher). Selbst wenn man viele Server hat braucht man die Ressourcen ja nicht verschwenden

                          Kommentar

                          Lädt...
                          X