Компонентные игровые объектные системы на практике [закрыто]

43

Давайте посмотрим историю успеха. Какие популярные игры (и игровые движки) были созданы с использованием системы игровых объектов на основе компонентов ? Каждый ответ должен содержать:

  1. Название игры (по одному на ответ)
  2. Автор / Компания
  3. Год
  4. Время разработки (необязательно)
  5. Ссылка на вскрытие (необязательно)
  6. Ссылки на документы / исходный код (необязательно)
topright
источник
7
-1, почти каждая игра, написанная в последнее десятилетие, будет где-то использовать систему компонентов, а не использовать систему компонентов где-то еще, которую она могла бы использовать.
5
Вы неправы. Многие движки все еще используют статические иерархии. И интересно собирать и читать документы / постмортемы / фрагменты кода игр и движков, которые действительно используют компонентные системы.
topright
4
Я не говорил, что движки не используют статические иерархии. Я сказал, что вам будет сложно найти движок, который использует только статические иерархии, точно так же, как вас заставят найти движок, использующий только компоненты.
2
Вы неправы. Игровые сущности (сердце игровой логики), визуальные эффекты, игровой движок и инфраструктура редактора либо основаны на компонентах, либо нет.
topright
2
@topright: Независимо от того, прав Джо или нет, начинать свои комментарии два раза подряд с простого и личного «Вы не правы» не очень тактично, не правда ли? Могу поспорить, что ваши комментарии не пропустят никакой релевантной информации без этих трех маленьких слов, но если их опустить, то это внесет гораздо больший вклад в приятный и вежливый разговор. Пожалуйста, примите это во внимание :)
Майкл Клемент

Ответы:

19

Dungeon Siege от газовых игр

Скотт Билас опубликовал много информации о Dungeon Siege, в которой, среди прочего, были представлены системы на основе компонентов.

Dungeon Siege был выпущен в 2002 году.

DrDeth
источник
Вау, отличная ссылка. Его выступление о компонентных системах действительно помогло мне лучше понять реализацию компонентных систем. Аккуратный разговор о том, как был создан непрерывный мир в DS. Интересно, используются ли подобные методы в других играх большого мира? Я думаю, что большинство склонны использовать что-то более похожее на регионы или куски (Minecraft, что-нибудь от Bethesda).
CodexArcanum
19

Сопротивление 1-2 (возможно, 3) (2006-2008) от Insomniac Games

Терренс Коэн перечисляет эти игры в своем выступлении GDC Canada 2010, посвященном динамической компонентной архитектуре для высокопроизводительного игрового процесса.

Не уверен, применимо ли это к последним играм Ratchet & Clank.

Крис Уотерс
источник
Знаете ли вы, что аудио для этой презентации находится за платным доступом GDC Vault? Слайды сами по себе довольно крутые, но у меня есть несколько вопросов, на которые, я подозреваю, дан ответ в презентации.
Я не знал об этой презентации, большое спасибо!
topright
13

Unity3D использует систему на основе компонентов по умолчанию. Это превосходно для создания игровых объектов из текстового файла и внедрения зависимостей.

function createEnemy() {

   // extract AI type for enemy
   // definition is a custom structure holding parameters to create the enemy
   var aitypename = definition.ai;

   // AIType can be an interface or abstract class
   // you can create a component from a string or from a type
   var ai : AIType = this.gameObject.AddComponent(aitypename);
   ai.setup(definition.ai_settings);

   // set rule for enemy when it is destroyed
   this.gameObject.AddComponent(definition.when_destoryed); 


}

Эти компоненты могут выглядеть так

class AI_Scout extends AIType
{
  // called per update-frame on the game-object with this script
  public function Update() {
    // run Scout AI here
   }
}


class Spawn_Ammo_On_Destroyed extends When_Destroyed
{
   // automatically called by the engine when the game object this script is attached to is
   // destroyed
   public function OnDestroyed() {
    // spawn ammo
    }
}
Extrakun
источник
1

Насколько мне известно, лучший проект, который я видел, это Burger Engine. Просто скачайте код и проверьте, насколько хорошо они реализованы. Все это основано на данных из xml, и они очень хорошо использовали архитектуру, основанную на объектах. Стоит посмотреть на это.

http://code.google.com/p/burger-engine/source/browse/

Ayyappa
источник
2
-1, этот код выглядит действительно дилетантским, от неправильного написания «Abstract» до перечисления статических типов компонентов, огромного количества виртуальных функций, включения 28 байтов данных о местоположении для каждого компонента ... Если это лучшее, что у вас есть видел, посмотри в другом месте.
грустно, что вам это не понравилось. Весь код управляется данными, и я не нашел никакой реализации с открытым исходным кодом, которая бы так легко справилась с этой задачей. Если у вас есть какие-либо ссылки на хороший код, пожалуйста, опубликуйте ссылки. к орфографической ошибке, виртуальному функционалу - это хороший ресурс для людей, которые впервые в "компонентной архитектуре". Он служит ценной информацией о том, как проектирование, основанное на данных, работает на практике.
Айяппа
2
Не знаю о коде, но указание на орфографические ошибки является недопустимым аргументом, учитывая, что есть много программистов из неанглоязычных стран.
Раджаванья Субраманиан