Поддержу народ выше.
Не движки кривые, а руки разработчиков игр. Хотя сами движки тоже не без огрехов.
ИМХО, с правильным подходом к разработке и на Unity можно добиться хорошей картинки при хорошей производительности.
ECS никак не ограничивает разработчика. Можно сделать все, что угодно. Единственное, что ECS потребует немного больше времени на построение хорошей архитектуры проекта.
Ну а чтобы не дублировать код, в ECS тоже возможна абстракция, только выстраивается она совсем иначе, нежели в ОО.
Есть несколько вариантов как использовать ECS в UI.
В проекте, которым я сейчас занимаюсь на работе(тут свой закрытый ECS-фреймворк), например каждый UI элемент — сущность. То есть кнопка — сущность с компонентами ButtonComponent и MyMarkComponent, при нажатии она генерирует ивент по самой себе и его можно ловить в любой из систем.
Но я больше склоняюсь к варианту, который предлагает Leopotam, где UI элементы просто-напросто генерируют ивенты внутрь ECS. github.com/Leopotam/ecs-ui
Можешь посмотреть как работает и выглядит ECS на примере простенького PacMan с использованием LeopotamECS и Unity3D github.com/SH42913/pacmanecs
Самый главный плюс ECS — его легкая расширяемость, взаимозаменяемость и слабосвязность систем, в некоторых случаях(LeoECS самый лучший пример такого случая) ECS дает еще и приличный буст к производительности, ибо обработка выходит гораздо легче. Единственная трудность ECS — его освоение на первых парах, очень сложно перестроить восприятие и построение архитектуры с ОО на ECS, у меня на это ушло пол года и весь этот опыт я постарался вложить в примере PacMan.
Быть может когда-нибудь я напишу статью о том как перестроить видение архитектуры с ОО на ECS.
Складывается ощущение, что автор так и не понял ECS, хоть и видит разницу между EC и ECS.
ИМХО, ECS позволяет куда более масштабируемый, простой и удобный подход к архитектуре, нежели ОО. В условиях вечно меняющихся идей у геймдизов и начальства, ECS — подходит куда лучше. Но понять ECS после ОО действительно крайне трудно.
Кораблей пока как таковых нету, но вцелом любой гравитационный объект(в том числе и корабли в будущем) оказывают влияние на все другие гравитационные объекты.
Центральное «солнце» приколочено к центру мира, а вот все остальные объекты влияют друг на друга, так что и планеты к кораблям тянуться будут
Ну и ладно, оставлю пока так, вроде есть не просит. Не думаю, что понадобится в игре больше 1к симулируемых разом тел.
Еще сейчас считается на любых расстояниях, если привязать какое-то ограничение на дистанцию, то нагрузка еще сильнее упадет.
Меня пока куда больше волнует предсказание и как его лучше реализовать.
Ах, если бы я настолько точно рассчитывал…
Я просто каждое обновление мира считаю обычный закон всемирного тяготения, ибо это все таки развлекательный проект, а не научный. Пока даже предсказания траектории у меня нету .-.
Наверное стоило сказать не «гравитационное взаимодействие», а «считает силу гравитации»
Зависит от уровня симуляции, опыта человека, архитектуры приложения и целей проекта.
Простенький клон Asteroids — да, человек с опытом за несколько часов сделает.
Свою первую поделку(видос которой парой комментов выше и которая, к слову, хардкорны клон Asteroids) я делал около трех месяцев по вечерам и без капельки опыта.
Но зато там и компонентность корабля, и модульные повреждения(правда только для двигателей), и симуляция термодинамики реактора, и простенькая эмуляция энергосистемы, ну и система мониторов много времени отняла(опять же из-за отсутствия опыта, сейчас бы сделал за день).
А за прошлые выходные уже с обширным опытом запилил систему на ECS-архитектуре, где все расчеты идут на веб-сервере, а клиент работает с сервером через WebAPI.
Пока только симулирует в реальном времени гравитационное взаимодействие между телами и держит без особых проблем 800 тел(хотя клиенту из-за Trail'ов становится тяжеловато их рисовать и FPS падает до 20, но серверу было норм).
Собсно на базе этого я и хотел бы запилить мультиплеерную поигрульку с орбитальными механиками(это еще под вопросом) и в меру реалистичными космическими столкновениями.
Ну в контексте космических сражений любые кинетические неуправляемые снаряды практически бессмысленны, однако если подойти на нужную дистанцию, где неуправляемая кинетика возможно, то книпелля норм зайдут :D
Посмотрю, но по первым тытруб видосам создается ощущение, что все тот же кисель.
Даже в моей первой убогой поделке получше полеты. www.youtube.com/watch?v=NOTXgIv0Qik
Чувак, я хотел бы создать в меру реалистичную двухмерную(для начала) игру про космические бои, но мне очень не хватает напарника, с которым можно было бы обсуждать все и от которого можно было бы почувствовать поддержку и соответственно мотивацию.
Если тебя заинтересовало мое предложение — отпишись в телеграмм(в профиле) или в личку.
Не движки кривые, а руки разработчиков игр. Хотя сами движки тоже не без огрехов.
ИМХО, с правильным подходом к разработке и на Unity можно добиться хорошей картинки при хорошей производительности.
Тем не менее обязательно попробую как-нибудь на досуге.
Ну а чтобы не дублировать код, в ECS тоже возможна абстракция, только выстраивается она совсем иначе, нежели в ОО.
Да, у плюсов слишком много нюансов :(
В проекте, которым я сейчас занимаюсь на работе(тут свой закрытый ECS-фреймворк), например каждый UI элемент — сущность. То есть кнопка — сущность с компонентами ButtonComponent и MyMarkComponent, при нажатии она генерирует ивент по самой себе и его можно ловить в любой из систем.
Но я больше склоняюсь к варианту, который предлагает Leopotam, где UI элементы просто-напросто генерируют ивенты внутрь ECS.
github.com/Leopotam/ecs-ui
github.com/SH42913/pacmanecs
Самый главный плюс ECS — его легкая расширяемость, взаимозаменяемость и слабосвязность систем, в некоторых случаях(LeoECS самый лучший пример такого случая) ECS дает еще и приличный буст к производительности, ибо обработка выходит гораздо легче. Единственная трудность ECS — его освоение на первых парах, очень сложно перестроить восприятие и построение архитектуры с ОО на ECS, у меня на это ушло пол года и весь этот опыт я постарался вложить в примере PacMan.
Быть может когда-нибудь я напишу статью о том как перестроить видение архитектуры с ОО на ECS.
ИМХО, ECS позволяет куда более масштабируемый, простой и удобный подход к архитектуре, нежели ОО. В условиях вечно меняющихся идей у геймдизов и начальства, ECS — подходит куда лучше. Но понять ECS после ОО действительно крайне трудно.
Центральное «солнце» приколочено к центру мира, а вот все остальные объекты влияют друг на друга, так что и планеты к кораблям тянуться будут
Еще сейчас считается на любых расстояниях, если привязать какое-то ограничение на дистанцию, то нагрузка еще сильнее упадет.
Меня пока куда больше волнует предсказание и как его лучше реализовать.
Если все таки доведу планируемый проект до вменяемого состояния, то такой вид «оружия» обязательно добавлю.
Я просто каждое обновление мира считаю обычный закон всемирного тяготения, ибо это все таки развлекательный проект, а не научный. Пока даже предсказания траектории у меня нету .-.
Наверное стоило сказать не «гравитационное взаимодействие», а «считает силу гравитации»
Но при этом масса должна быть достаточной, чтобы нанести повреждения радиаторам и панелям.
Простенький клон Asteroids — да, человек с опытом за несколько часов сделает.
Свою первую поделку(видос которой парой комментов выше и которая, к слову, хардкорны клон Asteroids) я делал около трех месяцев по вечерам и без капельки опыта.
Но зато там и компонентность корабля, и модульные повреждения(правда только для двигателей), и симуляция термодинамики реактора, и простенькая эмуляция энергосистемы, ну и система мониторов много времени отняла(опять же из-за отсутствия опыта, сейчас бы сделал за день).
А за прошлые выходные уже с обширным опытом запилил систему на ECS-архитектуре, где все расчеты идут на веб-сервере, а клиент работает с сервером через WebAPI.
Пока только симулирует в реальном времени гравитационное взаимодействие между телами и держит без особых проблем 800 тел(хотя клиенту из-за Trail'ов становится тяжеловато их рисовать и FPS падает до 20, но серверу было норм).
Собсно на базе этого я и хотел бы запилить мультиплеерную поигрульку с орбитальными механиками(это еще под вопросом) и в меру реалистичными космическими столкновениями.
Даже в моей первой убогой поделке получше полеты.
www.youtube.com/watch?v=NOTXgIv0Qik
Если тебя заинтересовало мое предложение — отпишись в телеграмм(в профиле) или в личку.