Gegenstände in MMOGs
-
Hi Leute,
Soweit ich das momentan überblicken kann, lassen sich Gegenstände generell
auf zwei Arten speichern/verwalten:- 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- 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
- Es gibt keine "angepassten" Gegenstände (z.B. Verschleiß)
-
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
-
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 einrechnennur 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 kannGruß,
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 \-/