"Личный опыт"
Меня зовут Евгений. Работаю программистом в оборонке и параллельно учусь делать игры. Вообще, я играл и играю в видеоигры почти всю жизнь, так что для меня это не просто хобби, а нечто большее.
Чем Вы сейчас занимаетесь в игровой индустрии?
Вместе со своей командой Epic Cat Team мы работаем над Tower Defence для ПК под названием «Dream Keeper». Сеттинг-фентези. Также мы пытаемся добавить в нашу игру элементы ARPG. Например, у нас есть герой, который помогает башням защищать базу. Его можно прокачивать и экипировать разными шмотками для усиления его характеристик.
Слышал Вы использовали ECS в разработке. Почему решили начать писать свою игру на этом паттерне?
ECS сейчас очень популярен среди разработчиков в геймдеве. Его пробуют использовать в своих проектах даже там, где он не особо-то и нужен. Нам довольно много рассказывали про паттерн ECS и о его преимуществах перед ООП и КОП, которые мы и захотели попробовать оценить в своем первом серьезном проекте.
Были ли попытки писать код на "чистом" ECS?
Мы изначально не планировали писать код полностью на pure ECS, поскольку не все программисты в нашей команде хотели с ним связываться. Мы решили делать основную часть на ECS, а оставшийся код интегрировать в систему.
Почему Вы не использовали готовый фреймворк? Например Entities?
Если честно, в начале разработки я даже не знал, что существуют фреймворки по ECS. Мы думали, что это просто паттерн, которому можно довольно легко следовать на протяжении всей разработки и никаких больших проблем не будет. Но потом мы начали глубже во все это погружаться и поняли, что не все так просто…
Получилось ли так, что увлёкшись разработкой Вы начали создавать свой собственный фреймворк на базе ECS?
В общем мы действительно думали о том, чтобы разработать что-то по типу фреймворка, но почти сразу от этого отказались, поскольку к этому моменту на ECS были только самые узкие места кода (в плане производительности), а остальное было на обычном КОП.
Почему отказались от "pure" и перешли в гибридную основу?
В основном это было обусловлено постоянно меняющимися идеями геймдизайнеров и остальных участников команды. Мы несколько раз очень сильно меняли концепцию игры и многие игровые механики (и продолжаем это делать, хотя уже и не так активно). В какой-то момент мы поняли, что поддержка архитектуры занимает у нас довольно значительную часть времени и решили отложить это дело до того момента, как игровые механики и концепции более или менее устаканятся. Возможно, если бы мы были более опытны в использовании ECS и была бы более конкретная и четкая идея игры, то было бы проще придерживаться паттерна…
Тем не менее система пуль башен, написанная специально под ECS так и осталась в нашем проекте и прекрасно работает.
Согласны ли Вы с тем, что выбор ECS увеличил сроки разработки?
В каком-то смысле - да, он действительно увеличил сроки, но для нас сроки не являются главным критерием разработки. Поскольку этот наш проект - учебный, то для важнее получить опыт работы в команде и попробовать использовать разные решения для расширения общего кругозора. Теперь если кто-то из нас захочет работать с командой, разрабатывающей игру на ECS, то ему это будет сделать гораздо проще (я имею ввиду программистов).
Если бы Вы вернулись назад, то как бы Вы приступили к разработке?
Я бы сделал то же самое, поскольку не мог знать о последствиях (так я обычно отвечаю на подобные вопросы). Но если говорить о будущем, то я еще обязательно буду следить за ECS и стараться использовать его в других своих проектах.
#case #unity #talk
Post #84
1.13K