| | """ |
| | 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 |