Делаем прототип клиент-серверной стратегии на Unity

Недавно я делал тестовое задание в одну довольно известную в нашей стране игровую компанию. Честно говоря, я по-началу был несколько ошарашен дерзостью — ни много ни мало, нужно было всего лишь сделать “прототип клиент-серверной стратегии”. Тянет на несколько дней плотной работы! Но я все же решил ввязаться в это. Ну, мне ведь не слабо, да?

Continue reading “Делаем прототип клиент-серверной стратегии на Unity”

Не обижайте чужие технологии!

Суровый C++-ник скептически относится к пробело-чувствительности Python и считает ее бездонным источником ошибок? А как вам мнение, что ФП — хайповая тема и на самом деле все то же самое можно отлично сделать на ООП? Знакомо такое отношение? Надеюсь, что нет. Впрочем, скорее всего за свою карьеру вам доводилось сталкиваться с подобным. Об этом и хочу поговорить.

Continue reading “Не обижайте чужие технологии!”

Волшебство Clojure

Когда-то в детстве мне посчастливилось увидеть в одной детской энциклопедии картинку. Справа был небольшой фрагмент кода на бейсике. На таком старом классическом бейсике, с нумерацией строк через десять, вроде 640, 650, 660. А слева был монитор, на котором отображалась монохромная картинка то ли взлетной полосы, то ли самолета, то ли самолета, взлетающего со взлетной полосы… и подписано, что, мол, программка справа рисует картинку слева.

Continue reading “Волшебство Clojure”

Про инкрементальную архитектуру

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

Continue reading “Про инкрементальную архитектуру”

Поддержка TextMesh Pro в Soft Mask

TextMesh Pro — очень популярный ассет для рендеринга SDF-шрифтов. Не так давно он стал доступен бесплатно, что для меня послужило поводом наконец-то сделать штатную интеграцию этого пакета с моим Soft Mask.

Continue reading “Поддержка TextMesh Pro в Soft Mask”

Как устроен Soft Mask

Кто работал с UI в Unity, мог столкнутся с одной особенностью стандартного компонента Mask: он работает через stencil и потому не поддерживает прозрачность. Пиксель либо полностью виден, либо полностью маскирован. В некоторых случаях это не проблема, поскольку мы можем “прикрыть” маскированный элемент какой-нибудь рамкой:

Обратите внимание на пикселированные края картинки слева. Но иногда нам нужен плавный переход:

Добиться такого эффекта в Unity без сторонних компонентов или написания своих шейдеров невозможно. Именно этот недостаток стандартной маски и призван устранить мой ассет — Soft Mask.

Continue reading “Как устроен Soft Mask”

Реализация тумана войны (3/3)

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

Continue reading “Реализация тумана войны (3/3)”

Реализация тумана войны (2/3)

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

Continue reading “Реализация тумана войны (2/3)”

Реализация тумана войны (1/3)

Однажды для Tanks vs Aliens понадобилось реализовать туман войны. Казалось бы, это такая популярная фича, что для нее в Asset Store непременно найдется с десяток решений. На деле их нашлось всего несколько, а доверие вызвало лишь одно из них. Основная его фича – расчет полей видимостей с учетом перекрытий, вроде как в Heroes of the Storm или других MOBA’х. Нам же нужен был всего лишь старый добрый RTS’ный туман войны с раскрытием карты кружками вокруг юнитов. Это была одна из причин, почему я в итоге отказался от использования этого ассета и решил делать свою реализацию. О том, как я это делал, собственно и хочу рассказать.

Continue reading “Реализация тумана войны (1/3)”