Buffer icon Проекты
16 заметок с тегом

проекты

У меня есть несколько хобби-проектов, которые я пытаюсь поддерживать, потому что пользуюсь этим сам :_)

Shardy

Фреймворк для онлайн игр и приложений на Node.js. Он даёт базовую функциональность для построения микросервисных решений: мобильных, социальных, веб, многопользовательских игр, приложений реального времени, чатов, middleware сервисов и т. п. Есть клиент на TS встроенный в фреймворк, а также пакет для Unity, который поддерживает сборки под iOS, Android и WebGL.

Github

MoDI

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

Github

Infinite Scroll

Это скрипт который делает из Unity ScrollRect бесконечный список. Всего один скрипт. Элементы списка можно настраивать как угодно. Поддерживаются элементы разной высоты и ширины. Есть опция pull-to-refresh. Можно делать как вертикальную прокрутку, так и горизонтальную. Демо и исходники по ссылке ниже.

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

Github

UnityMobileInput

В Unity есть такой компонент InputField, это поле пользовательского ввода с клавиатуры. На мобильных устройствах, над клавиатурой появляется дополнительная полоска с полем ввода, которая занимает пространство. Кроме того, в таком поле нет стандартных функций, например, копирования и выделения. Emoji тоже не поддерживается.

Я сделал компонент и плагин, которые заменяют поле ввода Unity на стандартное нативное поле из Android и iOS, со всеми вытекающими. Да, у него есть недостатки, например, такое поле ввода накладывается поверх всего на экране. Разработчик TextMeshPro на форуме обещал, что в одной из версий Unity 2019.x это будет «исправлено», тогда я перестану поддерживать этот компонент.

Github

Рассылка (не поддерживаю уже)

Я решил выпускать рассылку, когда увидел, что в черновиках блога стало копиться много коротких заметок, которые не тянут на полноценной пост или статью. Рассылка об играх, разработке и Unity выходит один раз в месяц, в ней около 20-30 заметок.

Подписаться

Riddut (не поддерживаю уже)

Riddut — это расширения для браузера которое удаляет со страниц HTML элементы содержащие определенные ключевые слова. Я его сделал давным-давно для себя, но потом решил сделать какое-то подобие сервиса, потому что многие интересовались. Но до конца так и не доделал... Если у кого-то есть желание, переписать расширения на WebAssembly (давно пора) и серверную часть на что-то более достойное, чем обычный PHP-говнокод, то напишите мне :)

Riddut


2024 год

В этом году было всего 8 заметок, вместе с этой 9 😅 Из которых 3 — в декабре. В новом году ухожу с Эгеи...

Перевёл все свои заметки и базу знаний в Обсидиан. Оказался удобным, даже с минимумом плагинов. Когда была волна переездов с Ноушена видел статьи как можно обмазаться кучей плагинов и будет почти также, но сам использую только основные. Ещё использую официальный вебклиппер, даже запушил русскую локализацию :)

И мне понравилась эта идея хранить всё в отдельных файлах, а не в БД, что я решил перевести сайт и блог на такой же формат. Возьму какой-нибудь генератор статичных сайтов или напишу свой, для разминки 🙄 Эгея хороший движок, но все-таки исключительно бложный, который ограничивает многие моменты, да и последние интересные функции платные. Так что, волевым решением, сделаю себе новый сайт и блог, переведу всё на маркдаун файлы и хтмльки, обновлю некоторые заметки которые устарели.

Выпустили Морской Бой. Пока метрики так себе, ожидали немного другого :)) В новом году будет минимум две большие обновы. Ещё в разработке две новые карточные игры, о них как-нибудь расскажу. В начале года выпустил игру «Камень, ножницы, бумага» на основе телеграм-бота. Она кстати живая ещё, там даже кто-то играет.

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

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

Как-то так. В новом году будет всё лучше и интересней 🔥

 2 комментария    322   28 дн   аналитика   мысли   проекты   разработка

FSM для C#

Доделал пакет для Shardy: реализацию машины состояний (finite state machine). Все стейты и триггеры добавляются через билдер, цепочкой.

Finite state machine

Finite state machine

Finite state machine

Для перехода на стейт надо активировать триггер(ы):

fsm.Trigger(Action.Down);
fsm.Trigger(Action.Down);

В таком случае получится такой результат:

initial is standing
on exit standing
on enter sitting
on exit sitting
on enter lying

Ещё подсмотрел, как сгенерить описание для UML диаграммы и отрендерить её на сайте или на этом, по-моему у них один движок:

FSM UML diagram

FSM UML diagram

FSM UML diagram

Чтобы сделать диаграмму более «интуитивной», вместо слова state используется ключевое слово agent, этом случае можно рисовать разные линии.

@startuml
skin rose
title TestFSM
left to right direction
agent Standing
agent Sitting
agent Lying
agent Jumping
note left of Jumping
some help message here
end note
Start --> Standing
Standing --> Sitting : Down
Standing ~~> Jumping : Space
Sitting --> Lying : Down
Sitting --> Standing : Up
Lying --> Sitting : Up
Jumping --> Standing : Down
@enduml

