Второй проект, который командный, уже в процессе разработки!
Уже поймал несколько затыков с фруструмом камеры, созданием elastic эффекта границ, соотношением дельты курсора/пальца с дельтой перемещения в мировых координатах.
Но сейчас всё уже прекрасно. Пока в пути, расписал задачи на ближайжее будущее
Уже поймал несколько затыков с фруструмом камеры, созданием elastic эффекта границ, соотношением дельты курсора/пальца с дельтой перемещения в мировых координатах.
Но сейчас всё уже прекрасно. Пока в пути, расписал задачи на ближайжее будущее
🔥3
Особенности проекта:
Все кнопки, окна и многие сервисы управляются с помощью команд - выключенные монобех классы, забравшие на себя разнородную логику. Минус, что они монобехи. Плюс, что их прям в инспеторе накидываешь стопкой в список на кнопке, а внутри просто по списку пробегаешься и вызываешь Execute(). Поэтому кода сильно меньше, как и дубляжа. Окна открываются с дотвин анимацией и самое прикольное, что окна примают конфиги, поэтому на каждое можно сделать свою анимацию опять же не изменяя код
Все кнопки, окна и многие сервисы управляются с помощью команд - выключенные монобех классы, забравшие на себя разнородную логику. Минус, что они монобехи. Плюс, что их прям в инспеторе накидываешь стопкой в список на кнопке, а внутри просто по списку пробегаешься и вызываешь Execute(). Поэтому кода сильно меньше, как и дубляжа. Окна открываются с дотвин анимацией и самое прикольное, что окна примают конфиги, поэтому на каждое можно сделать свою анимацию опять же не изменяя код
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Как по мне - очень удобная надстройка получилась
🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
За последнюю неделю было не так много времени. Что сделано:
- добавил класс ClickDetector - обрабатывает нажатия, если курсор/тач не над UI из списка исключений. Возвращает коллайдер, если куда-то попал;
- добавил TerritorySelector, который под интерфейсом слушает ClickDetector и, если на коллайдере есть компонент Territory, то кеширует выбор и сообщает об этом всем подписчикам;
- добавил TerritoryElevator - принимает под интерфейсом TerritorySelector, подписывается на изменения. Если выбрана территория, то приподнимает её, если снят выбор, то опускает обратно. Анимация через DOTWeen;
- добавил TerritoryPopUpShower - принимает TerritorySelector, будет принимать TerritoryConfig, чтобы заполнять инфу в окне. Показывает окно над территорией и, если она доступна, кнопку перехода к сцене боя;
- чуть накинул текстур в материалы, чтобы сделать визуал чуть поприятнее;
- масштабный рефакторинг и оптимизации.
Если видео не грузит, можно посмотреть на яндекс диске: https://disk.yandex.ru/i/IDYasUqHFdDqtg
- добавил класс ClickDetector - обрабатывает нажатия, если курсор/тач не над UI из списка исключений. Возвращает коллайдер, если куда-то попал;
- добавил TerritorySelector, который под интерфейсом слушает ClickDetector и, если на коллайдере есть компонент Territory, то кеширует выбор и сообщает об этом всем подписчикам;
- добавил TerritoryElevator - принимает под интерфейсом TerritorySelector, подписывается на изменения. Если выбрана территория, то приподнимает её, если снят выбор, то опускает обратно. Анимация через DOTWeen;
- добавил TerritoryPopUpShower - принимает TerritorySelector, будет принимать TerritoryConfig, чтобы заполнять инфу в окне. Показывает окно над территорией и, если она доступна, кнопку перехода к сцене боя;
- чуть накинул текстур в материалы, чтобы сделать визуал чуть поприятнее;
- масштабный рефакторинг и оптимизации.
Если видео не грузит, можно посмотреть на яндекс диске: https://disk.yandex.ru/i/IDYasUqHFdDqtg
🔥2
Для сцены с картой добавил CameraOrientationAdapter. Получает соотношение сторон, если высота больше ширины, делит высоту на ширину и на полученный коэффициент домножает _minimum и _maximumOrtographicSize. Эти данные через свойства берёт CameraZoom. Таким образом при повороте экрана размер карты остаётся такой же. Так как это отдельный класс с интерфейсом, который можно инжектить через VContainer, можно будет чуть доработать и переиспользовать в сцене уровня.
Вообще я бы не делал логику под поворот экрана, но требования пыточной - поддержка вертикальной и горизонтальной ориентации для мобилок. Поэтому приходится изобретать
Вообще я бы не делал логику под поворот экрана, но требования пыточной - поддержка вертикальной и горизонтальной ориентации для мобилок. Поэтому приходится изобретать
Завтра ориентировочно в 19:00 или 20:00 состоится созвон в дискорд, плюс трансляция на ютуб. Я буду проводить лекцию по VContainer. Я подготовил презентацию и чистый проект. На своём недоджуновском уровне расскажу, как установить, настроить и использовать. Подробности будут в канале
https://t.me/IndieGameMill
Ну и с вас 🔥 если планируете прийти 🙂
https://t.me/IndieGameMill
Ну и с вас 🔥 если планируете прийти 🙂
🔥3
Лекция по VContainer сегодня в 20:00. Волнуюсь. Как бы не ударить в грязь лицом и никто не догадался, что я такой себе кодер )
VContainer - почти тоже самое, что и Zenject (Extenject), разница лишь в мелочах. Я долго подбирался к пониманию DI-контейнеров, пересмотрел много лекций, но не ощущал преимуществ. В итоге оказалось всё просто: надо было строить немного иную архитектуру проекта. Удивительно, как все принципы и паттерны проектирования находятся близко к друг другу и, по сути, талдычат об одном и том же. Тут и DIP, и SRP, и точка входа
Встреча пройдёт в дискорд, там можно прям общаться в процессе изучени/рассмотрения темы.
ДС: https://discord.gg/TNT28W8y
В ютубе будет трансляция. И возможно даже сохранится.
Ютуб канал: https://www.youtube.com/@indiegamemill
Приходите, буду рад 🙂
VContainer - почти тоже самое, что и Zenject (Extenject), разница лишь в мелочах. Я долго подбирался к пониманию DI-контейнеров, пересмотрел много лекций, но не ощущал преимуществ. В итоге оказалось всё просто: надо было строить немного иную архитектуру проекта. Удивительно, как все принципы и паттерны проектирования находятся близко к друг другу и, по сути, талдычат об одном и том же. Тут и DIP, и SRP, и точка входа
Встреча пройдёт в дискорд, там можно прям общаться в процессе изучени/рассмотрения темы.
ДС: https://discord.gg/TNT28W8y
В ютубе будет трансляция. И возможно даже сохранится.
Ютуб канал: https://www.youtube.com/@indiegamemill
Приходите, буду рад 🙂
Discord
Join the Indie Game Mill Discord Server!
Check out the Indie Game Mill community on Discord - hang out with 174 other members and enjoy free voice and text chat.
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
По проекту Пыточной:
- карта мира стала больше;
- на уровне появилась мини-карта;
- после перетаскивания добавил инерцию;
- добавлена возможность отображать объекты игры на миникарте (в видео нет, записывал до того, как реализовал);
- в верикальном режиме база игрока снизу, в горизонтальном слева;
- клики по миникарте мгновенно переносят камеру в соответсвующую точку в мире.
Немного ещё дорефакторю и начну переходить к геймплею
- карта мира стала больше;
- на уровне появилась мини-карта;
- после перетаскивания добавил инерцию;
- добавлена возможность отображать объекты игры на миникарте (в видео нет, записывал до того, как реализовал);
- в верикальном режиме база игрока снизу, в горизонтальном слева;
- клики по миникарте мгновенно переносят камеру в соответсвующую точку в мире.
Немного ещё дорефакторю и начну переходить к геймплею
🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
А, ну вот с компа запись
This media is not supported in your browser
VIEW IN TELEGRAM
Вчера общался со знакомым разрабом. Обсуждали, как реализовать инвентарь. Я в голове сложил красивый вариант (потому что я умный), но не смог объяснить, как это должно работать (потому что я тупой). Поэтому просто сел и сделал.
Как? Никаких IPointerDownHandler и прочих юньковских приколов. Написал свою инпут систему, свою систему детекции UI, подружил с системой, что отвечает за начало, сам процесс и конец перетаскивания, управляет как фасад другими системами, которые перекрашивают слоты, устанавливают предмет в инвентарь, сбрасывают позицию и так далее. Вот, допилил. Забавно, что мне это никуда не нужно и в целом инвентарь я пилил впервые, хотя давно хотелось запилить какой-нидь инвентарь, но не было повода (правда, и сейчас нет). Так что раз уж сделал, тут же отрефакторил по SOLID. Будет лежать неплохая заготовка на будущее
Как? Никаких IPointerDownHandler и прочих юньковских приколов. Написал свою инпут систему, свою систему детекции UI, подружил с системой, что отвечает за начало, сам процесс и конец перетаскивания, управляет как фасад другими системами, которые перекрашивают слоты, устанавливают предмет в инвентарь, сбрасывают позицию и так далее. Вот, допилил. Забавно, что мне это никуда не нужно и в целом инвентарь я пилил впервые, хотя давно хотелось запилить какой-нидь инвентарь, но не было повода (правда, и сейчас нет). Так что раз уж сделал, тут же отрефакторил по SOLID. Будет лежать неплохая заготовка на будущее
🔥6
Кстати, я не знаю, по какой игре мы смотрели инвентарь, чтобы повторить, но там при захвате предмет прыгал в центр курсора, что вообще некрасиво. Я сделал с компенсацией отступа курсора от центра предмета.
Самое забавное, что это всё было продумано ещё на этапе планирования в голове и по итогу задумка прекрасно реализовалась в коде без дополнительных корректировок 🙂
Самое забавное, что это всё было продумано ещё на этапе планирования в голове и по итогу задумка прекрасно реализовалась в коде без дополнительных корректировок 🙂
🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Вывожу кукиш вместо иконки валюты, если недостаточно средств )
😁4
Хочу делать публикации по темам, вести дневники разработки для игр, которые создаю. Канал не позволяет это реализовать, поэтому сделал сообщество.
Там есть чат по коду, флудилка и проект, который веду по одной из игр. Буду рад, если присоединитесь:
https://t.me/tyap_lyap_dev , Возможно превратим это место в уютное сообщество. Всем хорошего дня 🙂
Там есть чат по коду, флудилка и проект, который веду по одной из игр. Буду рад, если присоединитесь:
https://t.me/tyap_lyap_dev , Возможно превратим это место в уютное сообщество. Всем хорошего дня 🙂
🔥2
TyapLyapDev - Разработка игр | Движуха Сакутина pinned «Хочу делать публикации по темам, вести дневники разработки для игр, которые создаю. Канал не позволяет это реализовать, поэтому сделал сообщество. Там есть чат по коду, флудилка и проект, который веду по одной из игр. Буду рад, если присоединитесь: http…»