¿Qué es un actor en el desarrollo de juegos?

15

Estoy leyendo un libro sobre desarrollo de juegos ( Game Coding Complete, Cuarta edición ) y hay un tema de "Actores" que simplemente explica cómo usarlos brevemente en lugar de explicar qué es.

Así es como el libro presenta a estos actores:

Los juegos están llenos de objetos que dan vida a tu mundo. Un juego de la Segunda Guerra Mundial podría estar lleno de tanques y aviones, mientras que un juego futurista de ciencia ficción podría tener robots y naves espaciales. Al igual que los actores en un escenario, estos objetos están en el corazón del juego. Parece apropiado que los llamemos "actores del juego" porque eso es exactamente lo que son.

Un actor de juegos es un objeto que representa una sola entidad en tu mundo de juego. Puede ser una munición, un tanque, un sofá, un NPC o cualquier cosa que se te ocurra. En algunos casos, el mundo mismo podría ser incluso un actor. Es importante definir los parámetros de los actores del juego y garantizar que sean lo más flexibles y reutilizables posible.

Hay tantas formas de definir un actor de juego como juegos. Como todo lo demás en programación de computadoras, rara vez hay una solución perfecta.

Solo pude entender algunas cosas: es una abstracción de todo en el juego que puede realizar acciones; tiene su propio estado; Su comportamiento generalmente se implementa como una máquina de estado. Eso es todo. Vengo con antecedentes de programación de sistemas para el desarrollo del juego, por lo que me gustaría saber en general, qué significa el actor en el desarrollo del juego, cómo usarlo, cómo se usa en general, qué problema resuelve, cómo y por qué. Me gustaría que la explicación sea tal que un niño pueda entender.

He tratado de encontrar esta información en Google, pero en cambio me dirige a otros "actores": la programación concurrente la mayor parte del tiempo o los actores del juego, pero sin una buena explicación.

Victor Polevoy
fuente
@Philipp He agregado el libro. Sin embargo, no es un muy breve explicación de actor, pero no estoy satisfecho con él: no trae ningún razones históricas o prácticas para la invención de los actores y qué problema soluciona, se acaba de explicar lo que puede ser.
Victor Polevoy
1
En Unreal Engine, an Actores en realidad una clase. docs.unrealengine.com/latest/INT/Programming/UnrealArchitecture/…
Almo
2
Creo que la mayoría de los motores llaman a estas "entidades" u "objetos de juego"; Nunca he escuchado "actor" en este contexto.
user253751
77
El texto de bloque citado es una respuesta tan buena a la pregunta de "qué es un actor" como lo que va a obtener.
Russell Borogove
Para hacer las cosas más confusas, también hay actores en el modelo de actor , que aparentemente es diferente.
Brian McCutchon el

Respuestas:

40

Como mencionaste, un actor puede ser literalmente cualquier cosa; árboles, NPC, edificios, etc. Un término similar es "entidad". No necesita tener un comportamiento en el sentido tradicional, puede ser estático.

Es solo una forma de decir "un objeto en el juego".

Bálint
fuente
2
Así que esto es termsimilar a entity, está bien. He pensado que también tiene un significado para algo más, pensé que es una abstracción más grande que solo un sinónimo. ¿Podrías decir también qué debería ser actor y qué no? ¿Con qué debo operar para elegir esto?
Victor Polevoy
Actores en realidad una clase en Unreal Engine. Bueno, de todos modos fue en la versión 2. Por lo tanto, podría no ser solo un término dependiendo del motor que esté utilizando.
Almo
1
Esto suena como si todo en un juego fuera un actor, lo que haría inútil esa palabra. Diría que todo lo que puede cambiar el estado del juego es un actor. Entonces un árbol no es un actor si es solo una imagen de fondo, pero si puede cortarlo y obtener recursos, lo es. Los menús, por otro lado, hacen algo, pero no los clasificaría como actores, no son parte del mundo del juego (principalmente, por ejemplo, en el juego flash "actualización completada", los menús son en realidad parte del mundo del juego).
sinónimo
@syntonym El segundo párrafo del texto citado en la pregunta establece que cualquier cosa puede ser un actor, incluso los sofás. Además, no todo es un actor, las partículas, por ejemplo, no lo son.
Bálint
@ Bálint interesante, he pensado que las partículas también son actores. Tienen que marcar la actualización, tienen que pensar (física), tienen un estado. ¿No lo es?
Victor Polevoy
13

Según tengo entendido, el término es un efecto secundario de contratar escritores para hacer las historias de los juegos. Como generalmente provienen del teatro o la pantalla, están acostumbrados a los términos Actory Prop. Actorsson cosas que se mueven y juegan un papel real en el juego, y Propscosas como árboles, edificios, etc.

Desde mis primeros días de codificación en la universidad, antes de que se nos permitiera usar un motor como Unity, tuvimos que codificar nuestro propio motor. Actorera una clase base abstracta que tenía una transformación, funciones de ciclo de vida vacías, y una función llamada Act()que era nuestra versión de Unity Update().

Nuestro bucle principal del juego básicamente siguió:

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

La mayoría de los motores usan el concepto Entidad, por lo que, a partir de su lectura, simplemente traduzca Actorcomo Entityen su cabeza y estará bien.

Stephan
fuente
+1 Me gusta que ilustra el hecho de que necesitas un nombre para una clase base.
Vaillancourt
2
Según tengo entendido, el término es un efecto secundario de contratar escritores para hacer las historias de juegos. Como generalmente provienen del teatro o la pantalla, están acostumbrados a los términos Actor y Prop. {{citation needed}} Un término "actor" es lo suficientemente genérico como para ser utilizado en el diseño de software mucho antes de que la gente pensara en contratar escritores para juegos (también, se utilizó en UML, etc., cosas que se usaron para el desarrollo empresarial). El diccionario (MW) dice lo siguiente: Definition of actor: 1 : one that acts : doer; No veo ninguna conexión teatral aquí.
Para ser justos, lo dije por mi entendimiento. Puede que tengas razón, pero la gente al menos está acostumbrada a la idea de actor y apoyo en ese contexto, lo que le da una explicación útil al Asker.
Stephan
Yo también diría que el término Actor no proviene de la contratación de escritores, pero puede provenir del deseo temprano de los desarrolladores de juegos de perseguir a Hollywood. :)
dash-tom-bang