Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Browsergame dauerhafte Berechnungen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Browsergame dauerhafte Berechnungen

    Hallo,
    ich überlege mir gerade wie man in einem Browsergame Sachen berechtnet, die sozusagen ständig geschehen ?
    Also z.B.: die Rohstoffproduktion ?
    Ich hab mir überlegt dass man den Wert (timestamp) speichert wann es das letzte mal berechnet wurde und auf Basis dieser Zeit kann man die Rohstoffe berechnen die dazugekommen sind ?

    Kennt sich jemand mit der Materie aus oder gibt es eine elegantere Lösung wie man das berechnen könnte ?

    Grüße
    Signatur:
    PHP-Code:
    $s '0048656c6c6f20576f726c64';
    while(
    $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"


  • #2
    du speicherst den zeitpunkt als timestamp, bei dem die produktion beginnt. sobald der user sich erneut einlogt, ziehst du die differenz zwischen login zeitpunkt und produktionsbeginn. wenn du nun sagst pro tick (ein tick sind 15sek) werden 100 Eisen produziert, kannst du das errechnen

    Kommentar


    • #3
      differenz zwischen dem jetzigen timestamp und dem des timestamp der letzten änderung mit der anzahl der Rohstoffe pro sekunde ...
      PHP-Code:
      if ( $humans >= ) {
         
      war ();

      Kommentar


      • #4
        Ja, die Idee hab ich oben schon geschrieben, ich suche aber eher nach alternativen Wegen, weil man dafür einen Haufen-SQL Kommandos braucht ^^
        Signatur:
        PHP-Code:
        $s '0048656c6c6f20576f726c64';
        while(
        $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

        Kommentar


        • #5
          warum, SQL lauft viel schneller als ein PHP Server, weil der muss weit nicht so viel ausführen ... verlager deine berechnungen besser auf den Mysql server!!
          PHP-Code:
          if ( $humans >= ) {
             
          war ();

          Kommentar


          • #6
            da wird es nicht viel alternatives geben, du musst das eine speichern und wieder abrufen. ich versteh auch nicht was da als haufen von sql kommandos gelten soll, aus der hüfte geschossen würde ich sagen:

            SELECT produktion_start FROM produktion WHERE userid = '".$id."' AND produkt = 'Eisen'

            Kommentar


            • #7
              1. Kommando: Zeit auslesen
              2. Kommando: Werte zurückschreiben

              Nun kommen aber auch noch Sachen wie Gebäude bauen, Einheiten ausbilden, Einheiten durch die Gegend schicken (Ankunftszeit), ... dazu.

              Da kommt man dann locker auf 10+ Kommandos nur um das Zeug zu berechnen.
              Dazu kommen dann noch die Kommandos um den eigentlichen Seiteninhalt anzuzeigen was dann ganz schnell ziemlich viel wird ...
              Grober Richtwert, sind so 30 SQL-Kommandos (alles keine Umfangreichen, nie mehr als 10 Zeilen oder lesen auf einmal OK für ein Browserspiel?)

              Danke für die Antworten ^^ => Meine Idee war anscheinend garnicht so schlecht

              EDIT:
              warum, SQL lauft viel schneller als ein PHP Server, weil der muss weit nicht so viel ausführen ... verlager deine berechnungen besser auf den Mysql server!!
              Kann man mehre Tabellen (LEFT JOIN) holen und damit dann Berechnungen ausführen und dass wieder per UPDATE zurückschreiben ?
              Und das alles in einem SQL-Kommando ?

              Grüße
              Signatur:
              PHP-Code:
              $s '0048656c6c6f20576f726c64';
              while(
              $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

              Kommentar


              • #8
                Unter MySQL kann man einen JOIN updaten, falls das Deine Frage war.
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  Ok muss sagen dass das schonmal ne super Sache ist !!!
                  Code:
                  UPDATE test1 LEFT JOIN test2 ON test1.id = test2.id SET test1.value = '1' WHERE test1.id = 1
                  Schade jedoch dass sowas nicht geht:
                  Code:
                  UPDATE test1 LEFT JOIN test2 ON test1.id = test2.id SET test2.value='2', test1.value = '1' WHERE test1.id = 1
                  Wobei man Version 2 nicht braucht wenn man ein vernüftiges DB-Design hat oder ?

                  EDIT: Geht doch, hab mich nur vertippt beim dem test2.value -.-.
                  Ok ich muss sagen dass macht die Sache sogar noch toller... Kann mir irgendjemand ne Seite empfehlen (oder ein Buch) weil sowas war mir bisher total unbekannt. Muss glaub mich mal mehr mit MySQL auseinandersetzten, da erfährt man ja die tollsten Sachen.

                  Grüße
                  Signatur:
                  PHP-Code:
                  $s '0048656c6c6f20576f726c64';
                  while(
                  $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

                  Kommentar


                  • #10
                    Klar geht das wenn die Syntax stimmt.
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      was machst du, wenn zwischenzeitlich die prduktion durch ein lvlup eines gebäudes gestiegen ist, aber der User zwischenzeitlich nicht online war?
                      und was ist wenn ein user einen anderen angreift, und der angegriffene lvlup bei z.b. holz hatte? also bei solchen sachen, muss man schon mehr einplanen
                      Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

                      Kommentar


                      • #12
                        Das mit dem Kämpfen ist kein Problem, da man in vor einem Kampf einfach für den Verteidiger und Angreifer die Werte nachrechnet... Das bei den Gebäuden ist ein Problem, da seh ich als einzigste Möglichkeit die beiden Tabelle abzugleichen und falls ein Gebäude fertig wird (in der zwischenzeit) bis zu dieser Zeit zu rechnen, dann das Gebäude zu berechnen und dann mit dem neuen Wert bis zum jetzigen Zeitpunkt weiterzurechnen.
                        Signatur:
                        PHP-Code:
                        $s '0048656c6c6f20576f726c64';
                        while(
                        $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

                        Kommentar


                        • #13
                          Das scheint mir auch wiedermal das Hauptproblem an diesem Thread zu sein: Ein Spielkonzept zu entwickeln reicht eben nicht aus, ein BG auch umsetzen zu können. Keine Ahnung, warum sich da so viele Anfänger ranwagen.
                          --

                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                          --

                          Kommentar


                          • #14
                            Doch, ein Spielkonzept würde in so einem Falle deutlich weiterhelfen. Wenn man weiß, dass Gebäude "aufleveln" kann man wenn das geschieht auch die Berechnung der Rohstoffe einmal mit dem alten Lvl abschließen und dann neu starten.

                            Das setzt aber vorraus, dass man _vorher_ weiß was wann wo wie passieren kann und nicht "einfach mal guckt" wies so klappt.

                            Kommentar


                            • #15
                              Was heißt hier doch? Ich habe geschrieben:
                              Ein Spielkonzept zu entwickeln reicht eben nicht aus
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X