2011-07-11 10 views
6

Sono nella fase di progettazione di un gioco di "programmazione robotica" 3d. Ispirato a giochi come Colobot, Robot Odyssey, Cholo, ecc.Utilizzo di una macchina virtuale all'interno di un gioco?

Voglio che ogni robot nel gioco abbia il proprio ambiente/sistema operativo/macchina virtuale proprio come nella vita reale. Ogni ambiente dovrebbe essere in modalità sandbox in modo che sia locale rispetto al robot in termini di interazione con il resto del gioco.

Originariamente stavo per implementare HACK VM come descritto nel libro "Elements of Computing Systems", ma poi mi sono incuriosito se esistesse una soluzione migliore in termini di prestazioni per questo stile di gioco.

Quindi la mia domanda è: esiste già un'architettura di macchina virtuale che possa servire al mio scopo?

P.s Il linguaggio e il motore di gioco da utilizzare non sono stati ancora decisi, ma probabilmente saranno C# o smalltalk.

+0

Utilizzare Smalltalk VM dell'implementazione stessa e comunicare i nodi tramite IP? – Marcin

+0

Stavo indagando su questa idea con il smalltalk HydraVM. Mi sono imbattuto in alcuni problemi e poi ho dimenticato l'intera faccenda. Vedrò se riesco a capire cosa è andato storto. – zenchess

+2

Bene, sono riuscito a caricare 11 immagini smalltalk in HydraVM fianco a fianco ... sfortunatamente l'immagine si è bloccata nel tentativo di caricare il dodicesimo. Sono stati utilizzati 200 megabyte di memoria. È tempo di esaminare le immagini. :) – zenchess

risposta

3

Hmm .. utilizzando un'immagine separata per robot è un po 'eccessivo IMO. Non conosco i requisiti del tuo progetto, ma perché non esegui tutti i robot nella stessa immagine usando il proprio Processo? (È necessario sapere che smalltalk supporta il modello di threading verde).

Informazioni su HydraVM: in origine si trattava di un progetto dimostrativo. Sorprendentemente, ha funzionato bene e abbastanza stabile. Ma per ulteriori sviluppi è necessario un progetto che richieda davvero tale architettura. E francamente, le infrastrutture a livello di lingua smalltalk non erano pronte per questo momento (non direi che sia pronta oggi) Perché per sfruttarle, è necessario uno strumento migliore come il debug remoto, la navigazione remota, l'immagine remota gestione ecc. ecc.

Sono davvero sorpreso di sentire che sei stato in grado di eseguire 11 immagini in parallelo. È fantastico. Dal momento che non ho mai provato a eseguire più di 2 :) Il problema con così tante immagini, che hai bisogno di un diverso sistema di gestione della memoria. E quello che viene utilizzato in Hydra è ereditato da Squeak VM e non si adatta veramente a questo tipo di design.

+0

Quindi non so se si esegue i robot nella stessa immagine con processi separati avrebbe funzionato per la mia idea di gioco. La cosa è, vorrei che l'utente sia in grado di programmare i robot, cioè, ogni robot ha un 'sistema operativo' sottostante. Idealmente, potevano programmare il robot in smalltalk, ma qualsiasi linguaggio di scripting andrebbe bene per me. Il motivo per cui non credo che i processi avrebbero funzionato in una sola immagine è che se si scrive una sceneggiatura per un robot, questo script non dovrebbero avere accesso a tutti gli altri robot nell'immagine, o essere in grado di modificare lo stato del gioco di là di quanto è localmente possibile per quel robot. – zenchess

Problemi correlati