Denkfehler (Server / Client)
Übersicht

KaddyBetreff: Denkfehler (Server / Client) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sers^^
Ich habe jetz schon n paar kleine Spiele programmiert die Übers Internet und lan liefen allerdings waren diese immer nur für 2 Spieler ausgelegt mal angenommen jeder Spieler steuert ein Bild wie schaffe ich es nun das Alle Kords an alle gesended werden? ich kann die Types ja durchgehen und die koords senden aber wie sende ich ein Objekt die werte aller andern Objekte? ich hoffe ihr versteht XD Denkanstöße und Beispielcode wären hilfreich |
||
Bin Aktuell auf der Suche nach einen Programmierer Team, ob Hobby Team oder Firma ist egal. Einfach eine PM an mich schreiben.
Bezahlung verlange ich NATÜRLICH keine ![]() Es gibt 10 arten von Menschen, die einen verstehen das Binärsystem , die anderen nicht ![]() ![]() |
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
denk objektorientiert (types..)
jeder mitspieler im spiel ist ein objekt ![]() |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
DU könntest z.B. meine Netzwerk-Lib nehmen, SimpleUDP. Da wird alles über Arrays geregelt. Hast du jetzt z.B. sowas :
BlitzBasic: [AUSKLAPPEN] Type player Dann brauchst du nur noch für die Lib ein Array angeben, z.B: BlitzBasic: [AUSKLAPPEN] Dim playerID.player(UDP_PlayerNumber) Wenn jetzt ein neuer Spieler reinkommt (also UDP_GetEvent = UDP_MSG_NEW) dann soll er einen neuen type erstellen : BlitzBasic: [AUSKLAPPEN] event = UDP_GetEvent() Und schon hast du einen Player erstellt ! Möchtest du jetzt die Informationen senden (also x+y von deinem Player) dann machst du das so : BlitzBasic: [AUSKLAPPEN] UDP_CommandLine = "" Jertzt wissen alle anderen im SPiel deine Positionen ! Nur müssen sie auch noch verwertet werden : BlitzBasic: [AUSKLAPPEN] count = UDP_CountPlayers() So einfach ist das (! aber nur wenn du die Lib benutzt, willst du es selber machen ist es um längen komplizierter !) Viel spaß ![]() Edit : Sry Frage Falsch verstanden ![]() Ich erklärs dir mal. Also der Host (der Spielleiter) öffnet beim Serverstart einen Stream mit einem Konstanten Port (sagen wir 8000). Dieser Stream ist NUR fürs empfangen von Nachrichten gedacht. Jetzt will sich jemand auf dem Server einloggen. Dazu erstellt dieser einen Stream, der nur fürs senden da ist. Über diesen Stream sendet er die Nachricht z.B. "ICh möchte mich auf dem Server einklinken" (natürlich kein Text sondern nur ein BYte (also BYte = 1 heißt einklinken, byte = 2 heißt normale nachricht usw.,). Dann bekommt der Host diese nachricht (wenn alles richtig verläuft) und guckt ob er einen freien Platz hat oder ob der Server voll ist. In diesem Fall ist er leer. Also schickt der Server dem Client eine nachricht zurück das er euf den Server kommen kann und teilt dem Clienten gleich notwendige daten mit (eigene ID, Welche Spieler drinne sind, wie die Daten von denen sind usw). Dann erstellt der Host einen Stream für diesen Client (also jeder Client hat vom Host aus einen eigene Stream). Der Client erstellt auch noch einen Stream, der nur zum empfangen da ist. Jetzt sind beide Bereit. Nachrichten vom clienten an den Server werden dierect weiter geschikt an die anderen Clienten, wenn der Server eine Nachricht schreibt schikt er sie auch an alle. Du musst einfach so denken, das der Server alle SPieler und so verwaltet und die Clients (engl. Kunde) alle beim Server zusammenlaufen... ich mal dir gleich noch ein Bild ![]() Hier mal zur veranschauung : ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
- Zuletzt bearbeitet von ToeB am Fr, Sep 11, 2009 23:46, insgesamt einmal bearbeitet
Kaddy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein danke ich möchte mit TCP arbeiten ![]() sooo unerfahren bin ich dann doch ned xD ich geb ma n pseudecode BlitzBasic: [AUSKLAPPEN]
Soweit so gut jetz gehts ans senden ich kann ja wohl schlecht BlitzBasic: [AUSKLAPPEN]
schreiben dann sended er ja jeden nur seine eigene position aber nicht die der anderen. |
||
Bin Aktuell auf der Suche nach einen Programmierer Team, ob Hobby Team oder Firma ist egal. Einfach eine PM an mich schreiben.
Bezahlung verlange ich NATÜRLICH keine ![]() Es gibt 10 arten von Menschen, die einen verstehen das Binärsystem , die anderen nicht ![]() ![]() |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann musst du wohl eine doppel schleife benutzen =)
BlitzBasic: [AUSKLAPPEN] For send.client = Each client ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group