KotZhilkina #1721 19 ноября 2013 11000 + id же Публикация отключена Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1722 19 ноября 2013 а игрок знает свой айди? а как он его первый раз узнает? Поделиться сообщением Ссылка на сообщение
Двапой #1723 19 ноября 2013 по почте Мобильное приложение для продоты https://play.google....id=ru.prodota.m Поделиться сообщением Ссылка на сообщение
KotZhilkina #1724 19 ноября 2013 а игрок знает свой айди? а как он его первый раз узнает?а зачем его знать? чтобы узнать какие порты на файрволе открывать или что? Публикация отключена Поделиться сообщением Ссылка на сообщение
Обязательное_поле #1725 19 ноября 2013 ебать вы умныепока вы придумывали как бы сострить и обосрать мой код,мой код славно запускается, работает ресепшн все работает.я к этому 11000 + id две недели шел.другими способами было бы больше кода, а так элегантней всего, то есть теперь серверу необязательно отправлять новый порт после ресепшна (11000) а сразу начать слушать.кароче вот мой главный код теперь public void start() throws IOException, InterruptedException { System.out.println("Server started on " + receptionSocket.getLocalAddress().getHostName() + ":" + Integer.toString(receptionSocket.getLocalPort())); boolean done = false; Thread receptionThread = new Thread() { public void run() { try { while (true) { DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); receptionSocket.receive(receivePacket); registerPacket(receivePacket); Thread.sleep(10); } } catch (SocketException e) { e.printStackTrace(); receptionSocket.close(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { } } }; receptionThread.start(); while (!done) { long startTime = System.nanoTime(); prepareSnapshot(); broadcastSnapshot(); Thread.sleep(10); } receptionSocket.close(); broadcastSocket.close(); } логика парсера удачно переместилась в PLayer.javaкарое я зуценберг нахуй Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1726 19 ноября 2013 а игрок знает свой айди? а как он его первый раз узнает?а зачем его знать? чтобы узнать какие порты на файрволе открывать или что?а игрок разве не должен заранее знать к какому порту на сервере ему стучаться? Поделиться сообщением Ссылка на сообщение
Двапой #1727 19 ноября 2013 Чото блять охуительная игра. И ради этого стоило проебать столько лет в вузе? Мобильное приложение для продоты https://play.google....id=ru.prodota.m Поделиться сообщением Ссылка на сообщение
Обязательное_поле #1728 19 ноября 2013 ради такой охуительной игры стоило Поделиться сообщением Ссылка на сообщение
Двапой #1729 19 ноября 2013 2 фпс в секунду штоле? Мобильное приложение для продоты https://play.google....id=ru.prodota.m Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1730 19 ноября 2013 фпс в секундуframes per second2 двапой изобрёл ускорение фреймов Поделиться сообщением Ссылка на сообщение
Двапой #1731 19 ноября 2013 ну тупанул в этом итт треде Мобильное приложение для продоты https://play.google....id=ru.prodota.m Поделиться сообщением Ссылка на сообщение
DIMAN123456789 #1732 19 ноября 2013 Что ты будешь делать когда количество игроков перевалит за 54535? Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1733 19 ноября 2013 (изменено) думаю что-то типа if (id >= 54535) this.port = 10000 + (54534 - id); а потом ещё if (id > 65535) throw new SlotsFullCykaException(); Изменено 19 ноября 2013 пользователем TheDeadSkin Поделиться сообщением Ссылка на сообщение
Обязательное_поле #1734 19 ноября 2013 (изменено) 0 <= id < 1000 ожидается, что id уникален для каждого игрока.ресепшн тред читает id в начале пакета и добавляет в списко игроков.в то время в конструкторе игрока я запускаю еще один тред который слушает приватный порт для игрока (на сервере) и парсит данныев общем итого тредов:1. главный тред, инициализирует в начале ресепшн тред а дальше в бесконечном цикле транслирует состояние игры всем участникам2. ресепшн тред, слушает корневой порт (11000) который оговорен с клиентами и регистрирует новых участников (типа .add(new Player(..))3. тред на каждого игрока - слушает 11000 + id. спавнится прямо в конструкторе. но ничего не передает (очевидно) все летит, быстро, плавно, без лагов. то, что и требовалось с моей стороны.а другие ребята офк заняты самим геймплеем, графикой и т.дсрок сдачи: 1 семестр Изменено 19 ноября 2013 пользователем Обязательное_поле Поделиться сообщением Ссылка на сообщение
KotZhilkina #1735 19 ноября 2013 а игрок знает свой айди? а как он его первый раз узнает?а зачем его знать? чтобы узнать какие порты на файрволе открывать или что?а игрок разве не должен заранее знать к какому порту на сервере ему стучаться?нeт Публикация отключена Поделиться сообщением Ссылка на сообщение
AVTORKLIF #1736 19 ноября 2013 Бля, каждому игроку свой порт, такой рак Одумайся Поделиться сообщением Ссылка на сообщение
Обязательное_поле #1737 19 ноября 2013 (изменено) Бля, каждому игроку свой порт, такой рак Одумайся по другому никак бро :(это UDP,если буду юзать один порт, то код будет блочится пока не поступит любой пакет.пробовал, не сработалось. и вобщето это я сделал так, как во всех играх: есть главный порт подключения который перенапрявляет клиентов в динамически созадваемые сокеты, которые офк биндятся к 1 порту(получается мы изобрели свои сессии, прямо как в TCP ) привет тем кто говорил что 1 порт -> много сокетов Изменено 19 ноября 2013 пользователем Обязательное_поле Поделиться сообщением Ссылка на сообщение
KotZhilkina #1738 19 ноября 2013 Что ты будешь делать когда количество игроков перевалит за 54535? свой ммог запилит епты )) Публикация отключена Поделиться сообщением Ссылка на сообщение
Двапой #1739 19 ноября 2013 Любая адекватная либа для сокетов сама генерирует уникальный айди для клиента.При этом не трудно отличать принимающий сокет от всех остальных клиентов. В чем проблема, и зачем ты юзаешь столько портов мне не понятно. Мобильное приложение для продоты https://play.google....id=ru.prodota.m Поделиться сообщением Ссылка на сообщение
KotZhilkina #1740 19 ноября 2013 Бля, каждому игроку свой порт, такой рак Одумайся по другому никак бро :(это UDP,если буду юзать один порт, то код будет блочится пока не поступит любой пакет.пробовал, не сработалось. и вобщето это я сделал так, как во всех играх: есть главный порт подключения который спавнит треды (получается мы изобрели свои сессии, прямо как в TCP )эммм... почитай вот это - http://trac.bookofhook.com/bookofhook/trac.cgi/wiki/Quake3Networking Публикация отключена Поделиться сообщением Ссылка на сообщение