Ещё к каждому переходу можно добавлять условия, (на картинке выше их нет) об этом подробнее в документации.

Если у перехода между состояниями есть условие(я), то линия будет рисоваться пунктирной, а если нет триггера — то с крестиком на конце. Актуально когда состояний и переходов много, можно сгенерить диаграмму и посмотреть нет ли косяков.

Github

 Нет комментариев    449   1 мес   git   unity   игры   проекты   разработка   с#

Shardy

Shardy

Shardy

Shardy

Друзья, был у меня давно один проект, который претерпел уже наверное 4 или 5 итераций. Этой штукой я пользуюсь на своих пет-проектах и со временем появилось желание сделать из всего этого опенсорсную историю. Поэтому начну из далека :)

Давным-давно был такой проект на гитхабе Pomelo. По меркам интернета — реально древний, ему больше 10 лет. Он и сейчас там есть, но уже заархивирован и не поддерживается, но форки вроде пилятся. Кто первый раз слышит, это фреймворк для создания игровых серверов на JavaScript и Node.js. Проект довольно большой, куча модулей, клиенты под разные платформы, хорошая дока. Наткнулся я на него несколько лет назад и начал ковырять, запускать, что-то пробовать. В итоге, многие вещи в нём мне понравились, но показалось всё как-то замудрёно что ли. Наверно потому что китайцы писали, а может я в ноду не сильно мог 😅 В общем, оттуда я потягал какие-то скрипты, интересные решения, потом переписал, упростил и, получился у меня такой лайтовый сервер из нескольких файлов, на котором я тестил всякие свои проекты, изучал ноду, яваскрипт и тайпскрипт позднее.

Потом решил поделиться своими поделками и выложить на гитхаб. Когда было свободное время что-то дописывал, переписывал и снова забывал, потому что были задачи поважнее. В какой-то момент, переписал всё на TypeScript (TS). К тому времени уже были наработки не только сервера, но и клиента на C# + Unity и всё это дело стало обретать какой-то полезный вид. И вот, в результате n-ой итерации, архитектура устоялась, протестировалась и получился Shardy.

Shardy — это фреймворк для онлайн игр и приложений на Node.js. Он даёт базовую функциональность для построения микросервисных решений: мобильных, социальных, веб, многопользовательских игр, приложений реального времени, чатов, middleware сервисов и т. п. Есть клиент на TS встроенный в фреймворк, а также пакет для Unity, который поддерживает сборки под iOS, Android и WebGL. Здесь я говорю микросервисных потому что по задумке, за каждый модуль будет отвечать отдельный Shardy-сервис со своими командами, настройками, возможно БД.

Основные фичи:

  • микросервисная парадигма
  • простой API: RPC, команды, подписки и т. п.
  • транспорт данных через сокеты и вебсокеты
  • легкость и быстрота: Node.js и TypeScript
  • поддержка пользовательской сериализации
  • поддержка пользовательской валидации рукопожатий (handshake)
  • продвинутый логгер: теги, фильтры, области
  • справочные материалы: документация, сниппеты, примеры
  • почти нулевая конфигурация

Есть демка с примерами работы API и простенькая онлайн игра «Крестики-Нолики»: как серверная часть, так и клиентская. Всё можно посмотреть, поковырять, запустить у себя и попробовать поиграть. Весь код старался комментировать, иногда даже излишне. Также есть документация с описанием всех компонентов и методов. Это всё в процессе наполнения и улучшения.

Основная цель Shardy — предоставить простое бесплатное решение для создания многопользовательских онлайн игр. Вот так вот громко 😅 На это будет обращено основное внимание при дальнейшей разработке новых функций, сервисов и туторов (было бы время...).

Не претендую на академическую правильность архитектуры и кода, делал в первую очередь для своих нужд. Но как показал опыт: зачастую многие принципы ООП, чистого кода, использование паттернов в «нужных» местах, разбиваются об реальность конкретного проекта :)

Приглашаю всех заинтересованных инди и не только, в подписчиках вроде такие есть, посмотреть, покрутить, примерить, потестить на своих каких-то задачах, играх, проектах, прототипах. Если будут вопросы, отвечу тут в комментах или на почту mail@mopsicus.ru. В личку тоже можно, но могу не заметить или долго отвечать.

Вот такое интро. Всем хороших игр! Онлайн игр :)

Shardy
Shardy for Unity
Docs

 Нет комментариев    262   3 мес   android   ios   nodejs   typescript   unity   webgl   игры   проекты   с#

Про донаты

У меня есть пару проектов в опенсорсе которые я давно поддерживаю. И только совсем недавно я добавил в ридми файл инфу с кошельками, на которые можно задонатить и поддержать проект. До этого мне просто писали в личку в телеге с вопросами и благодарностями, спрашивали куда и как можно перевести. Штош, я сократил этот путь :)

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

К чему это я? Друзья, если давно пользуйтесь какой-то бесплатной программой, утилитой, библиотекой, кодом — скиньте «спасибо» автору, купите премиум, отправьте открытку в конце концов, ему будет приятно, повысит мотивацию не забрасывать свой проект. Всем добра.

 Нет комментариев    564   4 мес   ассеты   мысли   проекты   разработка

