• Как определиться с путём развития в GameDev на Unity?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Игра - это не просто комбинация механик.
    Это искусство.
    Вот вы умеете рисовать, например? А в анимацию? А игра - это более сложное искусство, совмещающее в себе и нарратив, и геймплей, и музыку, и всё остальное, чтобы это всё красиво сочеталось и переплеталось, и вызывало особые эмоции у игрока.

    Поэтому для начала определитесь с целью. Если это - просто хобби с целью практиковать программирование, то идите путём написания пятнашек и тетрисов для начала. Если же цель - реально заработать денег, то откажитесь от разработки игры в одиночку, изучите экосистему геймдева, этапы разработки, т.е. основы основ. Выберите себе конкретную роль (например, программист или геймдизайнер) и скооперируйтесь с другими людьми в каком-то проекте. Если хотите быть продюсером, то также откажитесь и от программирования, занимайтесь менеджментом, наберите команду, считайте деньги (бюджет, расходы, общение с инвестором и т.п.). Время обычно считает ПМ. В маленькой команде можно и совмещать роли, но это отдельная история. Классическая микро-команда для создания прототипа - это художник, программист и геймдизайнер. И если вам кажется, что вы со всем сможете справиться в одиночку, то это вряд ли; прецеденты есть, но они очень редкие; на 1 известную вам успешную инди-игру приходится 1000 неудачных инди-игр, о которых вы даже не слышали, плюс ещё больше игр, которые просто не дошли до публикации.
    Ответ написан
  • Как избежать ограничения числа int в unity?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вместо int используй long :)

    long x = 2147483648L;
    Ответ написан
    Комментировать
  • Как создать правило ublock для 'section>?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    ##section
    или
    ##section[itemprop="aggregateRating"]
    Ответ написан
  • Как собрать в массив информацию из DOM-элементов?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Например так:
    let b = Array.from(a.querySelectorAll('div.name'));
    let c = Array.from(a.querySelector('div.name'));
    
    //a[0].innerHTML
    //b[0].innerHTML
    //c.innerHTML
    Ответ написан
    Комментировать
  • Как сделать условное форматирование при определенных условиях?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    =IF(("01.01."&B169)-NOW()>100*365,25;1;0)
    Примерно так.
    Ответ написан
    3 комментария
  • Почему строка инициализируется как число?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Дело в том, что вы вырезаете из массива кусочек.
    В результате длина массива меняется, и после вырезанного всё сдвигается.
    Меняются и индексы.

    Решение:
    После splice добавьте: i--;

    Либо перебирайте массив с конца:
    for(let i = l.length-1; i >=0; i--) {
    Ответ написан
  • Восстанавливает данные мошенник?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Для начала нужно просто пообщаться. Правда, это нужно уметь делать. Так что если вы вообще плохо ладите с людьми, то нужно, чтобы кто-то другой общался вместо вас. Желательно при этом записывать разговор. Можно также включить на громкую и позвать свидетелей.

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

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

    Если в итоге всё сведётся к тому, что он вас нагло кидает и полностью это сам осознаёт, то дальше разговоры заканчиваются - и начинаются действия. Какое решение вы примете по итогу разговора - дело ваше. Может быть, решите, что ну его к чёрту вместе с диском, а может и заплатить решитесь, смотря что за разговор получится. В любом случае, сначала - переговоры, а потом уже - действия.
    Ответ написан
    5 комментариев
  • Какие проблемы помимо ограничений провайдером могут возникать у протокола p2p в играх?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Файрволл или роутер.

    Провайдер - это условно один из узлов (или несколько узлов) соединения с хостом.
    На каждом узле может быть условно файрволл, в том числе и на домашнем компе пользователя.

    Баг самой игры тоже может быть. Специфический, системный.
    Ответ написан
    4 комментария
  • Как убрать строки в которых есть повторение до определеного символа?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Это сложная логика, регулярным выражением такое не сделать. Нужно писать свой небольшой скрипт-парсер.

    Либо (если с программированием туго) воспользоваться другими инструментами. Например, Google Sheets. Чтобы понимать все шаги и как работают формулы, сделаем через множество столбцов:
    1. Копируем текст в гугл-таблицу.
      spoiler
      6291ce1d7fad8756144496.png

    2. В следующий столбец вводим формулу =LEFT(A1;4), которая возьмёт нужное нам количество символов.
      spoiler
      6291ce68e6bfe211640261.png

    3. Растягиваем (распространяем) эту формулу вниз, чтобы заполнить весь столбец.
      spoiler
      6291cebdac003303558314.png

    4. В следующем столбце аналогично вводим и растягиваем формулу =COUNTIF(B:B;B1)
      spoiler
      6291cf625c69e029081487.png

    5. Далее, аналогично вводим и растягиваем формулу, которая выведет нам нужны строки по условию =IF(C1=1;A1;"")
      spoiler
      6291cfcda3e4d756517869.png

    6. Осталось скопировать последний столбец обратно в Notepad++ и убрать пустые строки.
    Ответ написан
  • Как сделать шаблон в Notepad++?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Найти: (\d+)-([^:\n\r-]+?):(жен|муж)
    Заменить на: номер \1, имя \2, пол \3
    spoiler
    6291c7c519226767581354.png
    Ответ написан
    Комментировать
  • Почему сайт видит мою страну, когда я использую VPN?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Там у вас в инструкции:
    net.ipv4.ip_forward=1

    Насколько я понимаю, это значит, что вы соединяетесь через VPN, и таким образом обходите РКН (со стороны РФ), но обратный ip-адрес указан - ваш. Этим достигается, что через VPN идут только запросы, а ответы приходят вам напрямую, минуя VPN-сервер. Это и скорость увеличивает, особенно файлообмен. Но при этом ваш настоящий ip становится видимым посещаемым сайтам. Можете убедиться на 2ip.ru, например.

    То есть вы как бы попросили друга отправить письмо, а друг указал на конверте в качестве отправителя - вас, и ответ приходит непосредственно в ваш почтовый ящик. В случае же с Proton VPN, друг указывает на конверте свой адрес и сам получает ответное письмо, а затем несёт вам.
    Ответ написан
    4 комментария
  • Как написать правильное регулярное выражение?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Попробуйте заменить \s на [ \f\n\r\t\v]
    Если не поможет, то нужно в самой среде, где используются регулярки, искать способ многострочного поиска.
    Ответ написан
    Комментировать
  • Как заблокировать отдельный Div с рекламой?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Расширение uBlock Orign, но желательно уметь в CSS и HTML, чтобы блочить самому.
    Ответ написан
    Комментировать
  • Почему при попытки открыть страницу появляется сообщение что это фишинговая страница?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Если это Google Chrome, то и спрашивать надо у Google Search Console. Там будет ответ.
    А здесь можно лишь гадать.
    Ответ написан
    Комментировать
  • Почему мое условие на проверку ширины неправильно работает?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Если в будущем у меня будет мерседес, то выдайте мне ключи от него сейчас.
    Ответ написан
  • Как отфильтровать номера телефонов, через регулярное выражение, и пропускать только начинающиеся с цифры 7?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Ну, должно начинаться на ^7

    P.S. Если вы разрабатываете какую-то систему за деньги, и при этом не разбираетесь в банальных случаях типа этого, то вам, скорее всего, не стоит заниматься этим делом, - накосячете (не здесь, так в другом месте).
    Ответ написан
    1 комментарий
  • Чем отличается политика безопасности от несанкционированного доступа?

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Существует.
    spoiler
    628a9734dc810918927333.png
    spoiler
    628a97163bde7278928955.png
    Ответ написан
    3 комментария
  • Как узнать что за кодировка?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Каждая цифра имеет 10 вариантов (от 0 до 9).

    Каждая буква имеет чуть больше вариантов, в зависимости от алфавита (a-zA-Z это 52 варианта, но некоторые буквы могут быть специально исключены по каким-то соображениями). А если это символ, который может быть как буквой, так и цифрой, то вариантов ещё больше (например, 62). В кодировке base64 добавляются ещё пара символов, чтобы было круглое число 64, хотя реально там чуть сложнее.

    Количество вариантов - это условно мера информации, которую можно запихнуть в символ (или в строку соответственно).

    Для строки количество вариантов можно посчитать перемножением для каждого символа. Например, строка из двух цифр (от 00 до 99) - это 100 вариантов (10*10). Три цифры - 1000 вариантов и так далее. Аналогично с буквенно-цифирным алфавитом. Набор из двух таких символов - это 62*62 = 3844 варианта. Здесь уже чётко видно, что три цифры можно перевести в два символа без потери информации.
    То есть NNN ----> CC, где N - цифра, C - буква или цифры, с учётом регистра.
    То есть символов нужно меньше, чем цифр.

    Как именно происходит кодирование, сказать сложно. Самый простой вариант - это воспринимать цифирную последовательность, как число, и далее работать с числом. Делается это примерно так (алгоритм на пальцах):
    1) Делим число на 62.
    Остаток от деления - это номер буквы в алфавите, выбираем эту букву. Результат деления без остатка переходит как число для следующего шага.
    2) Делим (получившееся) число на 62.
    Остаток от деления - это номер следующей буквы, которая плюсуется к предыдущей.
    3) И так далее.
    Так происходит кодирование, в результате которого формируется строка из букв.

    Обратное кодирование примерно такое же, только все шаги в обратную сторону делаются.

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

    ...Либо заниматься хакерством - пытаться подобрать алгоритм кодирования.

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

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    Очевидно, что нужно перебрать значения в цикле.
    Очевидно, что раз уж мы не можем перебирать отсутствующие значения, то нужно перебирать присутствующие значения, то есть перебираем вторую таблицу.
    Таким образом, переформулируем:
    вывести только те значения, которые есть во второй таблице, но при этом отсутствуют в первой.
    spoiler
    local table1 = { [1] = "q", [2] = "p" }
    local table2 = { [1] = "q", [2] = "p",  [3] = "f"}
    
    for k,v in pairs(table2) do
        if not table1[k] then
            print(v)
        end
    end

    Если же соответствие ключей не учитывается, то решение будет чуть сложнее. Для больших таблиц лучше их переделать под новый формат, в котором ключами будут значения:
    local table1_fixed = { q = true, p = true }
    Далее можно будет проверять присутствие значения в первой таблице по ключу.
    Ответ написан
    Комментировать