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 #23 · Back to latest

Older Posts 17 shown
Post #22 1.12K
VFX-эффект вспышки

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

Идея заключается в следующем:
1) В момент взрыва запускаем Particle System
2) В этой Particle System будет всего 1 частица
3) Эта частица будет резко увеличиваться в размерах
4) Изначально она будет прозрачной, потом наберёт цвет и снова уйдёт в прозрачность
5) Для достижения эффекта освещения, используется Additive шейдер.

Для меня самым неочевидным была мысль о том, что в системе частиц может быть только одна частица, а использовать эту систему мы будем ради настроек Size Over Lifetime и Color Over Lifetime. Ну и про Additive шейдер я ничего не знал, а теперь знаю.

Вы можете забрать себе пример эффекта в формате unitypackage, он ждёт вас в комментариях к этому посту.

#vfx
  • 🔥 5
  • 👍 1
  • 👎 1
Post #21 1.32K
Закладки и последние выделенные [Бесплатные расширения для Unity!]

Два окна, которые открываются из меню Window/SpellSinger/Bookmarks|Recent Selections

Bookmarks - панель закладок:
- Можно добавить в закладки любой ассет из проекта (правая кнопка мыши - Add to Bookmarks)
- Можно быстро найти или выделить любой ассет из закладок
- Порядок закладок настраивается.
- Закладки запоминаются при перезапуске Unity.

Recent Selections - последние выделенные:
- Список последних выделенных ассетов и объектов на сцене
- Можно быстро найти или выделить любой объект из истории
- Можно сразу перетащить недавно выделенный объект в нужное поле в инспекторе или прямо на сцену - потяните за квадратик справа.
- Можно закрепить объекты вверху списка нажав на кнопку слева

Специально ради этого поста я создал Unity пакет, который вы можете добавить себе в проект по ссылке:
https://github.com/SpellSingerGames/bookmarks-and-selections.git
[Window/Package Manager/+/Add package from git URL...]

#selfmade
  • 🔥 9
  • 👍 2
Post #20 515

Forwarded from Александр Егоров

Попал в тизер документального фильма про отечественный геймдев!

Паша с Серёжей очень крутые ребята. Уверен, что и фильм получится знатный.

Ребята приглашают к участию в проекте разработчиков любых игр. Переходите по ссылке и оставляйте заявку со своим проектом.
Post #19 485
Саша хвастается, что он попал в тизер.. А я тоже попал, причем крупным планом 😝
  • 🔥 3
Post #18 555
Работа с Text Mesh Pro из кода

Недавно мне потребовалось изменить настройки TMP Text (в частности margins) динамически, из кода. К этому TMP Text был применен Content Size Fitter со значением Preferred Size. У меня долго не получалось заставить Content Size Fitter учитывать измененные параметры TMP Text. Делюсь решением.

Вот так - неправильно:
text.margin = newMargin;

А вот так - правильно:
text.margin = newMargin;
text.SetLayoutDirty();

#ui
Post #17 559
Телефон греется, когда долго играешь в Бурить-Копать!

Недавно у меня было довольно много времени, чтобы потестить Бурить-Копать! в телефоне, и спустя какое-то время телефон стал греться. Не сильно, но неприятно. Как доделаем основное, будем искать причину.

Вероятные причины:
- Слишком много блоков отображается в мире
- Слишком большой вес текстур
- Слишком большой фпс
- ???

Будем делать "бинарный поиск", выключать половину фич в игре и сравнивать, насколько телефон греется. Stay tuned, чтобы узнать результаты)

#performance
  • 🔥 2
  • 👀 1
Post #16 815
Новый проект.webm4.6 MB
Из глобальных координат в координаты Canvas'а.

Задача: сделать так, чтобы собранный ресурс летел в соответствующую иконку на Canvas'e. Камера двигается, соответственно координаты Canvas'а в мире постоянно меняются.

Решение:
1) Как только ресурс собран, сразу же засовываем его в Сanvas. (вернее, создаем на холсте Image с тем же спрайтом, что был в SpriteRenderer'е. Тут работает просто задать ему тот же transform.position, что был у ресурса. Image будет прямым ребенком Canvas'а
2) Двигать Image будем через localPosition внутри Canvas
3) Определить целевые координаты. Вполне вероятно, что иконка, куда должен лететь ресурс, не будет прямым ребенком Canvas'а. Но если бы это было бы так, нам было бы достаточно просто взять его localPosition. Собственно, это значение мы и найдём, используя вот такой трюк:
var targetLocalPosition = сanvas.transform.InverseTransformPoint(target.transform.position)
4) Любым удобным способом, который мы знаем, двигаем наш Image в targetLocalPosition
  • 👍 2
Post #14 1.08K
Post #13 590
Про Sprite Atlas и cжатие.

Сегодня выяснил, что текстуры, которые добавлены в Sprite Atlas, не должны быть сжаты сами по себе (в своих настройках Texture Importer), а нужно указывать сжатие только в настройках самого атласа, потому что:

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

