Обязательное_поле #1761 19 ноября 2013 Перечисли конкретно, как это лучше реализовать?Или у тебя нет аргументов? ну и ахуеть как тебе помогут знания полученые в процессе написания этого кода - ты теперь умеешь раскидывать юзеров по портам и хардкодить айди юзера :pray: Не помогут в чем? В жизни? В карьере? Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1762 19 ноября 2013 для начала не хардкодить айди юзера, чтоб не надо было править ни исходник, ни даже конфиги для создания отдельного юзерачем-то вроде такогоесли б там айди отдавался клиенту хотя бы чем-то вроде отдельного соединения по 10001 порту (чисто для этой задачи), которое только айдишниками и занимается и генерирует их по прицнипу "привет 10001 порт, я новый пользователь", "10001: твой айди 17, удачной игры /close", "привет 10017 порт, я игрок №17" Поделиться сообщением Ссылка на сообщение
KotZhilkina #1763 19 ноября 2013 зачем пользователю программы знать порт, если этот порт указывается программой?да я не о пользователе как таковом, я о клиентской софтинеу него порт = 10к+айдиили ты считаешь что вшитый айди юзера порт это нечто хоть отдалённо нормальное? если б там айди отдавался клиенту хотя бы чем-то вроде отдельного соединения по 10001 порту (чисто для этой задачи), которое только айдишниками и занимается и генерирует их по прицнипу "привет 10001 порт, я новый пользователь", "10001: твой айди 17, удачной игры /close", "привет 10017 порт, я игрок №17" а вшить айди в код это :avtorklif: :avtorklif: :avtorklif: :avtorklif: нужно больше смайликов программа же так написана, что там есть отдельный порт для регистрации, который выдает айди клиентам Публикация отключена Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1764 19 ноября 2013 программа же так написана, что там есть отдельный порт для регистрации, который выдает айди клиентамя неправильно понял это предложение?а порт как я уже говорил оговорен заранее (захардкоден в клиенте) Поделиться сообщением Ссылка на сообщение
Обязательное_поле #1765 19 ноября 2013 (изменено) 1 Изменено 29 апреля 2014 пользователем Обязательное_поле Поделиться сообщением Ссылка на сообщение
KotZhilkina #1766 19 ноября 2013 ты наверное вот это не прочитал: и вобщето это я сделал так, как во всех играх: есть главный порт подключения который перенапрявляет клиентов в динамически созадваемые сокеты, которые офк биндятся к 1 порту(получается мы изобрели свои сессии, прямо как в TCP ) Публикация отключена Поделиться сообщением Ссылка на сообщение
Tinplz #1767 19 ноября 2013 У меня есть аргументы.Перечисляю:1) Не платят денег - не пиши код.2) Платят деньги - пиши код. Твоя ошибка уже в том, что ты начал это делать. Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1768 19 ноября 2013 Допустим, что я завтра сделаю окошечко в игровом клиенте где можно ввести свой idЭто что-то изменит? Да, тестировать станет легче.ты научишься делать функцию чисел фибоначчи по формуле, а не вшивая её в код, что уже прогресс в твоей ситуацииможет со временем и чему-то сложнее научишься Поделиться сообщением Ссылка на сообщение
Обязательное_поле #1769 19 ноября 2013 (изменено) 1 Изменено 29 апреля 2014 пользователем Обязательное_поле Поделиться сообщением Ссылка на сообщение
KotZhilkina #1770 19 ноября 2013 кот тут вообще причем ты же сам писал, что у тебя есть главный хардкодед порт0 <= id < 1000 ожидается, что id уникален для каждого игрока.ресепшн тред читает id в начале пакета и добавляет в списко игроков.в то время в конструкторе игрока я запускаю еще один тред который слушает приватный порт для игрока (на сервере) и парсит данныев общем итого тредов:1. главный тред, инициализирует в начале ресепшн тред а дальше в бесконечном цикле транслирует состояние игры всем участникам2. ресепшн тред, слушает корневой порт (11000) который оговорен с клиентами и регистрирует новых участников (типа .add(new Player(..))3. тред на каждого игрока - слушает 11000 + id. спавнится прямо в конструкторе. но ничего не передает (очевидно) все летит, быстро, плавно, без лагов. то, что и требовалось с моей стороны.а другие ребята офк заняты самим геймплеем, графикой и т.дсрок сдачи: 1 семестр Публикация отключена Поделиться сообщением Ссылка на сообщение
Обязательное_поле #1771 19 ноября 2013 ты наверное вот это не прочитал: и вобщето это я сделал так, как во всех играх: есть главный порт подключения который перенапрявляет клиентов в динамически созадваемые сокеты, которые офк биндятся к 1 порту(получается мы изобрели свои сессии, прямо как в TCP )тут я оговорился, я хотел сказать биндятся каждый к отдельному порту Поделиться сообщением Ссылка на сообщение
KotZhilkina #1772 19 ноября 2013 ты наверное вот это не прочитал: и вобщето это я сделал так, как во всех играх: есть главный порт подключения который перенапрявляет клиентов в динамически созадваемые сокеты, которые офк биндятся к 1 порту(получается мы изобрели свои сессии, прямо как в TCP )тут я оговорился, я хотел сказать биндятся каждый к отдельному портуда, я то тебя прекрасно понял: у тебя есть хардкодед порт 11000 на котором каждый игрок получает номер порта, к которому ему нужно подключаться а мертвойкоже это было непонятно Публикация отключена Поделиться сообщением Ссылка на сообщение
Обязательное_поле #1773 19 ноября 2013 кот тут вообще причем ты же сам писал, что у тебя есть главный хардкодед порт0 <= id < 1000 ожидается, что id уникален для каждого игрока.ресепшн тред читает id в начале пакета и добавляет в списко игроков.в то время в конструкторе игрока я запускаю еще один тред который слушает приватный порт для игрока (на сервере) и парсит данныев общем итого тредов:1. главный тред, инициализирует в начале ресепшн тред а дальше в бесконечном цикле транслирует состояние игры всем участникам2. ресепшн тред, слушает корневой порт (11000) который оговорен с клиентами и регистрирует новых участников (типа .add(new Player(..))3. тред на каждого игрока - слушает 11000 + id. спавнится прямо в конструкторе. но ничего не передает (очевидно) все летит, быстро, плавно, без лагов. то, что и требовалось с моей стороны.а другие ребята офк заняты самим геймплеем, графикой и т.дсрок сдачи: 1 семестрда, который аутентифицирует игрока, от которого пришел пакет по id который зашит в пакет.после авторизовывает игрока путем добавления его в главный список игроков, где для объекта игрока выделяется собственный порт который этот объект слушает. 11000 + id это просто костыль, который я придумал чтобы быстро тестить на своей машинея изначально запостил это как шутку Поделиться сообщением Ссылка на сообщение
justice_st #1774 19 ноября 2013 нихуя у вас с портов бамбануло Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1775 19 ноября 2013 че ты пристал со сфоим фибоначчибольше желчи, проецируй свою злобу в интернет, у тебя хорошо получается.какой ещё жёлчи/злостия хочу тебя на пусть истинный наставить (это если выражаться пафосно), в твоих же интересах бтв потому что практической пользы от реализации твоей задачи именно таким образом очень немного, разве не практическая польза есть основной задачей для такого проекта?смысл делать сервер на 2+ юзеров если ты просто расклонировал на 1к портов решение которое является нормальным только для соединения сервер <-> 1 клиент Поделиться сообщением Ссылка на сообщение
KotZhilkina #1776 19 ноября 2013 ну вообще некоторый здравый смысл в использовании большого количества портов есть: операционная система накапливает пакеты отправленные на один порт в очереди, а когда эта очередь переполняется, то следующие пакеты отклоняются. Публикация отключена Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1777 19 ноября 2013 у тебя есть хардкодед порт 11000 на котором каждый игрок получает номер порта, к которому ему нужно подключатьсянемного не такигрок присылает свой айди серверу и после этого тот начинает прослушивать нужный порт Поделиться сообщением Ссылка на сообщение
Обязательное_поле #1778 19 ноября 2013 (изменено) че ты пристал со сфоим фибоначчибольше желчи, проецируй свою злобу в интернет, у тебя хорошо получается.какой ещё жёлчи/злостия хочу тебя на пусть истинный наставить (это если выражаться пафосно), в твоих же интересах бтв потому что практической пользы от реализации твоей задачи именно таким образом очень немного, разве не практическая польза есть основной задачей для такого проекта?смысл делать сервер на 2+ юзеров если ты просто расклонировал на 1к портов решение которое является нормальным только для соединения сервер <-> 1 клиентЯ уже думал об этом. Можно все сузить до одного порта, и это меняется легко в коде. Надо скопипастить тред игрока и вставить в ресепшн тред. И в клиенте изменить порт получателя на тот же крневой. Вуаля, теперь мы не занимаем триллион портов на 1 машине. Изменено 19 ноября 2013 пользователем Обязательное_поле Поделиться сообщением Ссылка на сообщение
Tinplz #1779 19 ноября 2013 ну вообще некоторый здравый смысл в использовании большого количества портов есть: операционная система накапливает пакеты отправленные на один порт в очереди, а когда эта очередь переполняется, то следующие пакеты отклоняются.UDP же. Изначально дроп пакетов заложен в него. Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1780 19 ноября 2013 ну вообще некоторый здравый смысл в использовании большого количества портов есть: операционная система накапливает пакеты отправленные на один порт в очереди, а когда эта очередь переполняется, то следующие пакеты отклоняются.есть, это было описано в статье которую ты кидалесли у него объём данных такой, что один юзер занимает 50%+ буффера удп, то тогда в реализации 1порт=1юзер есть смысл в остальных случаях поток слушающий удп должен всего-лишь успевать разгребать поступаемые данные чтоб не переполнился буффер и складывать эти данные уже в памяти программы, а не один поток слушающий удп + обрабатывающий инфу Поделиться сообщением Ссылка на сообщение