TGViewer
Григорий Дядиченко Григорий Дядиченко @dev_game · 2.66K subscribers
Post #1849 1.32K
MVC и MVP: как избежать технического долга в проектах на Unity
https://researchandprogram.blogspot.com/2026/02/mvc-vs-mvp-for-ruthless-unity-developer.html

В статье обсуждается важность использования архитектурных паттернов MVC и MVP в разработке игр на Unity для избежания технического долга и упрощения поддержки кода. Автор утверждает, что монолитный код и чрезмерное использование MonoBehaviours приводят к проблемам в дальнейшем, и предлагает применять модульный подход.

В общем базово на самом деле статья ни о чём. Без архитектурных паттернов писать плохо, с ними хорошо. Краткое описание MVP и MVC без примеров. Но о чём я захотел написать по этой теме? Я недавно попробовал прикольную связку. Model->Controller->ViewModel->Presenter->View

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

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

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

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

#новости
Research And Program MVC vs MVP for the Ruthless Unity Developer : Stop Building Disposable Games MVC vs MVP. Learn the difference between model view controller and model view presenter.
  • 🔥 9
More from @dev_game
  1. Sep 25, 2026Meta VR Glasses Посмотрел кратко о чём речь. Вспомнил скупой слезой свой концепт. Будем по…
  2. Sep 23, 2026Чисто магия, что я теперь самостоятельно могу сделать такой пак + ролик к нему :) И мне нр…
  3. Sep 22, 2026🚀 Как запустить игровой стартап и применить бизнес-опыт в геймдеве? 🚀 Высшая школа бизне…
  4. Sep 21, 2026Эмоциональный окрас голоса Задумался над юмористическими форматами контента помимо познава…
  5. Sep 20, 2026Новый формат роликов https://youtube.com/shorts/sBWPJmyMqKg?si=GqUfUyLol_ahrRsK Возможно п…
  6. Sep 20, 2026Про мои текущие эксперименты То что я буду писать в этом посте думаю не так интересно прос…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →