2011-07-11 13 views
6

Jestem na etapie projektowania tworzenia gry 3D "programowania robotów". Zainspirowany grami takimi jak Colobot, Robot Odyssey, Cholo, itp.Korzystanie z maszyny wirtualnej w grze?

Chcę, aby każdy robot w grze miał swoje własne izolowane środowisko/system operacyjny/maszynę wirtualną, tak jak w prawdziwym życiu. Każde środowisko powinno być piaskowane tak, aby było lokalne dla robota w zakresie jego interakcji z resztą gry.

Początkowo zamierzałem wdrożyć maszynę HACK VM zgodnie z opisem w książce "Elementy systemów obliczeniowych", ale następnie zaciekawiło mnie, czy istnieje lepsze rozwiązanie pod względem wydajności tego stylu gry.

Moje pytanie brzmi: Czy istnieje już architektura maszyny wirtualnej, która dobrze służyłaby mojemu celowi?

P.s. Język i silnik gry, które mają być używane, nie zostały jeszcze ustalone, ale prawdopodobnie będą to C# lub smalltalk.

+0

Użyj maszyny wirtualnej Smalltalk samej implementacji i czy węzły komunikują się przez IP? – Marcin

+0

Badałem ten pomysł za pomocą małego HydraVM. Wpadłem na pewne problemy, a potem zapomniałem o całej sprawie. Zobaczę, czy uda mi się ustalić, co poszło nie tak. – zenchess

+2

Cóż, udało mi się załadować 11 miniaturowych zdjęć w HydraVM obok siebie ... niestety obraz uległ awarii podczas próby załadowania 12-tego. Użyto 200 megabajtów pamięci. Czas przyjrzeć się zmniejszeniu tych obrazów. :) – zenchess

Odpowiedz

3

Hmm .. używanie oddzielnego obrazu na robota to trochę przesadnego IMO. Nie znam wymagań twojego projektu, ale dlaczego po prostu nie uruchamiaj wszystkich robotów na tym samym obrazie za pomocą własnego procesu? (Musisz wiedzieć, że smalltalk obsługuje model green threading).

O firmie HydraVM: pierwotnie był to projekt sprawdzający koncepcję. Zaskakuje, że działa dobrze i jest dość stabilny. Jednak do dalszego rozwoju potrzebne są projekty, które naprawdę wymagają takiej architektury. Szczerze mówiąc, infrastracture na poziomie małego języka nie było na to gotowe w tej chwili (nie powiedziałbym, że jest już gotowe;) Ponieważ aby to wykorzystać, potrzebne są lepsze narzędzia, takie jak zdalne debugowanie, zdalne przeglądanie, zdalny obraz zarządzanie itp. itp.

Jestem naprawdę zaskoczony, słysząc, że udało Ci się uruchomić 11 obrazów równolegle. To cudownie. Ponieważ nigdy nie próbowałem uruchomić więcej niż 2 :) Problem z tak wieloma obrazami, że potrzebujesz innego systemu zarządzania pamięcią. Ten, który był używany w Hydrze, jest odziedziczony po Squeak VM i nie pasuje do takiego projektu.

+0

Więc nie wiem, czy uruchomienie robotów na tym samym obrazie przy użyciu oddzielnych procesów zadziałałoby na mój pomysł na grę. Chodzi o to, że chciałbym, aby użytkownik mógł zaprogramować roboty, tj. Każdy robot ma "system operacyjny". Idealnie mogliby zaprogramować robota w smalltalk, ale każdy język skryptowy byłby dla mnie w porządku. Powód, dla którego nie sądzę, aby procesy działały na jednym obrazie, polega na tym, że jeśli napiszesz skrypt dla jednego robota, ten skrypt nie powinien mieć dostępu do żadnych innych robotów na obrazku, lub być w stanie zmienić stan gry poza to, co jest lokalnie możliwe dla tego robota. – zenchess

Powiązane problemy