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

Про искусство и игрострой:
@svolochandborshch
Download Telegram
Понадобилось плотно поработать с большим количеством логов в рабочем проекте, масса тестовых билдов, чинить платёжку. И для просмотра логов, я раньше просто открывал их через 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
Еще немного про джемы. Зачем вообще участвовать в конкурсах? Один мой коллега, который часто участвует в подобного рода событиях, недавно поделился своим мнением. Хочу пересказать некоторые его поинты и дополнить своими:

1. На джеме сталкиваешься с задачами уровня приложения - жизненный цикл, загрузка статических данных, менеджмент окон итд. Тот самый “скелет”, который уже решён на рабочем проекте и очень редко можно столкнуться с задачами такого уровня.
2. Джем хорошо показывает код, который невозможно настроить. Позволяет на короткой дистанции сделать выводы, что не так. Подсвечивает разницу между фичей и игрой. Становятся понятны требования к инструментам, которые важны на следующих этапах разработки - сетап и тесты.
3. Ограничение по времени учит "срезать углы". Есть идея, на работе ее оценил бы в 5 дней. Но как сделать тоже самое за 5 часов? Оказывается это возможно. Чтобы понимать масштаб проблемы, можно посмотреть на победителей прошлого джема - часто, это делают любители за короткий срок. А ты, профессионал, способен повторить такое? Без лукавства "мне надо х10 времени, потому что оно будет по SOLID, расширяемо и там архитектура".
4. В ваш проект поиграют и дадут фидбек. Похвалят и укажут проблемы. Это позволит оценить верность принятых вами решений.
5. Делая фичи на работе, можно забыть как делать игру. Класть кирпичики друг на друга - это не тоже самое, что строить дом.
6. Нетворкинг. Я участвовал всего несколько раз в джемах и каждый раз это выливалась в массу знакомств, новых контактов, проектов, историй.
7. Если вы джун без опыта или в поиске работы, то такие события создают вам проекты в портфолио, строчки в резюме и возможность попасть на собес через новые знакомства.
8. Ещё один обширный поинт я хочу подробнее раскрыть в отдельном посте и закрыть тему с джемами на время.
#события
👍53🐳1
Марево. Так называется наша игра-финалист с конкурса “Лидеры цифровой трансформаций 2023”. Теперь я готов сказать пару слов о смысле участия в конкурсе и выложить ссылку для желающих поиграть.

В продолжение предыдущего поста про дежмы, я говорил о практической пользе, но психологический для программиста это обычные серые будни - развиваться, разбираться, искать лучшее решение, делать новое итд. Все мы ещё люди и поэтому на одних “нужных\полезных\правильных” вещах далеко не уедешь. Ещё нужна энергия и способность сохранять простой интерес к профессии годами. Поэтому пара философских мыслей в дополнение к ответу на вопрос. Здесь уже конкретно по нашему опыту на ЛЦТ 2023.

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

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

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

Скачать проект можно по ссылке: https://rayonist.itch.io/marevo

А во втором нашем канале более высоковибрационное описание проекта

@cat_and_code
#события #девлог
🔥74