13

Разработка ММО (часть 3) - система окон

Серия Разработка собственной ММО

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

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

Одинаковые экраны

Да, наполнение различается, но структурно практически ничего не меняется. Основная область, шапка, правый сайд-бар. И так в каждом экране (( Ключевое тут именно "экраны".

Решил что пора что-то менять и менять кардинально.

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

В целом, перевод на "окна" прошел гладко, за исключением некоторых моментов.

Выход окон за пределы области экрана

Выход окон за пределы области экрана

Основные проблемы с которыми я столкнулся:

  • выход окон за пределы области игрового экрана при изменении окна игры или при открытии новых внутриигровых окон,

  • реагирование перекрытого окна на скролл и нажатия,

  • неактивные области активного экрана, которые собой перекрывают нижележащее окно.

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

Реагирование перекрытого окна на скролл и нажатия было для меня самым интересным багом. Одно окно чинишь, другое ломается )) Так всегда, когда вайбкодишь "с закрытыми глазами". Чтобы эту проблему исправить для всех окон одним ударом, был разработан единый компонент внутриигрового окна, который просто переиспользовался. Теперь можно было чинить в одном месте.

Неактивные области также пофиксились при создании единого компонента.

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

Итоговый результат

В целом результатом остался доволен. Перевёл все игровые экраны на систему окон и добавил сохранение положения окон при закрытии игры. Чтобы при следующем заходе не приходилось выставлять все окошки заново :)

Сайт с игрой

Это обновление будет доступно уже в субботу (23.05.2026)

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества