TGViewer
Channel Public Channel
SpellSinger - разработчик игр на Unity

SpellSinger - разработчик игр на Unity

@spellsingergames

Привет! Я Денис и я делаю игры на Unity. В этом блоге я делюсь своим опытом в геймдеве и не только.

Навигация в закрепе: https://t.me/spellsingergames/3

Написать в личку: @sinedsem
Subscribers
548
Photos
90
Videos
22
Links
105

Showing posts older than #85 · Back to latest

Older Posts 20 shown
Post #84 859
Поспешишь - игру с багом выложишь

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

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

Чтобы поменять слой UI-элементу, для него нужно добавить компонент Canvas, выставив в нем Override Sorting. Но вот только после этого этот элемент перестаёт реагировать на клики.

Чтобы это починить, нужно вместе с Canvas’ом добавлять ещё и Graphic Raycaster. Но на тот момент я этого не знал (предполагал, что достаточно Graphic Raycaster’а на родительском Canvas), при проверке мы обращали внимание на то, как выглядит огонь, а кнопки забыли проверить. Как итог - отправили на модерацию игру с багом.

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

Хорошо, что у Яндекса есть возможность отозвать с модерации через поддержку. Хоть они и пишут, что это для исключительных ситуаций, для публикации обновления это предпочтительный вариант. Да, в этом случае ты получаешь КД на повторную отправку на модерацию, зато твои игроки не получат игру с критическим багом. Кстати, КД начитает считаться с момента отправки на модерацию, а не с момента окончания проверки.

Так что, господа, всегда проверяйте свои игры перед обновлениями.

#бурить_копать #веб_игры #яндекс_игры
  • ❤‍🔥 10
  • 👍 3
  • ✍ 1
  • 🔥 1
Post #83 680
Мы получили жалобу от игрока на Яндекс Играх

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

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


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

Чтож, это определенно пойдёт на пользу игре - будет быстрее запускаться, телефоны будут меньше греться и зарядка будет меньше жраться.

#бурить_копать #веб_игры #яндекс_игры
  • 🔥 11
Post #82 774
Итоги Демофеста VK Play 2024

Мы участвовали с демкой десктопной версии игры, больше 15 стримеров сыграли в Бурить-Копать! и остались довольны. Мы сделали нарезку ярких моментов и впечатлений от игры.

Зацените, что получилось: https://www.youtube.com/watch?v=3_Kb7MmQKkc

#бурить_копать
YouTube Бурить-Копать! Демофест VK Play 2024 00:00 GriffonTime — live.vkplay.ru/griffontime 00:39 JoraKotyara — live.vkplay.ru/jorakotyara 01:19 refecta — live.vkplay.ru/refecta 02:41 Ditoshey — live.vkplay.ru/ditoshey 03:11 단지토 (DanziTO) — live.vkplay.ru/danzito 04:25 DobriyZloy — live.vkplay.ru/dobriyzloy…
  • 🔥 10
  • ❤ 4
  • 🦄 3
  • ❤‍🔥 1
  • ⚡ 1
  • 👍 1
Post #81 811
Ещё раз про рекламу в Яндекс Играх

Да, мы вставили кучу всплывающих окон в игру (interstitial ads). Мы были бы рады не вставлять такое количество рекламы, но без рекламы Яндекс Игры не считают игру приносящей доход, не делают ей показов и она потихоньку умирает.

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

Аналогично с платным продвижением. Можно покупать трафик - но он не окупится тебе, если ты вставишь мало рекламы.

Мы приняли правила игры, и пихаем столько рекламы, сколько будет уместно на той или иной площадке.

#веб_игры
  • 👍 11
  • 😢 3
  • 🫡 2
  • ❤ 1
Post #80 933
Кажется, Яндекс оценил наше обновление, в котором мы напихали рекламы, и дал нам больше показов. Доходы тоже подросли. Продолжаем наблюдение.

#веб_игры #бурить_копать
  • 🔥 15
Post #79 1.23K
Как получить список всех символов в шрифте (История одной печеньки)

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

Недавно в аналитике мы заметили вот такие ошибки:
The character with Unicode value \U0001F981 was not found in the [Honeycombgames-bold SDF] font asset or any potential fallbacks. It was replaced by Unicode character \u0020 in text object [Username].


