Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Spiel im Netzwerk/Daten übertragen (https://www.delphipraxis.net/17165-spiel-im-netzwerk-daten-uebertragen.html)

Spurius 29. Feb 2004 11:07


Spiel im Netzwerk/Daten übertragen
 
Hallo,
ich hab das Grundgerüst für ein Spiel, wo man ein Sprite rumbewegen und schiessen kann.
Wie kann ich das jetzt Netzwerkfähig machen? Ich denk die Indys sind ganz gut, aber wie soll ich die Daten übertragen? Mit TCP oder einem Stream oder wie? Was ist am schnellsten?
Gruß
Spurius

SirThornberry 29. Feb 2004 11:09

Re: Spiel im Netzwerk/Daten übertragen
 
Zitat:

Mit TCP oder einem Stream oder wie?
mit Stream basierend auf TCP ?!

Spurius 29. Feb 2004 11:26

Re: Spiel im Netzwerk/Daten übertragen
 
Hm,.. ja.

Spurius 29. Feb 2004 11:46

Re: Spiel im Netzwerk/Daten übertragen
 
Noch was, ich hab grad mit einem Client auf einen Server Connected und da fängt das Prog an eine Diashow zu werden.

fkerber 29. Feb 2004 11:48

Re: Spiel im Netzwerk/Daten übertragen
 
Hi!

Kannst du das etwas präzisieren ? :-D `
Wie connectest du, was passiert, wann passiert es?

Ciao fkerber

Spurius 29. Feb 2004 11:54

Re: Spiel im Netzwerk/Daten übertragen
 
Hallo,
also ich connecte mit dem Indy Client und dann geht die Systemauslastung auf 100% hoch, auch wenn ich dann wieder disconnecte bliebt die Auslastung bei 100%. Erst das Beenden des Progs senkt die Auslastung.
Aber die Auslastung steigt nicht erst wenn ich das Image bewege sondern halt beim Connecten.
Am Rechner wirds nicht liegen, 2,53 Ghz 512 Mb-Ram.
Gruß
Spurius

fkerber 29. Feb 2004 12:12

Re: Spiel im Netzwerk/Daten übertragen
 
Hi!

Dann zeig mal etwas Code.

Ciao fkerber

Spurius 29. Feb 2004 12:58

Re: Spiel im Netzwerk/Daten übertragen
 
Hallo,
also ich habs nochmal versucht und jetzt gehts besser.
Und wie siehts aus mit der Art der Übertragung? Ist TCP geeignet und wenn ja, mit Writeln, WriteBuffer oder WriteStream? Ich kenn mich da nicht so wirklcih aus.
Gruß
Spurius

nailor 29. Feb 2004 12:59

Re: Spiel im Netzwerk/Daten übertragen
 
So genereller Tipp: Nur die wirklich wichtigen Daten durchs Netzwer jagen, den Rest vor Ort rechnen...

nemo2003 29. Feb 2004 13:29

Re: Spiel im Netzwerk/Daten übertragen
 
für spiele eignet sich unter delphi eigentlich delphix...

http://www.yks.ne.jp/~hori/DelphiX-e.html

voraussetzung: man will directx verwenden... andernfalls ist indy die einzigste vernünftige lösung...

Spurius 29. Feb 2004 13:37

Re: Spiel im Netzwerk/Daten übertragen
 
Ich verwende DelphiX für die Grafik, aber den Netzwerkteil will ich mit den Indykomponenten machen.

Spurius 29. Feb 2004 13:52

Re: Spiel im Netzwerk/Daten übertragen
 
Also ich probiers mit streams, aber ich muss erstmal streams ein bisschen verstehen.
Wie kann ich in dem Code den Stream empfangen und in einem Label darstellen?
Delphi-Quellcode:
var
  Form1: TForm1;
  Stream: TMemorystream;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 Server.Active := true;
 Client.Connect;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Stream := TMemorystream.Create;
 Stream.Write('Test1', Sizeof('Test1'));      // bin mir nicht sicher ob der stream
 Client.WriteStream(Stream, true, true, 0);  // so richtig versendet wird          
end;

procedure TForm1.ServerConnect(AThread: TIdPeerThread);
begin
 athread.Connection.WriteLn('Connected');
end;

procedure TForm1.ServerExecute(AThread: TIdPeerThread);
begin
 //Hier -------------------

end;

end.

Florian H 18. Nov 2004 15:11

Re: Spiel im Netzwerk/Daten übertragen
 
hm, vor dem Problem stehe ich ansich auch.

Wie übertrage ich Daten am besten über die TidTCP-Komponenten...
Also einerseits die schnellste Möglichkeit (von den daten is klar, halt nur das wichtigste) und dann überhaupt das wie... so gan versteh ich es nämlich noch nich :?

Udontknow 18. Nov 2004 15:22

Re: Spiel im Netzwerk/Daten übertragen
 
Hallo!

Schau doch mal im DF unter [df]SimpleNetwork[/df] nach, da gibt es Komponenten, die dir die Kommunikation vereinfachen. Ein Chat als Beispielprogramm ist auch dabei.

Cu,
Udontknow

Fellmer Lloyd 18. Nov 2004 15:22

Re: Spiel im Netzwerk/Daten übertragen
 
Hallo

Wenn es um das Grundsätzliche Übertragen von Daten geht, findest du Hier ein gutes Beispiel (von negaH, ziemlich weit unten).

Gruss

endeffects 18. Nov 2004 16:55

Re: Spiel im Netzwerk/Daten übertragen
 
ich würde vorschlagen die übertragung überwiegend
auf vektoren zu beschränken, d.h. du überträgst
lediglich die richtung in die sich ein spieler
bewegt und mit welcher geschwindigkeit in relativ
langen zeitabständen, ich denke nicht das
es zwingend notwendig ist jede sekunde die genaue
position jedes spielers an jeden der anderen spieler
zu übermitteln

sobald sich allerdings 2 vektoren/spieler einander
annähern muss die frequenz der übermittelten daten
beider parteien ansteigen um die stattfindenen handlungen
genauer zu dokumentieren

das nur mal als denkanstoss

fiasko 18. Nov 2004 17:14

Re: Spiel im Netzwerk/Daten übertragen
 
Hallo,

ich will hier nur mal etwas einwerfen, weil hier alle so freudig auf das TCP/IP Protokoll eingehen. Ich halte das für Spiele wo es um Zeit geht für ziemlich ungeeignet. Es hat viel-zu-viel Protokoll overhead, und vorallem im LAN für ein einfaches Spiele dürfte das overkill sein. Wenn mal ein Packet verlohren geht sollte das doch verkraftbar sein (da macht das Sprite halt mal einen kleinen Sprung wenn zwischendurch ein Packet fehlt). Wenn man sich mal so die Internetspiele anschaut (CS, Battlefield, <your fav. game here>), dann nehmen die eigentlich alle UDP.

Zusätzlich gilt das was hier schon geschrieben wurde, Delta's übertragen etc.

endeffects 18. Nov 2004 17:24

Re: Spiel im Netzwerk/Daten übertragen
 
mich würde mal interessieren was du mit deltas meinst,
höre ich das erste mal. udp ist natürlich eine
interessante sache, gerade wenn es darum geht lags
für alle anderen mitspieler zu vermeiden

fiasko 18. Nov 2004 20:35

Re: Spiel im Netzwerk/Daten übertragen
 
mit Delta's ist gemeint, daß du nur schickst sprite 1 dreht sich 5° nach rechts und beschleunigt um 2 pixel/sekunde. Dafür sollte ein byte pro wert reichen. In größeren Abständen müssen dann natürlich fehlende Delta's ausgeglichen werden indem alle komplett übermittelt wird (also korrekt richtung/geschwindigkeit etc.).

Udontknow 19. Nov 2004 08:00

Re: Spiel im Netzwerk/Daten übertragen
 
Fiasko hat schon recht, für Echtzeitspiele sollte TCP nicht verwendet werden. Die [df]SimpleNetwork[/df]-Komponenten können sowohl über TCP als auch über UDP Daten versenden... Argh, was ist denn wieder mit dem DF los? :?

Cu,
Udontknow

Pyr0cracker 19. Nov 2004 13:26

Re: Spiel im Netzwerk/Daten übertragen
 
Hallo!
Wenn du nur einfache sachen wie positionen, primitive befehle, etc verschicken willst,
sende die sachen als sstring rüber und bastel dir eine art scriptsprache:
Delphi-Quellcode:
strings teilen, einzelne wörter in array, dann
z.b. if string[0]=setcolor then dings.color := string[1];
kann dir später mal ein bisschen quellcode von mir schicken...
gruß,


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 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