Phaser - полезные советы

Часть 39: Динамическая работа с графикой на низком уровне

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

пример черно белых иконок для закрытых ачивок

На сцене с выбором урока, мне пришлось переводить цветную икоку недоступного урока в монохромный цвет (синий, зеленый и оранжевый). По идее можно было создать свой фильтр, но мне не хотелось добавлять три новых файла. Позже подумал воспользоваться Photoshop-ом, тем более таких иконок всего 64, но это читерство =) В итоге разобрал работу с графикой на нативном html5 уровне. Воспользовался globalCompositeOperation свойством при отрисовке спраита на canvas. Несколько строчек кода и очень высокая скорость, если кому нужен код, пишите в коментах, я не жадный, поделюсь =)

программное изменение цвета иконок для закрытых уроков

Ну и раз я начал говорить о графике то стоит упомянуть два новых метода для Phaser.Text объектов. Один из них умеет грамотно выравнивать текст (исходя из его физического размера, а не размера самого шрифта), а второй метод подгонять размер шрифта, что бы текст максимально занимал выделенное под это пространство.

разный размер шрифта под элементы интерфейса

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

В «свободное» время играл на планшете кликеры. Очень полезно иногда отвлекаться от работы, так как никогда не знаешь где найдешь оригинальное решение =) У меня в панельках не помешались числа больше 999. Но как оказалось, игроки очень хорошо понимают числа : 25к и 7м. Что дало мне возможность отображать очень большие числа у себя на мелких панелях.

О самих кликерах я могу сказать так — это игры однодневи. Хотя я установил более десяти разных и завис в нескольких из них, но длилось это не более чем нескольких суток или часов. Для себя выписал много интересного, к каким уловкам они прибегают, что бы скрыть тот факт, что достичь цели в кликере не реально =) Те что мне НЕ понравились были либо слишком сложные для быстрого вникания (плохо вводили игрока в процесс) или очень просто просчитвылись (для достижения цели нужно несколько месяцев или лет).

Да и какой смысл играть кликер более одного дня… сначала шахта была золотой, а потом стала платиновой… вся разница в цвете! Я что идиот? Что бы мне поменяли обертку и я по второму кругу играл уже пройденную игру… хотя может сейчас игроки уже не те, что были раньше (у нас часто даже карты в ходилок не было, не говоря уже о прямом отображении квестов на карте). По этому мне будет очень сложно создать игру для такого игрока.

В заключении могу сказать: кликеры это хороший способ заработать деньги. Но так как их ни кто не играет более чем 2-3 дня, то не стоит рассчитывать формулу на месяцы. Думаю разумней рассчитать весь процесс на одну неделю. Так игрок останется доволен, что прошел игру… особо «умные» по любому будут играть месяц =)

Вроде на этом все… не осталось места для Pixi и Unity. Может в следующий раз, всем спасибо!

27 thoughts on “Часть 39: Динамическая работа с графикой на низком уровне

  1. Наверное, стоило бы сначала самому написать то, о чем говоришь, но расскажу тебе просто идею

    Что если основу «idle clicker» завернуть в сеттинг, который вообще никогда никем не использовался?
    Суть в том, что у нас есть модель какой-то деятельности. В ней нужна сначала личная работа, личное вложение усилий. Затем можно приобрести апгрейды, которые будут делать работу автоматически.

    Это может быть симулятор автомойки, парикмахерской, фермы, разработчика игр, развития цивилизации, героев магии и меча (сначала ты вручную кликаешь по замкам, затем за тебя кликают герои ))

    По поводу монотонности прогресса ты правильно заметил. Мой мозг тоже чувствует здесь фундаментальную наколку и бросает кликеры после 1 дня. Иногда только захожу раз в несколько месяцев, чтобы «снять урожай и потратить» — впрочем тоже довольно тупая операция.

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

    Ок, может быть, можно что-то придумать, чтобы изменить эту проблему с монотонностью? Может быть, кто-то из нас станет родоначальником жанра или просто чертовски богатым? ))

    PS: я немного читал про теорию и механику кликеров. Они пытаются удерживать игроков за счет добавления этажей в свою логику, добавления «метагейма», как они называют. Заключается в том, что ты можешь снести весь прогресс (обнулить героя, начать все заново), но получить какие-то постоянные бонусы на все последующие игры. Это все равно решается в лоб и тупо, но позволяет увеличить время игры.

    PPS: что отделяет кликер от нормальной стратегии, от нормального симулятора, от нормального путешествия в подземелье с драконами? Мне кажется, есть какие-то минималистичные ходы, которые может предпринять начинающий разработчик, чтобы реализовать что-то большее, чем тупой идл кликер. Но сначала, конечно, надо сделать хотя бы тупой. Я буду делать его с мыслями, которые уже изложил выше — поэтому надеюсь, что мне будет очень интересна игра даже в первой ее версии.

  2. Zaxx, ты правильно делаешь что делишься своими соображениями. Именно обсуждение дает возможность получить новую идею или заметить подводный камень. Вот отвечая на твой вопрос у меня появилась интересная мысль. Ты писал, что надо изначально заставить игрока кликать. Я видел несколько таких кликеров и они у меня долго не задержались. Ведь монотонно кликать это скучно. А что если сделать так, что награда за клик будет расти если пользователь не делает паузу? А еще лучше повышать награду за скорость клика… тогда простые клики уже мини игра и сложно остановиться, так как потеряешь бонус за не остановку и появляется желание еще немного, еще немного покликаю и точно остановлюсь =)

    Я когда прочитал отчет крупной аналитической компании о причине популярности кликеров, то понял что этот жанр очень похож на RPG. В обоих этих жанрах ты прокачиваешь игрока и принимаешь решение, что сейчас купить — кольцо зашиты или мечь который наносит больше урона. Вот только разработчики кликеров не учли, что в RPG меняется ландшафт и есть сюжетная линия, которая удерживает игрока и не дает ему соскучится. Строить дом 10 это интересно, но когда тебе на каждый новый этаж нужно 1-3 дня, то становится уже не так интересно играть. Тем более ты осознаешь что 99 и 100 этажи друг от друга отличаются толлько цифрой этажа =) Тут только если соревнование с друзьями заставит тебя тупо кликать дальше. Я же считаю что игру пользователь должен играть месяц, а то и год. А под это подходит только игры с автогенерацией уровня: судоку например, три совпадения или стратегия.

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

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

    Наконец последний твой вопрос — мне кажется, отличие кликеров от полноценных игр в простоте. Ведь мобильным игрок пользуется когда не сидит дома. Игру часто запускают когда ожидают своей очереди где-то или просто в транспорте своей остановки. Игрок уже устал от работы или от жизни =) ему хочется расслабится и представить себя менеджером, который управляет жизнями, может достичь успеха, который в реальной жизни достичь не так просто. А ты как думаешь Zaxx, зачем люди играют в идл кликеры?

  3. Говорят, сам факт прогресса привлекает. Легкого и мгновенного прогресса — ты делаешь минимальные движения и у тебя сразу результат.

    Затем включается удовольствие от получения халявы (когда начинают работать автоматические аналоги клика)

    так это описывают в статье https://gamedevelopment.tutsplus.com/articles/numbers-getting-bigger-the-design-and-math-of-incremental-games—cms-24023

    возможно, есть и другие причины, но с этими двумя — согласен

  4. Спасибо, надо будет посмотреть ссылку, сейчас немного отвлекся другим проектом =)

  5. Прочитал первую половину статьи (пришлось только ее погуглить, так как WordPress ее повредил немного). Понравилась формула расчета роста. А вот с идей скрывать от игрока фишки, не совсем согласен. Но возможно имеется в виду сюрпризы, которые в нужно время неожиданно взбодрят игрока. Самое сложное, сделать простой интерфейс но с красивой графикой. В принципе об этих чувствах я уже писал… когда удалял кликер, так как нудно было разбираться в таком большом количестве окошек.

    В заключение получается, что успех кликера в том, что бы найти баланс между автоматизацией и ручным управлением. В кликере шахты например если тебя нет в игре то заработок ниже… если ты управляешь рабочими (от 3 до 10 минут) то повышается КПД добычи. Это как бы и автомат и в тоже время ты тоже чем то занят, а не просто ждешь. Надо читать дальше. Вот обидно только то, что читаешь, все нравится, а как начинаешь работать над своей игрой так все забываешь.

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

  6. Первый отчет на Zaxx.ru под названием Idle Click Game Челлендж 001

    Пока думаю над идеей.

    Очень вдохновил пример Idle Oil Tycoon (посмотри скриншот) — у игры с такой графикой и больше 500 тысяч закачек. Это значит, что графика может ничего не значить, если есть идея. Но я думаю, что это работает только со взрослой аудиторией. Зато, по идее, там реклама должна быть дороже )

  7. Zaxx я последнее время не верю статистике. Ее часто накручивают… даже у нас в Тайланде случайно накрыли недавно такую вот китайскую контору. Их сначала подозревали в нелегальной деательсности кол центра (на это надо получить тут лицензию), но как оказалось после облавы, у них там было свыше 500 мобил и они промышляли установками и лайками =) Так это установки и лайки к которым ни кто придраться не может. И сколько в мире таких левых мест? И слышал про одного у которого 10к активных симок… Но возможно я слишком преувличиваю и все на самом деле так просто.

  8. кстати, про эти фермы
    в 2016 я работал в компании, занимающейся разработкой под Android
    там были хорошие, умные ребята, секущие в разработке по сравнению со мной просто как боги

    но когда я им рассказывал, что существуют такие фермы (с реальными телефонами) — они смотрели на меня, как на придурка, и говорили
    — Ты дебил, что ли? Зачем фермы, если можно все эмулировать?

    Они в принципе не верили, что такое может быть, думали, я упоролся.

  9. Zaxx главное не стать как они. Надо смотреть кто что делает и всегда задавать себе вопрос ЗАЧЕМ =) За накрутку аппликацию пошлют в бан, если раньше за этим не особо следили, то сейчас намного строго. Из той же оперы поведенческий фактор для сайта. Многие заказывают что бы пользователи находили их сайты, заходили и реально проводили время. Гугл в этом плане очень хитрый… мы как то давно разбирали его обфусцированный код для регистрации почтовых ящиков. Так вот он учитывал не только какие клавиши ты нажимаешь, но и в какой последовательности и с какой задержкой + движение мышки и на базе этих действий генерировали спец ключ с данными =) Нам тогда все же удалось его сгенерировать, но на следующей странице нас ждал новый пазл =) Так что если и брать левые коменты, то лучше за деньги и с реальных девайсов. Где можно попросить что бы аппликацию не удаляли или запускали Н раз в сутки.

    На счет моей игры — поправил ошибку с полным экраном. Добавил поддержку кнопки «назад» для андроида, так как ней все очень активно пользуются что бы закрыть окошко или отменить последнее действие. Пришлось придумать нестандартное решение, но под конец все заработало. Сэкономить на генерации окошек не получилось, там проблема в том, что если хранить все в localstorage в json формате, то теряешь секунду на чтении и декодировке, если же урезать данные и ключ массива хранить в виде md5 то теряешь время на генерацию этого самого md5. Ни один вариант не дал скорости выше 1.3сек, так что оставил как есть.

    Вот где реально можно сэкономить так это на clearworld = false при показе сцены!!! Вот только логику игры приодеться менять… я же пока к этому не готов. Но из за вот этого очищения у меня был баг на который я потратил пару часов. Дело в том, что при старте сцены, очишается game.world но вот все свойства самой сцены вроде остаются. А я там хранил группу магазина и других попапов. Вот группа есть, а все child удалены + удален у группы указатель на game объект. Так что в Phaser еще много чего интересного и подводного =)

  10. Спасибо, что пишешь все эти технические мелочи — они могут очень сильно помочь потом

    Мотивированные инсталлы в принципе покупать не думаю. Я в курсе, что роботы Гугла (и Яндекса) становятся все сложнее и умнее. Верю, что если будем делать качественно, постоянно и с душой — будут и инсталлы (главное, не забывать большие описания, как Эльспер учил, иконки и в нашем случае — веб-версии где можно)

    По NewGround и Kongregate — я посмотрел интерфейс добавления своей игры, они не изменились с прошлых времен. То есть просто заливаешь архив с HTML5-игрой (как точно формировать архив , еще не пробовал), ставишь галочки, пишешь описания, добавляешь скрины, отправляешь и ждешь аппрува.

    Ограничение есть на 150 мегабайт.

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

  11. Вот сегодня нашел очередной баг Phaser-а. Не критично, но по какой-то причине onUpdateCallback() событие не срабатывает, если tween запускается сразу из create() метода. Но при этом событие onComplete() всегда вызывается. Я проверял какие параметры передаются tween анимацию и все верно… она выполняется, значения обновляются, но данное событие не срабатывает… Решение простое, запускать tween анимацию в методе create() но с 500мс задержкой.

    На счет сайтов — размер 150мб это нормально. Хотя игра может быть и больше, но ведь она не вся подгружается. Думаю они сделают исключения, если обосновать. Я вот только не пойму, как их рекламу туда добавлять. Или они саи будут временно приостанавливать ее и показывать баннер во весь экран. Твои игры мне понравились, особенно с скелетами, это мой жанр =) Странно что рейтинг не высокий, возможно надо все же добавлять в игру туториал… а то игрок посмотрел, не понял правила с первого раза… есть конечно хэлп, который и я сам кликнул не с первого раза =) Так что все же добавлю пару простых инструкций в свою игру перед запуском. Не хочу что бы народ минусовал. Хоть для меня все и просто, но я автор и знаю что где и зачем, а игрок должен гадать (не хорошо)

    Вот про описания — я Элспера спрашивал, он сказал писать много нужных ключевиков. Неужели все так просто? Гугл за большое количество ключевиков на сайте, минусует… неужели в описании нет таких правил? Кстати, за твои игры тебе издатель платит или это чисто эксперимент был?

    п.с. читал твой лаив журнал, понравилось про гугл переводчик, хотя стало как-то не по себе, но по другой причине. Я часто его ловил на ошибке и они были такого характера «бог» = «дьявол», убирал слова «любовь»… если это реально нейронная сеть, то она создается на базе того, чем ее кормят… а учитывая что злых людей больше, не получим ли мы злой искусственный интеллект? Элспер не любит говорить на такие темы, я как то подымал вопрос. А тебя как догадываюсь больше интересует тема мир после того как мы его в конец загадим =) Наверняка играл Биошок и Бордерленд (во втором ни как к управлению не привык в машине).

    п.п.с. А стругацких Трудно Быть Богом читал?

  12. про ключевики, возможно, у Эльспера талант к текстам и чуйка внутренняя хорошая. Или тема idle такая жирная. Я пробовал менять тексты, добавлять ключи по bubble shooter (у меня есть игра про шарики стрелялки в Google Play) — эффекта не заметил. Наверное, слишком стесняюсь или не умею )

    с флеш-играми у меня был эксперимент, так как до 2014 траффика на сайтах хватало, чтобы вообще не думать о развитии. Интересовало, много ли я могу привлечь траффика на свой сайт, сильно сработает ссылочное. Ну, если в своей игре стоит кнопка со ссылкой на твой сайт (это, кстати, допускалось и допускается сейчас), и народ ее охотно ставит на свои сайты — траффик небольшой всегда есть. Мне просто не удавалось «поймать волну» и придумать что-то, что вызвало бы ажиотаж.

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

    про гугл-транслейт — да, есть у меня подозрение, что интеллект с этого и начнется, со слов
    и не только у меня. Вот тут есть подборка материалов по теме — там люди думают, что это похоже на «подсознание» — evernote.com/shard/s40/sh/14e8f803-c70d-4e0c-8c46-97626a64116e/47823bcf16f6047f

  13. Ты у меня писал, что сомневаешься в формате — «под мобильный и вертикальное».

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

  14. Трудно быть богом — читал, но очень давно. Тогда показалось очень крутым. Сейчас вижу, что герой мог бы поступать как-то хитрее и обыграть всех. Но возможно, это объясняется тем, что люди светлого будущего просто уже давно отвыкли от уровня древнего коварства — так что даже среди специалистов нет особых мастеров по интригам, коварству и политике. Это и в «Жук в муравейнике» тоже проскальзывает.

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

    Читал сегодня отчет про туризм на Алтае — даже там туристы ухитряются пропадать без вести.

    img-fotki.yandex.ru/get/875526/50083820.646/0_126512_a24f55dc_orig

    не знаю, вставится ли тег img, поэтому даю ссылку так

  15. С трафиком — помню когда я пришел, народ с ностальгей вспоминал дни, когда в день пару тысяч вечно зеленых зарабатывали =) Я тогда на них смотрел как на богов… а все дело было не в их гениальности, а в большом большом спросе и отсутсвии предложения. Раньше гугл всем присылал трафик, потом пошли доры, позже ревараит, теперь все кому не лень сайт себе делатют. Надо за это поблагодарить WordPress… вообще за мое время в интернете много компаний паразитов было. Пришли, нагадили и ушли с провалом… но ведь назад на свое место юзера не вернешь.

    Но не будем о грустном, мы еще в хорошее время пришли, а вот те кто сейчас подтягиваются, это просто не реально. Помню было модно — стартап, сейчас что не программист, то стартап =) Zaxx думаю надо делть то, что самому нравиться. Элспер именно так и делает… кликеры это его любимый жанр. А так надо брать одну тему и разбирать ее глубоко, либо брать массой… штамповать дешевки по одной игре в неделю (если есть дизайнер). Трафик это и есть главный способ заработать. Но если продукт полезный и игрокам нравиться, то они не скупяться поделиться. По этому надо просить не много и за реально нужное игроку.

  16. Zaxx а ты как думаешь, реально ли найти решение? Ведь помнишь там разговор «Румата отступил от окна и прошелся по гостиной. Это безнадежно, подумал он. Никаких сил не хватит, чтобы вырвать их из привычного круга забот и представлений. Можно дать им все, и все равно по вечерам они будут собираться на кухне, резаться в карты и ржать над соседом, которого лупит жена. И не будет для них лучшего времяпровождения. В этом смысле дон Кондор прав: Рэба — чушь, мелочь в сравнении с громадой традиций, правил стадности, освященных веками, незыблемых, проверенных, доступных любому тупице из тупиц, освобождающих от необходимости думать и интересоваться. А дон Рэба не попадет, наверное, даже в школьную программу. «Мелкий авантюрист в эпоху укрепления абсолютизма».» Я этот открывок знаю слово в слово наизусть =)

  17. вопрос отрывка ведь не в том, что нет решения — вопрос в том, что герой к нему не готов и не умеет

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

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

    Вот примерно что я думаю о поиске решений )

  18. Ты писал обзор инструментов, с помощью которых организуешь работу, где-нибудь?

    Я бы хотел посмотреть

  19. Я столкнулся с тем, что tween.to с перемещением часто глючит и пускает в обратном направлении

    tween.to(
    {y: this.floatLimitY, alpha: 0},
    this.duration,
    Phaser.Easing.Quadratic.In
    );

    Текущий y всегда больше floatLimitY
    Но твин все равно пускает анимацию в обратном направлении

    Не знаешь, в чем может быть дело?

  20. Они разбросаны по разным постам, но я тебе могу привести их названия тут: ShoeBox халявный пакер, TexturePacker вот этим я пользусь из за поддержки папок, Tiled редактор сцен для платформеров но я его превратил в IDE. Если же ты про мою сборку, через grunt то про это можно почитать тут Часть 7: Сборка игры на Phaser: grunt, browserify, babel

  21. У меня таких проблем не возникало НО так как ты используешь y то тебе надо знать, что это жесткий параметр и он может иногда быть не верным. Я бы называл его фиксированныи числом… но если ты паралельно меняешь координаты группы, или просто анимируешь обект допустим zoom, то у тебя будет магия =) У меня такое было с кнопками которые делали горизонтальный shake при нажатии, если они были заблокированы (жест НЕТ)… Так вот нажатие у меня zoom in и zoom out с эффектом резинки, вот при этом x,y коодринаты пересекались и кнопка уходила хрен знает куда, вместо того, что бы вернуться в исходное положение. Я решил проблему через восстановление исходной координаты, которую сохранил перед начало эффекта. Можно методом научного тыка… замени y на left. Последний высчитывается и при этом учитывается все его трансформации

    п.с. Если возникают технические сложности, то пиши на почту админ сабака html5-game.ru (у меня программа автоматом ее проверяет)

  22. По поводу tween я разобрался и написал у себя
    я при каждом клике задавал своему твину новый to — а это добавляло очередную анимацию
    поэтому сначала ничего не глючило, затем, когда из пула появлялись первые повторные пузырьки — им добавлялся еще один твин, кроме глюков с координатами было увеличение времени общей анимации пузырька… короче, полный бардак был

    про смену y в группе учел — у меня вполне может быть аналогичный баг (потом), если я забуду, что у меня элементы сгруппированы. Я использовал child, но принцип будет тот же.

  23. Zaxx там самая большая проблема остановить анимацию по середине и начать новую. Вот к примеру эффект нажатия на пноку. При этом происходит zoom out, потом zoom in и наконец zoom original. Если пользователь нажмет на кнопку повторно, пока анимация в прогрессе, надо сначала остановить цепочку (ведь это не один tween), потом восстановить размеры и координаты, а потом начать новую анимацию. Все супер НО что если над кнопкой сразу два эффекта «нажатия» и «запрет» (горизонтальное колебание). Вот тут и начинается магия… у меня баг не всегда себя проявлял, а только через раз =) что говорит что это ошибка Фейзера или пересечение двух алгоритмов анимации (уже не помню как поправил, но в каком-то посту я об этом писал)

  24. Чтобы не страдать, люди в играх часто делают «блокирующую анимацию» — то есть на момент анимации интерфейс (с анимацией) перестает реагировать на действия пользователя

    посмотри на игры match3 — там это частый паттерн. Пока анимация не отыграет (все взрывы на поле), пользователь не может ничего сделать.

  25. Я так и сделал… Элспер осудил такой подход. Да и я сам видел, как бета тестеры начинают кликать до того, как закончится отображения вариантов. Но тормозить можно легко, точней пропускать всю анимацию и сразу переходить на последнее состояние. У меня вот такое решение:

    child.tween.onStart.dispatch();
    child.tween.stop(true);
    for (var key in child.tween.properties)
      child.tween.target[key] = child.tween.properties[key];

    первая строка нужна, так как на старте анимации у меня висит обработчик, который делает кнопку видимой. Делать кнопку видимой сразу нельзя… ведь каждая следующая отображается с задержкой в 200мс.

    object.scale.setTo(0.6);
    var tween = this.game.add.tween(object.scale)
      .to({x:1.2, y:1.2}, 250, Phaser.Easing.Sinusoidal.Out, false, delay)
      .to({x:1, y:1}, 500, Phaser.Easing.Back.Out);
    tween.onStart.add(function(){object.alpha = 1});
    if (typeof callback === 'function')
      tween.onComplete.add(callback, callback_context);
    tween.start();
  26. ну, когда анимация длинная — пожалуй надо думать о том, чтобы не она блокировала пользователя, а он ее прерывал

    в match3, который я сейчас доделываю вместо кликера, обычно анимации по 250 ms максимум
    по идее, блокировка важна только для
    1. свопа фишек
    2. их падения

    то есть всех моментов, когда они меняют положение

    для взрывов и генерации — можно делать неблокирующую анимацию
    (в модели уровня тип фишки уже изменился, анимация просто показывает переход)

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *