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

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

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

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

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

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

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

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

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

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

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

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

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

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

14 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, поэтому даю ссылку так

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

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