• Существует ли событие на смену текстуры в материале?

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

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

    dollar
    @dollar
    Сначала нужно выключить компьютер, и не включать его. Ведь есть шанс, что не в нем дело. И если человек настолько больной, то он даст вам знать, что продолжает прослушивать (это можно делать, например, через телефон). Так что можно сразу пойти дальше и отключить также телефон. Чтобы звонить, одолжите у подруги или купите трубку за 500р.

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

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

    Пользуясь случаем, передаю привет всем, кто следит за вами и вашей активностью.
    Ответ написан
  • Почему сервер майнкрафт просто так выключается?

    dollar
    @dollar
    Так написано же, что все подробности ошибки сохранены здесь:
    C:\Users\User\launcher\updates\HiTech\crash-reports\crash-2019-11-17_16.29.11-client.txt

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

    dollar
    @dollar
    Бесплатный хостинг брать точно не стоит. Там обычно проблем больше, чем пользы.

    Из дешевых, попробуйте набрать в поисковике "хостинг за 12 рублей". Довольно неплохой (со словом food в названии), должен покрыть ваши нужды. Это уже НЕ бесплатно, что важно. Это значит, что то, что заявлено, должно, скорее всего, работать без проблем в будущем. Конечно, по мере роста амбиций, возможно, потребуется перейти на другой тариф, но тоже не слишком дорогой.

    В остальном дело не в хостинге, а в умении настраивать лаунчер и дружить его с сайтом. Также настраивать БД на сайте, делать сам сайт и т.д.
    Ответ написан
  • Есть ли сервис по мониторингу статусов пользователя whatsapp?

    dollar
    @dollar
    Теоретически такой сервис легко создать, так что потенциально точно есть.
    Главный встречный вопрос: нафига?
    Ответ написан
  • Как считает цикл for?

    dollar
    @dollar
    Для начала нужно оформить код так, чтобы его было удобно читать. Это само по себе позволит лучше понять, что происходит. Вообще аккуратность и внимательность способствуют пониманию и уменьшают ошибки, это как бы очевидно.

    Далее следует уделить внимание логике работы программы, то есть ее описанию. Сейчас описание у вас такое, что глаза можно сломать, пытаясь понять, что же должна делать программа. Нужно подтянуть оформление вопроса в плане русского языка, пунктуации, падежей. В самой программе переменные должны иметь говорящие названия. То есть не qwe, а осмысленное имя, про start и out нужны комментарии, что они делают и т.д.

    Если это не поможет, то можно на выбор:
    1. Заняться отладкой программы, то есть пошагово смотреть, как программа выполняется, и соотносить это с логикой её работы.
    2. Попытаться доказать работу программы чисто математически, как учили в школе. То есть из-за использования циклов и рекурсии понадобится применить метод математической индукции.
    Ответ написан
  • Пропадают ли метаданные фотографий, если скачать их из мессенджера?

    dollar
    @dollar
    Обычно да, пропадают, потому что это разумно, особенно в свете всяких GDPR, да и по моему опыту это так, но точную гарантию может дать только соответствующий мессенджер или сайт. Нельзя сказать за всех сразу.

    Чисто теоретически, если вы отправляете фото с метаданными в Интернет, то они могут как остаться и всплыть где-то, так и потеряться. В этом смысле однозначно ответить на вопрос нельзя.
    Ответ написан
  • Снижает ли производительность множество addEventListner?

    dollar
    @dollar
    Если в большинстве случаев стоит не очень сложная проверка, то нагрузки не будет. Точнее, она будет незначительной. Собственно, такая проверка и нужна, чтобы не было нагрузки от (холостой) работы модуля (к примеру, перерисовывания, что и так нормально нарисовано).

    Если у вас в каждом модуле одним и те же проверки, и они довольно сложные (например, поиск, сортировка), то стоит задуматься о смене архитектуры.

    Но всё равно, конечное решение (ответ на вопрос) зависит от текущих замеров производительности. Даже если убрав все модули, вы снизите нагрузку в 1000 раз, то есть время работы всех этих обработчиков упадёт с 1 мс до 1 нс, то оно того не стоит. А вот если время лага уменьшится всего лишь в 10 раз, то есть с 1 с до 100 мс, то это уже полезно.

    Попробуйте воспользоваться функцией:
    performance.now()
    Для измерения производительности. Можно делать замеры до и после работы кода, которого вы считаете достаточно тяжелым, и потом считать разницу.
    Ответ написан
  • Собственные проекты. Стоит ли доводить до идеала?

    dollar
    @dollar
    Не совсем понятно, какую цель вы преследуете. Исходя из вашего слова "профитнее" (т.е. по-русски "выгоднее") её можно трактовать по-разному.

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

    2) Если вы рассматриваете свои игры, как дополнительные пункты в резюме программиста, то по сути и не важно, игры это или что-то другое. Здесь будет играть роль ваш опыт программирования (опять же просто количество лет), плюс опыт работы в команде. Чуть бОльшую роль имеют софт скилы при составлении резюме и прохождении собеседования. В остальном идеи из предыдущего пункта тоже применимы - то есть количество достойных проектов, считающихся достижениями, которые не стыдно показать.

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

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

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

    dollar
    @dollar
    Всё меняет. Легко проверить в консоли:
    5dcff51033564306707279.png
    Возможно, у тебя помимо (или вместо) \n есть также \r
    Попробуй так:
    str.replace(/@tag(.|\n|\r)*?@tag/gm, 'replace')
    Или так (универсально):
    str.replace(/@tag[\s\S]*?@tag/gm, 'replace');
    Ответ написан
  • Как лучше всего строить сетки и клеточные автоматы?

    dollar
    @dollar
    Canvas, например.

    Рисовать игру типа жизнь, да и вообще любую игру, в виде таблицы с помощью тега <table> - это очень странное решение.
    Ответ написан
  • Увеличил кеш браузера хром в ярлыке --disk-cache-size-4294967296, как теперь протестировать, вступило ли в силу?

    dollar
    @dollar
    Вылет отдельных вкладок разве связан с дисковым кешем?

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

    Ведь каждая вкладка, если не ошибаюсь, может скушать максимум 2 Гб оперативки, после чего крашится. И не важно, сколько всего оперативки на компьютере и какая версия хрома, - ограничение именно на вкладку. И вряд ли это можно изменить настройкой.
    Ответ написан
  • Как реализовать многопользовательскую игру?

    dollar
    @dollar
    Проблемы начинаются не только при читерстве, но и банально при обрыве связи с сервером. Например, когда у пользователя пропадает Интернет. И если вы разрешаете игроку перемещаться локально, отсылая координаты, то с точки зрения сервера игрок исчезнет на некоторое время, а потом появится в других координатах, далеких от тех, где он был.

    На самом деле здесь есть много нюансов, поэтому универсального рецепта нет. Зависит от вашей игры. Например, если игра очень динамична, то на клиенте должно быть обязательно сглаживание. Ведь будет убого выглядеть, если после нажатия W пройдет 200мс, и только затем квадратик сдвинется. Нужно, чтобы он двигался сразу, а уж потом, если вдруг это оказалось неправомерным, сервер может прислать новые координаты и оттелепортировать игрока назад. И наоборот, если игра медленная и неповоротливая (например, пошаговая), то выгоднее перепроверять каждый чих пользователя перед тем, как отобразить действие на экране у него и всех остальных.

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

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

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

    Если говорить про чисто техническую защиту от изменения кода на клиенет, то лучшее, что вы можете сделать, это обернуть весь код в анонимную функцию. Она будет как бы глобальным пространством для других функций и переменных, но через консоль к ней нельзя будет получить доступ.
    (function() {
      let x = 50;
      let y = 50;
      // и т.д. всё, как обычно, только в обертке
    })();

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

    dollar
    @dollar
    Устроить этому сайту реверс инжиниринг, а затем сделать хороший инжект в функцию бесконечной загрузки.

    Это довольно сложная задача. Так что полный ответ будет работой.
    Ответ написан
  • Почему request не дает весь html код страницы?

    dollar
    @dollar
    Есть подозрение, что вы получаете мобильную версию. Или версию для ботов. Чтобы этого не было, нужно прикинуться браузером. Отдавайте те же заголовки, что и браузер. В первую очередь, User-Agent от Chrome или FireFox.

    Еще может быть ошибка 403 (доступ запрещен) или что-то подобное, опять же из-за заголовков.

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

    dollar
    @dollar
    Привет, товарищ!
    Хотел сказать, что мне ник твой не понравился. Стремный какой-то.
    Всё остальное на высоте. Реально, классный вопрос задал.
    Я подписался на тебя.
    Ответ написан
  • Как округлить число до десятой доли?

    dollar
    @dollar
    Math.floor(2.453690 * 10) / 10
    Math.floor(2.99 * 10) / 10
    //Соответственно для вывода
    (Math.floor(2.99 * 10) / 10).toFixed(1)
    Ответ написан
  • Как использовать webP на iOS устройствах?

    dollar
    @dollar
    Зачем?
    Слишком большой процент устройств не поддерживает webp.
    Так что рано ещё активно переключаться на эту технологию.
    Ответ написан
  • Почему цикл for не работает в методе?

    dollar
    @dollar
    Рабочее, далеко не самое изящное, но есть нюанс, который можно считать багом, предлагаю найти самостоятельно.
    String.prototype.camelCase = function() {
    	let arr = this.split(' ');
    	for(let i = 0; i < arr.length; i++) {
    		arr[i] = arr[i][0].toUpperCase() + arr[i].substr(1);
    	}
    	return arr.join('');
    }
    
    console.log('hello case'.camelCase());
    Баг (ответ)
    var str = 'hello '+' case';
    console.log(str.camelCase());
    Ответ написан