Ряд вопросов

В этой теме 23 ответа, 5 участников, последнее обновление tyman tyman 1 год, 10 мес. назад.

Просмотр 9 сообщений - с 16 по 24 (из 24 всего)
  • Автор
    Сообщения
  • #3146
    +2
    RazorNd
    RazorNd
    Участник
    Сообщений:46

    Зарегистрирован:
    04.02.2016

    Репутация:38

    mypmyp, не посмотрел, что вы UDP сокеты используете. Тогда все еще проще, перейдите в не блокирующий режим udpSocket.setBlocking(false);

    #3147

    mypmyp
    Участник
    Сообщений:20

    Зарегистрирован:
    20.10.2015

    Репутация:6

    Да уж, 50 строк кода удалено и заменено на 1) Спасибо)

    #3148
    Heisenberg
    Heisenberg
    Участник
    Сообщений:323

    Зарегистрирован:
    01.04.2015

    Репутация:145

    Покажите хоть, что получилось и как это работает )

    #3150
    +2

    mypmyp
    Участник
    Сообщений:20

    Зарегистрирован:
    20.10.2015

    Репутация:6

    Ну вот смотри) Надеюсь тебе что нибудь да и поможет. КОД НЕ ДОРАБОТАН.

    КЛИЕНТ

     

    #3153
    tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

    Пинг штука страшная, видно как пакеты теряются на глазах.

    У меня сервер обрабатывал все данные, если ты нажал в лево, то на сервер отправлено букву с направлением, сервер ходил тем персонажем и отправлял положение всех персонажей обратно. Но дело было так:

    Когда подключался к серверу я, все работало как часы.

    Когда подключался второй игрок, то он отставал, мой персонаж бегал быстрее.

    Когда подключался третий, лагало словно из Европы в Китай.

    #3161

    mypmyp
    Участник
    Сообщений:20

    Зарегистрирован:
    20.10.2015

    Репутация:6

    Я думаю что если долго пыхтеть над какой либо проблемой то ты с ней справишься, или же следует полностью поменять архитектуру приема передачи данных.

    #3162
    RazorNd
    RazorNd
    Участник
    Сообщений:46

    Зарегистрирован:
    04.02.2016

    Репутация:38

    Пользуясь UDP не забывайте проверять пакеты на максимально возможный размер MaxDatagramSize

    #3167

    mypmyp
    Участник
    Сообщений:20

    Зарегистрирован:
    20.10.2015

    Репутация:6

    tyman, скажи а как ты сделал так: ( не знаю как правильно сформулировать)

    Вот допустим у нас 5 клиентов и у каждого отоброжается кружочек(игрок)  и 4 других кружочка(игрока)

    у каждого игрока есть координата X и Y и когда игрок передвигается то координаты передаются на сервер.

    каким образом сервер передает одному из клиентов координаты других 4 игроков. если переменные X и Y всего по одной

    Неужели нужно серверу создавать еще и x1 y1, x2 y2, и т.д ( а если их не 5 а 500) Как у тебя? И как вообще это осуществить? Может где описано?? Сама архитектура…Я рылся но не нашел

     

    #3177
    tyman
    tyman
    Участник
    Сообщений:23

    Зарегистрирован:
    04.03.2015

    Репутация:6

    Значит так. На сервере Был список с пользователями:
    struct user{
    String name;
    int x, y;
    user *next;
    };
    Когда кто то ходил, то на сервер приходил пакет: {
    int state; //Чего хочет клиент: 1-регистрация, 2-ход, 3-ожидание
    String name;//Имя
    char nap;//Направление W, S, A, D
    };

    Если регистрация то сервер проверял имя(на занятость), отправлял размер карты и саму карту;
    Если ход то проверял имя, двигал фигурку(проверяло на стены), отправлял данные назад;
    Если ожидание то отправлял данные;

    Данные которые сервер отправлял назад выглядели:
    Первый пакет содержал количество пользователей;
    А дальше отправлялись имена и координаторы;

    В клиенте всё это добро выставлялось на экран;
    Камера выставлялась на координатах того кто имел клиентское имя;

Просмотр 9 сообщений - с 16 по 24 (из 24 всего)

Для ответа в этой теме необходимо авторизоваться.