Предпочтите Состав по Наследованию
Когда вопрос подходил, используют ли к подклассу CCSprite или некоторый образцовый класс, чтобы построить Вашу иерархию юридического лица игры на cocos2d форуме, я подчеркнул, что нужно попытаться не использовать наследование и держать иерархию наследования к как немного уровней насколько возможно. Я работал с codebases с сотнями тысяч линий кодекса, и сотен различных типов актеров в мире. Все же иерархия наследования была 2 (родительскими) классами высшего качества для почти всех объектов, у только очень немногих объектов игры было 3 или 4 класса высшего качества. Как Вы можете сделать сложные игры этим путем? Yet the inheritance hierarchy was 2 super (parent) classes for almost all objects, only very few game objects had 3 or 4 super classes. How can you make complex games this way?
Ответ заключается в составе, часто называемом Компонентами Игры двигателями как TorqueX и Двигателем PushButton (двигатель Флэш игры от оригинальных разработчиков Вращающего момента). Это видео от PushButton ведет, разработчик Бен Гарни объясняет это очень хорошо и также иллюстрирует проблему со злоупотреблением наследования в двигателях игры. Что-то, что большинство разработчиков, плохо знакомых с ориентированным на объект и/или программированием игры, действительно фактически склонно злоупотреблять – я возлагаю ответственность за это на плохо письменные книги и другие вводные источники ООП, которые подчеркивают наследование, не обсуждая его неудобства. Something that most developers new to object-oriented and/or game programming do in fact tend to over-use – i blame that on poorly written books and other introductory OOP sources which emphasize inheritance without discussing its disadvantages.
Вы можете читать больше о системе Компонентов PushButton в их документации. Как они осуществили Компоненты в TorqueX и что различия к Компонентам Игры XNA, далее увеличивает понимание понятия.
Для дальнейшего чтения и аргументов читает, статья Wikipedia о компоненте базировала программирование. Фактически, объективный язык C был изобретен, чтобы быть в состоянии создать компоненты программного обеспечения многократного использования!
Разговор Скотта Биласа 2002 года GDC об Управляемой данными Системе Объекта Игры (PDF) как использующийся Осадой Темницы содержит больше указателей на том, почему наследование терпит неудачу для разработчиков игры и что преимущества (но также и некоторые протесты) с основанными на компоненте двигателями игры. Разговор может быть старым, но это все еще столь же действительно сегодня, как это было тогда. Фактически, в 2002 я начал работать над SpellForce, которому уже встраивали составляющую систему в ее ядро, названное Аспектами, Способностями и Периодами. Это позволило нам входить во все данные об игре в базу данных, и программисты только должны были написать родовой кодекс, который имел дело с данными, так же как устанавливанием определенных пределов и проверок достоверности (eg., Вы не могли использовать разрушительный период на вас непосредственно, но если бы Вы хотели Вам, то мог бы предназначаться для врагов с Вашим излечивать период, или иметь здания охоты стрельцов … errm). In fact, in 2002 i started working on SpellForce which already had a component system built into its core, called Aspects, Abilities and Spells. It allowed us to enter all the game data in the database and programmers only needed to write the generic code that dealt with the data, as well as setting certain limits and validity checks (eg. you couldn’t use a damaging spell on yourself but if you wanted to you could target enemies with your heal spell, or have archers shoot buildings … errm).
В течение 2009 GDC подобное представление проводилось Марчином Чеди Радикального Развлечения. Разговор назвали Теорией и Практикой Архитектуры Компонента Объекта Игры (PPT).
Мик Вест написал статью Refactoring Game Entities with Components, которая описывает проблемы и выгоду изменения Тони Хока codebase от модели наследования до системы компонента игры.
Несколько более продвинутой, прочитанной на составляющем использовании, является совместная бумага под названием Динамическая Система Компонента Объекта Игры для Изменчивых Характеров Поведения, которая говорит о компонентах в контексте конечных автоматов и поведений NPC с основанной на правилах системой активации.
Блог Архитектора Игры называет это Анатомией Отчаяния и подводит итог очень хороший, что доводы "против" основанного на наследовании дизайна класса и как состав решает их.














большой vid и почта. намного лучшее расположение для определенных классов IMO
Наследование очень хорошо для бюрократических Явских материалов (:
[...] Iterheim в узнают, что cocos2d отправил хорошую статью, обсуждая выгоду состава в играх, и он связал “Компоненты Понимания” QuickTalk, который я сделал для PushButton [...]
Вы могли сделать специализированную обучающую программу (возможно, включая видео) того, как сделать Растровые шрифты, и как объединить их с UILabels, вещами той природы?
Еще одна вещь, в некоторых наличных деньгах игр представлена в стенографии, таким образом, вместо 1 000 000$ Вы получаете $1 миллион, (другие примеры включают 0.25k, 0.75k, 250 k, и т.д.) (подобный способу, которым Заметный Мир Футбола имел обыкновение делать это), у Вас есть база знаний на том, как лучше всего достигнуть этого?
Спасибо
[...] Цель C является действительно хорошим языком, чтобы простираться из-за его удобных категорий класса и нехватки многократного наследования. Так, когда Вы находите себя оспариваемыми с чем-то, что идет вне двигателя игры, только создайте [...]
Привет,
Я отчаянно пытаюсь получать эту книгу, поскольку я вижу, что есть очень много интересных тем о cocos2d. Когда я проверял Амазонку об этой книге, она показывает, что ”эта книга еще не была выпущена”. Таким образом, я смущен, что книга выпустила это в магазинах или делает я должен ждать длинное этой удивительной книги. So I am confused that book has released it in stores or do i need to wait a long for this amazing book.
Книга доступна как Альфа eBook непосредственно от Apress:
http://apress.com/book/view/1430233036
[...] Беном Гарни 12 июня 2010 Штеффен Итерайм в узнает, что cocos2d отправил хорошую статью, обсуждая выгоду состава в играх, и он связал “Компоненты Понимания” QuickTalk, который я сделал для PushButton [...]
[...] образец MVC несколько подобен составляющей системе объекта игры, которую я описал здесь. Для обеих систем общее представление не состоит в том, чтобы подклассифицировать CCSprite и вставить Вашу логику игры там. [...] [...]
[...] Вы действительно изучали ООП и наследование. Будьте carefull наследованием, может быть злым, если злоупотреблено см. почему: Предпочтите Состав по Наследованию [...] Prefer Composition over Inheritance [...]
Соединение действительно легкой составляющей структуры для Cocos2D.
Вот сообщение в блоге: http://bit.ly/hQFdii