Кот и код – Telegram
Кот и код
567 subscribers
157 photos
21 videos
1 file
81 links
Про разработку на Unity и .Net, радость и боль программирования.
Автор: @KotikovD

Про искусство и игрострой:
@svolochandborshch
Download Telegram
Если бы вас кто-то спросил “Зачем нам заниматься поддержкой архитектуры в проекте?”, вы бы смогли чётко ответить сходу? Продолжаю неспеша читать Мартина и мне очень понравился абзац, где он кратко отвечает на этот вопрос. Думаю, всем пригодится для следующих серьёзных переговоров, где вы будете бороться за технические спринты.

"Главное предназначение архитектуры — поддержка жизненного цикла системы. Хорошая архитектура делает систему лёгкой в освоении, простой в разработке, сопровождении и развёртывании. Конечная её цель — минимизировать затраты на протяжении срока службы системы и максимизировать эффективность программиста."
#техничка
This media is not supported in your browser
VIEW IN TELEGRAM
У меня, как правило, все пет-проекты, это какой-то челендж, испытательный полигон для новых подходов, плагинов, технологий и так далее. Но в ГВС я могу позволить себе делать такие штуки)
#девлог
🔥5👍2🍌2
Когда я решил создать свой канал, я брал в пример небольшие блоги, где ребята рассказывают о своих проектах и, в целом, больше ведут девлог. Не могу сказать, что у меня получается так же, но мне нравится следить за их проектами, они вдохновляют меня на что-то своё. Можно подсмотреть этапы, как приживаются или вытесняются какие-то идеи. Проекты развиваются на глазах. Моя находка - канал Alex Osh Punch. Автор-художник, делает свою новеллу, пишет много постов на тему применения Midjourney. Что ИИ выдаёт в исходнике и что получается после доработки. Изначально я познакомился с автором через его статью на DTF про создание персонажа
🔥3
Понадобилось плотно поработать с большим количеством логов в рабочем проекте, масса тестовых билдов, чинить платёжку. И для просмотра логов, я раньше просто открывал их через Rider, просто потому, что привык. Затем через Notepad++. Второй вариант гораздо лучше умеет работать с ними, например, выводить только строки с нужным ключом в строке. Но мне комфортно оставаться внутри IDE и было бы круто по клику переходить в область кода, где пишется лог. Я поинтересовался какие есть плагины. Нашёлся Ideolog - плагин от Jetbrains.

Самое главное, что о нем нужно знать - это установка на скрине, включается при открытии файлов с расширением .log, далее выделяем область в лог и жмём Alt+Enter - он предложит варианты что и как фильтровать. Подробнее на странице блога JB.

Если у кого есть вбросы по эффективной работе с логами - вкиньте, плиз.
#техничка
🔥8
Я тут долго болел и поэтому пропал, но сейчас уже становится получше и начинаю возвращаться в рабочий ритм.

Пока болел много думал о работе, развитии и о том как держать баланс и не выгорать. Хочу поделиться постом на эту тему, который недавно запостил Soer - Опыт против знаний. Ну и пользуясь случаем порекомендовать его канал. Он, конечно, не нуждается в моем представлении, скажу только, что на мой взгляд он один из немногих глубоких программистов, который активно делится знаниями.
31👍1
Channel name was changed to «Кот и код: разработка игр и приложений»
Я за последний год для себя открыл голосового помощника - Алису. Начиналось, все как у всех - “Включи музыку”, “Скажи погоду” и потом подъехали устройства умного дома. 12 лет назад я занимался системами умного дома, мы ставили системы в квартиры, коттеджи, офисы и др. Тогда из более-менее доступных и норм по качеству для частного потребителя были только дорогущие системы, типа KNX. Чтобы их инсталлировать нужно было проходить обучение в Германии и получать сертификат. Умный дом был для больших бюджетов, кто мог себе позволить проектирование и ремонт конкретно под эту систему. Надо было заранее понять что тебе нужно, без возможности пощупать или как-то проверить свои реальные потребности. И конечно, не было таких умных голосовых интерфейсов. Поэтому для меня сейчас отдельный кайф, что можно свою систему расширять постепенно, дополняя её устройствами и менять настройки на лету с телефона. Устройства стоят копейки, относительно того, как в интеграционных системах. Сейчас у меня уже масса сценариев и устройств, которые работают в одной системе: свет, шторы, обогреватели, вентиляция, ТВ, музыка и компы.

Недавно для меня этого стало мало и наступил новый этап интереса - я начал писать навыки для Алисы. Это такие программы, которые можно запускать на устройствах с Алисой (с телефонов или колонок). Посмотрите каталог Яндекса, там можно залипнуть.

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

Я пока делаю приватные навыки для личного использования, для меня это развлечение и возможность пощупать что-то не клиентское… Чтобы сделать что-то нормальное нужен плюс-минус бекэндерский стек, не свойственный Unity-разработчику, всякая муть вроде Docker, Nginx\Apache, какая-нибудь СУБД и администрирование всего этого на сервере под Линуксом.

