Gegenstände in MMOGs



  • Hi Leute,

    Soweit ich das momentan überblicken kann, lassen sich Gegenstände generell
    auf zwei Arten speichern/verwalten:

    1. Es gibt keine "angepassten" Gegenstände (z.B. Verschleiß)
      Dann reicht es jedem Beteiligten (SC, NSC, Bot) nur eine ID zu geben anhand
      welcher dieser sich dann "seine" Gegenstände aus einer Tabelle sucht.

    Vorteil: Geringer Traffic
    Nachteil: Keine angepassten Gegenstände, umständlicher zu Handhaben

    1. Es gibt angepasste Gegenstände
      Jeder Teilnehmer erhält konkrete Objekte und nicht nur Verweise.

    Vorteil: Sehr einfach zu Handhaben, ermöglich angepasse Gegenstände
    Nachteil: Höherer Traffic (Gegenstände müssten ja jedes Mal mit gestreamt werden)

    Irgendwie ist doch beides unbefriedigend.
    Habe ich eventuell die ein oder anderen tolle Optioen übersehen?
    Anregungen? Kritik?

    Das System wie ich es momentan habe ist halt irgendwie Scheiße.

    Gruß,
    Khadgar


  • Mod

    der mix dessen hast du vergessen

    jeder gegenstand besteht aus 5 eigenschaften, du schickst dann 5 IDs, so kann jeder einen relativ einzigartigen gegenstand bekommen und der traffic bleibt unten.

    rapso->greets();



  • Gehts jetzt um die Grafiken der Gegenstände? Weil eine Eigenschaft belegt _maximal_ 2 Bytes, sollte also nicht das Problem sein.

    Bye, TGGC (Reden wie die Großen)



  • Rapso:
    Mix klingt interessant, allerdings, aber kannst du mir das eventuell ein wenig
    näher erläutern?

    EDIT: Habs! Aber wie verhindet man dann, dass der Spieler die Daten auf seinem
    PC (also die Stammdaten der Gegenstände) manipulieren kann?
    Verschlüselung? Müsste schon RSA oder sowas sein. IMO zu viel Aufwand.
    Oder meinstest du das doch anders?

    TGGC:
    Bei mir sinds _vier_ Byte.
    Hab' mich mal an LaMothe gehalten und Integer-Variablen verwendet.
    Laut "C++ Lernen und Professionel anwenden" 4 Byte auf nem 32-Bitter.

    Gruß,
    Khadgar


  • Mod

    ich weiß ja nicht genau wie flexibel deine darstellung, ich weiß ja nichtmal was du darstellst. aber du könntest über die IDs ein mesh, eine textur, eine detail textur, ein material, einen shader... selektrieren.

    so würdest du vielleicht
    -über das mesh einen hammer bekommen
    -über die textur ihn aus kupfer machen
    -über das material ein blank poliertes metal darstellen
    -mit dem shader z.b. ein noise einrechnen

    nur so als ideen.

    rapso->greets();



  • @Khadgar die CPU rechnet die Daten sowieso auf 32Bit hoch, kannst also auch mit 16Bit
    arbeiten.



  • SirLant schrieb:

    @Khadgar die CPU rechnet die Daten sowieso auf 32Bit hoch, kannst also auch mit 16Bit
    arbeiten.

    Gut zu wissen. Das würde zumindest den Traffic unten halten (warum empfiehlt
    LaMothe dann 4 Byte?).

    Rapso:
    Von der Darstellung der Objekte bin ich noch meilenweit weg.
    Tut mir Leid wenn das falsch übergekommen ist!
    Es geht hier z.b. um folgendes:

    Spieler A und B haben beide ein Schwert.
    Das Schwert von A ist schon zu 35% kaputt, dass von B nur zu 10%.

    Kann ich solchen Umständen Rechnung tragen ohne jedem Spieler seine
    'eigenen' Objekte zur Verfügung zu stellen?

    Ansonsten werde ich den Traffic halt anderweitig eingrenzen müssen.
    Nur vielleich hast Du oder wer anders ja eine tolle Idee wie man Beides
    erreichen kann 🙂

    Gruß,
    Khadgar



  • Khadgar schrieb:

    Spieler A und B haben beide ein Schwert.
    Das Schwert von A ist schon zu 35% kaputt, dass von B nur zu 10%.

    Das kann man ja schon in 1 Byte speichern, das müsste doch noch in der Bandbreite drin sein. Veränderst sich ja auch nicht ständig. Sehe daher immer noch nicht das Problem!

    Bye, TGGC \-/



  • Guten Morgen, 🙂

    Abgesehen davon, dass mein Beispiel (betreffend der Größe) schlecht war.
    Sieht es derzeit so aus:

    Der Client bekommt eine Tabelle alle Gegenstände einmalig gestreamt und dann
    nur noch Verweise (Ints) auf diese.
    [Bsp. Client will das besagte Schwert kaufen und schaut sich die Eigenschaften
    an. Dann brauche der Server dem Client nur noch mitzuteilen, dass es sich
    hierbei um Schnert Nr.32452 handelt und der Client kann es selber nachschlagen.]

    Das Dumme ist halt, dass ich dann Eigenschaften welche personlicher oder
    zeitlicher Veränderung unterliegen (zb. Abnutzung) schlecht einbauen kann,
    da ich dann jeden Gegenstand (mit einer Abnutzung von 0 bis n) n-Mal
    in den Tabellen speichern müsste.

    Ich hoffe nun ist klar geworden wo mein Problem ist.
    Sicher kann man das durch abändern der Datentypen leicht minimieren, aber das
    Problem bleibt das selbe.

    Gruß,
    Khadgar



  • Schicke diese Tabelle nicht, sondern immer nur das, was grad gebraucht wird. Was interessiert mich die Beschaffenheit eines Schwertes, das irgendein Monster zwei Tagesmärsche entfernt hat? Normalerweise kann man ja ohnehin nicht in das Inventar Anderer schauen.

    Bye, TGGC \-/


Anmelden zum Antworten