Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

[ Win/Linux ][ Netzwerk ] TSNEPlay - Netzwerk für Spiele
Gehe zu Seite 1, 2, 3  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  

Wie findet Ihr dieses Projekt?
Super
70%
 70%  [ 12 ]
Gut
29%
 29%  [ 5 ]
Mittelmässig
0%
 0%  [ 0 ]
Schlecht (Warum?)
0%
 0%  [ 0 ]
Scheisse (Warum?)
0%
 0%  [ 0 ]
Stimmen insgesamt : 17

Autor Nachricht
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 28.08.2009, 14:15    Titel: [ Win/Linux ][ Netzwerk ] TSNEPlay - Netzwerk für Spiele Antworten mit Zitat


TSNEPlay_V3



BITTE BEACHTEN: TSNEPlay wird nicht weiterentwickelt! Bitte EGNP nutzen!!!



OS: Win / Linux
Kategorie: Netzwerk / Internet / Modul / Spiele
Funktion: TSNE_V3 Erweiterung zur Integration von Netzwerkfähigkeit in Spielen.
Projektseite: Http://freeBASIC-Portal.de



Ausführliche Beschreibung:
TSNEPlay_V3 ist ein Erweiterungsmodul das für die Spileprogrammierun entwickelt wurde.

Es vereinfacht massiv die Integration von Multiplayer Netzwerkverwaltung in Spiele oder Anwendungen jeglicher Art.


Das Modul ist im BETA-Status und damit noch nicht fertig.
Anregungen / Kritik und Lob bitte in das QBasic-Forum posten: (Hier)

Es bietet die Möglichkeit einen Server oder ein Client pro Programm zu erzeugen. Dabei wurde wert darauf gelegt, das die Primären Funktionen sehr einfach strukturiert sind.

INFO
Um TSNEPlay_V3 zu benutzen ist TSNE_V3 nötig und muss sich im selben Verzeichnis wie TSNEPlay_V3 befinden.

Bitte hierzu auch den entsprechenden TSNE_V3 Thread, hier im Forum, beachten http://forum.qbasic.at/viewtopic.php?t=5124



Screenshots:
Keine Bilder vorhanden


Direkt Download:
[Sourcecode] Bitte von der Projektseite herunterladen!


Changelog:
Befindet sich auf der Projektseite. bzw als einzelne Postings.



MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]


Zuletzt bearbeitet von ThePuppetMaster am 24.01.2014, 01:00, insgesamt 5-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 28.08.2009, 14:42    Titel: Antworten mit Zitat

Klingt interessant, und der Sourcecode sieht - man könnte schon fast sagen "mal wieder" - TPM mäßig einfach nur genial und gut durchdacht aus.
Sehr vielversprechend, mal schauen was da so draus wird lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 28.08.2009, 15:02    Titel: Antworten mit Zitat

Man muss dazu sagen, von der Idee bis zur Umsetzung hat es keine zwei Tage gedauert, dabei hat er ja noch jede Menge anderer Projekte.

28398 hat es schon gesagt:
Zitat:
einfach nur genial
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 28.08.2009, 15:19    Titel: Antworten mit Zitat

Also ich würde noch nen UDP-Modus bereitstellen, den ganzen TCP-Overhead braucht man ja bei vielen Spielen gar nicht.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 28.08.2009, 15:35    Titel: Antworten mit Zitat

Darüber hab ich auch schon nachgedacht ... ich hab mir schon überlegt, das ich einen weiteren kanal hinzufüge, in UDP, neben dem TCP kanal, der dann nur die nutzdaten wie Move, MSG, usw. überträgt ... quasi .. die daten, welche ziemlich oft anfallen.


Meine ersten TCP tests haben aber gezeigt, das TCP scheinbar noch ausreichend is ... ist ja auch die frage, was der coder so basteln will ... ma gugn, wenn ich zeit hab, bau ich noch UDP mit ein.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 28.08.2009, 15:44    Titel: Antworten mit Zitat

Machs am besten nicht zu spezifisch.
Also jetzt nicht gleich irgendwie anfangen spezielle Befehle hinzuzufügen. Was ich ganz cool fände, wäre eine Art Eventsystem, wo man eigene Events definieren kann. Die Events werden dann an den Server gesendet, wo dann quasi der Eventhandler vom Server aufgerufen wird. Umgekehrt genauso.
Das wäre echt cool! grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 28.08.2009, 15:53    Titel: Antworten mit Zitat

Sieht so aus, als ob ich das mal irgendwo einsetzen muss. Klingt nämlich sehr interessant. Habe trotzdem mangels Erfahrung in diesem Bereich (noch) nicht abgestimmt.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 28.08.2009, 16:03    Titel: Antworten mit Zitat

