Blaupausen features

  • red51 Ich hatte gerade mal in der API ein wenig geforscht, weil ich ein feature bauen wollte das es verhindert blaupausen zu setzen die man vorher nicht selber auf dem server erstellt hat. Dabei ist mir aufgefallen das bei den Events

    `PlayerCreateBlueprintEvent` und `PlayerPlaceBlueprintEvent` eigentlich sowas fehlt wie getBlueprint. Also beim erstellen wird es das evtl noch nicht geben aber beim Platzieren könnte man so auch an die creatorID kommen und diese mit dem Spieler abgleichen.

    Ich hatte mir daher vorgestellt eine Art hash über die Anzahl der objekte+pflanzen+teile sowie der player.dbid zu bilden und sie irgendwie dann in eine plugin db zu speichern, so das ich sie beim platzieren wieder prüfen kann. Das ist nicht super sicher, wäre aber schon mal ein Anfang. Gut wäre wenn es die Funktion nativ gäbe, oder aber wenigstens ein hash den man sowohl beim erstellen als auch beim platzieren über das event bekommt, dann kann man den rest immer noch per plugin lösen. In einem nativen hash können ja auch noch creation timestamp und werte wie koordinaten der einzelnen objekte mit einfließen.

  • Das Problem ist, dass die Blaupause nur bedingt serverseitig repräsentiert wird. Der Server kennt zwar die Metadaten der Blaupause, aber die einzelnen Elemente werden erst im Zuge des Platzierens an den Server gesendet (auf viele Pakete verteilt, die erst gesendet werden, wenn die Place-Events grünes Licht geben) :|

    Ich möchte mittelfristig die Blaupausen mal überarbeiten, dann könnten die Daten auch im Event übergeben werden, das wird aber vmtl. noch etwas dauern...


    Dinge die die CreatorID könnten relativ problemlos eingebaut werden. Was würdest du noch benötigen? Wie meinst du das mit den Hashes, meinst du ein Hash der alle Bauelemente beschreibt (um zu prüfen, ob zwei Blaupausen inhaltlich identisch sind, also dieselben Elemente enthalten)?

  • Das Problem ist, dass die Blaupause nur bedingt serverseitig repräsentiert wird. Der Server kennt zwar die Metadaten der Blaupause, aber die einzelnen Elemente werden erst im Zuge des Platzierens an den Server gesendet (auf viele Pakete verteilt, die erst gesendet werden, wenn die Place-Events grünes Licht geben) :|

    Ich möchte mittelfristig die Blaupausen mal überarbeiten, dann könnten die Daten auch im Event übergeben werden, das wird aber vmtl. noch etwas dauern...


    Dinge die die CreatorID könnten relativ problemlos eingebaut werden. Was würdest du noch benötigen? Wie meinst du das mit den Hashes, meinst du ein Hash der alle Bauelemente beschreibt (um zu prüfen, ob zwei Blaupausen inhaltlich identisch sind, also dieselben Elemente enthalten)?

    Ja irgendwie so ein SHA über die blaupause, so das sie eindeutig zu identifizieren ist. Wenn ich beim erstellen einer blaupause so einen SHA dem spieler zuordnen kann, kann ich beim platzieren ebenfalls prüfen ob dieser SHA für diesen spieler existiert und somit verifizieren das er diese blaupause auch auf dem jeweiligen server vorher erstellt hat.

    Ich hatte ja auch mal überlegt einen Blaupausenhandel zu ermöglichen bei dem man Blaupausen auf dem server von anderen kaufen kann, aber dazu müßte es möglich sein blaupausen hoch und runter zu laden :D nur das du das evtl bei der mittelfristigen Überarbeitung im Hinterkopf hast

  • Achso, ja also die Hashes kann ich auf jeden Fall auch noch reinpacken (neben CreatorUID und -Name). Würde dann vmtl. FNV nehmen. Wäre allerdings nicht kollisionsfrei, d.h. es besteht eine (extrem) geringe Chance, dass ein gänzlich anderer Blueprint denselben Hash hätte. Ich könnte separate Hashes für Constructions, Objects und Plants reinpacken, dann ist das Kollisionsrisiko schon höchst unwahrscheinlich ^^


    Ich hatte ja auch mal überlegt einen Blaupausenhandel zu ermöglichen bei dem man Blaupausen auf dem server von anderen kaufen kann, aber dazu müßte es möglich sein blaupausen hoch und runter zu laden :D nur das du das evtl bei der mittelfristigen Überarbeitung im Hinterkopf hast

    Ja, sowas wäre tatsächlich nicht schlecht :D Ich behalte das auf jeden Fall mal im Hinterkopf!

  • Achso, ja also die Hashes kann ich auf jeden Fall auch noch reinpacken (neben CreatorUID und -Name). Würde dann vmtl. FNV nehmen. Wäre allerdings nicht kollisionsfrei, d.h. es besteht eine (extrem) geringe Chance, dass ein gänzlich anderer Blueprint denselben Hash hätte. Ich könnte separate Hashes für Constructions, Objects und Plants reinpacken, dann ist das Kollisionsrisiko schon höchst unwahrscheinlich ^^

    naja ich würde den has ja auch mit der spielerid speichern, das der selbe spieler den selben hash mit einem anderen blueprint hat ist noch unwahrscheinlicher, aber 3 hashes sind natürlich auch gut, fehlt da nicht noch terrain? :D

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!