2011-07-11 6 views
6

Я нахожусь в стадии разработки 3d-игры «программирование роботов». Вдохновленный такими играми, как Colobot, Robot Odyssey, Cholo и т. Д.Использование виртуальной машины внутри игры?

Я хочу, чтобы каждый робот в игре имел собственную изолированную среду/операционную систему/виртуальную машину, как в реальной жизни. Каждая среда должна быть изолирована так, чтобы она была локальной для робота с точки зрения того, как он взаимодействует с остальной частью игры.

Первоначально я собирался внедрить HACK VM, как описано в книге «Элементы вычислительных систем», но потом стало любопытно, есть ли лучшее решение с точки зрения производительности для этого стиля игры.

Итак, мой вопрос: существует ли уже существующая архитектура виртуальной машины, которая хорошо послужила бы моей цели?

P.s. Язык и игровой движок, который будет использоваться, еще не решен, но, вероятно, будет либо C#, либо smalltalk.

+0

Используйте Smalltalk VM самой реализации и связывайтесь с узлами через IP? – Marcin

+0

Я изучал эту идею с помощью небольшого массива HydraVM. Я столкнулся с некоторыми проблемами, а потом забыл обо всем этом. Я посмотрю, смогу ли я понять, что пошло не так. – zenchess

+2

Ну, мне удалось загрузить 11 маленьких изображений в HydraVM бок о бок ... к сожалению, изображение разбилось при попытке загрузить 12-й. Использовались 200 мегабайт памяти. Пора посмотреть на сокращение этих изображений. :) – zenchess

ответ

3

Хмм .. с помощью отдельного изображения на каждого робота немного перегружен IMO. Я не знаю требований вашего проекта, но почему бы просто не запускать всех роботов на одном изображении с помощью собственного процесса? (Вы должны знать, что smalltalk поддерживает зеленую модель резьбы).

О компании HydraVM: первоначально это было доказательством концепции проекта. Удивительно, что он работает хорошо и довольно стабильно. Но для дальнейшего развития вам нужны проекты, которые действительно требуют такой архитектуры. И, откровенно говоря, в этот момент в нем не было готово для этого на первый план (я бы не сказал, что он готов сегодня;) . Чтобы использовать это, вам нужны лучшие инструменты, такие как удаленная отладка, удаленный просмотр, удаленное изображение управление и т. д.

Я действительно удивлен, услышав, что вы могли одновременно запускать 11 изображений. Это потрясающе. Так как я никогда не пытался запускать больше 2 :) Проблема с таким количеством изображений, что вам нужна другая система управления памятью. И тот, который используется в Hydra, наследуется от Squeak VM и на самом деле не подходит для такого дизайна.

+0

Так что я не знаю, будет ли работать робот в том же изображении, используя отдельные процессы, для моей игровой идеи. Дело в том, что я хотел бы, чтобы пользователь мог запрограммировать роботов, т. Е. Каждый робот имеет базовую «операционную систему». В идеале они могли программировать робота в smalltalk, но любой скриптовый язык был бы хорош для меня. Причина, по которой я не думаю, что процессы будут работать на одном изображении, заключается в том, что если вы пишете скрипт для одного робота, этот скрипт не должен иметь доступ к каким-либо другим роботам на изображении или иметь возможность изменять состояние игры за пределами локального возможно для этого робота. – zenchess

 Смежные вопросы

  • Нет связанных вопросов^_^