nemored hat Folgendes geschrieben:
Sieht so aus, als ob ich das mal irgendwo einsetzen muss. Klingt nämlich sehr interessant. Habe trotzdem mangels Erfahrung in diesem Bereich (noch) nicht abgestimmt.
Dann i das genau richtig für dich ... mein Ziel war es nämlich, netzwerk stuff so zu verpacken, das es für coder interessant wird, die damit eigentlich noch nie was gemacht haben, oder auch kein bock darauf haben und sich eher auf den Spiele-Teil des Programms konzentrieren (wollen).

Wenn dir was zu kompliziert erscheitn, oder ein problem jeglicher art hast, dann wär ich für feedback dankbar. Dann weis ich nämlich, was ich bei der nächstern Version/Revision ändern muss.

TSNE scheint nämlich für einige immernoch ziemlich kompliziert oder zu viel Aufwand zu sein.
TSNEPlay soll da abhilfe schaffen, und die Netzwerk-souce soweit auslagern, das sich der coder nur noch um die ganze Spielerverwaltung kümmen muss.

Es wären nämlich z.B. keien TSNE-IDs mehr verarbeitet, sondern nur noch PlayerID's (*lach*) .. wohll auch nicht besser, aber vieleicht verständlicher durchgeknallt


@28398
Wie meinst du das genau?


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 28.08.2009, 16:06    Titel: Antworten mit Zitat

Beschäftigen werde ich mich auf jeden Fall damit, ist halt alles immer eine Frage der Zeit und der vielen anderen Dinge, die man noch so machen wollte. happy
Ich melde mich auf jeden Fall.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 28.08.2009, 16:12    Titel: Antworten mit Zitat

@TPM:
So ein bisschen wie so eine Art Signal-Slot-System.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 28.08.2009, 16:29    Titel: Antworten mit Zitat

Das sieht doch alles mal wieder sehr gut aus, gerade weil ich schonmal und irgendwann einmal ein Spiel mit Netzwerkfunktion machen wollte. Ich habe mich zwar noch nie mit TSNE richtig beschäftigt aber das beispielprogramm ist zwar groß aber trotzdem leicht überschaubar. Daher einmal ein Lob für die ganzen kommentare und sinnvollen benennungend er SUBs usw., ich bin da immer am überlegen und meisten kommen irgendwelchen langen dinger raus mit "buchstabencodes" am ende.
Nur bei deinem Beispieweiß ich nicht was dasmit der spieleranzahl sein soll und außerdem würde ich viel mehr daten versenden als nur ein paar koordinaten.

Wo werden hier in der Sub irgendwelche daten verschickt?
Code:
Sub TSNEPlay_Data(ByVal V_FromPlayerID as UInteger, ByVal V_ToPlayerID as UInteger, ByRef V_Data as String)
Print "[DATEN]   Von PlayerID:"; V_FromPlayerID; "   Fuer PlayerID:"; V_ToPlayerID; "   Data: >"; V_Data; "<"
End Sub
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 28.08.2009, 17:05    Titel: Antworten mit Zitat

Also .. die oberen Sub's sind keine "versender" sondern "Empfänger" ... sogenannte Callbacks. .. Diese Subs werden aufgerufen, wenn jemand anderes als du (z.B. ein Gegner) etwas tut, das in eine nachrich verpackt und an alle gesand wird. .. nachdem das über dem server zu dir geschickt wurde, läuft diese meldung über eine der oberen Funktion in dein Programm rein, was du anschliessend verarbeiten kannst.


Es gibt aktuell 3 möglichkeiten Daten zu versenden.

1. TSNEPlay_SendMove ... hiermit kann man 3 (X / Y / Z) Double werte versenden, + 1x UInteger
2. TSNEPlay_SendMsg .. ist für den versand von Text-Nachrichten gedacht .. z.B. um eine art chat zu realisieren
3. TSNEPlay_SendData ... ist dafür geeignet um selbst daten in jeder beliebiger form zu versenden. Wenn man z.B. nicht mit der Move oder MSG funktion arbeiten will, udn sich was eigenständiges zusammen basteln möchte.


Das mit der SPieleranzahl ist eine art begrenzung für den Server. Es wird später zwar noch eine möglichkeit hinzugefügt um Spieler vom Server zu kicken, usw. aber diese "Spielerzahl" beim erstellen eines Servers ist eien maximal-beschränkung. Wenn du z.B. nur ein 2 Spieler Spiel oder ein 4 Spieler-Spiel schreibst, kannst du dort fest 4 einstellen

willst du mehrere Spieler zulassen, dannkannst du das bis zu 65535 Spieler erhöhen, was aber massive server-leistung benötigt, vorallem verwaltungsaufwand der clienten, usw. ... es ist einfach eine art kleine max-spieler beschränkung

wenn du keien beschränkung willst, dann gibst einfach das maximum von 65535 ein... (wird aber wohl niemals erreicht) grinsen


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 28.08.2009, 18:16    Titel: Antworten mit Zitat