Unity infinite scroller v2.0

UIS (Unity infinite scroller)

UIS (Unity infinite scroller)

UIS (Unity infinite scroller)

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

Делалось для мобилок, чтобы не тормозило с большим количеством элементов и была привычная функция pull to refresh. Но некоторые используют и в ПК билдах 😄

Github

 Нет комментариев    764   9 мес   android   ios   unity   ассеты   проекты   разработка   расширение   с#

Unity Mobile Input v2.0

UMI aka Unity Mobile Input

UMI aka Unity Mobile Input

UMI aka Unity Mobile Input

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

Функции:

  • нативное поле ввода и клавиатура для iOS и Android
  • настройка типа кнопки: Стандартная, Далее, Готово, Поиск, Отправить
  • настройка обработки кнопки
  • настройка кнопкок Готово и Очистить (iOS)
  • изменение опций поля ввода во время выполнения
  • скрытие дополнительного поля ввода (Android)
  • отслеживание появления и скрытия клавиатуры (с высотой)
  • отслеживание ориентации экрана
  • поддержка пользовательских шрифтов

В новой версии добавил несколько методов чтобы можно было менять некоторые параметры во время исполнения:

  • SetTextColor — изменение цвета текста
  • SetPlaceholderColor — изменение цвета текста подсказки
  • SetBackgroundColor — изменение цвета фона
  • SetContentType — изменение типа поля ввода
  • SetReadonly — изменение состояния «только для чтения»

Устанавливается как пакет через Unity Package Manager.

Github

 Нет комментариев    868   10 мес   android   ios   unity   ассеты   игры   проекты   разработка   с#

Unity Builder Bot

Бот сделан на основе моего старого скрипта из этой статьи.

Телеграм бот и расширение редактора для билда Unity проектов. Можно использовать по отдельности, но проектировалось чтобы работало вместе. Все исходники по ссылкам.

Unity Builder Helper Unity Builder Helper settings

Телеграм бот написан на Node.js и Telegraf.js. Может пулить апдейты, запускать билд юнити проекта, билдить Xcode проект (на маке), всё подписывать, загружать на сервер и скидывать ссылку. Билды для iOS тоже можно ставить по ссылке, там подключается манифест разработчика.

Основные функции:

  • добавить проект из Git репозитория
  • удалить проект
  • получить список всех проектов
  • перейти в нужную ветку
  • спулить апдейт
  • сбилдить Unity проект
  • сбилдить Xcode проект
  • скомпилировать, сделать архив, экспорт в IPA
  • сгенерировать HTML страницу с ссылками
  • загрузить все файлы на сервер через sshpass
  • получить логи
  • очистить логи и билды

Это все можно сделать с помощью телеграм, даже не запуская Unity. Каждый этап сборки логируется и уведомляется ботом.

Расширение редактора позволяет быстро переключаться между платформами, включать дефайны, запускать локальный и удаленный билд на боте, подставлять данные для Keystore, нужные зависимости для Huawei, добавлять локализации для iOS, также добавлять сторонние файлы в билд. Есть демка с набором файлов и примерной структурой.

Основные функции:

  • изменить платформу
  • установить defines
  • выбрать папку для билдов под каждую платформу
  • изменить версию, номер билда
  • подставить данные для Keystore
  • добавить локали и *.lproj файлы в Xcode проект
  • добавить фреймворки и дополнительные файлы в Xcode проект
  • добавить и применить google-services.json и agconnect-services.json
  • добавить дополнительные файлы в APK
  • пропатчить AndroidManifest.xml
  • пропатчить gradle файлы
  • добавить зависимости для Huawei билда
  • сбилдить Unity проект

Получилось как-то так, думаю кому-то будет полезно и интересно поковырять исходники. Подписывайтесь на Telegram канал, там посты появляются чаще %)

 Нет комментариев    5864   2022   android   ios   nodejs   unity   инструменты   проекты   расширение   с#

200 звёзд на Github

Achievement unlocked!

Моё новое скромное достижение. Скрипт с data-driven прокруткой для Unity, получил 200 звёзд на Github. Спасибо S1ROZHA :)

Infinite scroll unity 200 stars

Infinite scroll unity 200 stars

Infinite scroll unity 200 stars

Мне как-то писали, что используют его в MTG Arena и ещё какой-то популярной игре. Приятно что этим пользуюсь не только я.

 Нет комментариев    2794   2021   git   ассеты   проекты   разработка

Кастомные шрифты в UnityMobileInput

Обновил плагин UnityMobileInput.

Теперь можно использовать свои шрифты в нативном поле ввода. Просто копируете TTF шрифт в проект, в папку StreamingAssets, дальше плагин всё сделает сам: скопирует в папку приложения на Android или iOS и применит для нужного поля ввода.

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

 3 комментария    1345   2020   android   ios   unity   ассеты   проекты   разработка
 1 комментарий    1480   2019   git   проекты
Ранее Ctrl + ↓