Bester Stream für ein Spiel?

Status
Nicht offen für weitere Antworten.

dayaftereh

Top Contributor
Hey

Also ich habe vor ein Netzwerk Spiel in Java zu schreiben. Es handelt sich da um ein 2D Spiel wo man in eine Weltraum herum Fliegten kann^^. Nur ich stelle mir gerade die Frage, welchen Stream ich nehmen soll um die Daten vom Server zu den Clients zu übermitteln. Meine erste Idee war, eine BufferedReader & BufferedWriter zu nutzen da ich dann einfach zo meine Informationen verschicken kann.(Ich will keine Bilder verschicken)

Typ|Name|ObjecktName|Position|X|Y…|….|imagePath

Natürlich will ich das ganze Performant halten, deswegen habe ich mal bei anderen Netzwerk Spielen geschaut und die Nutzen ein DataInputStream^^ aber da bekomme ich die Daten als Byte Arrays, natürlich ist das kein Problem aber bei dem BufferedWriter ist ja die readLine() blockiert. Was sehr schön ist da ich einfach auf die Daten warten kann, Aber wenn ich so was jetzt bei DataInputStream machen würde, hätte ich ne liste welche ich befühle, entleere und gleichzeitig eine schleife mit aktivem Warten..

Meine frage jetzt was ist der beste Stream um in einem Spiel zu benutzen?????
 
G

Gelöschtes Mitglied 5909

Gast
wie wärs mit nem ObjectOutput/InputStream?
 
T

tuxedo

Gast
Object-Streams serialisieren --> je nach Typ den es zu serialisieren gibt --> Langsam.

Würde das auf ein ziemlich einfaches Protokoll auf byte-Ebene runterbrechen und Apache MINA verwenden. Das macht die Sache unheimlich einfach, und man hat auch gleich noch NIO statt IO.


- Alex
 

dayaftereh

Top Contributor
Coole Idea habe auch schon mal dran gedacht.... aber ich glaube ist zimlich Komplezzzz!!! deswegen wollte ich es auch mal selbst schrieben, aber ich glaube Ich schicke Strings^^ natürlich keine^^ Das heißt POSITION = 1 also alles Positions Strings haben den Typ 1 na ich glaube so bekomme ich es am einfachst hin
 

Ebenius

Top Contributor
Sind am Ende die Satzzeichen knapp geworden. Interpunktion ist auch nicht mehr das was sie mal war. :roll:
 
T

tuxedo

Gast
@daya

Nö, ist nicht so komplex. Komplex und langsam wird's wenn du alles auf String abbildest.

Schau dir dich mal auf der Apache MINA Projektseite (google hilft) die Sache mit der ProtocolCodecFactory an.

Das braucht zwar je nach Anzahl der zu verschickenden Nachrichtentypen etwas Code, aber du bist unheimlich flexibel und es geht super schnell.

Zu dem DataInput und Outputstream:
Da kannst du ganze Datentypen reinstecken. Also Integer, String, Long, Byte, ...

Bevor ich das ganze Protokoll auf Strings aufbauen würde, würde ich doch eher den Data*Stream benutzen und eine sauber definierte Reihenfolge der Datentypen die rein und rausgehen festlegen.

- Alex
 

homer65

Top Contributor
Ich benutze für ähnliches immer ObjectInputStream bzw ObjectOutputstream. Das vereinfacht die Programmierung erheblich.
 

Ebenius

Top Contributor
homer65 hat gesagt.:
Ich benutze für ähnliches immer ObjectInputStream bzw ObjectOutputstream. Das vereinfacht die Programmierung erheblich.
Ich stimme tuxedo zu. Wenn es schnell sein soll und keine riesigen Java-Objekt-Päckle übertragen werden sollen, dann ist Serialisierung der falsche Weg.

Ebenius
 
T

tuxedo

Gast
ObjectInputStream bzw ObjectOutputstream -> Serialisierung -> Nicht besonders performant.

Aber das wurde ja nur weiter oben schonmal erwähnt.
 

dayaftereh

Top Contributor
Also ich Nutze jetzt Mina ich denke das ist eine sehr saubere und einfache lösung.

Mina:

Ich habe mal ne frage zu Mina und zwar kann ich da ja Objekte verschicken. Ich habe mal zu übung eine Chat Cleint und Server geschieben wo ich Strings verschicke. Nur stelle ich mir die frage wie soll ich die infomationen für das Spiel verschicken als "String "oder den "String als Byte Array"? Oder lieber gleich nur Byte Arrays? und was macht Mina mit eine String wenn ich den verschicke?

Danke
 

Ebenius

Top Contributor
Ich kenne Mina nicht, aber ich würde Strings als UTF-8 kodierte Byte-Folgen verschicken.