А ну и навыки вполне могут быть играми. В каталоге их масса. Может и решусь тоже что-то запилить. А главное, никаких плясок с графикой, шейдерами, оптимизацией итп 😬
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6🤝21
Я немного затронул тему навыков и как вы понимаете, они работают обращаясь на сервер к web API приложению.

Очень крутой в плане простоты использования сервис Cloud Functions в Яндекс.Облаке. Суть такая: не нужно поднимать никаких серверов, вы просто загружаете zip-архив своего проекта, указываете среду выполнения\язык программирования, задаёте точку входа и… все. Сервис сам деплоит все необходимые ресурсы, устанавливает nuget-пакеты и даже будет балансировать нагрузку при необходимости. Вы получаете url для обращения к вашему приложению с SSL и сразу на домене. С бесплатным лимитом 1 000 000 вызовов функции в месяц. Вариант считай идеальный для небольших приложений, а главное, что не нужно выходить за рамки .NET.

Этой мой подход, когда мне понадобилось сделать “простой сервер”. Он вполне пойдет, чтобы запилить, например, таблицу рейтингов или менеджер каких-то игровых событий для игры. Главное тут - скорость развёртки и почти тот же самый стек для Unity-разработчиков.

Другой подход. Мне сегодня мой коллега с работы (тоже Unity-разработчик) скинул свою статью, где он разбирает типовую задачу с участием серверной части. Задача: сделать простой сервер и обращаться к этому серверу с клиента на Unity. Статья-инструкция на reddit про создание сервера.

Написано очень подробно и прям маст хев, если есть задача погрузиться в настройку своего сервера. Но если стоит задача быстро собрать MVP бекэнда - то долго и сложно: создай сервер, настрой подключение (можно упростить используя встроенный ssh, а не PuTTY), настрой сервер. Вероятно не будет домена и SSL, а это может стать проблемой для подключения к ещё каким-нибудь сторонним сервисам - значит тоже, подлежит настройке. Ещё нужно будет туда залить само приложение и настроить его работу.

Если уж я начал про сервис функций, то стоит ещё добавить, что есть встроенные средства отладки и мониторинга. Сразу после заливки приложения можно отправить реквесты и посмотреть респонзы (см. на скрине в комментах). Ясно, что на своём VDS такого нет.

Итог такой: если надо быстро, то я бы использовал Я.функции или подобные Serverless-решения. Но если вам в целом интересна бекэнд-тема, несомненно, захочется научиться самому настраивать все необходимое окружение и такие мануалы по настройке на вес золота.
3👍1🤔1
Описание фичей от нашего геймдизайнера, как отдельный вид искусства. Одна из локаций "А Горюшко вслед собакою…"
#девлог
🤡2🤪21👍1😁1🤗1🗿1👾1
Недавно в телеграмме появилась возможность поделиться своими папками с каналами.

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

https://news.1rj.ru/str/addlist/roIUXjUjqpAxZGQy

Делитесь своими в комментах
🔥3🐳1
Внезапно решили залететь на конкурс. Расскажу об этом в нескольких постах.

Идея пришла за пару дней до начала. Возможно, меня заинтересовало то, что организаторы ранее не устраивали игровые задания, а занимались конкурсами для решений из сферы бизнеса. Называется “Лидеры цифровой трансформации”. Там 21о задание, где 21ое - это игра (в прошлом году игр среди задач не было). Организаторы: Агентство инноваций Москвы и Департамент предпринимательства. На сколько же это ни как обычно, очень серьёзный подход. На столько серьёзный, что по ощущениям на одну наполовину - это хакатон, на другую - подача документов в МФЦ.

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

Задание, тоже, нестандартное для разработчиков игр. Обычно это что? Какая-то 1 из условных 20 рандомных прикольных тем, выбранных в момент старта. Но не в этот раз. Тут главная тема - Москва. С массой пожеланий и оговорок. Позитивная коннотация образа города, никакой чернухи, запрещена разная нехорошая деструктивная пропаганда, а также город должен однозначно читаться и узнаваться.

Далее - есть датасет. Внезапно, но выдали пак из тысяч 3D-моделей различных зданий и сооружений Москвы. Все в текстурах, в реальных пропорциях и очень неоптимизированное, а главное все файлы подписаны условными номерами, которые не сообщают ничего о модели внутри файла.

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

Вот такие вводные мы получили и начали пилить. Срок - 7 дней.

Покажу несколько моделей из дата сета. Такое ощущение, что часть из них делали сканерами. Мы в начале были в небольшом ступоре, когда решали, чтобы с ними такого придумать.
#события
🫡51🔥1
Хакатон - это маленький проект и нельзя удалять важные роли или убирать процессы. Нужно держать баланс, помнить про важные аспекты. У нас команда из 4х человек, где роли распределились вот так:
- Программист - немного менеджер проекта
- 3D художник - технический художник
- Художник - геймдизайнер - композитор
- Сценарист

