Задать вопрос
  • Снижение разрешения 3D модели unity?

    GavriKos
    @GavriKos Куратор тега Unity
    Идеально - НЕ ипспользовать текст в текстурах вообще, а рисовать поверх объекта в нужных местах текст при помощи той же TMPro.

    Если не вариант - играться с антиалиасингом. Но в любом случае тут чем то придется жертвовать
    Ответ написан
    3 комментария
  • Unity или Unreal Engine для мобильной разработки?

    Lapita12
    @Lapita12
    Тесты, тесты?
    Для мобильных игр лучше всего использувать Unity, потому что это наиболее распространенная библиотека, поддерживающая множество платформ и позволяет легко портировать проекты. Кроме того, Unity имеет широкий спектр инструментов и компонентов для разработки игр, включая графический движок, редактор уровней, систему управления играбельным процессом и многое другое.
    Unity также обладает высокой производительностью благодаря оптимизированному трассированию лучей и использованию multiprocessing, что делает её идеальной для разработки сложных трехмерных игр.
    Однако, если ваш проект фокусируется только на двухмерной графике, то Unreal Engine может показаться излишним роскошью, учитывая, что он основан на трёхмерном движке.
    Важно отметить, что для решения такого вопроса необходимо провести собственные эксперименты, чтобы определить, какая библиотека лучше подходит для вашего конкретного проекта.
    Ответ написан
    2 комментария
  • Что значит цель обработки пд достигнута?

    Цель - это то что ты сам, как оператор ПД, задекларировал в своём соглашении на обработку ПД.
    Это то, зачем тебе вообще эти ПД нужны.

    Например тебе нужны ПД клиента чтобы оказать ему какую-то услугу и больше ничего ты не написал (например банки пишут, что они продолжат хранить ПД ещё 15 лет после расторжения договора)
    Как только услуга эта оказана - тебе следует удалить данные.
    Ответ написан
    Комментировать
  • Как смешивать массив текстур в шейдере?

    @Nikolae
    Существует несколько способов смешивания множества текстур в шейдерах. Вот некоторые из них:

    1. Миксование текстур на основе градиента: Вы можете создать градиентную текстуру, которая будет определять, какие части вашей модели должны быть смешаны с определенными текстурами. Это может быть сделано с помощью функции smoothstep, которая позволяет создавать градиенты между двумя точками. Затем, используя значения из этой текстуры, вы можете миксовать разные текстуры с помощью функции mix.

    2. Смешивание текстур на основе шума: Вы можете использовать шум для смешивания разных текстур в зависимости от расстояния от центра вашей модели. Это может создать эффект размытия границ между текстурами. Для этого можно использовать шум Перлина или другой алгоритм шума, а затем использовать его значения для миксования текстур.

    3. Смешивание текстур с помощью альфа-канала: Вы можете использовать альфа-канал текстур для создания маски смешивания между текстурами. Альфа-канал может быть использован для определения, какие части текстуры должны быть прозрачными, а какие - непрозрачными. Затем вы можете использовать значение альфа-канала для миксования текстур.

    4. Смешивание текстур на основе расстояния: Если вы хотите создать эффект наложения текстур на большое расстояние, то можете использовать функцию distance для определения расстояния от центра вашей модели. Затем вы можете использовать это расстояние для определения, какие текстуры должны быть наложены на модель.

    5. Смешивание текстур на основе наклона: Если вы хотите создать эффект наложения текстур на уклоненную поверхность, то можете использовать нормали для определения угла наклона. Затем вы можете использовать этот угол для определения, какие текстуры должны быть наложены на модель.


    Некоторые из этих методов могут быть объединены для создания более сложных эффектов смешивания текстур.
    Ответ написан
    5 комментариев
  • Корректно ли в C++ называть стек статической памятью?

    Vindicar
    @Vindicar
    RTFM!
    Кирилл Гусарев, по вашему определению статическая память - это секция инициализированных данных exeшника.
    ЕМНИП, C++ в эту секцию кладёт инициализирвоанные глобальные переменные. Насчёт статических локальных не уверен.

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

    Всё это - только для виндовых EXE. Про линукс я не в курсе.

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

    GavriKos
    @GavriKos Куратор тега Unity
    Если +- известно какое количество надо в итоге получить (или когда уже история не важна) - то.
    Делаешь массив от 1 до N, перемешиваешь его случайно, и собсно дальше берешь последовательно из него числа.
    Да, в какой то момент массив кончится - но возможно это подойдет по условию. Зато у тебя 100% известно время на поиск нового случайного числа - оно постоянно и не зависит ни от чего )
    Ответ написан
    Комментировать
  • Что не так вроде программа написана верно но при запуске просто экран программы без рисунка?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    ; инициализация библиотеки Turbo Graphics
        MOV AH, 00h
        INT 10h

    Написано "инициализация библиотеки", а выглядит как просто вызов функции прерывания int 10h BIOS set video mode. Если это и правда инициализация библиотеки, то она (библиотека) должна уже быть загружена на этот момент. Дальше ты вызываешь другие нестандартные функции этого же прерывания, в отсутствие библиотеки они делают совсем не то, что написано в комментариях.

    ; завершение работы с графикой
        MOV AH, 00h
        INT 10h

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

    @furashcka
    Наверняка у вас есть список url из хлебных крошек, если нет то на крайний случай их можно вытащить из html, их можно представить в виде массива: [`site.com/catalog`, `site.com/catalog/sub-catalog`, `site.com/catalog/sub-catalog/item`], имея данный массив находим текущий index по location.href
    let breadcrumbs = [`site.com/catalog`, `site.com/catalog/sub-catalog`, `site.com/catalog/sub-catalog/item`];
    let indexCurrent = breadcrumbs.indexOf(location.href);
    let indexPrev = Math.max(0, indexCurrent - 1);
    let prevURL = breadcrumbs[indexPrev];
    
    location.href = prevURL;


    Как видите вам понадобится массив с url, по которому вы можете возвращаться назад, за счёт currentIndex - 1, пока не дойдёте до главной страницы, у которой обычно index = 0
    Ответ написан
    Комментировать
  • Unity 2D, Как убрать скольжение по наклонным поверхностям?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    1. Узнаёте что персонаж на земле, например через Physics2D.OverlapCircle
    2. Получаете нормаль поверхости под ногами персонажа, например через Physics2D.Raycast
    3. Вычисляете угол поверхности, через Vector2.Angle
    4. Угол меньше максимального (поле класса, например 70 градусов)
    5а. Да: двигаемся как обычно
    5б. Нет: Можно поменять физический материал (свойство friction), или, например, обнулить x часть вектора rigidbody2D.velocity
    Ответ написан
    2 комментария
  • Чем различаются версии Postgres 13, 14, 15?

    В документации же русским по белому написано:
    PostgreSQL 15 содержит много новых возможностей и улучшений, в том числе:
    • Поддержка SQL-команды MERGE.
    • Выборочная публикация содержимого таблицы в рамках логической репликации с возможностью указывать списки столбцов и фильтры строк.
    • Больше возможностей для использования сжатия и поддержка сжатия Zstandard (zstd). В том числе реализована возможность сжатия на стороне сервера при создании копии с помощью pg_basebackup.
    • Поддержка структурированного вывода журнала сервера в формате JSON.
    • Улучшения производительности, в частности, оптимизация операций сортировки в памяти и на диске.

    https://postgrespro.ru/docs/postgresql/15/release-...


    PostgreSQL 14 содержит много новых возможностей и улучшений, в том числе:

    • Хранимые процедуры теперь могут возвращать данные через параметры OUT.
    • Реализованы описанные в стандарте SQL параметры SEARCH и CYCLE для общих табличных выражений.
    • Операцию обращения по индексу теперь можно применять не только к массивам, но и к любому типу данных, для которого она имеет смысл. В этом выпуске такие операторы добавлены для типов jsonb и hstore.
    • Диапазонные типы были дополнены мультидиапазонными, позволяющими представлять несплошные диапазоны данных.
    • Проведена большая работа по улучшению производительности параллельных запросов, обработки многопоточной нагрузки, секционированных таблиц, логической репликации и процедуры очистки.
    • Изменения в индексах-B-деревьях теперь обрабатываются более эффективным методом, уменьшающим замусоривание индексов.
    • Процедура VACUUM автоматически становится агрессивнее и пропускает несущественные операции очистки в случае приближения базы данных к моменту зацикливания идентификаторов транзакций.
    • Расширенную статистику теперь можно собирать по выражениям, что позволяет получить лучшие планы для сложных запросов.
    • Библиотека libpq теперь поддерживает конвейерную передачу нескольких запросов, что позволяет ускорить получение результатов через сетевые соединения, которым свойственны большие задержки.


    https://postgrespro.ru/docs/postgresql/14/release-14
    Ответ написан
    Комментировать
  • Почему камера после старта поварачивается на 180 градусов?

    GavriKos
    @GavriKos Куратор тега Unity
    Нет, это явно баг юнити, пишите багрепорт вам за него дадут 100500 баксов.

    Конечно что то в вашем скрипте камеры! Сама по себе камера не ворочается
    Ответ написан
    1 комментарий
  • Как в unity 3d (C#) сделать открытие панели при нажатии на кнопку клавиатуры?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Что-то такое:
    using UnityEngine;
    
    public class ShowPanelDemo : MonoBehaviour {
    
    	// флаг состояния
    	bool isOpened;
    	// ссылка на панель
    	public GameObject panel;
    
    	void Update() {
    		if (Input.GetKeyDown(KeyCode.Escape)) {
    			// меняем состояние
    			isOpened = !isOpened;
    			// присваиваем
    			panel.SetActive(isOpened);
    		}
    	}
    }
    Ответ написан
    6 комментариев
  • Почему не работает асинхронность?

    petermzg
    @petermzg
    Самый лучший программист
    Для Windows Form нужно использовать SynchronizationContext.
    Вызов таска в отдельном потоке Task.Run(...).

    В отдельном потоке должно делаться все, что не касается обновления UI контролов. Как только все данные для отображения подготовлены, вызываете synchContext.Post(...) для обновления UI
    Ответ написан
    Комментировать
  • Как избавиться от спама Яндекс карт?

    Это не "спам", а запись действий пользователя в вебвизор.
    Если помимо Я.Карт у вас ещё подключена Я.Метрика, то вы можете уменьшить количество сигналов, отключив вебвизор в её настройках. Скорее всего, это ваш случай.
    Если же это сами карты отправляют себе аналитику, то вы с этим ничего не сделаете, вряд ли они сделали опцию для отключения.
    Ответ написан
    Комментировать
  • Где лучше получать ввод - в Update или FixedUpdate?

    GavriKos
    @GavriKos Куратор тега Unity
    Вся документация говорит что "в апдейте".

    Аргументация - FixedUpdate работает не каждый кадр, что в целом и написано в документации. И он предназначен для просчетов физики.
    А вот как раз всякие ивенты привязаны именно к Update.
    Ответ написан
    Комментировать
  • Почему мой код работает медленнее?

    В более быстром варианте вот тут за константное время проверка делается.
    if (track.ContainsKey(chest))
            {
              yield return track[chest];
              continue;
            }

    У тебя она сделана через цикл:
    for (int i = 0; i < chests.Length; i++)
                    {
                        if (point.Value.Equals(chests[i]))
                        {
                            yield return point;
                        }
                    }

    Если я не туплю, и эти куски действительно делают одно и то же.

    А вообще более детально разобраться в причинах низкой скорости ты можешь:
    1. При помощи бенчмарков (гугли BenchmarkDotNet)
    2. Посмотрев на листинг кода, который генерирует компилятор (смотри sharplab)
    3. Путём профайлинга - посмотри на dotmemory и dottrace
    Ответ написан
    Комментировать
  • На каком игровом движке создают подобного рода игры?

    @dima20155
    you don't choose c++. It chooses you
    Полагаю, что самый первый скил, который вам необходим - это умение гуглить. Мобильные игры довольно часто создаются на unity, но есть и другие движки поддерживающие такую функциональность тот же unreal (погуглите возможности движков, погуглите распределение рынка мобильных игр). На счёт литературы: многое терабайты курсов, книг на любом языке платно и бесплатно есть в интернете, все свободно находится в поисковике, вот прям без малейших проблем.

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

    Ты никак не используешь возвращаемое значение.
    enemy.GetComponent<Enemy>().TakeDamage(Damage, EXP)


    Видимо тебе нужно чтото типа:
    var exp = enemy.GetComponent<Enemy>().TakeDamage(Damage, EXP);
    Debug.Log(exp);


    Чтобы в будущем таких конфузов не случалось - изучай C# как самодостаточный язык, а не как "скрипты для юнити"
    Ответ написан
    2 комментария
  • Как эффективно использовать 'сервисы' для обращения к БД?

    mayton2019
    @mayton2019
    Bigdata Engineer
    По поводу смыслов. Обычно с БД работают сущностями (entities). Я не специалист в Node и я не знаю
    как у вас принято. Кажется в новых ecma-спецификациях уже ввели понятие класса.

    В данном коде идет проверка на то что email существует. Но полезный эффект - слабый.
    Я-бы сразу возвращал сущность пользователя. Чтоб не бегать потом в базу еще
    раз когда надо поискать имя или дату регистрации. Ну идея такая что
    если вы уж пошли в базу (это сетевой round-trip) то постарайтесь
    за этот трип собрать максимум информации.

    Вот это более рационально
    export const findUserEntityByEmail = async (
      email: string
    ): Promise<User> => {
      try {
        const users = await db
          .query('SELECT * FROM accounts WHERE email = $1', [email])


    Тоже самое относится к выборкам множества строк по множеству ключей.
    Лучше сделать 1 callback который вернет коллекцию чем для коллекции
    ключей дергать один несчастный метод который по штучке что-то достает.

    Еще важне - join. Если соединяете сущности - то соединяйте сразу в БД
    без попыток соединять в приложении. Это кстати еще бонус к компетенции
    в части ACID.

    Тоесть идеальный вариант работы с БД - запросить пакетом всю информацию
    что может потербоваться на ближайшие несколько секунд. Это рациональнее
    чем потом что-то подтягивать.
    Ответ написан
    6 комментариев