Задать вопрос
  • SetWindowPos без пространства по краям?

    maaGames
    @maaGames Автор вопроса
    В том то и дело, что это не в приложении дело, а в "особенностях" Windows10. Приложения же безрамочные внешне. Однопиксельная рамка(иногда) и тень вокруг окна. Причём тень гораздо больше 4-8 пикселов. В предыдущих Виндоусах вокруг клиентской области была рамка окна для изменения размера. Как я понял, теперь её визуально нет, но пустое пространство есть, наведя на которое можно менять размер. Ширина как раз где-то 8 пикселов визуально (когда мышку подводишь и курсор меняется). Но SM_CXSIZEFRAME возвращает 4 пиксела. Приложение MFC, но это не имеет значения, т.к. такое же поведение и у Firefox и у Thounderbird. Остальные приложения или в полноэкране запускаю или не выравнены по краю экрана, так что не видел таких же проблем, но они 100% есть.
    Слева и снизу к экрану нельзя прилипнуть, а сверху прилипает без зазора. Я бы добавил этот "минус" в код, но непонятно, какое конкретно брать значение и от чего оно зависит, раз SM_CXSIZEFRAME не совпадает.
  • Как удалить пометку "Есть реклама" в приложении?

    maaGames
    @maaGames
    Подождать день-два, пока данные обновятся.
  • Очищение строк в функции c++, нужно ли?

    maaGames
    @maaGames
    Евгений Шатунов, Не имеет значения, есть оно или нет. На результат работы этой функции наличие/отсутствие COW не повлияет, как и ненужный вызов clear. Просто необязательная работа, которую итак выполнит деструктор.
    Про "плачевные результаты" вполне ожидаемо, если бы запретили преобразование к Си интерфейсу, то и проблем бы не было почти :)
  • Как реализовать браузерное окно (hud) в игровом клиенте CS:S v34?

    maaGames
    @maaGames
    mayton2019, Вставить браузер вообще не проблема в наше время. Например, ultralig.ht элементарно подключается. А вот именно встроить в игру уже сложнее, это надо с API игры разбираться или хак писать, но античит может по лбу дать за это.
  • Почему нет установок в Google Play?

    maaGames
    @maaGames
    Eric Packer, Сейчас у них плашка висит, что из-за ковида все сроки поменялись. Так что сейчас сложно что-то сказать. Раз уже одобрили, то ручной проверки быть не должно и нужно подождать, пок ана серверах данные обновятся. Вряд ли это займёт больше дня-двух. Проверь в настройках, что это публичная версия, а не какая-нибудь закрытая бета. И что никаких уведомлений не появилось о чём-то недозаполненном и недонастроенном.

    Заполнение странички приложения это обязательное для всех требование, без этого просто не сможешь опубликовать публичную версию, даже для закрытых бета-версий нужно многое заполнять. Если красивые скриншоты, видосик и кратное, но завлекающее описание - может и получишь немного установок. Но я бы не расчитывал, что без рекламы будут установки. Нужен либо имидж, либо реклама.
  • Как вывести число Y?

    maaGames
    @maaGames
    Денис Загаевский, Кстати, да. Тогда в коде сразу дважды ошибка.
  • Как вывести число Y?

    maaGames
    @maaGames
    Только смысла в этом нет, потому что цифры 0-9 всегда меньше 25.
  • Как реализовать алгоритм преследования игрока с учётом препятствий-полигонов?

    maaGames
    @maaGames
    Magneto903, тогда локальный путь каждый кадр пересчитывать (или 60 раз в секунду, например), а глобальный только когда выходит за границы укрупнённой ячейки.

    Если кратчайший путь не обязателен, то вышеозвученный А* может более быстро давать глобальный путь. но у него нет никаких гарантий по времени и может довольно долго блуждать.
  • Как реализовать алгоритм преследования игрока с учётом препятствий-полигонов?

    maaGames
    @maaGames
    Magneto903, Зачем? В этом нет вобще никакого смысла.
    В таких случаях реализуют сразу два механизма перемещения: глобальный и локальный. Глобально - пройти из одной части местности до другой, например, по большой ячейстой структуре с ячейками по 10 метров (условно). Это может быть граф или прямойгольная матрица - не имеет значения. Просто глобальное задание того, куда персонаж должен идти. Локальный вариант уточняет движение в пределах ячейки, чтобы обходить мелкие препятствия, не сталкиваться с другими персонажами и тому подобное, при этом он всё равно стремится идти в глобально заданном направлении. Т.е. он шёл, наткнулся на пенёк, сделал шаг в сторону и вернулся к "основному плану". При этом глобальный путь вычисляется или один раз или в случаи какого-то критического события (мост взрвали, дорогу перегородили т .п.), а локальный путь пересчитывается или каждый кадр или с каким-то тикрейтом. Напрмиер, если один шаг персонажа занимает 0,5 секунды, то пересчитывать путь чаще, чем 2 раза в секунду не имеет смысла. За эти 0,5 секунды может отрисоваться 120 кадров, при этом персонаж физически не может изменить траекторию движения.
  • Как реализовать алгоритм преследования игрока с учётом препятствий-полигонов?

    maaGames
    @maaGames
    Magneto903, На самом деле, ещё больше операций будет, потому что ещё накладные расходы на сохранение инексов ячеек текущего шага. Допустим, что реализация будет очень корявая и поиск будет занимать 1 секунду. Как часто боту будет нужно перепроверять маршрут? Замечали в играх, что условный танк ехал-ехал, доехал до взорванного моста, развернулся и другим путём поехал? Это от того, что маршрут перепроверяют не в каждом кадре и не раз в секунду даже.
    Для оптимизаци можно карту побить на крупные ячейки и сперва для них путь строить, а потом уже внутри более точно.

    P.S. не сразу заметил про JS. Может и пару секунд искать будет на полной карте (у меня недоверие к JS). Если сперва искать по укрупнённой матрице, то будет мгновенно искать. Например, сделать 500*500 размер и предрасчитать возможность перехода из ячейки в соседнии. Сперва искать по укрупнённой, а потом уже по полной, используя только выбранные ячейки.
  • Как использовать forward declaration?

    maaGames
    @maaGames
    Inspector Due, Можно. Но это плохой пример надмозга.

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

    class B;
    
    class A
    {
            B * pointer_B;
    };
    
    class B
    {
          A * pointer_A;
    };
  • Как правильно экспортировать в GIF?

    maaGames
    @maaGames
    Эдуард, "палитры" это где "селективная". "Потери" это правый нижний окошко с надписью "потери". Это чтобы сжатие с потерями было.
    Самое главное, дизеринт со "случайное" попробуй переключить на "шаблонное" или вообще выключи. Для сжатия нет ничего хуже случайностей.
  • Как оптимизировать рисование в SFML Image?

    maaGames
    @maaGames
    DeOxygen, Теоретически, можно ещё больше ускорить, если создать список из полигонов, описывающих положение кисти в каждом шаге и потом этот список нарисовать за один drawing call. Н отут уже потратится время на создание списка вершин и списа треугльников, так что я не буду утверждать, что это будет быстрее работать, чем один и тот же спрайт по разным координатам рисовать.
  • Как оптимизировать рисование в SFML Image?

    maaGames
    @maaGames
    DeOxygen, Я ещё сразу не сказал, т.к. это показалось очевидным: текстура-холст - это буфер для offscreen rendering. Т.к. холст может быть больше/меньше окна приложения, то рисовать надо в offscreen буфере и уже потом его вводить на экран с любым масштабом и положением.
  • Как оптимизировать рисование в SFML Image?

    maaGames
    @maaGames
    DeOxygen, Текстура кисти рисуется белым цветом, чтобы при выводе текстуры на холст можно было задать цвет примеси. Цвет умножится на цвет текстуры. Если текстура изначально белая, то в результате нарисуется кружок заданного цвета с учётом прозрачности кисти.
  • Как оптимизировать рисование в SFML Image?

    maaGames
    @maaGames
    DeOxygen, Холст - текстура, на которой сейчас рисуете (24 бит, без Z буфера). Её не очищаете и рисуете как рисовали и прежде. Вторая текстура - изначально прозрачная, в ней рисуется кисть белого цвета (допустим, кружок с размытыми краями, как в фотошоп). В фукнции drawLine вместо рисования в цикле ij рисуешь текстуру кисти 'k' раз в цикле по steps.
  • Как оптимизировать рисование в SFML Image?

    maaGames
    @maaGames
    DeOxygen, Как куда? Сменили инструмент (изменили размер) - удалили текстуру кисти. Текстура кисти один раз создаётся при задании размера. Т.е. хоть месяц непрерывно рисуй одной кистью и она в памяти всего один раз будет создана.
  • Как правильно перегрузить оператор ввода?

    maaGames
    @maaGames
    И где текст ошибки с которой вылетает? Точно проблема не в операторе сравнения "10/8 == 5/4"?
  • Что за ":" в С++?

    maaGames
    @maaGames
    Евгений Шатунов, Про список инициализации в конструкторе не забываем.
  • Как сортировать вектор строк?

    maaGames
    @maaGames
    Vladimir S, Есть более продвинутый. Для сравнения использовать регулярное выражение, разбивать название на "цифры" и "не цифры". Не цифры сравнивать посимвольно, а цифры преобразовывать в int и сравнивать уже их. Так можно будет сравнивать названия, в которых цифры в любом месте могут находиться.