Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Server, Client. Client-Server Client numPlayers Id ServerMessage ClientMessage Server numPlayers ClientMessages[] ServerMessage Ha a kliens ugyanazt az.

Hasonló előadás


Az előadások a következő témára: "Server, Client. Client-Server Client numPlayers Id ServerMessage ClientMessage Server numPlayers ClientMessages[] ServerMessage Ha a kliens ugyanazt az."— Előadás másolata:

1 Server, Client

2 Client-Server Client numPlayers Id ServerMessage ClientMessage Server numPlayers ClientMessages[] ServerMessage Ha a kliens ugyanazt az információt küldi a servernek,mint a server a kliensnek a kliens üzenet része is lehet a server üzenetnek

3 Kliens inicializáció Szerverhez csatlakozás Játékosszám lekérdezése Játékosok karaktereinek inicializálása (servertől kapott info alapján) Fő hurok indítása

4 Szerver inicializáció Játékosszám bekérése Kliensek csatlakozásának bevárása Kezdeti játékos adatok elküldése a klienseknek (minden játékosról) Fő hurok indítása

5 Kliens fő hurok Beviteli eszköz beolvasás, kontroll (pl. move() ) Kliens üzenet elküldése ( player.data) Szerver üzenet feldolgozása (pl. finalizeMove()) minden játékos karakterére Kamera frissítés Megjegyzés: az eltelt időt lehet a szervertől is kérdezni, így teljes lesz a szinkronizáció

6 Szerver fő hurok Kliens üzenetek bevárása Parancsok felül bírálata (pl. ütközés detektálás), egyéb számítások (pl. lövés találat) Új adatok visszaküldése a klienseknek (minden játékosról)

7 Példa kódok… próbálkozzunk!

8 Kliens/Server adatok bekérése char* serverName = g_serverName; for(int a = 0; a < argc; a++) { if(strcmp(argv[a], "-s") == 0) serverName = argv[a + 1]; … } for(int a = 0; a < argc; a++) { if(strcmp(argv[a], "-clientcount") == 0) { sscanf(argv[a + 1], "%i", &GlobalParams::numHumanPlayers); if(GlobalParams::numHumanPlayers > 4) GlobalParams::numHumanPlayers = 4; }

9 CWinTcpSocket serverSocket; printf("Server started\n"); if(!serverSocket.Create()) printf("Unable to create socet\n"); if(!serverSocket.Bind(GlobalParams::port)) printf("Unable to bind port\n"); if(!serverSocket.Listen()) printf("Unable to listen\n"); CWinTcpSocket* clientSockets = new CWinTcpSocket[GlobalParams::numHumanPlayers]; for(int i = 0; i < GlobalParams::numHumanPlayers; i++) { while(!serverSocket.Accept(&clientSockets[i])); printf("Client%i connected\n", i); int res = clientSockets[i].Send((char*)&i, sizeof(int)); } //send start signal printf("Starting game...\n"); for(int i = 0; i < GlobalParams::numHumanPlayers; i++) clientSockets[i].Send(" ", 1); Server init

10 Server hurok for(int i = 0; i < GlobalParams::numHumanPlayers; i++) clientSockets[i].Recv(&SM.playerDatas[i], sizeof(PlayerData)); for(int i = 0; i < GlobalParams::numHumanPlayers; i++) clientSockets[i].Send(&SM, sizeof(ServerMessage));

11 CWinTcpSocket serverSocket; if(!serverSocket.Create()) printf("unable to create socet\n"); bool connectOK; connectOK = serverSocket.Connect(serverName, GlobalParams::port); if(connectOK) { printf("Connected to server\n"); serverSocket.Recv(&clientID, 4); printf("ClientID: %i\n", clientID); printf("Waiting server to start game...\n"); char blankMessage; serverSocket.Recv(&blankMessage, 1); printf("Game started...\n\n"); int recieved = serverSocket.Recv(&SM, sizeof(ServerMessage)); int messagesize = sizeof(ServerMessage); } Kliens init

12 while(!SM.playerDatas[clientID].shutDown) { serverSocket.Send(&SM.playerDatas[clientID], sizeof(PlayerData)); serverSocket.Recv(&SM, sizeof(ServerMessage)); } Kliens hurok


Letölteni ppt "Server, Client. Client-Server Client numPlayers Id ServerMessage ClientMessage Server numPlayers ClientMessages[] ServerMessage Ha a kliens ugyanazt az."

Hasonló előadás


Google Hirdetések