ffinder
твой оратор привел самый худший пример что может быть на свете
вот потратил минут 15 и нарисовал примерную архитектуру такой игры в моём понимании
теперь сравнивай мою архитектуру, с архитектурой оратора с 12 летнем стажем (я умею программировать порядка 7 лет, стаж работы где-то 6 месяцев
)
справко : Iblabla это интерфейс класса, Cblabla это его реализация
это такой патерн при программировании движков и прочего
мы пишем интерфейс, программы юзают только интерфейс
а реализацию в движке можно менять сколько угодно, хоть другой
двиг прикрутить к уже готовому интерфейсу
Обьясню моей подход :
1) IMesh может содержать как анимированый так и статичный меш
2) IEntity просто содержит меш, положение и другое
тоесть любой 3д обьект представляется как IEntity
3) уровень ILevel содержит только список ссылок на ILevelObject
ему не важно какие конкретно это обьекты
Жемчужина наследуется от ILevelObject и содержит одну ссылку на IEntity
это позволяет делать LevelObject обьектом любой сложности любого типа
4) есть обобщение IAnimal, рыба и рак наследуются от них
в классах рыбы и рака реализуется ИИ, физика и прочее
5) класс IPlayer содержит в себе IAnimal, тоесть игрок может управлять любым животным игры
выделим плюсы архитектуры :
1) можно добавлять любого вида животных
2) можно добавлять любого вида игровых обьектов
3) игрок может управлять любым видом животного
4) 3д модель и её тонкости скрыты за классом IEntity
посмотрим на критерии оратора :
1) "Крутящаяся Жемчужина - это " - это та жа "Жемчужина" в моей архитектуре
просто при загрузке модели указали анимированый файл
делов-то - ПОМЕНЯЛИ ТОЛЬКО НАЗВАНИЯ ФАЙЛА МОДЕЛИ ПРИ ЗАГРУЗКЕ
2) "Главная Рыба - это " - это "Рыба", игрок вообще может управлять любым животным так что не важно что это
3) "Построение непротиворечивой иерархии объектным способом невозможно"
какого чёрта, я её ТОЛЬКО ЧТО ПОСТРОИЛ !!! щас весь мир взорвётся ?
ps. можно вообще-то для IAnimal выделить IAI, но это уже так, мелочи