Ebenius
 

dayaftereh

Top Contributor
Ja ich denke mal das wär das einfachste^^

Also ich mache dan sozu sagen String Packete das heißt jedes Packet Bekommt ein Typ z.B. POSITION und das scheibe ich dan als 1 um den Traffec klein zu halten^^ Damit hat jedes String Paket eine Typ asl Int wert^^
 
T

tuxedo

Gast
Du hast dir wohl nicht die Sache mit der ProtocolCodecFactory angesehen....?!

Da bekommt jede Nachricht einen Typ der mit einem Byte kodiert wird. Und jede Nachricht hat eine Encoder und Decoderklasse. D.h. du kannst da reinstecken was du willst:

Steckst du in Nachricht Typ 0x00 folgendes rein:

byte
Integer
String
String

Dann musst du im Decoder das in der Reihenfolfe wieder auslesen.

- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kjubert Synchronisieren von Objekten über Client/Server - bester Weg? Netzwerkprogrammierung 7
L Server-Socket liest Input-Stream nicht Netzwerkprogrammierung 5
E Socket Werte mit DataInput- und Output- Stream übergeben Netzwerkprogrammierung 1
T MP3 Dateien Stream Netzwerkprogrammierung 3
C Byte Stream dekodieren Netzwerkprogrammierung 7
G Video aus RTSP Stream speichern Netzwerkprogrammierung 8
B Socket BufferedReader.readLine() beenden ohne den Stream zu closen Netzwerkprogrammierung 7
A versch. Daten im Stream erkennen Netzwerkprogrammierung 2
E stream speichern Netzwerkprogrammierung 5
S Dateitransfer - kein end of stream Netzwerkprogrammierung 5
M RTP Stream überprüfen... Netzwerkprogrammierung 4
K ein Thread pro Stream Netzwerkprogrammierung 2
M Objekt über Object-Stream, empfange "alte" Daten Netzwerkprogrammierung 2
B Pdf Stream von Servlet mit itext Netzwerkprogrammierung 12
K End of stream, BufferedInputStream Netzwerkprogrammierung 4
A Icecast / SHOUTcast MP3 Stream / icy-metaint Netzwerkprogrammierung 3
Kr0e Simpler HTTP Stream server Test Netzwerkprogrammierung 3
H String Array durch einen Stream schicken. Netzwerkprogrammierung 4
lacyuu Warum empfängt mein Stream keinen Input? Netzwerkprogrammierung 4
lordcarlos Erstes TCP programm - output stream problem Netzwerkprogrammierung 2
N Socket Stream Schicken Netzwerkprogrammierung 13
N Socket Stream in String Netzwerkprogrammierung 4
M Bytes aus Stream lesen Netzwerkprogrammierung 3
J byte[] auf Stream schreiben Netzwerkprogrammierung 2
M ich habe ein stream problem Netzwerkprogrammierung 7
S Schnellster Stream Netzwerkprogrammierung 20
V Mehrere Streams durch einen Stream senden Netzwerkprogrammierung 14
W Was für ein Stream soll ich verwenden? Netzwerkprogrammierung 8
F Stream wird als Char übertragen. Char -> in String umwand Netzwerkprogrammierung 5
A java.io.StreamCorruptedException: invalid stream header Netzwerkprogrammierung 2
C invalid stream header Netzwerkprogrammierung 2
T Stream de-multiplexen Netzwerkprogrammierung 2
J gzip Stream weiterleiten Netzwerkprogrammierung 3
m@nu Ende von Stream bei HTTP-Request Netzwerkprogrammierung 3
C Problem mit Object-Stream Netzwerkprogrammierung 3
N TCP Stream auslesen Netzwerkprogrammierung 7
André B. Stream Bridge? Netzwerkprogrammierung 2
P Verschiedene Daten über einen Stream Netzwerkprogrammierung 4
T Musik-Stream: Server sendet die Datei zu schnell ? Netzwerkprogrammierung 3
N InternetRadio-Stream umleiten Netzwerkprogrammierung 2
G Writer oder Stream bei Socket? Netzwerkprogrammierung 2
G Datei über HTTP Stream senden Netzwerkprogrammierung 4
FrankenDerStein HTTP Https Server Bibliothek für Linux und Android gesucht. Netzwerkprogrammierung 7
FrankenDerStein Socket UDP Multithreading für ein Port Netzwerkprogrammierung 2
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
Tobero Java serversocket nicht nur zuganglich für localhost Netzwerkprogrammierung 6
T Brauche Hilfe beim GET-String für HttpURLConnection Netzwerkprogrammierung 4
F Server für Java Applikationen Netzwerkprogrammierung 16
B Webview für Anwendung Netzwerkprogrammierung 7
M Sicheres Login-System für App implementieren Netzwerkprogrammierung 6
J Netty umsetzung für ein Protokoll Netzwerkprogrammierung 1
J ERM für kleine Verwaltungsdatenbank Netzwerkprogrammierung 2
H Machbarkeitsfrage: TCP/IP Client (z.B. Netty) für Java Web Applcation Netzwerkprogrammierung 1
Messoras Launcher für mein Spiel Netzwerkprogrammierung 7
F Einfaches Gateway für Log-Files Netzwerkprogrammierung 1
P RMI - Neue eigene Instanz für jeden Aufruf auf nicht serialisierbares Objekt - wie? Netzwerkprogrammierung 0
P PPTP Protokoll für JAVA Netzwerkprogrammierung 14
T FTP Wie Notwendigkeit für "rekey" klientenseitig detektieren? Netzwerkprogrammierung 3
S Webserver für Jar File Netzwerkprogrammierung 4
G Socket Socket verbindung für Chat System Netzwerkprogrammierung 3
V Templates für Java Client rabbitmq Netzwerkprogrammierung 4
M Erreichbar für alle zu sein Netzwerkprogrammierung 9
M Server nur für eine Aufgabe Netzwerkprogrammierung 2
N Selbes URL Objekt für alle Requests nutzen Netzwerkprogrammierung 7
T uberspace.de als (v)root-Ersatz für kleinere Java-Anwendungen? Netzwerkprogrammierung 12
L Proxy für Dateidownload? Netzwerkprogrammierung 3
K HTTP Eigener Http Response für Datei-Download Netzwerkprogrammierung 4
D Socket Leitstelle für Funkspiel Netzwerkprogrammierung 8
F Java-Beispielcode für Zeroconf (ähnlich Apple Bonjour) Netzwerkprogrammierung 7
I HTTP S - Zertifikate+Cockies für Form-basierten Login Netzwerkprogrammierung 2
Ollek Socket Sucher passende Server/Client Lösung für meine Anwendung Netzwerkprogrammierung 2
M Gleicher Port für Senden und Empfangen ? Netzwerkprogrammierung 17
N RMI Einstellungen für "übers Internet" Netzwerkprogrammierung 8
F SSL-Zertifikate für viele Nutzer? Netzwerkprogrammierung 8
K Byte für Byte aus InputStream lesen Netzwerkprogrammierung 5
S wie stell man die classpath für JARs? Netzwerkprogrammierung 3
M Bestimmte Klassen für Netzwerkchecks gesucht Netzwerkprogrammierung 11
M ClassLoader für Axis2 setzen Netzwerkprogrammierung 15
M Welches Speicherformat für News-Database?? Netzwerkprogrammierung 2
Shoox VPN-Verbindung für Datenbankzugriff Netzwerkprogrammierung 2
P Proxy für Anwendung setzten Netzwerkprogrammierung 3
T Bezeichner "end of line" für die Funktion readline Netzwerkprogrammierung 5
A DataGramsocket Übertragungsproblem im Internet (IPs für Voip) Netzwerkprogrammierung 5
E Userliste für Chat Applet Netzwerkprogrammierung 4
S HTTP Kleines Programm für den Routerneustart Netzwerkprogrammierung 3
L Zeitspanne für erneutes senden Netzwerkprogrammierung 16
L Socket Chat Server für mehrere Clients Netzwerkprogrammierung 7
F Netzwerkprogrammierung für Anfänger Netzwerkprogrammierung 2
J Framework/ Muster für Chat-ähnliches Programm gesucht Netzwerkprogrammierung 2
B Variablen ausrichten für Übertragung Netzwerkprogrammierung 2
D FTP Pfadangabe für ftp-upload funktioniert nicht Netzwerkprogrammierung 5
K Getrennte Rechner für RMI-Server/RMI-Registry, bzw. Alternativen? Netzwerkprogrammierung 5
dayaftereh HTTPCleint und HTMLparser für hTTpBot Netzwerkprogrammierung 2
E Socket Client-Applikation mit GUI für Internet IO-Platine Netzwerkprogrammierung 2
0din Grundlage für Bluetooth Netzwerkprogrammierung 5
N "Jungfernflug" der Socketprogrammierung für ein Mühlespiel Netzwerkprogrammierung 8
F Empfehlung für embedded Webserver Netzwerkprogrammierung 10
W Bibliothek für Certificate Management Protocol (CMP) Netzwerkprogrammierung 3
O Client/Server für Ticker Netzwerkprogrammierung 2
J Stubs für SOAP-Webservice generieren. Ich bekomme es einfach nicht hin... Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben