RakNet Wrapper 0.5 Released

Blitz3D Forums/Blitz3D Userlibs/RakNet Wrapper 0.5 Released

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

Well, let's begin:

Host:
; Initialize the server.
Global Server=RN_GetRakServerInterface()
ok=RN_ServerStart(Server,8,0,0,60069)


Join:
;Initialize the client
ip$ = "localhost" ; CHANGE THIS TO THE SERVER IP
Global Client=RN_GetRakClientInterface()
RN_ClientConnect(Client,ip$,60069,0,0,0)


UpdateClient:
;Receiving
	packet=RN_ClientReceive(Client)
	While (packet)
		msg$=RN_PacketGetData(packet)
		BitStreamIN=RN_BitStreamCreateFromPacket(packet)
		MessageID=RN_BitStreamReadUnsignedChar(BitStreamIN)

		;MSG TYPE
		Select MessageID
			Case ID_CONNECTION_REQUEST_ACCEPTED
				Print "I am accepted, i am number : " + RN_ClientGetPlayerIndex(Client)
		
			Case ID_REMOTE_NEW_INCOMING_CONNECTION
				Print "New Remote Incoming Connection:"	+ RN_PacketGetplayerIndex(packet)
				
			Case ID_DISCONNECTION_NOTIFICATION
				Print "We have been disconnected!"				

			Case ID_REMOTE_DISCONNECTION_NOTIFICATION
				Print "Remote Client Disconnected:" + RN_PacketGetplayerIndex(packet)

			Case ID_REMOTE_NEW_INCOMING_CONNECTION
				Print "New Client Connected"			

			Case ID_REMOTE_EXISTING_CONNECTION
				Print "A Client Was Already Connected : "  + RN_PacketGetplayerIndex(packet)
				
			Case ID_RECEIVED_STATIC_DATA
				Print "Server Static Data"
				
			Case ID_REMOTE_STATIC_DATA				
				Print "Remote Static Data: " + RN_PacketGetplayerIndex(packet) + " : " + RN_BitStreamGetData(RN_ClientGetStaticClientData(Client,RN_PacketGetplayerID(packet)))

			;User Defined
			Case ID_CHAT
				Print "Chat(" + RN_PacketGetplayerIndex(packet) + "): " + Mid(msg,2,Len(msg)-1)
		
			Default
				Print msg$
		End Select
		
		packet=RN_ClientDeallocatePacket(Client,Packet)
	packet=RN_ClientReceive(Client)

	Wend


ServerUpdate:
	;Receiving
	packet=RN_ServerReceive(Server)
	While (packet)
		msg$=RN_PacketGetData(packet)
		BitStreamIN=RN_BitStreamCreateFromPacket(packet)
		MessageID=RN_BitStreamReadUnsignedChar(BitStreamIN)

		;MSG TYPE
		Select MessageID
			Case ID_NEW_INCOMING_CONNECTION
				Print "New Incoming Connection"
				Print "Player Number: "+RN_PacketGetplayerIndex(packet)
				
			Case ID_DISCONNECTION_NOTIFICATION
				Print "Client Was Disconnected:"+RN_PacketGetplayerIndex(packet)

			Case ID_RECEIVED_STATIC_DATA
				Print "Static Data Client:"+RN_PacketGetplayerIndex(packet)+" : "+RN_BitStreamGetData(RN_ServerGetStaticClientData(Server,RN_PacketGetplayerID(packet)))
				
			Case ID_CONNECTION_LOST
				Print "Disconnected Player: "+RN_PacketGetplayerIndex(packet)

			Case ID_CHAT
				Print "Chat Message: "+Mid(msg,2,Len(msg)-1)
				;BroadCast Message to All except incoming player
				;RN_ServerSend1(Server,msg$,Len(msg$)+1,HIGH_PRIORITY,RELIABLE_ORDERED,0,RN_PacketGetplayerID(packet),1)

			Case ID_MOUSE_UPDATE ; User defined, mouse position.
				len1 = RN_BitStreamReadUnsignedChar(BitStreamIN)
				str1$ = RN_BitStreamRead(BitStreamIN,len1)
				len2 = RN_BitStreamReadUnsignedChar(BitStreamIN)
				str2$ = RN_BitStreamRead(BitStreamIN,len2)
				X=RN_BitStreamReadUnsignedShort(BitStreamIN)
				Y=RN_BitStreamReadUnsignedShort(BitStreamIN)
				Print str1$
				Print str2$
				Print x
				Print y
				Flip
				;Color 0,255,0
				;Rect X-5,Y-5,10,10,0
				
			Default
				Print "Unknown Message Type (Type = " + Asc(Mid(msg,1,1)) + ")"
		End Select
		
		;Free Packet
		packet=RN_ServerDeallocatePacket(Server,packet)	

		packet=RN_ServerReceive(Server)
	Wend


This is only a sample of what you should do. It uses BitStreams instead of Strings (much much better). And please note that only internal messages are broadcast by server automatically. User messages (50-255) must be broadcasted manually.

Post any question you have here.
Cheers.