Задать вопрос
  • Паттерн "Фабричный метод": как получить конкретный продукт из конкретной фабрики?

    ragnar_ok , ознакомься с вопросом и его решением.
    У тебя точно такая же путаница в голове сложилась, как и у автора того вопроса.
    И вот еще один вопрос на ту же тему, для большей конкретики.
  • Что означают просто { тут блок кода } в с++?

    @MarkusD Куратор тега C++
    IliaNeverov, на будущее. Прояви внимательность. Я попросил у тебя код вокруг участка, а не внутри него.
    Текущие решения все верно объясняют.
  • Что означают просто { тут блок кода } в с++?

    @MarkusD Куратор тега C++
    IliaNeverov , все зависит от контекста окружающего кода.
    Тебе надо показать код вокруг интересующего тебя участка.
  • Почему код неработает?

    @MarkusD Куратор тега C++
    galaxy , ответ, конечно, в регламент работы сервиса не вписывается сразу по множеству пунктов, но проблему, бесспорно, объясняет. :)
  • Как на физическом уровне происходит прошивка нового выращенного процессора или любого другого микроэлектронного устройства?

    AnnPartovi
    Мозг человека имеет с рождения способность распознать цвета, звуки, образы, лица и кучу-кучу другой информации

    Нет. Не имеет он такой способности с рождения. Бинокулярность зрения к ребенку приходит только с практикой использования глазных мышц в первый месяц жизни. Позже приходит и фокусировка на объектах. Еще позже - способность распознавать образы. Сложные объекты, вроде лиц людей, дети распознавать способны только в конце первого года жизни. Некоторые дети - итого позже, что может стать причиной ложного диагноза нарушения зрения.
    Тебе стоит почитать о развитии детского организма в первые годы его жизни.
    Все что есть у человеческого мозга от рождения - это высокий уровень нейропластичности.
  • Как привязать текстуру к определенному VAO?

    @MarkusD Куратор тега C++
    IliaNeverov, если описывать словами, то в идеале тебе потребуется N текстур с абсолютно идентичной топологией. Далее тебе потребуется геометрия, на которую абсолютно любая из N текстур будет накладываться абсолютно идентично с остальными.
    Ты получаешь пул из N текстур и персистентную геометрию.
    Далее тебе потребуется N буферов констант, в каждом из которых будет просто индекс слота текстуры.
    Твой шейдер вершин должен принимать геометрию и дописывать в нее индекс из текстуры подключенного константного буфера. А растровый шейдер просто должен семплировать текстуру из слота с требуемым индексом.
    Все. Это будет твоим простым решением.
  • Как привязать текстуру к определенному VAO?

    @MarkusD Куратор тега C++
    IliaNeverov , привязать текстуру к VAO невозможно. Для конвейера топология твоей геометрии, наличие на ней материалов и связанные с этим всем шейдеры являются всего лишь конструкционными элементами. Это тебе самому, в своем коде, своими логическими конструкциями необходимо задать требуемые для тебя связи между текстурами, шейдерами, вершинами и индексами со всем прочим.
    Текстурные блоки - это одно. Текстурные слоты - это другое. Текстурные блоки, или блоки растеризации, разведены непосредственно на кристалле GPU и отвечают за процессинг растеризации.
    Текстурные слоты шейдерной программы позволяют для одной геометрии задать несколько (до 16ти для тебя) текстур. При этом, действительно, можно добиться результата, когда геометрия будет одна и отображаться на ней будет только одна текстура (из 16ти), но при каждой отрисовке отображаться будет другая текстура.
    Все зависит от того, какой шейдер ты поставишь для обработки твоей геометрии.
  • Какая ошибка в коде?

    @MarkusD Куратор тега C++
    mercy_smile , а вопрос у тебя в чем?
  • Какой тип данных использовать?

    @MarkusD Куратор тега C++
    Mag1str, куда уж детальней? Ты ведь написал уже код сортировки по первому символу. Тебе надо чтобы когда первые символы одинаковы, сортировка была по третьему символу. Вот и все детали. Если этот код твой, то ты знаешь как это сделать.
  • Как передать одномерный массив из одной функции в другую?

    @MarkusD Куратор тега C++
    whatislov , дублирование вопросов запрещено П4.1 регламента работы сервиса.
    Для получения ответа тебе следует продолжить обсуждение в оригинальном вопросе.
  • Как передать одномерный массив из функции его формирования в функцию его вывода?

    @MarkusD Куратор тега C++
    whatislov , блочность кода в твоих примерах страдает катастрофически. Код нечитаем. Тебе стоит сделать исправления своего кода чтобы его можно было читать.

    int func (int **mas, int n)
    Почему тип результата функции у тебя именно такой? Как ты можешь обосновать необходимость именно такого типа результата?

    return masb[i];
    Почему результат возвращается именно таким выражением? Тут у тебя Buffer Overrun [?] присутствует.
    Как ты можешь оправдать необходимость именно такого выражения для формирования результата функции?

    Сейчас вызов func приводит к утечке памяти. Как ты можешь это исправить?
  • Как исправить ошибку конструктора класса c++?

    @MarkusD Куратор тега C++
    Данил Васькевич , приведенный код не содержит конструктора копирования [?]. У тебя в коде приведен разрушающий конструктор, использование которого крайне опасно для всего остального кода.
    Тебе требуется переписать разрушающий конструктор в конструктор копирования.
  • Размер MTU - суммирование пакетов возможно?

    Василий Смирнов, все вот эти предположения дают понять что ты совсем не владеешь информацией о принципах работы компьютерных сетей и сетей телекоммуникаций. Если тебе это интересно, тебе стоит хоть немного изучить общие основы. Например.

    я же не про буферизацию на моем компе, я про буферизацию на маршруте.

    Буферизации на маршруте не существует. IP пакет посылается по некоторому маршруту, на котором он может потеряться по пути или прийти с искажениями. В этом случае засчитывается потеря пакета. TCP позволяет приемнику уведомить источник пакета о потере чтобы тот провел повторную отсылку. UDP потере не уведомляет вообще никак и никого. Датаграмма потерялась да и бог с ней.
    Ты только представь себе это. Тут у тебя 300МБит/сек канал, а дальше каналы идут шириной уже в гигабиты и терабиты. И все вот это буферизировать на каждом узле? Лично у меня такое даже в фантазию не укладывается.
    Кисель по вечерам - это издержки загрузки каналов, в результате чего твой маршрут строится далеко не оптимальным образом.

    а значение MTU не входит влияет на условия?

    Если у тебя нет доверия к моим словам, то лучше будет обратиться к документам по маршрутизации. Например.

    сколько примерно на каждом игровом сервере может одновременно крутится матчей и есть ли влияние этого на отзывчивость игры, или есть какие либо ограничения?

    Это закрытая информация. Читай что этих данных ни у кого нет и разглашены они быть не могут.
    На отзывчивость игры это никак не влияет потому что сервера всегда строго балансируются и рассчитываются так, чтобы ни один игрок не чувствовал проблем с производительностью.
    Такие вещи пользователей волновать не должны.
  • Размер MTU - суммирование пакетов возможно?

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

    Близы - не дураки. Были "не дураками" когда делали Overwatch. Сейчас уже похуже. Протокол OW я неплохо знаю, там все очень качественно и MTU маршрута там определяется именно через PMTUD. Статистика из Wireshark у тебя верная. Игра крайне редко подходит к порогу MTU для UDP.

    Все это длилось недели две гдето, пока меня не осенило...

    Выводы неверные. При IP MTU в 700Б для UDP максимальный размер пакета будет еще меньше. Сетевой протокол OW делит датаграмму на два сегмента, в одном сегменте реализуется канал скоростной доставки данных, а в другом - канал достоверной доставки данных. Голосовой чат относится к потоку со скоростной доставкой данных с низким приоритетом. Высокоприоритетными являются потоки репликации мира. Главным же в пакете является канал достоверной доставки данных. Вот и все.
    Ты просто зарезал себе ширину пропускания данных для скоростной доставки и голосовой чат просто перестал помещаться. Это не ошибка, а мера оптимизации протокола, чтобы обеспечить тебе сравнимый игровой опыт в твоих условиях.

    Я думаю еще должен влиять bufferbloat и кстати возможно размер пакета както влияет на буфферизацию...

    Ширина твоего сетевого канала составляет 300МБит/сек, т.е. где-то около 39321600Б/сек. Качественный MTU имеет размер 1472Б. За секунду твой канал переварит 26713 таких пакета без намека на буферизацию. Игре буквально незачем слать столько данных.
    Поставишь ты MTU 4-6КБ, ничего не изменится. Разница с шириной твоего канала составляет порядки. Но игра, опять же, не будет пользоваться твоими локальными настройками, она будет руководствоваться настройками сетевого маршрута. И, опять же, не забывай про шейпинг и фрагментацию. Это - то, что уготовано твоим жирным пакетам на маршруте. Шейпинг приведет к потере данных. Фрагментация приведет к снижению скорости доставки или потере датаграммы.

    Для игр типа OW буферизация является критической проблемой, поэтому на канале связи игры она всегда отключена. Пакеты всегда отправляются в сеть как только они переданы в сетевой интерфейс и читаются как только они приходят из сети. Именно это ты и видишь в статистике Wireshark.

    не должен играть... так точнее :)

    Нет. Точнее - это именно "абсолютно никакой роли в этом месте не играет". Свой локальный MTU можно менять только для соответствия параметрам локальной сети, на всех узлах которой он может уже быть расширенным. Для интернета тебе лучше подстроить MTU под значение твоего провайдера.
    Маршрут никогда не выбирается исходя из MTU. Маршрут всегда выбирается исходя из лучших условий доставки.
  • Как хранить слоты инвентаря в базе данных (MySQL)?

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

    На счет ответа на твой вопрос я подумаю. Если коротко, то тебе потребуется две таблицы. В первой нужно расположить общие характеристики инвентаря персонажа. Во второй - расположить слоты инвентаря. Связь ячеек с инвентарем идет через идентификатор инвентаря в записи ячейки инвентаря. Идентификатор инвентаря должен быть записан в запись персонажа в таблице персонажей.
    Детали и просто больше информации ты можешь найти тут. Я когда-то давно занимался этим проектом и, собственно, там реализована почти описанная мной схема. Я не советую брать прямо оттуда, т.к. используемый там подход лишен гибкости управления инвентарем на уровне БД.
  • Размер MTU - суммирование пакетов возможно?

    Василий Смирнов, ты можешь со мной не соглашаться. Выбор, все-таки, за тобой. Я говорю со стороны своего опыта, как разработчик онлайн проектов и ММО проектов в частности.

    Качественный MTU в 1472Б ты посчитал правильно. Именно таким на маршрутах средний MTU и является. Выше этого значения MTU для себя ставить неразумно. С одной стороны это неразумно потому что игры далеко не дураки пишут. Для нас при работе с UDP протоколом очень важно определить MTU маршрута пользователя чтобы пакеты всегда шли атомарными и их доставка терпела как можно меньше накладных расходов. Мы самостоятельно определяем MTU для UDP и принципиально не шлем датаграммы больше этого размера. Поэтому твои пляски с локальными настройками для игры ничего не значат.
    С другой стороны для твоего большого MTU на маршруте уготовано два сюрприза: Traffic Shaping [?] и IP Fragmentation [?]. Но об этом я, пожалуй, лучше полноценно напишу в ответе.
    Третьим является то, что обозначенную тобой "отзывчивость" ты наблюдаешь на канале от сервера к тебе и твой MTU абсолютно никакой роли в этом месте не играет.
  • Как хранить слоты инвентаря в базе данных (MySQL)?

    Лев Александров, давай пока эту ситуацию переложим в более привычное для тебя пространство.
    Ты идешь по улице и хочешь съесть пончик. Вот завела нелегкая пожелать вкусный пончик. Воображение уже нарисовало тебе картину желаемого пончика.
    Впереди три булочные. Ты заходишь в первую и говоришь: Дайте мне пончик. Как-то пытаешься описать желаемый результат словами. Тебе дают пончик согласно твоему описанию, ты его съедаешь, но он не соответствует твоим ожиданиям и ты уходишь из булочной ничего не заплатив. Ведь полученное не соответствует твоим ожиданиям.
    Ты идешь во вторую булочную, где тоже говоришь: Дайте мне пончик. И ты снова как-то пытаешься объяснить свое желание. И второй раз переданный тебе на пробу пончик никак не удовлетворяет твоим ожиданиям. И ты снова отказываешься внести плату за съеденный пончик.
    И в третьей булочной, куда ты тоже заходишь, все повторяется. Ты пытаешься описать, тебе дают то, что по их мнению соответствует твоему описанию, тебя это не удовлетворяет и ты отказываешься платить.

    Но все дело в том, что ты съел уже три пончика, но не заплатил за них. Люди вложили в них свои силы, а ты эти вложения не оценил должным образом. Конечно же пекарю будет абсолютно не важно, получит за свои старания он оплату или нет. Правда ведь?
    Такова история твоих прошлых вопросов на самом деле.

    Если для тебя так важно

    Такого никогда не говори. Старайся понимать ценность и цену даже самых простых коммуникаций.
  • Размер MTU - суммирование пакетов возможно?

    Василий Смирнов, а PMTUD [?] ты не производил?
    Если эта строчка - это единственное что ты делал, то для интернета она имеет лишь эффект плацебо. Буквально, тебе только казалось что отзывчивость была выше. Дергание персонажей является результатом методики Traffic shaping [?], первичными симптомами которого может являться такая мнимая отзывчивость.
    Ничего обещать не могу, но если найду время, то напишу более развернутые объяснения.
  • Как хранить слоты инвентаря в базе данных (MySQL)?

    Лев Александров, скажем так, у меня есть решение твоего вопроса, которое точно будет работать, является гибким и позволяет довольно эффективное управление базой в дальнейшем. Можешь заглянуть ко мне в профиль и посмотреть уровень проработки моих ответов.
    Но уже по твоему вопросу я вижу что ты уже сейчас многое делаешь не так. Твои действия и твое мышление сперва нужно исправить.

    От меня это потребует некоторых усилий. И если ты вот так просто возьмешь и отмахнешься от моего ответа, который будет 100% решением твоего вопроса, мои усилия будут потрачены впустую. Моё время и мои усилия.
    Думаю, теперь для тебя разница должна стать очевидна и понятна.
    Пока я не вижу перспектив излагать тебе полностью рабочее решение и тебе остается довольствоваться тем, что у тебя есть сейчас.