{ "version": "https:\/\/jsonfeed.org\/version\/1", "title": "#mopsicus: заметки с тегом unity", "_rss_description": "об играх, разработке на Unity и личном опыте", "_rss_language": "ru", "_itunes_email": "", "_itunes_categories_xml": "", "_itunes_image": "", "_itunes_explicit": "", "home_page_url": "https:\/\/mopsicus.ru\/tags\/unity\/", "feed_url": "https:\/\/mopsicus.ru\/tags\/unity\/json\/", "icon": "https:\/\/mopsicus.ru\/user\/userpic@2x.jpg?1707898340", "author": { "name": "Игорь Лопатин", "url": "https:\/\/mopsicus.ru\/", "avatar": "https:\/\/mopsicus.ru\/user\/userpic@2x.jpg?1707898340" }, "items": [ { "id": "270", "url": "https:\/\/mopsicus.ru\/all\/fsm-for-csharp\/", "title": "FSM для C#", "content_html": "
Доделал пакет для Shardy<\/a>: реализацию машины состояний (finite state machine). Все стейты и триггеры добавляются через билдер, цепочкой.<\/p>\n Для перехода на стейт надо активировать триггер(ы):<\/p>\n В таком случае получится такой результат:<\/p>\n initial is standing Ещё подсмотрел, как сгенерить описание для UML диаграммы и отрендерить её на сайте<\/a> или на этом<\/a>, по-моему у них один движок:<\/p>\n Чтобы сделать диаграмму более «интуитивной», вместо слова state используется ключевое слово agent, этом случае можно рисовать разные линии.<\/p>\n Ещё к каждому переходу можно добавлять условия, (на картинке выше их нет) об этом подробнее в документации<\/a>.<\/p>\n Если у перехода между состояниями есть условие(я), то линия будет рисоваться пунктирной, а если нет триггера — то с крестиком на конце. Актуально когда состояний и переходов много, можно сгенерить диаграмму и посмотреть нет ли косяков.<\/p>\n Github<\/a><\/p>\n",
"date_published": "2024-12-05T12:18:04+03:00",
"date_modified": "2024-12-05T12:17:48+03:00",
"image": "https:\/\/mopsicus.ru\/pictures\/fsm-example.jpg",
"_date_published_rfc2822": "Thu, 05 Dec 2024 12:18:04 +0300",
"_rss_guid_is_permalink": "false",
"_rss_guid": "270",
"_e2_data": {
"is_favourite": false,
"links_required": [
"system\/library\/highlight\/highlight.js",
"system\/library\/highlight\/highlight.css",
"system\/library\/highlight\/highlight.js",
"system\/library\/highlight\/highlight.css",
"system\/library\/highlight\/highlight.js",
"system\/library\/highlight\/highlight.css",
"system\/library\/highlight\/highlight.js",
"system\/library\/highlight\/highlight.css"
],
"og_images": [
"https:\/\/mopsicus.ru\/pictures\/fsm-example.jpg",
"https:\/\/mopsicus.ru\/pictures\/fsm-uml.jpg"
]
}
},
{
"id": "267",
"url": "https:\/\/mopsicus.ru\/all\/shardy\/",
"title": "Shardy",
"content_html": " Друзья, был у меня давно один проект, который претерпел уже наверное 4 или 5 итераций. Этой штукой я пользуюсь на своих пет-проектах и со временем появилось желание сделать из всего этого опенсорсную историю. Поэтому начну из далека :)<\/p>\n Давным-давно был такой проект на гитхабе Pomelo<\/a>. По меркам интернета — реально древний, ему больше 10 лет. Он и сейчас там есть, но уже заархивирован и не поддерживается, но форки вроде пилятся. Кто первый раз слышит, это фреймворк для создания игровых серверов на JavaScript и Node.js. Проект довольно большой, куча модулей, клиенты под разные платформы, хорошая дока. Наткнулся я на него несколько лет назад и начал ковырять, запускать, что-то пробовать. В итоге, многие вещи в нём мне понравились, но показалось всё как-то замудрёно что ли. Наверно потому что китайцы писали, а может я в ноду не сильно мог 😅 В общем, оттуда я потягал какие-то скрипты, интересные решения, потом переписал, упростил и, получился у меня такой лайтовый сервер из нескольких файлов, на котором я тестил всякие свои проекты, изучал ноду, яваскрипт и тайпскрипт позднее.<\/p>\n Потом решил поделиться своими поделками и выложить на гитхаб. Когда было свободное время что-то дописывал, переписывал и снова забывал, потому что были задачи поважнее. В какой-то момент, переписал всё на TypeScript (TS). К тому времени уже были наработки не только сервера, но и клиента на C# + Unity и всё это дело стало обретать какой-то полезный вид. И вот, в результате n-ой итерации, архитектура устоялась, протестировалась и получился Shardy.<\/p>\n Shardy<\/a> — это фреймворк для онлайн игр и приложений на Node.js. Он даёт базовую функциональность для построения микросервисных решений: мобильных, социальных, веб, многопользовательских игр, приложений реального времени, чатов, middleware сервисов и т. п. Есть клиент на TS встроенный в фреймворк, а также пакет для Unity<\/a>, который поддерживает сборки под iOS, Android и WebGL. Здесь я говорю микросервисных потому что по задумке, за каждый модуль будет отвечать отдельный Shardy-сервис со своими командами, настройками, возможно БД.<\/p>\n Основные фичи:<\/p>\n Есть демка с примерами работы API и простенькая онлайн игра «Крестики-Нолики»: как серверная часть, так и клиентская. Всё можно посмотреть, поковырять, запустить у себя и попробовать поиграть. Весь код старался комментировать, иногда даже излишне. Также есть документация<\/a> с описанием всех компонентов и методов. Это всё в процессе наполнения и улучшения.<\/p>\n Основная цель Shardy — предоставить простое бесплатное решение для создания многопользовательских онлайн игр. Вот так вот громко 😅 На это будет обращено основное внимание при дальнейшей разработке новых функций, сервисов и туторов (было бы время...).<\/p>\n Не претендую на академическую правильность архитектуры и кода, делал в первую очередь для своих нужд. Но как показал опыт: зачастую многие принципы ООП, чистого кода, использование паттернов в «нужных» местах, разбиваются об реальность конкретного проекта :)<\/p>\n Приглашаю всех заинтересованных инди и не только, в подписчиках вроде такие есть, посмотреть, покрутить, примерить, потестить на своих каких-то задачах, играх, проектах, прототипах. Если будут вопросы, отвечу тут в комментах или на почту mail@mopsicus.ru. В личку тоже можно, но могу не заметить или долго отвечать.<\/p>\n Вот такое интро. Всем хороших игр! Онлайн игр :)<\/p>\n Shardy<\/a> В телеграме запостил, а тут забыл совсем: встречайте лучший (по нашему мнению :) мобильный Морской Бой Онлайн aka Sea Battle aka Fleet Battle aka Warships на минималках. Это классическая игра из детства, в онлайн исполнении, с новыми возможностями, в пиратском стиле! 🏴 (да, у нас не тетрадный стиль!)<\/p>\nFinite state machine<\/h3>
Finite state machine<\/h4>
\n<\/div>\nfsm.Trigger(Action.Down);\r\nfsm.Trigger(Action.Down);<\/code><\/pre>\n
\non exit standing
\non enter sitting
\non exit sitting
\non enter lying<\/p>\n<\/blockquote>\nFSM UML diagram<\/h3>
FSM UML diagram<\/h4>
\n<\/div>\n@startuml\r\nskin rose\r\ntitle TestFSM\r\nleft to right direction\r\nagent Standing\r\nagent Sitting\r\nagent Lying\r\nagent Jumping\r\nnote left of Jumping\r\nsome help message here\r\nend note\r\nStart --> Standing\r\nStanding --> Sitting : Down\r\nStanding ~~> Jumping : Space\r\nSitting --> Lying : Down\r\nSitting --> Standing : Up\r\nLying --> Sitting : Up\r\nJumping --> Standing : Down\r\n@enduml<\/code><\/pre>Shardy<\/h3>
Shardy<\/h4>
\n<\/div>\n\n
\nShardy for Unity<\/a>
\nDocs<\/a><\/p>\n",
"date_published": "2024-10-10T22:33:59+03:00",
"date_modified": "2024-10-10T22:33:42+03:00",
"image": "https:\/\/mopsicus.ru\/pictures\/logo.png",
"_date_published_rfc2822": "Thu, 10 Oct 2024 22:33:59 +0300",
"_rss_guid_is_permalink": "false",
"_rss_guid": "267",
"_e2_data": {
"is_favourite": true,
"links_required": [],
"og_images": [
"https:\/\/mopsicus.ru\/pictures\/logo.png"
]
}
},
{
"id": "266",
"url": "https:\/\/mopsicus.ru\/all\/sea-battle-online-game\/",
"title": "Морской Бой Онлайн",
"content_html": "