perverse Verknüfungen

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

  • perverse Verknüfungen

    hailo!

    wie der thread-titel schon erkennen lässt, möchte ich viele viele daten verknüppen aja, soll über php / mysql funken

    man stelle sich eine virtuelle welt vor. in dieser virtuellen welt können sich x user auf einmal bewegen, begnen etc. ( ja ein game )

    die ist so aufgebaut:

    - das runde ist die welt.
    - das blaue sind abschnitte ( mir fällt kein passender name ein ) auf dieser welt
    - die häßlich gefärbten sind sektoren auf den abschnitten.

    von allen ( ausser der welt selbst ) kann es beliebig viele geben. Der arme user sieht immer den aktuellen sektor. das sieht so aus:


    ( ich gedenket wie auf karten koordinaten zu verwenden )

    diese sektoren sind in felder eingeteilt. jedes quadrat ist ein feld. auf dem roten feld befinden wir uns gerade. die grünen felder kann ich als nächstes betreten.
    die schwarzen felder kann ich aus grund XY nicht betreten. die dunkelblauen felder kenne ich noch nicht. und die häßlichen felder habe ich schon einmal betreten.

    natürlich sind die "abschnitte" und die welt an sich ebenfalls nach diesem prinzip aufgebaut.

    der blaue pfeil sagt dem user wohin er sich bewegen soll ( wieder aus grund xy ).

    folgendes ist mir unklar:

    - wie muss die struktur der datenbank aussehen? dabei muss ja leider einiges eingeplant werden. wie zum geier kriege ich eine verbindung zwischen den einzelnen feldern hin? innerhalb eines sektors geht das ja noch recht easy. nehme ich jetzt abder das feld unten links in der ecke, kann ich mich auf drei felder in diesem sektor bewegen; klar. aber leider auch auf 3 andere felder in jeweils 3 anderen sektoren

    - wie speicher ich die besuchten felder für jeden user so ab, dass mir das ganze nicht bei 10 usern zusammenbricht?

    - dann noch was ganz fieses. man stelle sich vor in befinde mich auf feld X ( nach koordinaten ), in sektor Y ( wieder nach koordinaten ) auf abschnitt Z. und meine aufgabe ist nach sektor a auf abschnitt b zu gehen. wie errechne ich den kürzesten weg um den blöden pfeil immer richtig zu positionieren, und den user nicht umsonst hin und herlaufen zu lassen ????

    ja, ich weiss, dass das alles ne kranke idée ist, aber ich will das trotzdem
    ich danke schon mal für die erstenb ansätze!!!
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

  • #2
    um den kürzesten weg zu nutzen solltest du mal unter Dijkstra schauen (da war abe rauch was mit Einzel-Paar-Problem?). mathematik pur. aber wenn man es verstanden hat gar nicht so schwer. bei mir ist nur schon etwas länger her.

    aufjedenfall müßtest du für diese berechnung die sektoren verlassen und die welt betrachten. und erst bei deiner darstellung in sektoren aufteilen.

    zur db? hmm wie groß wird deine welt oder wieviel felder hast du? wird ein spielstand abgespeichert? oder fängt jedes spiel von vorn an?
    ... und besucht mal den ebay(TM)-browser überhaupt: Lauge
    und damit das Fragen nen Ende hat: Der Progger davon sitzt mir gegenüber !

    Kommentar


    • #3
      Original geschrieben von muecke0815
      zur db? hmm wie groß wird deine welt oder wieviel felder hast du? wird ein spielstand abgespeichert? oder fängt jedes spiel von vorn an?
      zur größe kann ich noch nichts sagen. es wird vermutlich immer wachsen. es gibt keinen spielstand im herkömmlichen sinne. immer nur aufgaben. diese zu speichern / auf erledigung zu checken ist nicht das prob. natürlich wird auch die letzte position gesichhert. nur wie?
      h.a.n.d.
      Schmalle

      http://impressed.by
      http://blog.schmalenberger.it



      Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
      ... nur ohne :-)

      Kommentar


      • #4
        du müßtest die welt von der mitte her nach außen in sektoren einteilen (wie ein koordinatensystem), dann kann die welt beliebig wachsen!
        umso größer die zahlen der koordinaten werden, umso weiter außen liegt der punkt...

        wenn du jetzt von einem punkt zum nächsten willst, kannst du ja ganz einfach zählen, wieviele felder du runter/rauf und nach links/rechts mußt!...

        das einzige, worauf du achten mußt, ist, dass du auch negative werte bekommen kannst!

        gruss

        Kommentar


        • #5
          hier hab das zum routenproblem gefunden. vielleicht hilft es etwas (leide kein php ;-)

          http://www.informatik.uni-bonn.de/II...tenplanern.pdf

          ahhh A*- Algorithmus war's ...
          Zuletzt geändert von muecke0815; 28.11.2003, 15:47.
          ... und besucht mal den ebay(TM)-browser überhaupt: Lauge
          und damit das Fragen nen Ende hat: Der Progger davon sitzt mir gegenüber !

          Kommentar


          • #6
            erstmal danke !

            @fatal, ich befürchte, dass das nicht funkt. ich kann gerade ned erklären warum

            @muegge, thx, ( worauf habe ich mich da eingelassen? )

            mir kam gerade folgende idee.

            wenn mann allgemein in "ebenen" oder auch stockwerken wie keller, eg, 1. og etc denkt, müsste es fast gehen. ich bin in sektor, und will nach c. dann muss ich gucken, ob beide sektoren auf einer ebene liegen. wenn ja, -> direkter weg. wenn nicht, suche knoten zu der entsprechenden ebene. so muss ich auch nicht den ganzen weg berechnen, sondern immer nur zu den knoten ?!?
            h.a.n.d.
            Schmalle

            http://impressed.by
            http://blog.schmalenberger.it



            Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
            ... nur ohne :-)

            Kommentar


            • #7
              Von wegen kürzester Weg und so: Da mache ich mir, aufgrund in naher Zukunft geplanetem Browsergame, auch die ein oder anderen Gedanken.

              Die Frage ist nur: Erlaubst du es dem Spieler auch, diagonal von Kästchen zu Kästchen zu springen, oder nur horizontal oder vertikal!

              Wenn nur nach links, rechts, oben und unten, ist die Wegberechnung (relativ) leicht. Vorraussetzung ist: Du arbeitest mit festen Koordinaten. Bei der Programmierung überlegst du dir, welche Achse du mehr lieb hast: x oder y (Wir nehmen mal x). Und die, die du mehr lieb hast, nimmst du zuerst. Dann errechnest du einfach, ob die x-Koordinate des Ziels einen hoeheren Wert als die der Ursprungspunktes hat. Wenn ja, dann gehts nach rechts. Wenn sie kleiner ist, dann nach link, ist sie gleich, kommt Teil 2.

              Und nun Teil 2, wahrscheinlich hast du das Prinzip schon verstanden. Du errechnest, ob die y-Koordinate des Ziels großer als die des Ursprungspunkte sist. Wenn ja: Ab nach unten. Ist sie kleiner, muss der Spieler nach oben. Ist sie gleich, wird nochmal mit der x-koordinate gegengeprüft. Ist diese auch gleich, sind wir wohl da =)

              Soweit die Theorie, die Praxis birgt Tücken: Hindernisse. Ehrlich gesagt, hab ich mir da noch garkeine Gedanken gemacht. Mach ich aber mal kurz. Eine Möglichkeit wäre, dem Spieler einfach nur auf das Hindernis hinzuweisen, und er soll den Weg gefälligst alleine Suchen. Die andere Alterative wäre: Immer links am Hindernis herumgehen. Die Frage ist nur: Wo ist links. Das ändert sich ja, je nach dem, in welche Richtung man sich bewegt. Aber ich denke, da kannst du dir mal alleine Gedanken machen =P Ich muss nämlich leider weg!

              Kommentar


              • #8
                mhh, auch dir sei gedankt. ich glaube ich habe eine weitere idee. ich bastel mal, und melde mich wieder .... is ja weekend. -> kann ma einer kaffee aufsetzen?
                h.a.n.d.
                Schmalle

                http://impressed.by
                http://blog.schmalenberger.it



                Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                ... nur ohne :-)

                Kommentar


                • #9
                  Original geschrieben von schmalle
                  ...
                  @fatal, ich befürchte, dass das nicht funkt. ich kann gerade ned erklären warum
                  ...
                  beruhst du die annahme auf intuition oder darauf, das du zur verschwiegenheit verpflichtet bist!

                  wenn du knoten als anhaltspunkte willst, dann kannst du die berechnungen anhand der knoten machen!

                  mal ne idee:
                  du hast einen welt, verschiedene Sektoren... warum machst du die sektoren nicht einfach über so eine art "portal" verfügbar ? dann brauchst du immer nur von einer ebene zum portal laufen, reingehen und kommst auf einem anderen portal raus... (nur so als vorschlag)
                  du hast nach wie vor deine verschiedenen sektoren, aber kannst dir aufwändige rechnungn ersparen... wenn du trotzdem ein bisschen kniff in die sache bringst, bekommt jedes portal eine telefonnummer, die du kennen mußt, um hinzukommen (so alla stargate)

                  gruss

                  Kommentar


                  • #10
                    @Happy Nihilist
                    ist ne idee. wirst aber selten den kürzesten weg bekommen. schließlich geht du ja immer links am hindernis vorbei. das ziel liegt aber weiter rechts. und das mit der diagonalen stell ich mir gerade auch etwas schwieriger vor.

                    man sollte auch mal in den sektionen der spiele programmierung schauen. denn das "problem" ist nicht neu
                    ... und besucht mal den ebay(TM)-browser überhaupt: Lauge
                    und damit das Fragen nen Ende hat: Der Progger davon sitzt mir gegenüber !

                    Kommentar


                    • #11
                      @fatal neeeeeeee, auch das ist nicht gut. nix portal und telefonnunmmern. das widersricht dem gedanken des spiels
                      aber sehr nett, dass du dir so ausführliche gedanken machst
                      h.a.n.d.
                      Schmalle

                      http://impressed.by
                      http://blog.schmalenberger.it



                      Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                      ... nur ohne :-)

                      Kommentar


                      • #12
                        da dieser beitrag ja schonmal ne anschauliche Problemstellung liefert, schau ich mal, ob ich am WE dazu komme / Lust habe... vielleicht fälltl mir ja was ein!

                        gruss

                        Kommentar


                        • #13
                          Original geschrieben von MoRtAlAn
                          da dieser beitrag ja schonmal ne anschauliche Problemstellung liefert,
                          das will ich menen
                          es gibt noch das prob mit speichern der bereits besuchten felder .... das können ja mehere hundert oder später gar tausende sein ...
                          h.a.n.d.
                          Schmalle

                          http://impressed.by
                          http://blog.schmalenberger.it



                          Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                          ... nur ohne :-)

                          Kommentar


                          • #14
                            hmm da es scheint, das du wege speicherst. sollte man den gedanken von vectoren in erwägung ziehen. dann kannst du jedenfalls die anzahl von gespeicherten felder kleiner halten

                            beispiel dreimal rechts: 0,2 1,2 2,2 oder vector 0,2,3R oder so...
                            ... und besucht mal den ebay(TM)-browser überhaupt: Lauge
                            und damit das Fragen nen Ende hat: Der Progger davon sitzt mir gegenüber !

                            Kommentar


                            • #15
                              klär mich mal auf...

                              sind die abschnitte immer gleich groß, oder kann ein einzelner abschnitt später auch noch wachsen oder nur die Anzahl der abschnitte ??

                              wenn die abschnitte an sich nicht größer werden, wäre folgendes vielleicht überlegenswert:
                              du legst ein array an:
                              dort speichst du reihe und spalte... und einen status (als standard unbekannt => 0)

                              das serialisierst du und speicherst das per db in ein blob-feld

                              nun kommt der Spieler in den bereich:
                              reihe 1, spalte 1
                              $array[1][1][1]

                              die dritte eins signalisiert das feld, in dem der spieler ist, hat er es schon besucht, kommt eine 2 rein (nur als beispiel)...
                              das array würde ich serialisiert entweder über die session mitschleifen oder über die db...
                              nicht bewanderbare felder kannst du mit 4 kennzeichnen...

                              so hast du zumindest schonmal die einzelnen bereiche der welten in einem speicherbaren format...

                              gruss

                              Kommentar

                              Lädt...
                              X