Was ich vorhin sagen wollte war inetwa das:
Du kannst im Servercode eigenen "Nachrichtenklassen" definieren. Eine Nachrichtenklasse besteht dann aus dem Namen der Klasse (bspw. "ZugBeendet" - Case insensitive wäre sinnvoll) und beliebigen Daten mit fester Länge.
Beim Verbindungsaufbau sendet der Client dem Server alle ihm bekannten Nachrichtenklassen zu (die Namen + die Payloadsize/Datengröße). Der Server entscheidet dann ob der Client unterstützt wird oder nicht - entweder weil die Payloadsizes sich unterscheiden oder ihm Klassen fehlen.
Man registriert einfach einen Callback für diese Klassen, der dann bei jeder empfangenen Klasse aufgerufen wird.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
darkinsanity
aka sts


Anmeldungsdatum: 01.11.2006
Beiträge: 456

BeitragVerfasst am: 21.09.2009, 10:53    Titel: Antworten mit Zitat

Ist zwar schon ein paar Tage alt, aber ich gebe trotzdem mal meinen Senf dazu, ich bin nämlich gestern erst dazu gekommen den Source runterzuladen zwinkern
Ich hab mir mal das Beispiel durchgelesen. Es wäre vielleicht sinnvoll, nicht gleich einen Client zu erzeugen wenn man einen Server macht, falls man einen "dedicated server" machen möchte.
_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 21.09.2009, 15:41    Titel: Antworten mit Zitat

Ich vertstehe nicht wie ich eigen Daten senden können soll...
Eigendlich würde ich nur die Funktionen mit eigenen Daten nutzen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 21.09.2009, 17:24    Titel: Antworten mit Zitat

Du kannst (soweit ich mich erinnern kann) auf jeden Fall immer String-Daten verschicken; und damit kannst du deine Daten auf jeden Fall irgendwie übermitteln, im Notfall als String.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 21.09.2009, 20:58    Titel: Antworten mit Zitat

@nemored
Genau. Wenn dir (frebas) die Move oder MSG funktionen nicht reichen, oder du etwas eigenes basteln möchtest, dann kannst du die DATA funktion nutzen um einen string mit allen möglichen ascii-zeichen zu versenden. Die MSG Funktion ist hierfür nicht geeigent, weil sie intern noch ein bischen mitmischt, und den eigentlich datentrom unnötig erhöht.

Wenn du ein eigenes steuerungskonzept planst, dann baust du dir einfach das auf, was du übertragen willst. Du kannst z.B. eine eigene Move-Funktion bauen, indem du deine koordinaten in einen string packst, dazu noch kommandos, usw. und das ganez über die DATA funktion an den gewünschten Spieler, oder alle Spieler (PlayerID=0) schickst.

Auf der anderen seite bekommst du ein callback gefeuert (DATA natürlich), das genau diese daten enthält. Hierbei musst du dan natürlich die übertragenen daten von hand zerlegen, udn deine koordinaten und kommandos selbst parsen.

die DATA funktion ist für alles möglichegeeigent. quasi eine schnittstelle für eigene dinge.

MOVE und MSG wurden geschaffen, um genau diese arbeit zu erleichten, und den ganzen parseraufwand (und vorallem die datenkompression bei der übertragung) zu erhöhen.


@28398
Joar .. is ne idee, die ich einbauen werden. THX!



MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 23.09.2009, 15:06    Titel: Antworten mit Zitat

Kann man auch etwas an alle Clienten gleichzeitig schicken? Also so dass nicht allen hintereinander dasselbe geschcikt wird?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 23.09.2009, 17:04    Titel: Antworten mit Zitat

Ja ... dafür wird als PlayerID einfach 0 enigetragen. Dadurch wird das automatisch an alle gesand. Wenn die daten jedoch nur an einen bestimten palyer gesand werden soll, dann muss dort die PlayerID des ziel-Clienten eingetragen werden.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 15.03.2010, 16:12    Titel: Antworten mit Zitat

ich kann TSNEplay_V3.bi nicht compillieren:

Code:
D:\Programme\FreeBASIC\fbc -s console "FbTemp.bas"
D:/Programme/FreeBASIC/inc/TSNE_V3.bi(618) warning 3(1): Passing different pointer types, at parameter 4 of SETSOCKOPT()
FbTemp.bas(639) error 1: Argument count mismatch, found ',' in 'RV = TSNE_Create_Accept(V_RequestID, TNewTSNEID, , @TSNEPlay_INT_Disconnected, @TSNEPlay_INT_Connected, 0)'
FbTemp.bas(644) error 1: Argument count mismatch, found ',' in 'RV = TSNE_Create_Accept(V_RequestID, TNewTSNEID, , @TSNEPlay_INT_Disconnected, @TSNEPlay_INT_Connected, @TSNEPlay_INT_NewData)'


edit: es hat sich erledigt, ich hatte nicht die aktuelle TSNE_v3.bi ...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2, 3  Weiter
Seite 1 von 3

 
Gehe zu:  
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.

 Impressum :: Datenschutz