Gnet Objecte Sortieren?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Fobsi

Betreff: Gnet Objecte Sortieren?

BeitragDi, März 26, 2019 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,

Ich hab mich jetzt mal an BlitzMax gesetzt und ein kleines Spiel geschrieben. Das ganze würde ich jetzt gerne durch Gnet multiplayerfähig machen. Das ganze läuft auch schon so wie ich es will, nur im Multiplayer zeichnen kann ich es nicht richtig!

Ich möchte gerne GnetObjecte anhand eines Z-Indexes Sortieren Beispielbild:
user posted image

Problem:
user posted image

Frage:

Gibt es eine Möglichkeit GnetObjects die ja in ner Tlist gespeichert sind:

BlitzMax: [AUSKLAPPEN]
For Local o:TGNetObject=EachIn GNetObjects( host )
'remote oder Lokal code...
Next


zu Sortieren? in etwa wie die folgende Methode?

z.B:
BlitzMax: [AUSKLAPPEN]
Type Z Extends TGnetObject
Method Compare_z:Int(o1:Object,o2:Object)
If GetGNetFloat( o1,SLOT_Z) > GetGNetFloat( o2,SLOT_Z) Return 1
Return 0
End Method
End Type


und dann irgendwas in Richtung:

BlitzMax: [AUSKLAPPEN]
SortList(GNetObjects( host ),True,Z.Compare_z)


Gnet Beispiel Code:
http://fobsi.ch/agc/gnetdemo.rar

Wenn ich morgen Zeit hab schreib ich was kleines Beispiel falls das jetzt nicht verständlich ist.

Es Grüsst
Fobsi

Fobsi

BeitragFr, März 29, 2019 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo

Ich habe das problem gelöst indem ich alle GNetObjecte in Lokale objecte umgewandelt habe und diese dann Update wenn sie sich verändern.

es grüsst Fobsi

DivineDominion

BeitragSa, März 30, 2019 10:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst du das erläutern?

Für mich klingt das so, als würde der Zeitpunkt des Updates bestimmen, was als letztes (also oben drauf) gezeichnet wird. Das wäre ja seltsam, weil dann zwei Figuren, die voreinander abwechselnd in dieselbe Richtung gehen, sich immer abwechselnd überlappen

Crappy Diagramm:

Code: [AUSKLAPPEN]

*     = ist oben
-->   = bewegt sich als erstes nach rechts
x->   = bewegt sich danach nach rechts (updated als letzter)

A   -->  A   x->  A*  x->  A*  -->  A
B*  x->  B*  -->  B   -->  B   x->  B*


Zu deiner ursprünglichen Frage:

Ich hätte die Weltobjekte in einem Typ abgelegt, der intern 2 Repräsentationen hat. Einmal eine Liste, damit man schnell alle Objekte bekommt, und einmal als 2D Array, das der Weltkarte entspricht. Das 2D Array würde unter der Haube verwendet, wenn du alle Objekte malst. Die Liste, wenn es z.B. um den Abgleich mit Netzwerkdaten geht.

Apropos Netzwerkdaten. Wenn ich an Webserver-Synchronisation bei mobilen Apps denke, dann werden Dinge (z.B. Todos oder Chat-Nachrichten) mit einer einzigartigen ID (UUID) versehen. So schickt der Client an den Server dann die Anfrage "lösche Objekt mit ID xxxx-yyyy-..."; das geht natürlich genauso für Spiele, wo die Spieler Nachrichten wie "bewege Objekt aaaa-bbbb-.... auf Position (x,y)" schicken. Irgendwie so was wirst du ja auch haben. In diesem Fall würde ich statt einer Liste eine Map benutzen, die von der ID auf das Objekt "mappt". Dann kann man superschnell an das Objekt herankommen.
christian.tietze@gmail.com - https://christiantietze.de
macOS

Fobsi

BeitragMi, Apr 03, 2019 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
DivineDominion hat Folgendes geschrieben:
Kannst du das erläutern?

Für mich klingt das so, als würde der Zeitpunkt des Updates bestimmen, was als letztes (also oben drauf) gezeichnet wird. Das wäre ja seltsam, weil dann zwei Figuren, die voreinander abwechselnd in dieselbe Richtung gehen, sich immer abwechselnd überlappen

Crappy Diagramm:

Code: [AUSKLAPPEN]

*     = ist oben
-->   = bewegt sich als erstes nach rechts
x->   = bewegt sich danach nach rechts (updated als letzter)

A   -->  A   x->  A*  x->  A*  -->  A
B*  x->  B*  -->  B   -->  B   x->  B*


Zu deiner ursprünglichen Frage:

Ich hätte die Weltobjekte in einem Typ abgelegt, der intern 2 Repräsentationen hat. Einmal eine Liste, damit man schnell alle Objekte bekommt, und einmal als 2D Array, das der Weltkarte entspricht. Das 2D Array würde unter der Haube verwendet, wenn du alle Objekte malst. Die Liste, wenn es z.B. um den Abgleich mit Netzwerkdaten geht.

Apropos Netzwerkdaten. Wenn ich an Webserver-Synchronisation bei mobilen Apps denke, dann werden Dinge (z.B. Todos oder Chat-Nachrichten) mit einer einzigartigen ID (UUID) versehen. So schickt der Client an den Server dann die Anfrage "lösche Objekt mit ID xxxx-yyyy-..."; das geht natürlich genauso für Spiele, wo die Spieler Nachrichten wie "bewege Objekt aaaa-bbbb-.... auf Position (x,y)" schicken. Irgendwie so was wirst du ja auch haben. In diesem Fall würde ich statt einer Liste eine Map benutzen, die von der ID auf das Objekt "mappt". Dann kann man superschnell an das Objekt herankommen.


Danke dir DivineDominion!

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group