У меня возникла проблема: когда я запускал игру в качестве хоста, все игроки застыли на месте и не двигаются
Я отслеживал проблему, пока не добрался до этой функции.
этот цикл потока должен выполняться навсегда, но оно запускается только один или два раза, когда я запускаю приложение
Код: Выделить всё
void *client_loop(void *arg) {
int socket = *((int *) arg);
int16_t tab[BUF_MAX];
int length;
int id, bullets_in_array;
while (1) {
length = client_listen(socket, tab);
id = tab[0];
if (id == -1) {
receive_new_id(tab[1]);
}
SDL_Log("I'm called %i", id);
if (id >= 0) {
check_if_its_new_player(id);
players[id].position.x = tab[1];
players[id].position.y = tab[2];
players[id].kills = tab[3];
players[id].deaths = tab[4];
}
if (id == -2) {
bullets_in_array = (length - sizeof(int16_t)) / (sizeof(int16_t) * 2);
memcpy(bullets_client, tab + 1, sizeof(int16_t) * 2 * bullets_in_array);
bullets_number = bullets_in_array;
}
usleep(50);
}
}

это вызывает игра не обновляет позиции игроков.
Я думаю, что client_listen(socket, tab) может быть подозрительным.
Код: Выделить всё
int client_listen(int sock, int16_t *tab){
int length = recvfrom(sock, tab, sizeof(int16_t) * BUF_MAX, 0, NULL, 0);
return length;
}

тот же код работает на рабочем столе, поскольку вы можете видеть, что client_loop работает вечно на DESKTOP
[img]https://i .sstatic.net/yBX4H.png[/img]
.
Я использую в файле манифеста . < /p>
edit < /strong>
Этот код является частью этого проекта < /p>
client_loop < / code> находится в файле main.c в строке 84.
Однако игра по-прежнему зависает в режиме отладки.
Подробнее здесь: https://stackoverflow.com/questions/780 ... ebug-build