2011-07-11 19 views
6

Estoy en la etapa de diseño de hacer un juego de "programación de robots" en 3D. Inspirado en juegos como Colobot, Robot Odyssey, Cholo, etc.¿Usar una máquina virtual dentro de un juego?

Quiero que cada robot en el juego tenga su propio entorno/sistema operativo/máquina virtual aislado como lo haría en la vida real. Cada entorno debe estar aislado para que sea local al robot en términos de cómo interactúa con el resto del juego.

Originalmente iba a implementar HACK VM como se describe en el libro "Elementos de los sistemas de computación", pero luego sentí curiosidad sobre si hay una mejor solución en términos de rendimiento para este estilo de juego.

Entonces mi pregunta es: ¿existe una arquitectura de máquina virtual ya existente que sirva bien a mi propósito?

P.s. El lenguaje y el motor del juego que se utilizará aún no se ha decidido, pero probablemente sea C# o smalltalk.

+0

¿Utiliza Smalltalk VM de su implementación y hace que los nodos se comuniquen por IP? – Marcin

+0

Estaba investigando esta idea con Smalltalk HydraVM. Me encontré con algunos problemas y luego me olvidé de todo. Veré si puedo descubrir qué salió mal. – zenchess

+2

Bueno, logré cargar 11 imágenes de Smalltalk en HydraVM una al lado de la otra ... desafortunadamente la imagen se coló al intentar cargar la 12ma. Se usaron 200 megabytes de memoria. Es hora de buscar reducir esas imágenes. :) – zenchess

Respuesta

3

Hmm .. utilizando una imagen separada por robot es un poco exagerado IMO. No conozco los requisitos de su proyecto, pero ¿por qué no ejecuta todos los robots en la misma imagen utilizando el propio Proceso? (Debe saber que smalltalk admite el modelo de enhebrado en verde).

Acerca de HydraVM: originalmente era un proyecto de prueba de concepto. Sorprendentemente, funciona bien y es bastante estable. Pero para un mayor desarrollo necesita proyectos que realmente requieran dicha arquitectura. Y, francamente, smalltalk language-level infrastracture no estaba listo en ese momento (no diría que está listo hoy;) Porque para aprovechar eso, necesita mejores herramientas como la depuración remota, navegación remota, imagen remota gestión, etc.

Estoy realmente sorprendido de que haya podido ejecutar 11 imágenes en paralelo. Eso es genial. Como nunca intenté ejecutar más de 2 :) El problema con tantas imágenes es que necesita un sistema de administración de memoria diferente. Y uno que se usó en Hydra se hereda de Squeak VM y no se ajusta realmente a dicho diseño.

+0

Así que no sé si ejecutar los robots en la misma imagen usando procesos separados funcionaría para mi idea de juego. La cuestión es que me gustaría que el usuario pueda programar los robots, es decir, cada robot tiene un "sistema operativo" subyacente. Idealmente, podrían programar el robot en Smalltalk, pero cualquier lenguaje de scripting estaría bien para mí. La razón por la que no creo que los procesos funcionen en una imagen es que si escribes una secuencia de comandos para un robot, esta secuencia de comandos no debería tener acceso a otros robots en la imagen ni cambiar el estado del juego más allá de lo local posible para ese robot. – zenchess

Cuestiones relacionadas