Что такое актер в разработке игр?

15

Я читаю книгу о разработке игр ( Game Coding Complete, четвертое издание ), и есть тема «Актеры», в которой просто объясняется, как их использовать кратко, вместо того, чтобы объяснять, что это такое.

Вот как книга представляет этих актеров:

Игры полны объектов, которые оживляют ваш мир. Игра Второй мировой войны может быть полна танков и самолетов, а в футуристической научно-фантастической игре могут быть роботы и космические корабли. Подобно актерам на сцене, эти объекты лежат в основе игрового процесса. Кажется уместным, что мы называем их «игровыми актерами», потому что это именно то, что они есть.

Игровой актер - это объект, представляющий единую сущность в вашем игровом мире. Это может быть пикап с боеприпасами, танк, кушетка, неигровой персонаж или что-нибудь еще, о чем вы только можете подумать. В некоторых случаях сам мир может быть даже актером. Важно определить параметры игровых актеров и обеспечить их максимальную гибкость и возможность повторного использования.

Существует так много способов определения игрового актера, как и игр. Как и все остальное в компьютерном программировании, редко бывает идеальное решение.

Я мог понять только несколько вещей: это абстракция всего в игре, которая может выполнять действия; у него свое государство; это поведение обычно реализуется как конечный автомат. Это оно. Я прихожу с опытом системного программирования в разработку игр, и поэтому мне хотелось бы узнать в целом, что означает актер в разработке игр, как его использовать, как он используется в целом, какую проблему он решает, как и Почему. Я хотел бы, чтобы объяснение было таким, чтобы ребенок мог понять.

Я пытался найти эту информацию в Google, но вместо этого она направляет меня к другим «актерам»: параллельное программирование большую часть времени или игровые актеры, но без хорошего объяснения.

Виктор Полевой
источник
@ Филипп я добавил книгу. Хотя, есть некоторые очень краткое объяснение , actorно я не доволен этим: он не приносит никаких исторических или практических причин изобретения актеров и какой проблемы он решает, есть просто объяснить , что это может быть.
Виктор Полевой
1
В Unreal Engine, это Actorна самом деле класс. docs.unrealengine.com/latest/INT/Programming/UnrealArchitecture/…
Almo
2
Я считаю, что большинство движков называют эти «сущности» или «игровые объекты»; Я никогда не слышал "актер" в этом контексте.
user253751
7
Ваш цитируемый текстовый блок является таким же хорошим ответом на вопрос «что такое актер», каким вы его получите.
Рассел
Чтобы сделать вещи более запутанными, в модели актеров есть актеры , которые, очевидно, отличаются.
Брайан Маккатон

Ответы:

40

Как вы упомянули, актер может быть буквально чем угодно; деревья, неигровые персонажи, здания и т. д. Аналогичный термин "сущность". Это не должно иметь поведение в традиционном смысле, оно может быть статичным.

Это просто способ сказать «объект в игре».

Балинт
источник
2
Так что это просто termпохоже на entity, хорошо. Я думал, что это также означает нечто большее, думал, что это большая абстракция, чем просто синоним. Не могли бы вы также сказать, что должно быть актером, а что нет? Что я должен использовать, чтобы выбрать это?
Виктор Полевой
Actorна самом деле класс в Unreal Engine. Ну, в любом случае это было в версии 2. Так что это может быть не просто термин в зависимости от того, какой движок вы используете.
Almo
1
Звучит так, будто все в игре - актер, что делает это слово бесполезным. Я бы сказал, что все, что может изменить игровое состояние, является актером. Тогда дерево не является актером, если это всего лишь фоновое изображение, но если вы можете срубить его и получить ресурсы, это так. С другой стороны, меню что-то делает, но я бы не классифицировал их как актеров, они не являются частью игрового мира (в основном, например, в флеш-игре «обновление завершено» меню фактически являются частью игрового мира).
синтоним
@syntonym Второй абзац цитируемого текста в вопросе гласит, что актером может быть что угодно, даже диваны. Кроме того, не все является актером, например, частицы не являются.
Балинт
@ Bálint интересно, я думал, что частицы тоже актеры. Они должны помечать обновления, они должны думать (физика), у них есть состояние. Не так ли?
Виктор Полевой
13

Насколько я понимаю, этот термин является побочным эффектом найма авторов для создания историй для игр. Поскольку они обычно приходят из театра или с экрана, они привыкли к условиям Actorи Prop. Actorsбыть вещами, которые движутся и играют реальную роль в игре, и Propsтакими вещами, как деревья, здания и т. д.

С первых дней написания кода в колледже, до того, как нам разрешили использовать такой движок, как Unity, нам приходилось кодировать наш собственный движок. Actorбыл абстрактный базовый класс, который имел преобразование, пустые функции жизненного цикла и функцию, Act()которая была нашей версией Unity Update().

Наш основной игровой цикл в основном следовал:

for(Actor actor in actors)
{ 
   actor.Act(); 
}

Большинство движков используют концепцию Entity, поэтому из вашего чтения просто переводите, Actorкак Entityв своей голове, и все будет в порядке.

Stephan
источник
+1 Мне нравится, что это иллюстрирует тот факт, что вам нужно имя для базового класса.
Vaillancourt
2
Насколько я понимаю, этот термин является побочным эффектом найма авторов для создания историй для игр. Поскольку они обычно приходят из театра или с экрана, они привыкли к терминам «Актер» и «Опора». {{citation needed}} Термин «актер» достаточно универсален, чтобы его можно было использовать в разработке программного обеспечения задолго до того, как люди даже подумали о найме авторов для игр (также он использовался в UML и т. Д., Вещи, которые были использованы для развития бизнеса). Словарь (MW) говорит это Definition of actor: 1 : one that acts : doer:; Я не вижу здесь никакой театральной связи.
Чтобы быть справедливым, я сказал, насколько я понимаю. Вы можете быть правы, но люди, по крайней мере, привыкли к идее актера и опоры в этом контексте, что дает Аскеру полезное объяснение.
Стефан
Я бы также сказал, что термин «Актер» не исходит от найма авторов, но это может быть связано с ранним желанием разработчиков игр преследовать Голливуд. :)
dash-tom-bang