Мы собрались проверенной командой, где уже понимали чего ожидать друг от друга, но к завершению периода разработки, мы ощутили просадку по геймдизайну. Где-то не понятно игроку, что происходит, где-то очки начисляются непонятно как, из 7и концовок реально получить можно 3-4.

Цель этой мысли не критика, а рефлексия для выводов на будущее. У нас отличный ГД, вывез тонну задач, настоящий атлант, но в данном предприятии, он закрывает еще две важнейшие области - визуальный стиль и аудио сопровождение. Дело тут в распределении времени, доля на геймдизайн оказалась слишком мала, 33% от общего времени конкретного тиммейта. Физический было не вывезти столько нагрузки чтобы успеть всё. Таким образом наш проект имеет больший вес в контенте, чем в играбельности. Опасное смещение, которое может стоить нам баллов. Ощущение от геймплея важнее контента.

В процессе нарастает количество задач, фиксов и эмоций. И сильно мог бы помочь человек, который бы рулил 2 вещами: задачами на доске и варил бы обеды финальным виденьем проекта. То есть бы мониторил, что ещё нужно сделать, в каком порядке, что важно, а что нет. Таким образом снизил бы уровень эмоций, разрядил чувство аврала, разгрузил исполнителей и не давал бы финальному результату съехать не в ту степь.

Пока не буду представлять наш высоковибрационный проект) О нем позже. Покажу несколько игровых экранов.
#события #девлог
3👍2
Мы вышли в финал. Из всех команд выбрали 10 лучших и пригласили на финал в формате трёхдневного фестиваля, который пройдёт в кластере «Ломоносов», ИНТЦ МГУ «Воробьёвы горы». Никогда я не приближался к МГУ так близко)

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

Но нас интересуют питчи - это ещё один раунд отбора. Теперь команды должны “продать” свой проект членам жюри так, как будто это заказчик. Это нам сложно по двум причинам:

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

Завтра мы будем работать над этими вопросами и готовиться выступить перед жюри и другими участниками. Неизвестно сможем ли мы занять какие-то места в финале, но сама эта движуха - уже награда за труды. Как говориться, делай что должен и будь, что будет.
#события
🌚4👍3
Мы провели питч своего проекта и наконец достигли точки, где от нас уже ничего не зависит и можно расслабиться. Напряжение за эти дни было запредельным.

Что я для себя отметил:
- Умение вести презентацию. Надо делать это не только правильно по шаблонам питчинга, но и ярко, харизматично. Потому, что это вишенка на торте, которая создаёт целостность команды, идеи и проекта. На это смотрят и оценивают. Здесь нам надо прокачиваться. Мне кажется, на фото наши лица и слайд идеальные)

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

- Хакатон запредельно крутой, а также общий вайб. За пару дней тут, мы прочувствовали общий подход к организации и общению. Собянин по-настоящему ищет таланты и проекты, здесь происходит мощнейший акселератор для IT. Масса программ финансирования и нужных людей для стартапов.

- Большая концентрация ума на квадратный метр. У меня включился синдром самозванца потому, что рядом с нами-игроделами другие команды, которые решают задачи по выгрузке данных со спутников, создании ИИ для анализа медицинских данных и снижения врачебных ошибок, темы связанные с «железом», дронами, кибер-протезами, робототехникой и др. Всем нужно тянуться к такой же глубине хардов в своих сферах.

- Отсутствует нетворкинг. Организатор не продумал какого-то формата для общения и обсуждений команд внутри специальностей. Впрочем мы сами сделали свой чат игроделов-финалистов.
UPD: Наш модератор 21 задачи подхватила эту идею и разослала всем командам приглашение в общий чат. Молодец)
#события
🔥4🍌4👍3
Финальный пост про хакатон хочу сделать красивым, поэтому он позже, а пока давайте на технические темы.

Попался пост от умного чела, который точно знает, что делает с приемом хранения двух переменных, например переменных типа int в типе long. Вот пример метода извлечения из его поста:

void ToInts(long a, out int a1, out int a2)
{
a1 = (int)(a & uint.MaxValue);
a2 = (int)(a >> 32);
}

Выглядит классно, но не могу представить хорошего валидного применения, потому что:

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

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

struct Test
{
int a;
int b;
}

Потому, что каждый процессор производит выравнивание по адресным границам, до значений, с которыми именно он лучше работает. Тот случай, когда «на моей машине» может работать по-другому, проц может сделать выравнивание, например, до 12 или 16 байт. Итого размер может плясать. Но если мы работаем на таком низком уровне оптимизации, то надо следить за всей картиной кода. Одно неосторожное движение где-то в стеке вызов и эта оптимизация станет ничтожна. И конечно, вопрос к объёму данных на которых это станет «интересно».

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

Если фантазировать, то пожалуй, подобную штуку в купе с другими приемами оптимизации можно вкручивать в фичи, где есть тоны данных, например, какое-то гигантское игровое поле с клетками, где нужно хранить данные для каждой клетки.
#техничка
👍4🤯2🌚21