UDP Netzwerk Lib
Übersicht

![]() |
ToeBBetreff: UDP Netzwerk Lib |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also da ich viel mit UDP programmiere und keine lust habe alles immer neu zu schreiben, weil ich zu faul bin und immer wieder gucken muss obs auch wirklich klappt,habe ich eine Functions-Lib zu dem Thema geschrieben. Sie beinhaltet folgendes :
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() So dann wollen wir mal die ganzen Functionen erläutern ![]() 1.: UDP_Init(PlayerAnzahl% [, SendeMS%] [, TimeOutMS%]) Startet die Lib, stellt SendeMS,Timeout und spieleranzahl ein. Parameter sollten klar sein. 2.: UDP_HostGame%(PlayerName$[ , ServerName$] [, ServerPort]) Hostet ein Spiel, das programm gilt also als Host(Server). Den Port kann man angeben, sonst wird ein freier Port gesucht. 3.: UDP_JoinGame%(ServerIP$ , PlayerName$ [, ClientPort%] [, ServerPort] [,WaitMS] ) Tritt einem spiel mit der Gewünschten IP bei. ServerIP muss hier als String angegeben werden, wird intern umgewandelt. Den CleintPort kann man auswählen, schaltet man ihn auf 0 wird ein freier gesucht (ist vorteilhaft für Locales Testen (an einem PC)). Der Server Port muss angegeben werden, weil die Function sonst nicht weiß wohin sie die anfrage senden soll. Und WaitMS gibt an, wie lange die Function auf antwort warten muss (also z.B 5000, wartet sie 5sek, wenn sie bis dahin noch nichts erhalten hat beendet sie sich selber). Wenn die verbindung erfolgreich ist, gibt sie 1 zurück, wenn nicht 0. Ist der server voll, wird eine 2 zurückgegeben. 4.: UDP_Updat%e() Empfängt alle nachrichten, wertet sie aus, erstellt neue spieler ect. Aktualisiert den ganzen Netzwerkkram. (am besten an den anfang der schleife stellen). Diese Function MUSS auf jeden fall aufgerufen werden, sonst funtz gar nichts. 5.: UDP_Send%(SendID% , SendString$ [,FromID] [,chat]) Sendet eine neue nachricht. SendID ist die ID wohin diese nachricht gesendet werden soll(SpielerID,0=Server,1-Spielernazahl=ClientID), SendString ist der String der gesendet werden soll (also z.b. : str$ = XPos(i)+","+yPos(i)+","+Jump(i)+Chr(13)+Chat(i)) . FromID ist die ID von wem die nachricht kommt (also wenn der Host z.B von allen die daten an alle weiterschikt, aber diese daten mit seiner ID, dann werden automatisch bei dem clienten die Daten der anderen clienten gleich der daten des Servers gesetzt, dafür ist das da). Läasst man FromID leer nimmt es automatisch die eigene ID. Chat ist eigentlich ein parameter den man außer acht allen kann, das ist nur wenn er 1 ist wird ein Byte mitgesendet, der angibt, das jetzt eine Chat nachricht folgt, dann muss man diese nämlich nicht in den sende String packen. 5.: UDP_Recv$([GetID%]) Gibt die zuletzt eingekommene nachricht aus. Wahlweise kann man auch den parameter GetID benutzen, damit gibt man an welche nachricht man auslesen möchte. Das sollte man tun, weil man sonst nachrichten von anderen spielern evtl. auslassen könnte. Also wieder zur guten alten ForNext schleife ![]() 6.: UDP_End%() Beendet die sitzung für das programm. Die anderen Clienten/der server löschen diesen spieler dann automatisch aus der Liste. 7.: UDP_CountServers%([, MaxServers%] [,WaitMS%] [,ServerPort%]) Diese Function sucht nach servern (nur im NETZWERK !) und speichert sie ab. MaxServers gibt die vermeindliche zahl an servern an (geschätzt). Kann man z.B. auf 1000 sezten, dann ist auf jden fall jeder sever angezeicgt ![]() 8.: UDP_GetServerInfo$(Index%/i]) Wenn vorher UDP_CountServers angewendet wurde, kann man hiermit die daten in einem string abfragen. (Also ServerName + IP:Port + Spieler/SpielerAnzahl). Jeztzt kommen noch ein par system parameter : [i]UDP_Error$/i] : Ist sie "1" hat der Server das spiel veralssen / beendet, ist sie "2:" dann hat ein Client das spiel verallsen/Beendet. Die ID von diesem steht hinter der "2:". [i]UDP_Server% : 1=Server, 2 = Client UDP_StreamPort% : Beeinhaltet den Port von dem UDPStream UDP_ServerName$ : ServerName =) UDP_SelvID : Eigene ID UDP_GetMsgID : Die ID von der letzten empfangenen Nachricht UDP_GteMsgType : Der MSG_Typ der letzten empfangenen Nachricht. So das wars auch schon, wer mehr wissen will guckt sich das beispiel an ![]() Hier die Lib : Code: [AUSKLAPPEN] ;*****************************************
;****************** UDP-Lib ************** ;******** By Tobias "ToeB" Hendricks ***** ;***************************************** ;******************* ©2009 *************** ;***************************************** Global UDP_Stream,UDP_StreamPort,UDP_ServerName$ Global UDP_Playeranzahl,UDP_SendMs,UDP_SendTime,UDP_TimeoutMS,UDP_SelvID Global UDP_GetMsgID,UDP_GetMsgType,UDP_SendMsg,UDP_Server,UDP_RecvString$,UDP_Error$ Global UDP_SendMsgID Global UDP_S_Anzahl Const UDP_NORM_MSG = 1 Const UDP_CHAT_MSG = 2 Const UDP_NEWP_MSG = 3 Const UDP_NOPL_MSG = 4 Const UDP_GETS_MSG = 5 Const UDP_ENDG_MSG = 6 Dim UDP_ON(0),UDP_IP(0),UDP_Name$(0),UDP_Port(0),UDP_NewP(0),UDP_Msg$(0),UDP_TimeOut(0),UDP_Ping(0,0) Dim UDP_S_ON(0),UDP_S_Name$(0),UDP_S_IP(0),UDP_S_Port(0),UDP_S_Spieler(0,0) Function UDP_Init(FPlayerAnzahl=8,SendMS=25,FTimeOutMs=1000) UDP_Playeranzahl = FPlayerAnzahl UDP_SendTime = FSendMS UDP_SendMS = MilliSecs() UDP_TimeOutMS = FTimeOutMS Dim UDP_On(UDP_Playeranzahl),UDP_IP(UDP_Playeranzahl),UDP_Name$(UDP_Playeranzahl),UDP_Port(UDP_Playeranzahl) Dim UDP_NewP(UDP_Playeranzahl),UDP_Msg(UDP_Playeranzahl),UDP_TimeOut(UDP_Playeranzahl),UDP_Ping(UDP_Playeranzahl,1) End Function Function UDP_HostGame(FName$="Unnamed",FServerName$="LocalServer",FPort=0) UDP_Stream = CreateUDPStream(FPort) If UDP_Stream = 0 Return 0 UDP_StreamPort = UDPStreamPort(UDP_Stream) UDP_Name(0) = FName$ UDP_ON(0) = 1 UDP_ServerName = FServerName UDP_Server = 1 Return 1 End Function Function UDP_JoinGame(FIP$,FName$,FPort=0,FServerPort=0,FWait=1000) Local IIP = UDP_IntIP(FIP) UDP_Stream = CreateUDPStream(FPort) WriteByte(UDP_Stream,UDP_NEWP_MSG) WriteString(UDP_Stream,FName$) SendUDPMsg(UDP_Stream,IIP,FServerPort) UDP_Server = 0 Delay 100 Local IWaitMs = MilliSecs() + FWait Repeat If RecvUDPMsg(UDP_Stream) TmpByte = ReadByte(UDP_Stream) DebugLog "MSG Recover from Server : "+TmpByte Select TmpByte Case UDP_NEWP_MSG UDP_SelvID = ReadInt(UDP_Stream) UDP_On(SelvID) = 1 UDP_Name(SelvID) = FName$ UDP_ON(0) = 1 UDP_Name$(0) = ReadString(UDP_Stream) UDP_IP(0) = IIP UDP_PORT(0) = UDPMsgPort(UDP_Stream) UDP_TimeOut(0) = MilliSecs() + UDP_TimeOutMS For i = 1 To UDP_Playeranzahl UDP_On(i) = ReadByte(UDP_Stream) If UDP_On(i) = 1 UDP_NAme(i) = ReadString(UDP_Stream) UDP_TimeOut(i) = MilliSecs() + UDP_TimeOutMS EndIf Next Return 1 Case UDP_NOPL_MSG Return 2 End Select EndIf If IWaitMs <= MilliSecs() Return 0 Forever End Function Function UDP_Update() UDP_SendMsg = 0 If UDP_SendMS <= MilliSecs() UDP_SendMsg = 1 UDP_SendMS = MilliSecs() + UDP_MsgTime EndIf For i = 0 To UDP_Playeranzahl UDP_Msg(i) = "" Next TmpRecv = RecvUDPMsg(UDP_Stream) If TmpRecv tmpRecv2 = tmpRecv While tmpRecv = tmpRecv2 UDP_GetMsgType = ReadByte(UDP_Stream) Select UDP_GetMsgType Case UDP_NORM_MSG,UDP_CHAT_MSG While Not Eof(UDP_Stream) UDP_GetMsgID = ReadInt(UDP_Stream) UDP_RecvString = ReadString(UDP_Stream) UDP_Msg(UDP_GetMsgID) = UDP_RecvString UDP_TimeOut(UDP_GetMsgID) = MilliSecs() + UDP_TimeOutMS UDP_Ping(UDP_GetMsgID,1) = MilliSecs() - UDP_Ping(UDP_GetMsgID,0) Wend Case UDP_NEWP_MSG If UDP_Server = 1 TmpID = 0 For i = 1 To UDP_Playeranzahl If UDP_On(i) = 0 TmpID = i : Exit Next If TmpID = 0 TmpPort = UDPMsgPort(UDP_Stream) TmpIP = UDPMsgIP(UDP_Stream) WriteByte(UDP_Stream,UDP_NOPL_MSG) SendUDPMsg(UDP_Stream,TmpIP,TmpPort) Else UDP_On(TmpID) = 1 UDP_Port(TmpID) = UDPMsgPort(UDP_Stream) UDP_IP(TmpID) = UDPMsgIP(UDP_Stream) UDP_Name(TmpID) = ReadString(UDP_Stream) WriteByte(UDP_Stream,UDP_NEWP_MSG) WriteInt(UDP_Stream,TmpID) WriteString(UDP_Stream,UDP_Name(0)) For i = 1 To UDP_Playeranzahl WriteByte(UDP_Stream,UDP_On(i)) If UDP_On(i) = 1 WriteString(UDP_Stream,UDP_Name(i)) EndIf Next SendUDPMsg(UDP_Stream,UDP_IP(TmpID),UDP_Port(TmpID)) For i = 1 To UDP_Playeranzahl If i <> TmpID And UDP_ON(i) = 1 WriteByte(UDP_Stream,UDP_NEWP_MSG) WriteInt(UDP_Stream,TmpID) WriteString(UDP_Stream,UDP_Name(i)) SendUDPMsg(UDP_Stream,UDP_IP(i),UDP_Port(i)) EndIf Next EndIf UDP_TimeOut(TmpID) = MilliSecs() + UDP_TimeOutMS Else TmpID = ReadInt(UDP_Stream) UDP_On(TmpID) = 1 UDP_Name(TmpID) = ReadString(UDP_Stream) UDP_TimeOut(TmpID) = MilliSecs() + UDP_TimeOutMS EndIf Case UDP_GETS_MSG TmpIP = UDPMsgIP(UDP_Stream) TmpPort = UDPMsgPort(UDP_Stream) ICount = 0 For i = 1 To UDP_Playeranzahl If UDP_On(i) = 1 ICount = ICount + 1 Next WriteString(UDP_Stream,UDP_ServerName$) WriteInt(UDP_Stream,ICount) WriteInt(UDP_Stream,UDP_Playeranzahl) SendUDPMsg(UDP_Stream,TmpIP,TmpPort) Case UDP_ENDG_MSG If UDP_Server = 1 TmpID = ReadInt(UDP_Stream) UDP_On(TmpID) = 0 UDP_Error = "2:"+TmpID For i = 1 To UDP_Playeranzahl If i <> TmpID And UDP_ON(i) = 1 WriteByte(UDP_Stream,UDP_ENDG_MSG) WriteInt(UDP_Stream,TmpID) SendUDPMsg(UDP_Stream,UDP_IP(i),UDP_Port(i)) EndIf Next Else TmpID = ReadInt(UDP_Stream) UDP_On(TmpID) = 0 If TmpID = 0 UDP_Error = "1" Else UDP_Error = "2:"+TmpID EndIf End Select tmpRecv2 = RecvUDPMsg(UDP_Stream) Wend EndIf For i = 0 To UDP_Playeranzahl If i <> UDP_SelvID If UDP_On(i) = 1 If UDP_TimeOut(i) <= MilliSecs() UDP_On(i) = 0 If i = 0 UDP_Error = "1" If i > 0 UDP_Error = "2:"+i EndIf EndIf EndIf Next End Function Function UDP_Send(FId,FLine$,FFrom=-1,FChat=0) If FFrom = -1 FFrom = UDP_SelvID Local FType If FChat = 0 FType = UDP_NORM_MSG ElseIf FChat = 1 FType = UDP_CHAT_MSG EndIf If UDP_SendMsg WriteByte(UDP_Stream,FType) WriteInt(UDP_Stream,FFrom) WriteString(UDP_Stream,FLine$) SendUDPMsg(UDP_Stream,UDP_IP(Fid),UDP_Port(Fid)) UDP_Ping(FId,0) = MilliSecs() EndIf End Function Function UDP_Recv$(FID=-1) If FID = -1 If UDP_GetMsgType <> UDP_NEWP_MSG Return UDP_RecvString$ EndIf ElseIf FID => 0 If UDP_Msg(FID) <> "" Return UDP_Msg(FID) EndIf Return "" End Function Function UDP_End() If UDP_Server = 0 WriteByte(UDP_Stream,UDP_ENDG_MSG) WriteInt(UDP_Stream,UDP_SelvID) SendUDPMsg(UDP_Stream,UDP_IP(0),UDP_PORT(0)) Else For i = 1 To UDP_Playeranzahl WriteByte(UDP_Stream,UDP_ENDG_MSG) WriteInt(UDP_Stream,0) SendUDPMsg(UDP_Stream,UDP_IP(i),UDP_Port(i)) Next EndIf Delay 250 CloseUDPStream(UDP_Stream) End Function Function UDP_CountServers(FResort=100,FWait=5000,FServerPort=0) FResort = FResort - 1 Dim UDP_S_ON(FResort),UDP_S_Name$(FResort),UDP_S_IP(FResort),UDP_S_Port(FResort),UDP_S_Spieler(FResort,1) Local UDP_TmpStream = CreateUDPStream() Local BIP = UDP_IntIp(UDP_BroadcastIP()) Local ICount = 0 WriteByte(UDP_TmpStream,UDP_GETS_MSG) SendUDPMsg(UDP_TmpStream,BIP,FServerPort) Delay 100 Local IWait = MilliSecs() + FWait Repeat If RecvUDPMsg(UDP_TmpStream) TmpID = -1 For i = 0 To FResort If UDP_S_ON(i) = 0 TmpID = i : Exit Next If TmpID = -1 Exit UDP_S_ON(TmpID) = 1 UDP_S_Name$(TmpID) = ReadString(UDP_TmpStream) UDP_S_Spieler(TmpID,0) = ReadInt(UDP_TmpStream) UDP_S_Spieler(TmpID,1) = ReadInt(UDP_TmpStream) UDP_S_IP(TmpID) = UDPMsgIP(UDP_TmpStream) UDP_S_Port(TmpID) = UDPMsgPort(UDP_TmpStream) ICount = ICount + 1 EndIf Until IWait <= MilliSecs() UDP_S_Anzahl = ICount CloseUDPStream(UDP_TmpStream) Return ICount End Function Function UDP_GetServerInfo$(FIndex) FIndex = FIndex -1 If FIndex > UDP_S_Anzahl Return "" If FIndex < 0 Return "" Local IStr$ = UDP_S_Name(FIndex) + " | " IStr = IStr + DottedIP(UDP_S_IP(FIndex))+":"+UDP_S_Port(FIndex)+" | " IStr = IStr + UDP_S_Spieler(FIndex,0)+"/"+UDP_S_Spieler(FIndex,1) Return IStr End Function Function UDP_GetPlayerStat(FIndex) If UDP_ON(FIndex) = 1 Return 1 Return 0 End Function Function UDP_GetPlayerName$(FIndex) If UDP_ON(FIndex) = 1 Return UDP_Name(FIndex) Return 0 End Function Function UDP_GetPlayerIP(FIndex) If UDP_ON(FIndex) = 1 Return UDP_IP(FIndex) Return 0 End Function Function UDP_GetPlayerPing(FIndex) If UDP_ON(FIndex) = 1 Return UDP_Ping(FIndex,1) End Function Function UDP_IntIP(IP$) If Instr(IP$,".") <> 0 a1=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,".")) If Instr(IP$,".") <> 0 a2=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,".")) If Instr(IP$,".") <> 0 a3=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,".")) a4=Int(IP$) Return (a1 Shl 24) + (a2 Shl 16) + (a3 Shl 8 ) +a4 End Function Function UDP_BroadcastIP$() CountHostIPs("") Local IP$ = DottedIP(HostIP(1)) Local Subnetmask$ = "255.255.255.0" Local IPDigits[3], SubnetDigits[3] Local pos, i For i = 0 To 3 pos = Instr( IP$, "." ) If pos > 0 IPDigits[i] = Left( IP$, pos -1 ) IP$ = Mid( IP$, pos +1 ) Else IPDigits[i] = IP$ EndIf Next For i = 0 To 3 pos = Instr( Subnetmask$, "." ) If pos > 0 SubnetDigits[i] = Left( Subnetmask$, pos -1 ) Xor $FF Subnetmask$ = Mid( Subnetmask$, pos +1 ) Else SubnetDigits[i] = Subnetmask$ Xor $FF EndIf Next For i = 0 To 3 IPDigits[i] = IPDigits[i] Or SubnetDigits[i] Next Return IPDigits[0] +"." +IPDigits[1] +"." +IPDigits[2] +"." +IPDigits[3] End Function Und hier ein kleines Beispiel : Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() Include "UDPLib.bb" Global player = 5 UDP_Init(player,25,5000) Dim MX(player),MY(Player) HOST = Input("(1) Host or (2) Join ? ") If HOST = 1 Name$ = "ToeB";Input("Name : ") SName$ = "LocalTestingServer";Input("Server Name : ") UDP_HostGame(Name,SName,8000) AppTitle "Host" Else count = UDP_CountServers(5,500,8000) Print "Server gefunden : "+count For i = 1 To count Print UDP_GetServerInfo(i) Next Name$ = "Client" IP$ = DottedIP(UDP_S_IP(0)) Port = 0 Print "Connecting to IP : "+IP TmpMsg = UDP_JoinGame(IP,Name,0,8000,1000) If TmpMsg = 0 Or TmpMsg = 2 Print "Error : "+TmpMsg+" !":Delay 2000:End AppTitle "Client" EndIf Repeat FPS_C = FPS_C + 1 If FPS_Ms <= MilliSecs() FPS = FPS_C : FPS_C = 0 : FPS_Ms = MilliSecs()+1000 UDP_Update() MX(UDP_SelvID) = MouseX() MY(UDP_SelvID) = MouseY() If UDP_Server = 1 For i = 1 To player If UDP_GetPlayerStat(i) = 1 For j = 0 To player If i <> j If UDP_GetPlayerStat(j) = 1 UDP_Send(i,MX(j)+","+MY(j),j) EndIf EndIf Next EndIf Next Else UDP_Send(0,MX(UDP_SelvID)+","+MY(UDP_SelvID)) EndIf For i = 0 To player LocalString$ = UDP_Recv(i) If LocalString$ <> "" MX(i) = Int(Left(LocalString$,Instr(LocalString$,",")-1)) MY(i) = Int(Mid(LocalString$,Instr(LocalString$,",")+1,Len(LocalString$))) EndIf Next Text 0,0,"fps:"+FPS For i = 0 To player If UDP_GetPlayerStat(i) = 1 Text 0,13+i*13,i+".: "+UDP_GetPlayerPing(i);i+".: "+UDP_GetPlayerName(i)+" | "+DottedIP(UDP_GetPlayerIP(i))+" | "+MX(i)+","+MY(i) Text MX(i),MY(i)-13,UDP_GetPlayerName(i),1,1 Oval MX(i)-5,MY(i)-5,10,10,0 EndIf Next Select Left(UDP_Error,1) Case "1" Cls Flip Print "Der server hat das spiel verlassen" Delay 2000 End Case "2" TmpID = Int(Mid(UDP_Error,Instr(UDP_Error,":")+1,Len(UDP_Error))) DebugLog "Spieler "+TmpID+" hat das spiel veralssen !" UDP_Error = "" End Select Flip Cls Until KeyHit(1) UDP_End() End Und hier die DECLS : Code: [AUSKLAPPEN] .lib " "
UDP_Init%(PlayerAnzahl%, SendeMS%, TimeOutMS%) UDP_HostGame%(Name$, ServerName$, Port%) UDP_JoinGame%(ServerIP$, Name$, Port%, ServerPort%, Wait%) UDP_Update%() UDP_Send%(SendID%, SendMsg$, FromID%, SendMsgType%) UDP_Recv$(FromID) UDP_CountServers%(MaximalServer%, WaitMS%, ServerPort%) UDP_GetServerInfo$(Index%) UDP_GetPlayerStat%(Index%) UDP_GetPlayerName$(Index%) UDP_GetPlayerIP%(Index%) UDP_GetPlayerPing%(Index%) UDP_IntIP%(IPString$) UDP_BroadcastIP$() UDP_End() UDP_StreamPort%() UDP_ServerName$() UDP_Playeranzahl%() UDP_SelvID%() UDP_GetMsgID%() UDP_GetMsgType%() UDP_Server%() UDP_RecvString$() UDP_Error$() Viel spaß damit ! Falls jemand sich doch ünberwinden sollte diese Lib zu nutzen, wäre ich dankbar auch in dem spiel/programm erwähnt zu werden ![]() mfg ToeB P.S: Fehler bitte bei mir melden ! |
||
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 Sa, Jan 24, 2009 14:43, insgesamt einmal bearbeitet
![]() |
ChriseBetreff: Re: UDP Netzwerk Lib |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab zwar jetzt keine Zeit das auszuprobieren, aber eins kann ich garantieren:
das werde ich! Sowas finde ich mal nützlich ![]() Eine Frage hätte ich da aber gleich und zwar, Bei mir war es, als ich mit Netzwerkspielen rumprobiert habe, dass irgendwann der Ping zu hoch gegangen ist obwohl die Verbindung noch einwandfrei gewesen sein müsste, bzw. waren die Datenübertragungen manchmal zu stark zeitversetzt. Ist das bei deinem Code auch so, oder nicht? Danke^^ |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Find es ein wenig unpraktisch, dass du alles mit Dims machst... vor allem die Sache mit dem Server suchen und man soll angeben wieviel Server gefunden werden sollen. Natürlich will man alle haben was sonst?
Ansonsten gibts aber nix zu meckern, hab selbst mal so ne Lib angefangen aber dann mittendrin aufgehört weil mir iwie der Sinn des Ganzen entgangen is. Meine Lib war nämlich kein eigenes System sondern nur eine Art wrappen der BB-Befehle mit Sicherheitsabfragen ^^ Trotzdem: Sowas is dann eine sehr gute Referenz für sich selbst. mfG, Christoph PS: "SelvID" ist nicht ganz richtig, es heißt "SelfID". |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja man könnte es auch mit Types machen, aber wie will man dann die Variablen (X/Y/ZPos etc. ) dann damit kombinieren ? Da braüchte man dann eine zeite Type-Instance und die muss man dann so einrichten das die IDs gleichsind, dann muss man ständig suchen welcher TYpe jetzt die iD x hat usw... Hat schon einen sinn das ich mich für arrays endschieden habe ![]() Und das mit dem Serversuchen hab ich nur mit arrays gemacht, damit der Nutzer der Lib einfacher auf die Serverdaten zugreifen kann anhand der Indexnummer... Sonst müsste wieder endlos gesucht werden bis man das gefunden hat wonach man sucht =) Aber trotzdem danke für das gute feedback ![]() 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! |
![]() |
juse4pro |
![]() Antworten mit Zitat ![]() |
---|---|---|
nicht schlecht, erinnert mich stark an DirectPlay nur mit UDP allein ![]() werde mal gucken ob sich was ergibt ![]() |
||
Portfolio |LinkedIn |XING |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group