![]() |
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 |
Re: Spiel im Netzwerk/Daten übertragen
Zitat:
|
Re: Spiel im Netzwerk/Daten übertragen
Hm,.. ja.
|
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.
|
Re: Spiel im Netzwerk/Daten übertragen
Hi!
Kannst du das etwas präzisieren ? :-D ` Wie connectest du, was passiert, wann passiert es? Ciao fkerber |
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 |
Re: Spiel im Netzwerk/Daten übertragen
Hi!
Dann zeig mal etwas Code. Ciao fkerber |
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 |
Re: Spiel im Netzwerk/Daten übertragen
So genereller Tipp: Nur die wirklich wichtigen Daten durchs Netzwer jagen, den Rest vor Ort rechnen...
|
Re: Spiel im Netzwerk/Daten übertragen
für spiele eignet sich unter delphi eigentlich delphix...
![]() voraussetzung: man will directx verwenden... andernfalls ist indy die einzigste vernünftige lösung... |
Re: Spiel im Netzwerk/Daten übertragen
Ich verwende DelphiX für die Grafik, aber den Netzwerkteil will ich mit den Indykomponenten machen.
|
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. |
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 :? |
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 |
Re: Spiel im Netzwerk/Daten übertragen
Hallo
Wenn es um das Grundsätzliche Übertragen von Daten geht, findest du ![]() Gruss |
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 |
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. |
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 |
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.).
|
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 |
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:
kann dir später mal ein bisschen quellcode von mir schicken...
strings teilen, einzelne wörter in array, dann
z.b. if string[0]=setcolor then dings.color := string[1]; gruß, |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz