Здесь есть те, кто делал локальный кооп в Unity? Мне очень интересно узнать как вы его внедряли, был ли он изначально запланирован в проекте, какой архитектуры кода придерживаетесь, чтобы он адекватно работал?
Расскажу свою историю: в нашей игрульке Find Brains он не был запланирован изначально, что впринципе логично, проект родился на геймджеме и вообще мало схож с тем, что есть сейчас.
Последние несколько дней перестраивала проект, чтоб можно было играть как в соло, так и в локальном коопе. Убедилась в эффективности Zenject-а для решения этой задачи и с ужасом вспомнила тестовый уровень кооперативного режима, который ещё существовал в прошлом году. Это был лютый хардкод, из-за которого я зашла в тупик. Ну просто смотрела на код и понимала, что это копипаста, которая растёт, как на дрожжах . Радуюсь, что тогда у меня появилась мысль "что-то здесь не так", в ходе чего я решила переписать скрипты всего проекта и внедрить нормальную архитектуру 😂
Это было больно, ну я обратного и не ожидала. Я сторонник того, что если зуб сгнил - его надо рвать и ставить новый, а не думать "да и так нормально" и терпеть боль. Зато теперь не больно.
В общем, поделюсь тем, что я делала для локального мультиплеера:
1. С помощью Zenject создала GameObject Context на префаб каждого игрока, который разруливает зависимости для компонентов, чтобы их скрипты не плакались мне в консоль и не творили дичь, когда аттрибут Inject отдаёт зависимости в псевдоконструктор на монобехах.
2. Эти зависимости прокидываются в т.ч. через PlayerInstaller, созданный для GameObject Context-ов, где я забиндила в контейнер то, что нужно каждому игроку в отдельности (свой контроллер, input-ы как минимум).
3. Да ну и всё, резолверами достучалась до нужных данных, и всё работает, как швейцарские часы.
Post #92
1.25K
- 💅 15
- 🐳 2
- 🔥 1