Pregunta

Después de leer bastantes artículos sobre Vida Artificial (un tema que me parece muy interesante) junto con varias preguntas aquí mismo sobre SO, he comenzado a jugar con la idea de diseñar un (Muy, muy, muy) Simulador simple No se requieren gráficos, incluso. Si he pasado por alto una pregunta, siéntase libre de señalarmela.

Como dije, esto difícilmente será una simulación de nivel de Sims. Creo que apenas alcanzará "freeware aceptable" nivel, es simplemente un ejercicio de aprendizaje y algo para mantener mis habilidades durante un descanso. La premisa básica es que se crea una persona genérica. Sin nombre, altura ni nada por el estilo (como dije, simple), lo único que recibirá es una lista de "asociaciones". y genérico " uso " ;, " recoger " y "mira" habilidades.

Mi primera pregunta se refiere a las asociaciones. ¿Qué recomienda SO como una forma eficiente de manejar tales cosas? Estaba pensando en un mapa múltiple, con la configuración relativamente fácil de la clave que es lo que quiere (comida, comer, descansar, etc.) y lo otro (lo siento, mi mente ha caducado) es lo que asocia con esa necesidad.

Por ejemplo, digamos que tenemos una nevera. El refrigerador contiene alimentos (solo un objeto base genérico). Inicialmente, la persona no asocia la nevera con la comida, pero sí asocia la comida con el hambre. Entonces, cuando su hambre crece, comienza a buscar comida arbitrariamente. Si no hay comida a su alcance, "utiliza". objetos para encontrar comida. Como no tiene asociaciones conocidas con los alimentos, usa cosas de todas maneras (probablemente buscando el objeto más cercano y expandiéndose). Una vez que usa / abre el refrigerador, ve comida, haciendo la conexión (Leer: insertando el par "comida, refrigerador") que el refrigerador contiene comida.

Ahora, me doy cuenta de que esto será mucho más complejo de lo que parece, y estoy preparado para resolverlo. La pregunta es, ¿sería adecuado un multimapa para una lista (posiblemente) de expansión exponencial de asociaciones? Si no, ¿cuál sería?

La segunda pregunta que tengo es probablemente mucho más fácil. En pocas palabras, ¿sería adecuada una interfaz genérica de objeto / elemento para la mayoría de los elementos? En otras palabras, un genérico '' usaría '' interfaz de trabajo para lo que pretendo? No creo que esté explicando esto bien.

De todos modos, cualquier comentario es apreciado.

¿Fue útil?

Solución

Si estuvieras haciendo esto como un proyecto de desarrollo básico, te sugiero que uses el equivalente de la reflexión de Java (sustituye el lenguaje de tu elección allí). Si desea hacer un proyecto de juguete como un esfuerzo inicial, le sugiero al menos lanzar su propia versión simple de reflexión, según la siguiente justificación.

Cada artefacto en su entorno ofrece ciertas capacidades. Un modelo simple de ese hecho es preguntar qué verbos son aplicables a cada objeto que encuentre su personaje virtual (incluida la posible dependencia del estado actual de ese objeto). Por ejemplo, tu personaje puede "abrir" un refrigerador, una caja de cereal o un libro, siempre que cada uno de ellos esté en un "cerrado" estado. Una vez que se abre un libro, tu personaje puede leerlo o cerrarlo. Una vez que se abre un refrigerador, tu personaje puede '' buscar '' para obtener una lista de contenidos visibles, puede eliminar un objeto, colocar un objeto en él, etc.

El punto es que una situación típica podría involucrar a tu personaje mirando a su alrededor para ver qué es visible, consultar un objeto para determinar su estado actual o qué se puede hacer con él (es decir, "qué estado" y "qué" can-i-do " son verbos generales aplicables a todos los objetos), y luego usan el conocimiento sobre su estado actual, el estado del objeto y la lista de verbos para ese objeto para intentar hacer varias cosas.

Al implementar un conjunto de comentarios positivos y negativos, con el tiempo tu personaje puede "aprender". bajo qué circunstancias debería o no participar en diferentes comportamientos. (Obviamente, podría hacer que esta simulación sea interactiva pidiéndole al usuario que participe para proporcionar comentarios).

Lo anterior es solo un boceto, pero quizás te pueda dar algunas ideas interesantes para jugar. ¡Que te diviertas! ;-)

Otros consejos

A la primera pregunta:

Entiendo que tienes una relación de uno a posiblemente muchos. Entonces, sí, un multimapa me parece apropiado.

A la segunda pregunta:

Sí, creo que es apropiada una interfaz genérica para objetos. Quizás use algo similar a REST para manipular el estado del objeto.

Hace un tiempo escuché un podcast con el desarrollador de The Noble Ape Simulation , que puede ser interesante para usted: de manera conceptual y tal vez en código, ya que puede simple el código fuente , así como binarios de descarga .

El podcast fue FLOSS Weekly 31 con Randal Schwartz y Leo Laporte.

Vida con lisp (sbcl) :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top