|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Westbeam
Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 24.02.2013, 16:18 Titel: TSNE_Play SpielerIDs und so |
|
|
Auch nach mehreren harten Stunden ist es mir nicht gelungen Kontakt mit PuppetMaster aufzunehmen. Aber vielleicht kann mir auch hier geholfen werden?
Es geht um die SpielerIDs. Jeder Spieler, der sich mit einem TSNE_Play Server verbindet, erhält eine bestimmte ID. Der erste Spieler, der sich verbindet hat die ID 1, der zweite dann die ID 2 ... etc.
Nun aber das Problem. Nehmen wir an, es befindet sich ein Spieler mit der ID 1 auf dem Server und verlässt diesen dann. Kurz darauf verbindet sich ein weiterer Spieler mit dem nun leeren Server und bekommt dann die ID 2. Aber wieso? Er ist doch der einzige Spieler dort?
Ist das gewollt? |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 24.02.2013, 16:28 Titel: Re: TSNE_Play SpielerIDs und so |
|
|
Hallo Westbeam,
ich habe bisher immer nur TSNE-pur verwendet und nicht TSNE_Play,
Westbeam hat Folgendes geschrieben: | Nehmen wir an, es befindet sich ein Spieler mit der ID 1 auf dem Server und verlässt diesen dann. Kurz darauf verbindet sich ein weiterer Spieler mit dem nun leeren Server und bekommt dann die ID 2. Aber wieso? Er ist doch der einzige Spieler dort? |
aber ich vermute, dass das so gewollt ist. Die Spieler-ID wird für jeden neuen Spieler inkrementiert. Das heißt, wenn bspw. die IDs 1, 2, 5 und 8 belegt sind, dann bekommt ein neuer Spieler nicht etwa die frei gewordene 3, sondern die 9. Fortlaufend eben. Das führt dazu, dass nach ein paar Jahren oder so - je nach Spielerzahl und Fluktuation - die ID überläuft. Ich glaube TSNE_Play handhabt diesen Fall so, dass dann wieder on vorne begonnen wird zu zählen. In einem normalen Programm wird dieser Fall aber wahrscheinlich nicht eintreten.
Viele Grüße!
Sebastian _________________
Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 24.02.2013, 18:04 Titel: |
|
|
TPM hat sich dazu schon einmal geäußert; es ist so gewollt. So mus das Serverprogramm nicht jedes Mal alle vorhandenen IDs durchlaufen, um zu schauen, welche frei ist (außer die IDs wären bereits "übergelaufen"). Möglicherweise ist es auch eine Frage der Eindeutigkeit: wenn der Client 4 dem Client 2 eine Nachricht schicken will, sollte er sich darauf verlassen können, dass da nicht plötzlich jemand ganz anderes sitzt. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 25.02.2013, 05:42 Titel: |
|
|
Also .. es ist eigentlich ein JAIN zu meinen vorrednern.
Zum einen Checkt der Server durchaus ob die ID schon vorhanden ist, bevor er diese vergibt. Zum anderen hat es den ganz einfachen grund, das es mal vor einiger Zei tmit TSNE einige Probleme mit den ID's gab, wenn sie "wiederverwendet" wruden. Das Problem beruhte jedoch nicht am TSNE / Play, sondern am Coder, aber um das im vornherein auzuschliessen, das hier komplikationen eintreten, habe ich den weg gewählt, eine fortlaufende Nummer zu nutzen.
Das "zwingt" jeden coder dazu, diese ID's nicht als Array-Index zu nutzen. Prinzipiel wäre das durchaus möglich und problemlos machbar. Allerdings musste ich feststellen, das oft der fall eintritt das die Coder nicht richtig mit diesen verbindugnen (vorallem durch die Parallelität) umgehen.
Das hatte z.B. zu dem Fall geführt, das offensichtlich mehrmals eine ID genutzt wird, oder noch nicht als "frei" im app deklariert wurde, obwohl dies bereits gemeldet wurde.
Viele würden sicher gerne die ID's (auch bei TSNE) als Array-Index heranziehen.
Allerdings gebe ich hier mal zu bedenken, das es z.B. möglich sein kann, das 2 Server im selben App arbeiten. Oder ein Client und ein Server. Da für beide die Selbe Variable für diese ID's genutzt wird, wäre es sehr umständlich zu realisieren, welche ID Frei ist und damit in das Array-Boundary passt.
Die ID's können überlaufen. Das ist Prinzipiel beabsichtigt. Es ist eien UInteger. Damit viel Potential für mögliche ID's vorhanden. Und das dauert, bis sie überläuft. Wenn Sie es tut, dan beginnt Sie wieder bei 1, vorrausgesetzt frei, sonst bei 2, wenn frei, sonst 3, ....
PS: Die Socket-Nummern sind übrigens deutlich größer als im Normalem arbeitsfall bei TSNE. Meist fangen die erst bei 2000 (nach meienr erfahrung) an. Je nachdem, was da schon so alles offen is.
MfG
TPM
PPS: Sry für meinen text .. bin quasi schon am pennen _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|