Очевидно, что у кого-то в нике используется символ печеньки 🍪. Мы решили порадовать игрока и добавить поддержку этого символа в наш шрифт. Художник быстренько нарисовал символ и добавил в шрифт. Но вот добавить его в TMP Font оказалось не так просто.

Дело в том, что, видимо в целях оптимизации, в Text Mesh Pro нет возможности вытащить все символы из шрифта - ты должен указать, какие символы тебе нужны. Это хорошо работает в игре со статическим текстом, но из-за лидербордов нам реально нужны все символы, что есть. Соответственно, нужно как-то вытащить список всех символов из шрифта.

До печеньки я пользовался вот этим инструментом, который нашел на форме юнити. Он хорошо работает и решает задачу, но есть одна проблема - Font класс из Unity работает максимум с 2-байтными символами, а для записи печеньки нужно 4 байта - 0x0001F36A (1f36a), соответственно и инструмент этот печеньку не находит.

Я стал искать другой вариант вытащить все символы из шрифта, и в итоге в том числе с помощью ChatGPT родился вот такой скрипт. Я запускаю его из под Ubuntu (WSL). Он использует команду ttfdump из пакета texlive-binaries и далее с помощью awk преобразовывает вывод ttfdump в нужный формат списка диапазонов всех символов, которые есть в шрифте.

ttfdump font.ttf | grep 'startCharCode' | awk '
{
split($0, a, "[ ,=]+")
group = a[2]
start = a[6]
end = a[8]
if (NR == 1) {
prev_start = start
prev_end = end
} else {
if (start == prev_end + 1) {
prev_end = end
} else {
if (prev_start == prev_end) {
printf("%X,", prev_start)
} else {
printf("%X-%X,", prev_start, prev_end)
}
prev_start = start
prev_end = end
}
}
}
END {
if (prev_start == prev_end) {
printf("%X\n", prev_start)
} else {
printf("%X-%X\n", prev_start, prev_end)
}
}' | tr 'a-f' 'A-F'


Для нашего шрифта мы получили вот такой результат (заметили в конце 1F36A? это и есть наша печенька):

00,0D,20-7E,A1-161,164-17E,18F,192,1A0-1A1,1AF-1B0,1FA-1FF,218-21D,232-233,259,2C6-2C7,2D8-2DD,37E,384-38A,38C,38E-3A1,3A3-3CE,401-40C,40E-44F,451-45C,45E-45F,490-491,1E80-1E85,1EA0-1EF9,2013-2014,2018-2019,201C-201E,2020-2022,2026,2030,2039-203A,2044,2070,2074-2079,207D-207E,2080-2089,208D-208E,20AB-20AC,20BD,2116,2122,2126,212E,2202,2206,220F,2211-2212,221A,221E,222B,2248,2260,2264-2265,25CA,E000-E008,E184,E300-E309,E310-E319,E320-E321,EFED-EFEE,EFF1-EFF3,EFF5,EFF7,F629-F634,F638-F64C,F64E-F66C,F6AE-F6BD,F6C3,F6C9-F6D8,F6DC,F6DF-F6E8,F730-F739,FB00-FB04,1F36A


Для справки: команда ttfdump в моём случае выводит информацию о группах вот в таком формате:
Group 0 : startCharCode = 0, endCharCode = 0, startGlyphID = 1
Group 1 : startCharCode = 13, endCharCode = 13, startGlyphID = 2
Group 2 : startCharCode = 32, endCharCode = 34, startGlyphID = 3
Group 3 : startCharCode = 35, endCharCode = 35, startGlyphID = 216


P. S. В этом посте я использую слово "символ" вместо "глиф", хотя, конечно, "глиф" это правильное слово.

#тайные_знания
  • 🔥 12
  • 👍 3
Post #78 779
Модерация Яндекс Игр по выходным

Вот вам небольшой инсайд. Не смотря на то, что Яндекс Игры намекают, что по выходным модерация не работает, это не так. Мы вчера (а вчера было воскресенье) отправили обновление на модерацию в 16:00, а в 23:30 оно уже было опубликовано. Возможно, тут играет роль, что это именно обновление, а не новая игра, но всё равно прикольно.

Кстати, за все модерации #бурить_копать мы не получили ни одного отказа, всегда проходили с первого раза. Так что либо Яндекс действительно улучшил процесс, либо нам повезло, либо возможно те, кто жалуются на модерацию, действительно не соблюдают требования (довольно адекватные кстати).

#веб_игры
  • 🔥 13
Post #77 763
Мы доделали крупное обновление для Бурить-Копать! За выходные постараемся выловить все баги и в понедельник отправим на модерацию.

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

В общем, ожидаем роста по всем метрикам, и надеемся наконец-то быть замеченными Яндексом. Если и это не поможет, то я не знаю, что тогда.

P. S. кстати, на удивление периодически вылезающая фулскрин реклама после левел-апов меня даже не сильно бесит, когда я сам играю. Думаю, если принудительно не останавливать геймплей с обратным отсчётом типа "Реклама через 3..2..1...", то её вполне можно показывать и не бояться за удержание.

#бурить_копать
  • 👍 6
Post #76 832
Что дороже в Яндекс Играх, fullscreen или rewarded?

В РСЯ можно посмотреть CPMV и eCPM.
eCPM – это стоимость одной тысячи показов рекламных блоков
CPMV – это стоимость одной тысячи видимых показов рекламных блоков.

Так вот, по eCPM фуллскрин реклама в два раза дешевле чем ревардед, а по CPMV даже дороже. Почему так?

Ответ в определении видимых показов - видимый показ, это тот, который был на экране больше 2х секунд. Так вот, 70% фуллскрин рекламы игроки закрывает быстрее, чем за две секунды, поэтому за неё не платят.

Выводов нет, просто инфа, надеюсь кому-то будет полезной.

#веб_игры
  • 👍 3
  • 😨 1
Post #75 830
Как мы ускоряли бурение твердых блоков

Привет, сегодня пост про гейм дизайн. Мы пытаемся убрать все скучные элементы из игры. Расскажу про один такой элемент.

В нашей игре чем больше глубина, тем тверже блоки, тем дольше их нужно бурить. Когда игрок встречает блоки, уровень которых больше уровня бура, время бурения начинает расти экспоненциально. На высоких уровнях ты мог бурить 1 блок по 10 секунд, что очень скучно.

Идея, как это решить, лежит на поверхности - пусть твердые блоки всё равно бурятся быстро, но топливо будет тратиться сильно быстрее. А вот с реализацией возникли сложности.

Сначала мы хотели добавить кнопку ускорения. Нажимаешь - начинаешь бурить в два раза быстрее, но и топливо тратится в два раза быстрее. Но такую кнопку очень сложно сделать:
1) Игра у нас играется и на мобильном, и на ПК, и если на ПК нет проблем, то на тачскрин её добавить тяжело, чтобы она не мешалась и удобно нажималась.
2) Сложно обучить игрока её нажимать. Скорее всего, существенная часть игроков так бы ей и не пользовалась, а значит проблема не решена. (Напоминаю, мы делаем игру для максимально широкой аудитории)
3) Должна ли эта механика иметь штраф по топливу? Если да, то это автоматически означает, что игроку будет не выгодно ей пользоваться, и он не будет ей пользоваться. А если нет, то зачем тогда вообще выключать это ускорение?

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

На наш взгляд, получилось супер удобно, приходите поиграть, когда зарелизим это обновления.

#геймдизайн #бурить_копать
  • 👍 5
  • 🔥 4
Post #73 913
Переделываем управление на мобильных в Бурить-Копать!

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

Ссылка на черновик: https://yandex.ru/games/app/258901?draft=true&lang=ru
Яндекс Игры Бурить-Копать! — динамичный 2D-рогалик про поиск сокровищ, улучшение бура, мощные комбинации умений и соревнование за максимальную глубину.
Post #72 1.29K
Как подписаться на изменения ассетов?

При разработке кастомного редактора с помощью UI Toolkit мне понадобилась отследить, когда я делаю какие-то изменения в ассетах (меняю баланс в SO), чтобы перерисовать UI. Оказалось, в Unity есть подходящее событие:


ObjectChangeEvents.changesPublished


Event that is raised once per frame if any undoable changes have been recorded.

All undoable changes to any loaded object are recorded in a stream of events and published once per frame. Subscribe to this event to react to any of these changes. The changes appear in the stream in the order that they were applied. Note that the stream passed to your callback is a temporary object owned by the engine. Do not Dispose it and make a copy if you intend to retain it for longer than the duration of your callback.


