2010-06-08 15 views
8

Ya hice algunos juegos simples: ingrese un nivel, siga hasta el final, continúe al siguiente nivel.
Pero todavía me pregunto cómo los desarrolladores de juegos "reales" crean juegos con una historia.Desarrollo del juego: ¿Cómo se hace un juego de historia?

Estas son algunas cosas que tiene un juego de historia (y donde yo estoy preguntando acerca de cómo lo hacen):

  • Una secuencia de lugares que el jugador tiene que visitar y hacer allí que, eso y ese.
  • La primera vez que ves a un chico, él solo dice hola. Después de unas pocas horas de progreso del juego, él te da una pista para ir a un lugar específico.
  • La primera vez que pasas por un puente no pasa nada, una segunda vez: el puente se cae y entrarás en una nueva ubicación debajo del puente.
  • La primera vez que ingresa a una nueva ubicación, obtendrá mucha información de, p. Ej. aldeanos, etc. La próxima vez que no pase nada

Los últimos puntos son un poco tres veces lo mismo.
Pero, no creo que tengan un archivo de guardado con una gran cantidad de booleanos y enteros para la celebración de cosas como:

  • jugador lo hizo la primera vez ....
  • jugador entra en el décima vez que la ubicación
  • jugador habló para la ### º tiempo para esa persona
  • etc

Cuando hablo de juegos de la historia, estoy pensando a:

  • La Leyenda de Zelda (todos los juegos de la serie)
  • Okami

Y Estos son algunos ejemplos de nivel en nivel de salida juegos:

  • Mario
  • trenza
  • Crayon Physics

Gracias

+4

"Pero no creo que tengan un archivo guardado con muchos booleanos y enteros para contener cosas". ¿Cuál es el propósito de un archivo guardado, entonces? ¿Qué almacenarías en un archivo guardado sino en el estado del mundo del juego? – JAB

+0

La lista dada sugiere que el pensamiento era que el estado de guardar realmente contendría cada acción que el jugador había tomado alguna vez, así como su significado para un contexto particular. Obviamente, el sistema debe ser más simple que eso, al menos para la mayoría de los juegos. City of Heroes por un tiempo sintió que estaba haciendo exactamente eso, de todos modos, obtendría logros retroactivos por hacer cosas que ni siquiera recordaba haber hecho. –

Respuesta

5

Normalmente, estos juegos usan una colección de banderas para controlar el comportamiento de personajes y piezas determinadas. Esto resulta ser muy similar (a menudo directamente equivalente) a una máquina de estados finitos, que es un enfoque un poco más general y poderoso para el problema.

  • Un FSM sigue el "progreso" de una búsqueda en particular - lo que los interruptores se tiran, lo que las conversaciones se llevan a cabo, etc
  • Cada NPC tiene una FSM para seguir el "estado de la información de que la APN - cada correlatos estatales a una fase particular dentro del arco de la APN en el juego, por lo general termina en un estado aleatorio comilla.
  • un salvado juego podría, como un ejemplo, realizar un seguimiento del estado de cada objeto en el universo del juego.

La parte importante es diseñar no solo los estados sino también las transiciones para que Son tan fáciles de conectar como sea posible.

+0

¿En qué punto el uso de un FSM se volvería demasiado difícil de manejar?Yo pensaría que, si tus objetos tienen una multitud de propiedades, puede haber un punto donde terminarías con demasiados estados para lidiar fácilmente. – JAB

+0

Hay formas de analizar comportamientos individuales para que no sea un problema. Por ejemplo, en un modelo de conversación en el que tiene varias líneas de investigación, es posible que tenga varias máquinas de estado que son en su mayoría independientes que rastrean cada línea particular. Obviamente, tiene que equilibrar la complejidad del modelo (la capacidad de interacción entre las tramas, por ejemplo, requiere máquinas de estado más complejas) con la complejidad de la solución técnica. Los FSM son mejores para gobernar comportamientos de alto nivel, sin embargo. Están bien para historias, búsquedas, conversaciones, pero no para la IA en general. –

1

Creo que lo encontrará varía de un género a otro, pero mientras se reproduce es probable que sólo llevó a cabo en una estructura de datos en la memoria y cuando se guarda se persistió en el archivo de salvar (solo mire el tamaño de algunos archivos guardados para varios juegos, he visto archivos guardados de MB múltiples).

1

Nunca he trabajado en algo así, pero supongo que el enfoque general es cargar/guardar/consultar una estructura "GameState" que contiene toda la información necesaria para que el juego realice las acciones apropiadas.

p. Ej.

if(GameState.Player.Karma < 0 && GameState.NPCs.BillyTheInnocentLamb.KilledByPlayer) 
{ 
    GameState.NPCs.FredTheShephard.HatesPlayer == true; 
} 

Ahora hágalo un millón de veces y obtendrá un juego de rol.

+1

'GameState.NPCs.BillyTheInnocentLamb.Killer.equals (GameState.Player)' tendría más sentido para mí, a menos que no desee tener relaciones entre los NPC y no le importe quién mató al cordero si no fuera así. t el jugador. – JAB

+0

@JAB: Alguien puede ser asesinado solo una vez. Y sería el jugador en este ejemplo. Entonces no veo cuál es el problema. –

0

Si usted puede llegar a tener una mirada en el olvido (fantástico juego!) Se puede tratar de utilizar su Conjunto de construcción que le permite personalizar por completo el juego mediante la construcción de mapas misiones adicionales, etc.

Mediante su uso se verán que el mecanismo es esencialmente lo que han dicho los demás: por ejemplo, usted tiene varias oraciones que un NPC puede decir, y dirá una u otra dependiendo de ciertas condiciones. Por ejemplo, si eres bueno o malo, qué tan bueno eres para convencerlo de algo o qué tan bueno eres sobornando a él, los artículos particulares que tienes/no tienes, ¡pero incluso cosas como la hora del día!

Como se puede ver cualquiera de estas cosas se pueden expresar fácilmente con un valor (por ejemplo, bueno/malo puede ser un valor entre 0 y 100, lo mismo para su habilidad de soborno, etc.) y entonces es simplemente una cuestión de tener un montón de IFS :)

0

"Pero, no creo que tienen un guardar en archivos con una gran cantidad de booleanos y enteros para la celebración de las cosas"

Creo que lo hacen. :)

Algunas veces puede haber una estructura formal: por ejemplo, puede ser una lista de contadores nombrados y banderas que se pueden consultar desde el lenguaje de scripting del juego y que pueden corresponder directamente a las entradas en el documento de diseño. El juego puede incrementar los contadores y voltear las banderas en respuesta a los eventos del juego y consultar esas banderas y contadores al decidir qué acciones realizar, y todo el lote se puede guardar fácilmente en un formato compacto.

Cuestiones relacionadas