Verschiedene Views im Netzwerk

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verschiedene Views im Netzwerk

    Hey Leutz, ich habe noch nicht direkt ein Problem, aber ich habe im Voraus geguckt, ob ich sowas in der Gamemakeranleitung finde, wurde aber nicht fündig. Ich will, dass zwei Spieler im Netzwerk verschiedene Views haben. Das Spiel ist vergleichbar mit einem RTS. Oben sieht man das Spielgeschehen, welches immer dem eigenen Fahrzeug folgt und unten im Hud gibt's eine Minimap. Nun will ich aber, dass im Netzwerk beide Spieler eigene Views haben, damit jeder seinem eigenen Fahrzeug folgt und auch nur das auf der Minimap sieht was er sehen sollte. Die Frage lautet also schlicht:

    "Wie positioniere ich eine View auf einem anderen Computer im Netzwerk?"
  • Ich hab mich nie mit den Netzwerkfunktionen von GM beschäftigt aber ich glaub ich hab da so einen Plan. Jeder Spieler der dem Spiel beitritt bekommt eine Nummer. Dazu wird auf jedem Spieler ein neues Spielerobjekt erstellt der die Nummer des gerade eingetrettenen Spielers enhält. Dann wird einfach das Objekt ausgewählt das diese Nummer enthält (mit der Variable id kann man das sofort herrausfinden), zentriert den View des dazugehörigen Spielers und zack hat man unterschiedliche Views.
  • eine view lässt sich nicht auf einen anderen rechner übertragen. da musst du wohl oder übel auf auf dem zielrechner die selbe view erstellen.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Original von WIN
    eine view lässt sich nicht auf einen anderen rechner übertragen. da musst du wohl oder übel auf auf dem zielrechner die selbe view erstellen.
    Nun ja, es geht schon aber nur eben so wie du sagst. Du musst jede wichtige Variable auf dem Hauptrechner abfragen und diese an den anderen schicken. Dann kannst du dort einfach die eigenen Variabeln mit denen aus dem Netz tauschen. Falls du zusätzlich eine Art Serversoftware entwickelst, schickst du also alle in jeden Frame das Bild dahin, ansonsten direkt zum anderen Spieler.
  • Hmm... ich bin nicht sicher, ob ich richtig verstehe ob ihr's versteht. Ich will schließlich nur, dass jeder Spieler was anderes sieht. Ist das wirklich unmöglich? Ich meine, es gibt ja sogar 3D Spiele im GM für mehrere Spieler, wo jeder seinen eigenen Panzer von hinten sieht. Ich meine sogar ein RTS gesehen zu haben, welches man im Netz spielen kann. Hmm... ich überlege ob ich nicht einfach nur mit den "current view" funktionen was aushecken könnte. Ne Minimap á la C&C oder Warcraft kriege ich ja auch hin und ich denke so anders wird's nicht sein...

    Pong für Netzwerk habe ich schonmal hinbekommen, ich denke dann finde ich auch eine Möglichkeit dass beide Spieler was anderes sehen... Moment, WIN hat doch auch schonmal versucht nen Soldat-Klon zu machen, ich denke dort musste sie dieses Problem auch irgendwie lösen, oder?

    Aber jetzt mal ganz einfach zusammengefasst:
    Ihr meint, es ist nicht einfach möglich quasi einen Split-Screen über Netzwerk zu machen, richtig?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von F4LL0UT ()

  • natürlich ist es möglich... bei jedem läuft ja sein eigenes Programm... dei einzige schwierigkeit bei nem Multiplayer spiels übers Internet ist ja das ganze synchron zu halten... wo ist den das problem das jeder sein eigenes Bild hat? du musst halt jedem ne Spieler ID zuweisen und je nach SpielerID spielt man halt n anderes Object...
  • Na gut, dann sag mir mal bitte konkret wie ich dafür sorge dass die verschiedenen Bildschirme verschiedene Bilder bekommen.

    Ähm, etwas konkreter... ich will ja nicht dass du mir nen ganzen Code hinschreibst. Wie gesagt: Ich bin auch nicht in Eile. Momentan ist das Spiel noch im Splitscreen und funzt wunderbar. Wird wohl nicht so schwer sein das nun auf verschiedene PCs zu verteilen, oder?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von F4LL0UT ()

  • Also du hast wahrscheinlich jemanden der die Session eröffnet... dem wird dann einfach die PlayerID 1 zugewisen und er steuert das Object Player1... im draw event wird dementsprechend auch die sicht von Player1 gedrawt... jeder weitere Spieler bekommt dann halt ne numemr höher und steuert dann das dazugehörende Obejct und dementsprechend wir dann auch was anderes gedrawt... ich hoffe du verstehst was ich meine^^

    Wie haste es denn gemacht das man verscheidene Obejkte steuert? Eigentlich musste doch das selbe dann auch mit den drawevent machen, das dann je nach Spieler was anderes gedrawt wird so wie je nach Spieler was anderes gesteuert wird...
  • Ähm... ja, ich will nicht unhöflich erscheinen, aber das hilft mir ehrlich gesagt nicht besonders weiter ^^" in der theorie komme ich ja auch so weit, aber tja... wie ich gezielt und gut den Bildschirm des anderen PCs erreiche ist für mich die Frage... aber anderer Seits: Du hast Recht, im Prinzip muss ich ungefähr das gleiche machen, was ich schon mit der Steuerung gemacht habe. Mal sehen ob ich das hinbekomme... habe eh keine Eile. Momentan arbeite ich noch am Pathfinding und Gruppenbewusstsein wobei mir aber'n Kumpel mit etwas Theorie aushelfen kann.

    Nur frage ich mich noch eines: Für die Minimap habe ich den Trick mit der current-view angewandt, wo halt geprüft wird welche View momentan gezeichnet wird und ich dann sagen kann, dass die Minimap anstelle der richtigen Sprites nur Punkte ausstrahlt. Diesen Trick verwende ich auch um feindliche Einheiten, die außer Sichtweite meiner Truppen sind von der Karte auszublenden. Eine eigentlich sehr effiziente Methode wenn Du mich fragst, aber ob ich den Trick auch im Netzwerk richtig angewandt bekomme...
  • @F4LLOUT: Ich bin nicht sicher, ob ich dich hier wirklich verstehe. Jeder Player startet dasselbe Spiel. So benutzt auch jeder Player zB. View[0]. Du brauchst doch gar nicht die View vom einen zum anderen Spieler übertragen. Wenn es ein RTS wird, willst du sicher, dass die View der Maus folgt. Und genau das wird an jedem Rechner auch passieren. Du musst eben nur darauf achten, dass einer die Session erstellt, die anderen joinen und dass jeder eine eigene ID hat.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Im Prinzip stimmt das, ABER sie müssen verschiedene Views verwenden, damit jeder seine eigene Minimap hat. Die Minimap muss ja je nach Spieler was anderes darstellen. Dazu benutze ich die current_view funktion und mit ihr bestimme ich welche Objekte welche Sprites verwenden sollen. Auf meiner Minimap etwa sehe ich grundstäzlich alle meine Einheiten, aber wenn der Feind relativ weit weg ist soll er nicht dargestellt werden. Und dazu brauche ich verschiedene Views - wenn ich mich nicht irre. Naja, ich sehe erstmal dass ich mich selbst ernsthaft damit beschäftigen kann. Ihr kennt ja meinen Spielaufbau nicht und entsprechend ist es etwas schwer meine Probleme nachzuvollziehen. Eventuell poste ich irgendwann eine kleine abgespeckte Beta-Version.
  • Ich verstehe nicht wo die Problematik liegt. Wenn jeder Spieler nur seine eigenden Einheiten sehen soll, müssen die Rechner jeweils für sich berrechen ob das seine eigenden Einheiten sind (mit Hilfe der Spieler ID die jeder Rechner zugewiesen bekommt). Jeder Rechner muss seine eigenden "Aufgaben" berechnen. Dazu gehören auch die Views.
  • Wie ich das verstanden habe (hab selber noch nix mit Netzwerk gemacht) spielt jeder am Rechner sein eigenes Spiel und es werden nur die Daten hin und her übertragen, die man "per Hand" selbst verschickt. Solange du also keine view Daten vom einen auf den anderen PC überträgst, gibt es da auch keine Probleme. Dann kann jeder Rechner die Views auf die dortige Hauptfigur anpassen. Was übertragen werden muss sind dann halt die Koordinaten der Spielfiguren und Dinge wie Schüsse, eingesammelte Powerups etc. Mit den Views dürfte es da keine Probleme geben...
    Einige meiner Spiele:
  • ich habe dein problem irgendwie nicht so richtig verstanden. erst dachte ich du willst exakt die selbe view übertragen. das ist natürlich nicht möglich. auch als bild nicht, denn das würde viel zu viel traffic machen. was du aber übertragen kannst sind entsprechende daten z.b. des cammera-objects, welches dann die selbe view im anderen spiel erstellt.
    aber dein problem scheint ja ein ganz anderes zu sein. ich persönlich würde eine minimap mit kleinen pixelpunkten machen, die ein einzelnes object für alle einheiten auf den screen zaubert und nicht mit einer kleinscalierten view. wenn du das aber so machen willst, gibt es eine einfache möglichkeit, die gegenerischen einheiten auszublenden. ich empfehle dafür in die einheiten eine abfrage einzubauen mit der funktion point_distance. ist der abstand zwischen einem gegner und eingenen einheiten zu hoch wird fü diesen gegner visible auf false gesetzt. abrakadabra: die entsprechende einheit ist auf dem einen rechner nicht mehr zu sehen. weder in der großen, noch in der kleinen view. auf dem anderen rechner wiederum verändert sich nichts, solange du nicht dafür sogst. da aber die abfrage ja auch anders herum funktioniert, werden auf dem anderen rechner automatisch die anderen einheiten ausgeblendet.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Hmm... ich hätte wohl mal mehr selbst rumprobieren sollen bevor ich solche Fragen stelle, wie? Also danke soweit. Ist eh noch einige Wochen oder gar Monate hin, bis ich mich mit dem LAN-Modus richtig befassen kann. Ich markiere mal nicht als Gelöst damit ich diesen Thread dann richtig forsetzen bzw. abschließen kann wenn ich mich mit dem LAN-Modus befasse. Danke soweit!
  • Benutzer online 1

    1 Besucher