""" | |
The DTScripts Universal Networking script | |
I made this as a base for communication for my upcoming racing game. I hope that you find this useful for your project as well. :) | |
The DTScripts Universal Networking script is free software: you can redistribute it and/or modify | |
it under the terms of the GNU General Public License as published by | |
the Free Software Foundation, either version 3 of the License, or | |
(at your option) any later version. | |
The DTScripts Universal Networking script is distributed in the hope that it will be useful, | |
but WITHOUT ANY WARRANTY; without even the implied warranty of | |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
GNU General Public License for more details. | |
You should have received a copy of the GNU General Public License | |
along with the DTScripts Universal Networking script. If not, see | |
""" | |
import bge | |
from bge import logic | |
from GameLogic import * | |
from socket import * | |
from pickle import * | |
def networkInitServer(): | |
cont = bge.logic.getCurrentController() | |
globaldict = bge.logic.globalDict | |
obj = cont.owner | |
host = ´127.0.0.1´ | |
ServerPort = 45000 | |
globaldict[´sServer´] = socket(AF_INET, SOCK_DGRAM) | |
globaldict[´sServer´].setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) | |
globaldict[´sServer´].bind((host,ServerPort)) | |
globaldict[´sServer´].setblocking(0) | |
globaldict[´connection_type´] = ´server´ | |
def networkInitClient(): | |
cont = bge.logic.getCurrentController() | |
obj = cont.owner | |
globaldict = bge.logic.globalDict | |
ServerIP = ´127.0.0.1´ | |
ServerPort = 45000 | |
Clientname = ´´ | |
ClientPort = 45001 | |
globaldict[´sClient´] = socket(AF_INET, SOCK_DGRAM) | |
globaldict[´sClient´].setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) | |
globaldict[´sClient´].bind((Clientname,ClientPort)) | |
globaldict[´host´] = (ServerIP,ServerPort) | |
globaldict[´sClient´].setblocking(0) | |
globaldict[´connection_type´] = ´client´ | |
def updateData(cont): | |
cont = bge.logic.getCurrentController() | |
obj = cont.owner | |
globaldict = bge.logic.globalDict | |
PosYou = [obj.position[0], obj.position[1], obj.position[2]] | |
scene = getCurrentScene() | |
if globaldict[´connection_type´] == "server": | |
Client = scene.objects[´OBClient´] | |
try: | |
#print(´stuff received?´) | |
Data, CLIP = globaldict[´sServer´].recvfrom(1024) | |
#print(Data) #data coming in confirmed | |
UPData = loads(Data) | |
PosClient = [UPData[0], UPData[1], UPData[2]] | |
Client.worldPosition = PosClient | |
Data = dumps((PosYou)) | |
#print("wtf: " + str(Data)) | |
globaldict[´sServer´].sendto(Data, CLIP) | |
#print(Data) | |
except: | |
pass | |
if globaldict[´connection_type´] == "client": | |
Server = scene.objects[´OBServer´] | |
Data = dumps((PosYou)) | |
globaldict[´sClient´].sendto(Data, globaldict[´host´]) | |
try: | |
Data1, SRIP = globaldict[´sClient´].recvfrom(1024) | |
UPData = loads(Data1) | |
#print(SRIP) | |
#print("woot" + str(UPData)) | |
PosServer = [UPData[0], UPData[1], UPData[2]] | |
Server.worldPosition = PosServer | |
except: | |
pass |