#ui #тайные_знания
  • 🔥 3
  • ❤ 2
Post #71 1.27K
Мы все поняли про Яндекс Игры и free-to-play в целом

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

Игра, не знаю точно в силу каких причин, не понравилась рекоммендеру Яндекса. После выхода из новинок мы получали какое-то минимальное количество показов (~300 показов иконки и ~400 обложки).

Мы психанули, и оплатили продвижение на 9 000 рублей на неделю (заплатив при этом 10 800, при оплате берут НДС 20%). Спустя неделю, мы получили такие показатели кампании:
Показы: 377 232
Клики: 6 662 (1,77 % CTR)
Конверсии: 5 622 (84,39 % CR)
CPA: 1,76 руб
CPC: 1,49 руб

Конверсией в Яндексе считается привлечение игрока, который провел в игре больше 5 минут. Соответственно, привлечь одного такого игрока нам стоит 1.76 рублей.

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

Итак, мы сейчас готовим обновление в котором мы сделаем нашу игру по настоящему free-to-play, а именно добавим как можно больше монетизации. В первую очередь добавим interstitial (фуллскрин) рекламу после левел-апов и в самом начале игры (да-да). Именно это позволит окупить закупку траффика. Кстати, по нашим показателям, стоимость показа interstitial рекламы всего в два раза меньше rewarded, а показывать их можно намного чаще. Также планируем добавить донаты, но на это потребуется больше времени (добавим скины для бура).

Всех тех, кто желает играть без рекламы, мы приглашаем добавить нас в вишлист на VK Play, в десктоп версии рекламы не будет, она будет buy-to-play.

Как обычно, готов пообщаться в комментариях, ответить на ваши вопросы, велком)

#бурить_копать
  • 🔥 9
Post #70 733
Post #69 821
Рейтинг 57 - это приговор?

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

Почему-то Яндекс вообще не даёт нам трафика. Мы получаем по 300 показов иконки и 400 показов обложки в сутки. Это невероятно мало. Все остальные метрики у нас либо прекрасные (например, показы Sticky и Rewarded на уровне топов), либо просто хорошие (средний плейтайм 30 минут, ретеншен 1 дня 15%, 3 дня 3%.)

Одной из возможных причин может быть в том, что мы выложили игру с не очень хорошей иконки обложкой, и не очень хорошими скриншотами и геймплейным видео. Сейчас мы это всё исправили, но, кажется, время немного упущено.

От отчаяния я даже написал в поддержку ЯИ с вопросом "почему так мало показов", жду ответа.

В комментариях покажу метрики.

#бурить_копать
  • ⚡ 2
  • 🔥 1
Post #68 844
Яндекс сломал аватарки в лидербордах

Просто держу вас в курсе. Раньше метод getAvatarSrc возвращал корректный URL, а теперь только часть. Ждём, пока починят.

#репорчу_баги
  • 🔥 3
Post #67 858
Post #66 722
Дополню: следующая цель - дождаться, когда игра получит оценку рейтинга и посмотреть, изменится ли как-то траффик.

И ещё завтра-послезавтра увидим CTR метрики новых обложки и иконки (мы залили их 3 дня назад, но метрики Яндекса очень сильно отстают)
Post #65 754
Мы больше не в новинках

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

Насколько я вижу, у нас хорошие показатели по плейтайму, возвращаемости игроков, количества показов рекламы. Но траффика от Яндекса мы практически не получаем.

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

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

Кроме того, ожидаемо далеко не всем игра нравится, критикуют гейм дизайн и баланс, мы конечно исправляем очевидные проблемы, но есть очень много спорного фидбэка - игроки рассказывают, что им не нравится, но не факт, что это не нравится большинству. Нужно думать, возможно делать АБ-тесты, что конечно бессмысленно на аудитории в 100 человек/день.

В комментарии скину скриншоты метрик, и готов ответить на вопросы, а так же выслушать советы.

Доход за неделю - 500 рублей.
  • 👍 8
  • 💔 4
  • 😢 1
Post #64 1.02K
Воронка - самый важный график

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

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

#аналитика #веб_игры #бурить_копать
  • 👍 4
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →