Задать вопрос
  • Как реализовать спрайтовую анимацию в андроид (для объектов в игре)?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Обычно делают "кучу склеенных в один файл кадров" на полотне 1024х1024 или 2048х2048.
    Ещё больше размер - плохо.

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

    При этом нужно заранее учесть возможность переодевания. В спрайтере это всё возможно (путем замены отдельных статичных изображений, которые участвуют в анимации).

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Думаю, лучше перейти с JSOUP на чисто хром.
    Меньше шанс, что что-то сломается.
    Да и проще реализовать, не нужно копаться в (обфускированном?) коде, а достаточно работы с DOM.
    То есть просто делаешь расширение для хрома (личное) - и оно уже во вкладке парсит выдачу яндекса, одновременно прокручивая страницу для подгрузки новых изображений.
    Ответ написан
    Комментировать
  • Какое направление подготовки выбирать, чтобы стать GameDeveloper?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Основных направлений в геймдеве я бы выделил всего четыре:
    1) Программирование
    2) Дизайн
    3) Менеджмент (сюда же включу маркетинг, и всяких КМ, биздевов, секретарш и пр.)
    4) Геймдизайн

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

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

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

    P.S. А ответ на предыдущий вопрос вас не устроил? Спрашиваю, потому что правильные ответы принято помечать решениями.
    Ответ написан
  • Почему Array.prototype является массивом, но к нему нельзя обратиться по индексу?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Можно обратиться по индексу:
    Array.prototype.length; //0
    Array.prototype[0]; //undefined, но не ошибка!
    Array.prototype[0]=123; 
    Array.prototype[0]; //Теперь 123
    Array.prototype.length; //Теперь 1 (автоматически)

    Возможно, вы думали, что массивы не могут содержать свойств? Но массивы - объекты, так что могут:
    typeof Array.prototype; //"object"
    var a = [];
    typeof a; //"object";
    a.x = 123;
    a.x; //123
    a.length; //0

    Кстати, мысль о том, что Array.prototype это массив, довольно спорная, не смотря на документацию. Смотря как проверять:
    [] instanceof Array; //true
    Array.prototype instanceof Array; //false

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

    А в общем случае ответить нельзя, потому что массив или не массив это просто термин. Например, если вам достаточно, чтобы массив содержал лишь метод forEach, то некоторые якобы массивы вам тоже вполне сгодятся:
    document.querySelectorAll('div').forEach; //function - подходит
    document.getElementsByTagName('div').forEach; //undefined - не подходит

    То есть копать можно долго в эту тему. Но надо понимать, зачем.
    Ответ написан
    Комментировать
  • Запретить перевод определённого текста?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Так: <span translate="no">Москва</span>
    Или так: <span class="notranslate">Москва</span>
    Есть документация, которую вы, по идее, должны были прочитать до написания вопроса.
    Ответ написан
    9 комментариев
  • Как быть с большими неразделяемыми историями в SCRUM?

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

    "Обучение игре на гитаре" - 1) тренируем пальцы 2) учим основные аккорды 3) учим конкретную мелодию. Ну или совсем банально: урок 1, урок 2, урок 3 (если есть учебник, то там это уже сделано за вас).

    "Похудеть" - аналогично. 1) Сбросить 1.5кг 2) Сбросить 1.5кг 3) Сбросить 1.5кг. Если есть этапы в методике похудения, то использовать их.

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

    получить историю запросов пользователей на протяжении четырех месяцев работы приложения

    Наладить сохранение истории запросов пользователей в базу. (1 день)
    Или
    Скачать и проанализировать историю запросов пользователей за последние 4 месяца. (1 день)
    Ответ написан
  • Как работать с массивом?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    https://codepen.io/anon/pen/ororVq
    Дописал к вашему js в конце немного кода.
    Ответ написан
    7 комментариев
  • Как сделать тоже самое через substring?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Легко делается:
    var c = "abcdef";
    var s = "cd";
    
    //Функция вырезает search_text из content
    function removeText(content, search_text) {
    	let found = content.indexOf(search_text); //Ищем позицию текста.
    	if (found === -1) return content; //Текст не найден, без изменений.
    	let part1 = content.substr(0,found); //Берём до совпадения.
    	let part2 = content.substr(found + search_text.length); //Берём после.
    	return part1 + part2;
    }
    
    console.log(removeText(c,s)); // "abef"

    Соответственно, в вашем случае с моей функцией будет так:
    //Вырезаем некоторый текст из content.value
    content.value = removeText(content.value, node.outerHTML);
    Ответ написан
    2 комментария
  • Github можно доверять?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Нельзя.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    var arr = [1, 2, 3, 4, 2, 5];
    
    function findDuplicate(arr) {
      var obj = {};
      for(var i=0; i<arr.length; i++) {
        if (obj[arr[i]]) return arr[i];
        obj[arr[i]] = true;
      }
    }
    
    console.log('Повторяющееся число:', findDuplicate(arr));
    Ответ написан
    Комментировать
  • Как найти значение, отсутствующее в одном из массивов?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    var arr1 = [1, 2, 3, 4, 5, 6, 7];
    var arr2 = [1, 2, 3,    5, 6, 7];
    
    function analyzeArrays() {
    	arr1=arr1.sort().filter(e=>e===0||e);
    	arr2=arr2.sort().filter(e=>e===0||e);
    	if (Math.abs(arr1.length-arr2.length) != 1) return console.log('Пропущено не одно число!');
    	for(let i=0; i<arr1.length; i++) {
    		if (arr1[i] == arr2[i]) continue;
    		if (arr1[i] == arr2[i+1]) return console.log('Число '+arr2[i]+' пропущено в arr1');
    		if (arr1[i+1] == arr2[i]) return console.log('Число '+arr1[i]+' пропущено в arr2');
    		return console.log('Фигня какая-то');
    	}
    	console.log('Число '+arr2[arr2.length-1]+' пропущено в arr1');
    }
    
    analyzeArrays();
    Ответ написан
    Комментировать
  • Существует ли (формула ,уравнение)для расчета времени жизни игрока?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Будем исходить из того, что серверный FPS равен 10. И все они начинают стрелять одновременно.

    Тогда за кадр игрок (a) сделает 1.17 выстрелов или 5.83 урона.
    А игрок (c), соответственно, сделает 1.67 выстрелов или 5 урона.

    Очевидно, что игрок (a) наносит урон быстрее.
    Таким образом игрок (a) за 18 кадров нанесёт урон 104.94, чтобы снести 100 здоровья игроку (b). Причем, 17 кадров не достаточно, потому что урон будет всего лишь 99.11, что меньше 100.
    За те же 18 кадров игрок (с) нанесёт лишь 90 урона, и не успеет снести все 100 единиц здоровья игрока (a).

    Не всё так просто, зависит от реализации.
    Например, банально, если урон каждый кадр округляется в меньшую сторону, то у обоих урон за кадр будет равен 5.
    Поэтому может получиться так, что все умрут одновременно (кроме игрока (c)).
    Либо придётся учитывать, кто раньше стрелял, ведь мы предполагаем, что оба начали стрелять одновременно, но так редко случается в реальной игре. Так что в формулу, которую вы хотите получить, придется добавить разницу во времени начала стрельбы.
    На сервере также может быть другой FPS, который обычно от 10 до 30, а иногда выходит за эти рамки, и другие правила округления, что внесёт свои правки.
    Есть пинг, лаги, они тоже вносят свои коррективы, в зависимости от, повторюсь, архитектуры и реализации.

    Далее, если у вас сложная механика и точность стрельбы падает при получении урона, то расчет сильно усложняется. Или если у всех разное оружие, которое имеет разный разброс при стрельбе. Или если оружие перегревается и меняет характеристики или просто выходит из строя (до того, как нанесёт 100 урона игроку). Может быть маленькая обойма и время на перезарядку и т.д. и т.п.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Верхний предел заработка не ограничен. Игра может принести даже миллионы (если не миллиард) долларов. Так что ответ - много.

    Но шанс этого мал. Условно шанс, что ваша игра вообще окажется хоть сколько-нибудь прибыльной, а не убыточной - примерно 1%. Немного статистики - каждый день на мобайле публикуются около 200 игр. И это только те, что дошли до релиза и не загнулись на этапе разработки.

    Ну а если окажется, что ваша игра реально хорошая (классный USP), то дальше всё просто: нужно закупать трафик так, чтобы цена покупки пользователя была меньше, чем этот пользователь принесет денег на рекламе (или если решитесь на донат, то и это плюсуйте). И чем больше купите трафика, тем больше будет прибыль.
    Ответ написан
    1 комментарий
  • Как добавить класс элементу из значения переменной?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    element.className += ' ' + burgerClassToggle;

    P.S. Ответ легко гуглится по запросу "javascript add class". В следующий раз постарайтесь хоть немного поискать ответ самостоятельно, прежде чем задавать очевидный вопрос.
    Ответ написан
    1 комментарий
  • Как называется стиль таких картинок?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Клипарт
    Ответ написан
    Комментировать
  • VK API Acces_token, могут ли банить за использование одинаковых токенов?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Да, могут.
    Подсказка
    Что случилось однажды, может и не повториться. Но что случилось два раза, наверняка случится и в третий.
    Ответ написан
  • Почему внешний скрипт JavaScript не работает?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Потому что нужно разместить скрипт в конце файла, когда все элементы будут засчитаны:
    .....
        <script src="script.js"></script>
      </body>
    </html>

    Либо в скрипте использовать событие DOMContentLoaded, которое срабатывает в конце загрузки документа:
    Код
    var select, html;
    
    function update(bgColor, textColor) {
      html.style.backgroundColor = bgColor;
      html.style.color = textColor;
    }
    
    window.addEventListener('DOMContentLoaded', e=>{
      select = document.querySelector('select');
      html = document.querySelector('html');
      document.body.style.padding = '10px';
    
      select.onchange = function() {
        ( select.value === 'black' ) ? update('black','white') : update('white','black');
      }
    });
    Ответ написан
    Комментировать
  • Как создать .reg файл (один параметр) для Windows 10 по описанию?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Создайте параметр вручную (в редакторе).
    Потом экспортируйте ветку.
    В готовом файле можете еще раз подправить или удалить, что нужно.
    Ответ написан
    2 комментария
  • Делает ли Front-end разработчик обработчики кнопок?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Переход на другую страницу - это не кнопка, а ссылка.

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

    Однако часть логики может быть сделана на клиенте. Например, перед отправкой формы (кнопка + переход на дргую страницу) на всякий случай может быть проверка введенных данных. Конечно, на сервере эти данные нужно перепроверить, но чтобы честные пользователи не ждали долго, пока данные гоняются туда-сюда, гораздо быстрее проверить их перед отправкой и сразу выдать ответ. В этом случае обработчик делает Front-end разработчик.
    Ответ написан
    Комментировать
  • Вопрос о фреймах?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Практически не актуально. Но никто не запрещает, если вам так удобно верстать сайты.
    Ответ написан
    Комментировать