¿Cómo puedo diseñar un sistema de secuencia efectivo?

Estoy haciendo un juego basado en la historia en este momento, y quiero crear un sistema que me permita codificar secuencias fácilmente sin crear un desastre del proyecto. Lo que quiero decir con secuencias es para algo como una Escena, por ejemplo, ya que es una historia impulsada, el jugador comienza en una habitación, que luego un personaje entra, muestra un dialog, luego se aleja, hace algunas cosas, un par de se reproducen sonidos y efectos, etc.

Me preguntaba cómo podría estructurar un sistema como ese, que me permita tener cientos de estas secuencias sin hacer un gran desorder en mi proyecto, también, estas van a ser como guiones, ¿es mejor mantener la mayor parte del time? secuencias de commands en un menor número de files de class o es una buena idea difundirlos más? (a más files de class)

Espero que puedas entender exactamente lo que quiero decir y gracias de antemano.

(Estoy haciendo esto en C # en Unity, pero no estoy buscando un código específico, solo la teoría de cómo build dicho sistema de manera efectiva)

Necesitas una buena estructura de carpetas y debes mantener todo lo que puedas aparte y estructurarlo como una obra de teatro. De esta forma, los errores solo se encontrarán en la escena o en el acto y podrá depurar fácilmente cuando sea necesario.

Dado que tu mecánico principal es "contar historias", no tendrás un ciclo de juego repetible. Por lo tanto, tenga una carpeta de juego donde guarde todas las acciones del jugador que no estén escritas (es decir, controles, opciones) y guarde el rest en una carpeta de historias donde lo estructura como "Act1, Act2 …" y cada acto tiene escenas que se llaman "Scene1, Scene2 …".

Digamos que el jugador puede interactuar con un escritorio, el escritorio y el guión para la animation del escritorio y del reproductor mientras interactúan estarán en la carpeta de escena correspondiente, pero la capacidad de interactuar con el object (presiona e para interactuar o los objects de UI) estarán en la carpeta de juego.

Por ejemplo:

  1. El jugador está en una habitación interactúa con un personaje, el personaje deja espacio. Reproducir sonidos, etc. Fin de escena .
  2. Algunas otras cosas ocurren afuera, otro personaje entra, hay muchas cosas que suceden. Fin de escena
  3. Repite el process de escena hasta que estés satisfecho con la historia. Fin Actuar .

Ahora la estructura de la carpeta se verá un poco así: enter image description here Repite el process para otros " actos " (que deberían ser tus escenas de Unity ). Para más información sobre esto, sugiero referirse a las obras de teatro de William Shakespeare .

Una vez más, de lo que estoy hablando aquí no son las escenas de Unity sino las escenas en un acto de teatro. Puedes convertir cada escena en una escena de Unity, pero eso significaría una gran cantidad de carga y descarga de escenas, lo que podría ser un poco exagerado (sin embargo, no hay nada de malo en hacerlo de esa manera).

Puede usar una máquina de estado genérica para organizar cuándo y qué debe interactuar. En un proyecto tuve una pequeña narrativa para implementar, así que creo una máquina de estado que maneja los scripts que manejan los objects del juego. Puede tener cuántas de estas máquinas de estado desea, pero el activo estará en sus carpetas como de costumbre, de la manera que desee.

enter image description here

Si lo entiendo correctamente, significa que durante el juego, los objects del juego se crean y se colocan en su jerarquía. si ese es el caso, entonces solo tienes que escribir algo que elimine el object del juego después de un cierto time.

Si esto no es lo que quiso decir, por favor agregue más detalles a la pregunta 🙂