Поэтому всегда рекомендуется не использовать сжатие для исходных текстур, и использовать сжатие только в настройках Sprite Atlas.

А вот и ссылочка на оригинал

#2d #вес
  • 👍 7
  • 🔥 1
Post #12 1.1K
Аналитика для Яндекс.Игр

Последние дни я искал способ собирать детальную аналитику по нашей игре "Бурить-Копать!" в Яндекс.Играх (ещё не опубликована) и править баланс на лету, не спотыкаясь о модерацию Яндекса. Кроме этого, желательным условием было использования только тех сервисов, которые уже находятся в вайтлисте у Яндекса.

Нашел идеальный вариант для себя: сервис аналитики игр GameAnalytics. Из плюсов:
+ по умолчанию разрешён в Яндекс.Играх, не нужно запрашивать доступ
+ я не уверен, но кажется они предоставляют все базовые функции бесплатно и без лимитов
+ готовый плагин под Unity, работающий в том числе в WebGL
+ из коробки работает отслеживание DAU и не только
+ возможность собирать кастомные метрики, например, прогресс игрока или ресурсы игрока
+ поддержка remote configs и A/B тестирования

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

UPD: в чате ЯИ подсветили проблемы с этим сервисом, с которыми я пока не успел столкнуться.

#веб_игры #яндексигры #аналитика
  • 👍 7
  • 🔥 1
Post #11 498
И вот так ещё (когда-нибудь я разберусь с телегой и прикреплением картинок)
#репорчу_баги
  • 👍 1
Post #10 546
Вот что бывает, когда SpellSinger начинает использовать какой-то новый сервис
#репорчу_баги
  • 🔥 2
Post #9 1.16K
Панель с закладками

Сегодня я поделюсь с вами своим расширением для Unity. Оно очень простое и очень помогает в работе в редакторе.

Это окно с закладками, в которое можно добавить любой ассет или папку проекта, и потом быстро выделить или перейти к нему в списке проекта. Чтобы добавить закладку, щелкните правой кнопкой мыши по ассету и нажмите кнопку Add to Bookmarks.

Чтобы добавить себе расширение, скопируйте папку Editor из моего репозитория себе в проект. Открыть окно с закладками можно с помощью меню Tools/Bookmarks.

#selfmade #tools
  • 🔥 4
  • 😁 2
Post #8 813
Горизонтальный список текстов с иконками.

Не так давно я ещё выравнивал UI элементы вручную. Сейчас я уже знаю про компоненты Vertical/Horizontal Layout Group, которые позволяют автоматически расположить элементы в столбик или в ряд, ровненько и с отступами. А если добавить к этому Content Size Fitter (Fit = Preferred Size), то Layout сам отресайзится под оптимальный размер. В том числе, это работает, если внутри будут TMP Text объекты, их ширина тоже будет контролироваться Layout'ом (не забудьте в Layout Group галочку Control Child Size/Width).

Сложно становится, если рядом с надписью нужно вставить картинку. Создавать родительский элемент для текста и картинки не вариант, в этом случае Layout перестанет управлять шириной текста (который может быть разной длины, например количество 1 или 999).

Решение следующее: засовываем Image внутрь TMP Text'а. Привязываем его к нужному краю (Anchors), а самому тексту добавляем боковой margin с учётом ширины иконки и необходимого отступа между картинкой и текстом.

#ui
  • 🔥 3
Post #3 1.31K
Навигация:
Этот канал: @spellsingergames ( https://t.me/spellsingergames )
Чат: @spellsingerchat ( https://t.me/spellsingerchat )

Разрабатываю игры в прямом эфире, заглядывайте в гости: https://www.twitch.tv/spellsingergames
Уведомления о стримах: @spellsingeralerts

Теги:
#самый_крутяк – самое полезное в канале
#selfmade – мой код (инструменты, расширения, утилиты), которым я бесплатно делюсь с вами
#лидерборды – про наш бэкенд для рекордов
#zenject – несколько мыслей про Zenject
#репорчу_баги – помогаю другим сервисам стать лучше
#ui – всякие полезности про UI
#веб_игры – опыт разработки веб-игр
#vfx – эффекты
#тайные_знания – то, что тяжело нагуглить или пришлось узнавать опытным путем
#кусочки_кода – сохраняю для себя, делюсь с вами
#нерешенное – насущные проблемы, которые я пока не решил
#геймдизайн – заметки по геймдизайнерским решениям в наших играх
#программирование – заметки про написание кода
#отзыв – отзывы на всякое

Платформы:
#яндекс_игры #vk_play #rustore #игры_вконтакте

Игры:
#бурить_копать – Бурить-Копать! Казуальный таймкиллер, роглайт. Ссылки
#sneaky_forest – Sneaky Forest, Tower Defense, сделана за 3 дня на джеме. Играть
#sneaky_monsters – Sneaky Monsters, Tower Defense, большая игра, пока на паузе. Играть в демку
  • ❤ 2
Post #2
Channel photo updated
Post #1
Channel created
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 →