• Почему глухой звук в игре при включении микрофона?

    Потому что режим гарнитуры.
    Исправить нельзя - это особенности bluetooth.

    Хочешь нормального звука и беспровод - бери беспроводные наушники, которые подключаются через свой трансивер, а не через bt.
    Либо подключай микрофон отдельно
    Ответ написан
    Комментировать
  • Вычитаю одно округленное число из другого, в ответе выдается число с кучей знаков после запятой, как это исправить?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Добро пожаловать в реальный мир вычислений чисел с плавающей запятой с погрешностью! Если вам нужны точные вычисления - используйте тип decimal или аналогичный для вашего ЯП.
    https://habr.com/ru/articles/266023/
    https://learn.microsoft.com/ru-ru/office/troublesh...
    https://0.30000000000000004.com/
    Ответ написан
    2 комментария
  • Есть ли рускоязычная среда програмирования?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    я не думаю что вам будет понятнее такой код:
    класс ПростойКласс {
        приватно:
            свойство строка названиеПеременной
        публично конструктор (строка названиеПеременной) {
             контекст.названиеПеременной = названиеПеременной;
        }
        // ...
    }
    
    ПростойКласс[] массивКлассов = создать ПростойКласс[10];
    пока (беззнаковое целое итератор = 0; итератор < 10; итератор++) {
        массивКлассов[итератор] = создать ПростойКласс("строка передаваемая в конструктор);
    }


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

    Тут так же. Знание самого языка не поможет вам понять смысла конструкций типа for.
    Ответ написан
    3 комментария
  • Задание на учебную практику у программистов колледжа?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Обычный десктопный или веб калькулятор: от простой считалки до математического, инженерного или для программистов, как с простыми фичами, так и с более сложными: поддержка нескольких языков, тем и стилей, кроссплатформенности (win, mac, *nix, ios, android), истории вычислений, поддержка экзотических форм записи - стек с обратной польской записью, синхронизация и объединение между машинами (управление на телефоне/планшете/клавиатуре, экран - на мониторе ПК/планшете/другом телефоне), построение графиков 2D/3D и прочее. Разные платформы - dotNet, C++, Python, Web и т.п. Кому на что фантазии хватит - хоть до экселя встроенного. Главное - чтобы студентам было интересно. Можно даже на базе такого проекта диплом подготовить. Или, как вариант, взять все фичи, но разделить их на всех: сделать общий для всех проект - как для команды, что тоже будет очень полезным опытом. Можно даже взять реальный таск менеджер, в него завести все задачи проекта и провести всех студентов через реальный опыт работы в команде над общим проектом.
    Ответ написан
    2 комментария
  • Трансляция видеострима из единого игрового мира?

    saboteur_kiev
    @saboteur_kiev Куратор тега Разработка игр
    software engineer
    И возможно ли оттуда транслировать видеострим? смысл в том чтобы просчитать все на сервере и отдать клиенту видеострим.

    Предлагаешь, чтобы на сервере стояла графическая карточка для каждого юзера?
    Ну возьмем сервер,где играет 100-200 человек. Нужно 100-200 видеокарточек на сервере.
    Хочешь 1000? 1000 карточек? Тут тупо на электричестве сервер разорится.

    Далее. Каждый кадр нужно обработать, то есть одно дело, когда у тебя локально оно генерится и сразу в монитор. А тут нужно создать видеострим, а потом передать по инету.

    Главное чтобы интернет был норм

    Давай посчитаем как отдавать видеострим.
    Берем например ну хотя бы hd 1920x1080x4 (2 млн цветов). Получаем 8294400 байт один кадр ( 8 мегабайт). Ты же хочешь нормальный фпс, ну хотя бы 50 в секунду, 400 мегабайт в секунду. на одного юзера.

    Хочешь поговорить о крутом сжатии? Так вот, оно не работает на кадрах. Оно работает на стримах, когда можно проанализировать некоторое количество кадров и уже работать от них. Тогда надо решить вопрос сколько кадров мы будем удерживать для анализа и сжатия, перед тем как куда-то передавать. Игры типа контерстрайка, где 5-10 мс имеют значение сразу улетают в трубу. Сжатие может быть разным, в зависимости от того как резко меняется картинка, а неравномерность лагов хуже чем постоянный лаг. То есть надо решить еще и этот вопрос

    То есть сжимать стрим на уровне кадров, если мы не можем их полноценно анализировать.
    Нормальные современные кодеки умеют и в А-фреймы и Б-фреймы, то есть жмут в обе стороны. Плюс не ограничены во времени. А у нас и время поджимает, и генерация ограничена количеством кадров которые мы можем вместе использовать. В итоге сжатие будет не 90% как в современных видеокодеках, а хорошо если сожмет треть, и качество будет теряться. И трафик уменьшитсья ну до 50-100 мб/сек.
    Теперь подумаем что у клиента отличный инет. А у сервера будет 50-100 мб/сек на КАЖДОГО игрока? Это какой канал должен быть у сервера для поддержания 100-200 игроков? А 1000?

    В итоге твоя идея технически совершенно не рабочая.

    Облачный хостинг сталкивается с теми же проблемами - лаги, хромает качество видео, в результате играть в мультиплеер становится проблематично. Более-менее можно играть в синглплеер, где милисекунды не так критичны. Но тут нужно понимать что облачный гейминг это не 1000 игроков на одну серверную, а пару десятков тут, пару десятков там, спрос на него не слишком большой, поэтому и бизнесом этим мало кто занимается.
    Отдельный плюс облачного гейминга бывает в том, что игры могут быть уже оплачены, и можно поиграть во что-то что лень себе покупать.
    Ответ написан
    2 комментария
  • Возможно ли передача изменёного файла на торентах?

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

    Делают ли это чтобы передовать таким оброзом вирусы?

    Зачем так заморачиваться, если можно сразу раздавать вирусы?)
    Ответ написан
    1 комментарий
  • Почему программа не выдаёт ошибку, если поместить выражение в скобки?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Приоритеты операций.

    Без скобочек сначала выполняется <<. Фактически, у вас написано вот это: (std::cout<<a) == b;
    << - переопределенный оператор для std::cout, он выведет a на экран и вернет ссылку на std::cout, которую потом программа попытается сравнить с b и не сможет, потому что операция такого сравнения не определена.

    Если же поставить скобки, то сначала выполнится ==, результат ее работы - bool - уже потом будет через оператор << выведен в на экран.
    Ответ написан
    Комментировать
  • Что нужно знать для создания собственного движка?

    GavriKos
    @GavriKos Куратор тега Разработка игр
    Нужно очень хорошо знать и понимать принципы рендера изображений, работу с опенГЛ и вот это все. Т.е. как рисуется картинка, как на нее натягивается текстура, как все это масштабируется и поворачивается, что тут в этом всем делают шейдера и прочее прочее. Чем глубже эту тему знаете - тем круче графика у движка.

    Из математики обязательно: матрицы, тригонометрия, плани/стереометрия (декартовы координаты). Без этого вообще никак - это основа основ.

    Из ЯП стандартно: алгоритмы поиска, сортировки, структуры данных (особенно деревья), ну и навык проектирования и архитектуры больших систем
    Ответ написан
    1 комментарий
  • Как удалить приложение из Launchpad Mac OS X?

    meeshanya
    @meeshanya
    кодокот
    1 перетянуть ярлык в док
    2 вызвать меню ярлыка в доке и выбрать "показать в finder"
    3 из открывшегося окна перетянуть в корзину
    4 удалить ярлык из дока
    Ответ написан
    4 комментария
  • Как написать подсчет времени проведенного в игре для лаунчера?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Просто следишь, что такой-то процесс всё ещё запущен и находится в памяти.
    В Стиме сделано так, что эта инфа периодически отсылается на сервер, и там уже происходит подсчет времени.
    Ответ написан
    Комментировать
  • Я придумал новый гениальный способ оптимизации игр?

    Zoominger
    @Zoominger
    System Integrator
    Ура, вы изобрели динамическую подгрузку локаций.
    Предлагаю ещё обратить внимание на круглый такой объект, на который можно навесить ось и что-нибудь на ней возить. Не знаю, как называется, не изобрели ещё.
    Ответ написан
    Комментировать
  • Выбор игрового движка для C++?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Много решений подходит под такие критерии. Смотри, изучай, выбирай.

    Cocos2d-x является одним из самых популярных открытых движков. У него большое сообщество и масса поклонников. Есть документация и все нужное для старта.

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

    Godot Engine не менее популярен и не менее поднят по возможностям. В чем-то Godot даже будет лучше чем Cocos. Сообщество у него тоже большое. Документация тоже присутствует.

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

    Дальше пойдут не такие популярные решения, однако и проходить мимо них тоже не стоит.

    Urho3D является нареченной Open-Source альтернативой Unity. Движок используется многими энтузиастами. По разным уголкам сети раскиданы многочисленные группы обсуждения этого движка. Документация и примеры у него на месте.

    GDevelop - это довольно популярное решение для небольших игр. Документация на месте.

    Panda3D - тоже довольно популярное решение со своим сообществом. Документация имеется.

    Hazel Engine - один разработчик - один движок. Полностью вся разработка изложена в видео на youtube. Пользоваться можно... на свой страх и риск.

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

    GZDoom - современная инкарнация движка DOOM.

    Дальше решения пойдут или сложные, или экзотические. Всё на свой страх и риск.

    CryEngine - от Crytek.
    X-Ray - движок S.T.A.L.K.E.R.
    UE 3 - для коммерческих проектов использовать нельзя.
    Lumberyard - от Amazon. Да-да, тот самый.
    Banshee Engine - он просто существует.
    Diligent Engine - у него есть свое сообщество.
    Atomic Engine - на нем тоже выпускают игры.
    Lumix Engine - тоже что-то может.
    Horde 3D - просто существует и этого уже достаточно.
    Ответ написан
    Комментировать
  • GIT: Как подсчитать вклад каждого разработчика?

    @barbarisbk
    просто количество коммитов по пользователях
    git shortlog -s -n
    Ответ написан
    Комментировать
  • Найдите перестановку по её номеру в лексикографическом порядке. Total - кол-во элементов, К - номер перестановки. Как сократить время программы?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Вы генерируете перестановки по одной, пока не отсчитаете k. Это медленно, потому что k может быть очень большим. Перестановок-то n! - это дофига много.

    Надо генерировать ее сразу по номеру.

    Посмотрите на первый элемент. У первых (n-1)! перестановок там 1, у следующих (n-1)! - там 2, потом идет группа, начинающихся с 3 и т.д.

    Уже вы можете понять в какой группе искомая k-ая перестановка. Тупо floor(k/(n-1)!) (если нумерация с 0 и перестановок и групп). Фактически, формула для первого элемента - a[0] = (k-1)/(n-1)! + 1.

    Дальше вы можете выкинуть из рассмотрения первый элемент. Сфокусируйтесь на группе с заданным известным первым элементом. Какой номер искомая перестановка имеет среди этих (n-1)!? Надо из k вычесть количество перестановок c меньшими первыми элементами (их (a[0]-1)*(n-1)!. Потом задача сводится к преведущей - сгенерировать k-ую перестановку среди оставшихся n-1 элементов.

    Если использовать какое-нибудь дерево отрезков, чтобы быстро искать j-ый пока не занятый элемент, то все решение будет за O(n log n). Если делать совсем просто - двумя циклами - то будет O(n^2). Гораздо быстрее вашего O(n!).

    Надо только аккуратно обработать случаи, когда (n-1)! слишком большое. Фактически, вам надо найти максимальный факториал, который меньше k. Пока не спуститесь до этого момента нужно сразу брать первый незанятый элемент и не считать факториал вообще.
    Ответ написан
    Комментировать
  • Python-проверка, начинается ли строка c "@"?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Выбирайте:
    import re
    text1 = '@0'
    text2 = '0'
    print(text1, text1.startswith('@'))
    print(text2, text2.startswith('@'))
    print(text1, bool(re.match('^@', text1)))
    print(text2, bool(re.match('^@', text2)))
    print(text1, text1[:1] == '@')
    print(text2, text2[:1] == '@')
    # @0 True
    # 0 False
    # @0 True
    # 0 False
    # @0 True
    # 0 False
    Ответ написан
    3 комментария
  • Как зациклить выполнение события через каждую единицу времени?

    MinTnt
    @MinTnt
    Решения два.
    1) Использовать потоки
    2) Не "прибавлять", и нагружать код постоянно. А лишь во время вызова, просчитывать на сколько увеличилась переменная простым алгоритмом.
    (time.time() - Время последнего обновления данных) // 20 * 8 . Обновив при этом время последнего "апдейта"
    Ответ написан
    1 комментарий
  • Как сделать два последних слова - ссылкой?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    Используем preg_replace
    <?php
    $string = 'This is my habr';
    $pattern = '/(\w+ \w+)$/i';
    $replacement = '<a href="habr.com">${1}<a>';
    echo preg_replace($pattern, $replacement, $string);


    Test PHP preg_replace here
    Ответ написан
    Комментировать
  • Как сделать добычу дерева в 2D игре?

    yupiter7575
    @yupiter7575
    Python программист
    Смотрите, у вас есть игрок и инструмент Топор, и вам нужно сделать что когда топор прикасался к дереву (с помощью анимации), то у дерева отнимались жизни и оно ломалось и давало ресурсы. Так понятно?
    Ответ написан
    2 комментария
  • Почему в играх в системных требованиях вместо реальных характеристик в 99% пишут названия процессоров и видеокарт?

    GavriKos
    @GavriKos Куратор тега Разработка игр
    Окей, вот реальные системные требования:
    процессор x86 с поддержкой асм-инструкций "длинющщий список инструкций", видеокарта с шейдерными конвейерами такой то реализации с такими то спеками (еще страница мелкого шрифта) и т.д.

    Пишут приблизительные требованя потому что универсализация. Все i3 имеют такую то технологию, все видяхи начиная с такого то поколения поддерживают шейдера нужной версии.
    Ответ написан
    Комментировать
  • Как сделать идеальный квадрат задав только размер одной стороне блока?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Ответ написан
    Комментировать