Hallo liebe Glbasic Gemeinde,
Folgendes Programm funktioniert bei mir genau einmal:
// --------------------------------- //
// Project: Netplayer
// Start: Sunday, September 30, 2007
// IDE Version: 5.022
status = NETHOSTGAME(0, "test", "", "")
ident$ = NETCREATEPLAYER$("Bob")
PRINT ident$, 100, 100
SHOWSCREEN
MOUSEWAIT
Es wird korrekt "101" ausgegeben.
Starte ich dasselbe Programm aber erneut, wird "-1" (Fehler beim Erstellen des Spielers) ausgegeben.
Starte ich meinen PC neu, funktioneriert es wieder genau einmal. :rolleyes:
Bitte Gernot kümmere dich mal um die Netzwerkbefehle, so macht es wirklich keinen Spass!
:nw:
Grüsse, Tiuz
OS: Windows XP Professional
CPU: AMD 64 3000+
GrKa: Geforce 6600 GT
GlBasic: siehe Code
hmm mal gehts mal gehts nicht!
was willste den überhaupt mit dem Netzwerkzeugs :D
oh oh oh um einen spieler einem host beizufügen musst du dem host beitreten. es reicht nicht mit deinem code einfach ein neues fenster aufzumachen, da du mit dem server nicht verbunden bist.
dazu gibts den NETJOINGAME() befehl (bin mir nich sicher wie der heißt) danach sollte es auch klappen dein spieler zu erstellen.
Hallo Schranz0r,
Bei dir funktionierts also ab und zu mal? Ich habe auch schon rumprobiert und nach Tasks gesucht, die nach dem Beenden des Programms "übriggeblieben" sind. Leider kann ich da kein Muster erkennen. Wenn ich den Player mit NETDESTROYPLAYER nach erfolgreichem Erstellen zu löschen versuche, meldet sich bei mir der Visual Studio Debugger. :/
Bin leider von der fixen Idee besessen ein Netzwerkspiel schreiben zu müssen :D
Grüsse, Tiuz.
@ trucidare:
Muss der Host ein eigener Task sein? Wenn ich dem Code den "Netjoingame" Befehl zwischen "host" und "Createplayer" hinzufüge, funktionierts auch nicht.
Tiuz
// --------------------------------- //
// Project: Netplayer
// Start: Sunday, September 30, 2007
// IDE Version: 5.022
AUTOPAUSE FALSE
SYSTEMPOINTER TRUE
status = NETHOSTGAME(0, "test", "", "")
status = NETJOINGAME(0, "test", "127.0.0.1", "")
ident$ = NETCREATEPLAYER$("bob")
PRINT ident$ , 100, 100
SHOWSCREEN
MOUSEWAIT
Ne normal net, sonnst bräucht man ja immer einen "Server", und dann müsste man den noch selber Joinen, wär ja blöd :D
muss schon irgendwie gehn... GERNOT :D
aaaaalso
zuerst würd ich das programm in zwei abteilungen teilen, den host und den client. dann beim start wählen zwischen host und client.
dann solltest du dir mal unter den samples das beispiel für die netzwerkbefehle anschauen. dort ist das einigermaßen gut erklärt wie man die nutzt und wie sie funktionieren.
viel spaß beim coden und nicht die flinte ins korn werfen
Kann sein, dass da echt ein Hund d'rin ist. Ich muss es mir evtl. ansehen. Das Problem weiter einkreisen hiflt mir dabei, danke.
Ich habe mir die Netzwerksamples nochmal angesehen. Bei "Hello Net" zeigt sich bei mir das selbe Verhalten wie bei meinem geposteten Einfachprogramm. Mit frisch hochgefahrenen System kann einmal ein Spieler erstellt werden, danach nicht mehr.
Auch bei "Hello Net" wird der Spieler nach dem Hosten des Spiels erstellt, es muss also nicht vorher dem eigenen Spiel beigetreten werden.
Mein anfangs gopostetes Programm beschreibt das Problem zutreffend :|
OK. Ist ein Fehler. Ich seh's mir an. Kann aber keinen Zeitrahmen versprechen. Sorry. Ich bemüh' mich, ok?
hmmmmm... na gut :D
Danke, Gernot.
Ich bin ja sozusagen der einsame Netzwerkfreak. =D
Aber das Positive daran ist, das die Netzwerkbefehle dann auch mal getestet werden.
Ansonsten ist Glbasic wirklich top: Einfacher Syntax, viele Möglichkeiten, schön flott. :good:
Quote from: TiuzIch bin ja sozusagen der einsame Netzwerkfreak. =D
Stimmt nicht, Frag mal trucidare
Hallo trucidare,
wenn du Lust hast, kannst du ja mal deine Erfahrungen mit den Netzwerkbefehlen beschreiben.
Bei mir hat es nie richtig funktioniert. Am Anfang habe ich probiert, die Netzwerkfunktionen in bestehende Projekte einzufügen (z.B. 2D Rennspiel, Draufsicht). Ganz vereinzelt hats auch funktiomniert Nachrichten zu verschicken, aber nie reproduzierbar. Ich habe mir jetzt vorgenommen diese erstmal in einem ganz einfachen Chatprogramm stabil zum laufen zu bekommen, wobei ich auf das beschriebene Problem gestossen bin.
Kann aber natürlich nicht ausschließen, dass einiges auch an meiner eigenen Unfähigkeit liegt ;)
Tiuz.
Update seit gestern online. Bitte testen.
Ich kann es hier nur mit der Demo Version testen, aber leider ist das Problem mit dem Erstellen von Spielern noch da. Wenn ich den eingangs geposteten Code ausführe funktieniert beim ersten Mal alles problemlos. Beende ich das Programm und führe es sofort danach erneut aus, gibt es einen Fehler beim Erstellen des Spielers. :wah:
Wenn ich einige Zeit warte, oder mich neu anmelde funktioniert es manchmal wieder einmal korrekt. Zuverlässig hilft aber nur ein Systemneustart.
Also, besser aber immer noch schlecht? Ich hab eine Stelle gefunden. Der bekommt da ein Timeout. Ich werd's nochmal größer setzen.
Ja so könnte man sagen.
Es ist tatsächlich so, dass wenn man einige Minuten wartet, das Programm sich erneut normal ausführen lässt.
Rein interessehalber gefragt: Musst der Timeout nicht eher kleiner eingestellt werden, damit der Prozess (oder was auch immer) möglichst bald nach dem Beenden des Prgramms gelöscht wird?
Also die Demo vom Netzwerk läuft gut hatte einmal einen -1 nachdem ich gleich wieder drauf wollte auf den host
Nächstes Netzwerkproblem? ;)
Folgender Code müsste meiner Meinung nach 2x auf demselben Rechner ausfgeführt zu etwa folgender Ausgabe führen (Clientfenster) :
101 SP, Host : 1
102 SP, Host : 0
tatsächlich führt er nur zu aber zu:
101 SP, Host : 1
102
// --------------------------------- //
// Project: test
// Start: Wednesday, October 10, 2007
// IDE Version: 5.040
AUTOPAUSE FALSE
SYSTEMPOINTER TRUE
GLOBAL ident$, name$, i, num, host;
IF NETJOINGAME(0, "test", "127.0.0.1", "") = 0 THEN host = NETHOSTGAME(0, "test", "", "")
IF NETCREATEPLAYER$("SP, Host: " + host) = "-1" THEN END
WHILE TRUE
num = NETNUMPLAYERS()
FOR i=0 TO num-1
ident$ = NETGETPLAYERID$(i)
name$ = NETPLAYERNAME$(ident$)
PRINT ident$ +" " +name$, 100, 100+10*i
NEXT
SHOWSCREEN
WEND
Sprich, für den zweiten Spieler wird kein Name zurückgegeben, obwohl er der Identnummer nach vorhanden ist.
Laut Doku sollte bei einem Fehler mit NETPLAYERNAME$() "NO_DATA" ausgegeben werden.
Nochmal ein Update. Die Netzwerkbefehle waren echt kaputt.
Sind sie immer noch.
Aber: Ich verspreche sie zu richten. Bitte mal testen und feedback geben. Bitte, bitte schreibt mal einer ein einfaches Spiel/Chat Programm?
Versprochen, ich bleibe an den Netzwerkbefehlen dran ;)
Zum Testen benutze ich ein einfaches Chatprogramm, dass ich, wenn alles funktioniert, gerne in den Showroom lade.
ich mach ein sample für deine unterlagen...
nachrichten und variablen übergabe
Läufts jetzt?
Die Sache mit den Namen der Teilnehmer abzufragen geht bei mir immer noch nicht.
(Siehe zuletzt geposteten Beispielcode)
ähm noch nicht so wirklich.
Ich bekomm ein -1 wenn ich kurz nach einem start das ganze nochmal starte.
Ja, hab' ich auch. Ein paar Sekunden später geht's dann aber wieder, oder?
Evtl. weil der Port noch offen ist!?
ich denke schon. zerstörst du denn auch die verbindung wenn man esc drückt?
Update online. Netzwerk sollte jetzt voll funktionieren.
Ja geht einwandfrei das ding ;) und das NetzwerkBeispiel kommt auch bald. nur noch ein paaar gimicks rein
Jo man digga, gut gemacht alta, big KingPoo :D
Naja kleiner Insider unter Trucidare, Gernot und mir ^^
@Schranz0r
Ahja ;)
Werde die Funktionen demnächst auch testen :)
Bin allerdings noch mit einem anderen GLB Projekt beschäftigt.
Update online. Kleiner Chat ging jetzt bei uns.
Update online. Sollte ganz gut laufen.
wo ist der Chat dazu ^^
*Testen will* take a look in direction of KingPoo :D
Trucidare hat das gemacht
*rüberschau*
du has verbessert ;)
Aber der Chat ist von Dir.
Öhmmmm.... o.O ja wie nun :D gibt mir den nun einer oder nicht ... *DummGuck*