AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MMOG Realisieren

Ein Thema von danu1104 · begonnen am 25. Apr 2010 · letzter Beitrag vom 25. Apr 2010
Antwort Antwort
danu1104

Registriert seit: 4. Dez 2006
75 Beiträge
 
Delphi 2006 Personal
 
#1

MMOG Realisieren

  Alt 25. Apr 2010, 12:58
Im anhang habe ich was reingetant, es ist eine Art Tutorial / Demo wie man ein MMOG übers netzwerk mit glscene Realisiert.

Ich habe nur das Problem das ich nicht weiss wie man mit Byte umgeht, und deswegen wollte ich mir das mal erklären lassen.

Ich möchte es lernen aber kann es mir immoment Selber nicht erklären.

zb (Server):

Delphi-Quellcode:
procedure pSay();
var
  A:Array of byte;
begin
//
end;
Client:

Delphi-Quellcode:
procedure TFMain.Say(A: array of byte);
begin
 //
end;
Beide functionen sind leer von haus aus, ich habe kein plan was da rein sollte.
Bitte helft mir das zu verstehen, danke euch
Angehängte Dateien
Dateityp: zip delphi-mmog_131.zip (1,27 MB, 8x aufgerufen)
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: MMOG Realisieren

  Alt 25. Apr 2010, 13:02
Zitat von danu1104:
Ich habe nur das Problem das ich nicht weiss wie man mit Byte umgeht, und deswegen wollte ich mir das mal erklären lassen.
Was soll das heißen? Byte ist ein ganz normaler Ganzzahldatentyp wie Integer und Cardinal auch mit einem Wertebereich von 0 bis 255.

Was möchtest du also machen? Wenn du das rausgefunden hast, gib bitte deinem Thread einen aussagekräftigen Titel, der etwas zu deinem Problem aussagt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
danu1104

Registriert seit: 4. Dez 2006
75 Beiträge
 
Delphi 2006 Personal
 
#3

Re: MMOG Realisieren

  Alt 25. Apr 2010, 13:14
Ich habe versucht mit hilfe eines Chats es zu verstehen, hat auch geklappt

Delphi-Quellcode:
type TChatNachricht = Record
        Nickname: string[255];
        Text: string[255]
      end;

var Nachricht: TChatNachricht;
begin
  Nachricht.NickName := 'sadsad';
  Nachricht.Text := 'Willkommen';
  Socket.SendBuf (Nachricht, SizeOf(Nachricht));
end;

var Nachricht: TChatNachricht;
begin
  Socket.ReceiveBuf (Nachricht, SizeOf(Nachricht));

  Nachricht.Lines.Add (Nachricht.Nickname + ': ' + Nachricht.Text);
end;

Aber die Demo verstehe ich nicht, wie zb er die Packete Sendet . Ich sehe in jeder function nur einen Move(); das bringt mich etwas durcheinander

Delphi-Quellcode:
 
// Array vom server werden dann wohl in Targ ,Cur ,obj_id zugewiesen
  Move(A[3],obj_id,4);
  Move(A[7],Targ[0],4);
  Move(A[11],Targ[1],4);
  Move(A[15],Targ[2],4);
  Move(A[19],Cur[0],4);
  Move(A[23],Cur[1],4);
  Move(A[27],Cur[2],4);

  if User.Obj_id=Obj_id then
  begin
    User.Targ:=Targ;
    User.Position:=Cur;
    exit;
  end;
  CrL:=Char_List.index(obj_id);
  if CrL<>-1 then
  begin
    Char_List.Chars[CrL].Target:=Targ;
    Char_List.Chars[CrL].Position:=Cur;
  end;
habe die ganzen Units durchsucht ....
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: MMOG Realisieren

  Alt 25. Apr 2010, 13:19
Also was du machen willst, ist Daten vom Server zum Client zu übertragen und umgekehrt. Richtig? Mit Strings hast du es anscheinend hinbekommen mit Hilfe eines Chat Tutorials und jetzt willst du binäre Daten übertragen und das klappt nicht. Richtig? Es dürfte doch eigentlich nicht so schwer sein, sein konkretes Problem genau zu beschreiben.

So, welche Internetkomponentensammlung benzutzt du? Hast du dir schon mal die zugehörigen Demos angesehen?

Am einfachsten dürfte die Übertragung mit Hilfe von Streams sein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#5

Re: MMOG Realisieren

  Alt 25. Apr 2010, 15:19
Zitat:
Aber die Demo verstehe ich nicht, wie zb er die Packete Sendet . Ich sehe in jeder function nur einen Move(); das bringt mich etwas durcheinander
Verwechsle nicht diese Move() mit Player.Move(), das sind zwei unterschiedliche Routinen

Ich hab mir die Demo nun grob angesehen und kann dazu folgendes sagen:
Beim Senden und empfangen werden nach einigen mini-Überprüfungen die empfangenen Bytes in ein Array (A) geschrieben
und anhand des Empfangenen OPCodes die Routine ausgeführt.
In A[0] und A[1] steht die Länge der Daten, A[2] ist der OPCode, der besagt, was ausgeführt werden soll (userinfo, say etc.), ab da sind dann die eigentlichen Daten.

Allem in Allem eine sehr simple Implementation für ein "Client / Server"-prinzip, das aber in der Praxis wohl kaum für ein MMO taugen würde, da
keinerlei Sicherheiten beim Daten senden / empfangen bisher eingebaut wurden und die Daten von einem Client auch sehr leicht manipuliert werden können.
Das Ganze ist eher ein "proof of concept", um Mesh-Positionen vom Client an den Server zu senden und von diesem wieder an alle Clients zu verteilen.

Ich weiss ja jetzt leider nicht, was du damit eigentlich vorhast?
Wenn ich das wüsste, könnte ich dir vielleicht einen TIP geben, wie man dein Vorhaben am leichtesten umsetzt.
Ich arbeite auch derzeit mit GLScene und fuchse mich in das Zeug rein.
Allerdings hat dein geschildertes Problem mit GLScene gar nichts zu tun, sondern eher mit TCP-Kommunikation, GLScene wird hier ja nur verwendet, um
ein paar Kugeln, Würfel und eine Grasfläche anzuzeigen


grüssle,

Fin
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#6

Re: MMOG Realisieren

  Alt 25. Apr 2010, 16:31
Ich wollte gerade Vorschlagen, dass es mit Streams am einfachsten ist, aber da habe ich gesehen mir ist schon jemand zuvor gekommen
Ich arbeite selber an einem Chat und arbeite da mit Streams wenn du da anregungen brauchst dann kann ich dir da gerne weiterhelfen.
  Mit Zitat antworten Zitat
danu1104

Registriert seit: 4. Dez 2006
75 Beiträge
 
Delphi 2006 Personal
 
#7

Re: MMOG Realisieren

  Alt 25. Apr 2010, 16:33
danke dir blackfin, dass ist genau das was ich wissen wollte


@XXcD lass uns über PN quatschen!

Edit: Ich schaue mal ob ich es auch für die Praxis verstanden habe.
Thx leute!
Daniel
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz