Smalltalk 在游戏中使用虚拟机?

Smalltalk 在游戏中使用虚拟机?,smalltalk,robot,vm-implementation,Smalltalk,Robot,Vm Implementation,我正在设计一款3d“机器人编程”游戏。灵感来源于Colobot、Robot Odyssey、Cholo等游戏 我希望游戏中的每个机器人都能像在现实生活中一样拥有自己的独立环境/操作系统/虚拟机。每个环境都应该被沙箱化,以便在机器人如何与游戏其余部分交互方面,它是本地的 起初,我打算按照《计算系统的元素》一书中的描述实现HACK虚拟机,但后来我开始好奇,在这种游戏的性能方面,是否有更好的解决方案 所以我的问题是:是否已经有一个虚拟机架构可以很好地满足我的目的 另外,所使用的语言和游戏引擎尚未确定,

我正在设计一款3d“机器人编程”游戏。灵感来源于Colobot、Robot Odyssey、Cholo等游戏

我希望游戏中的每个机器人都能像在现实生活中一样拥有自己的独立环境/操作系统/虚拟机。每个环境都应该被沙箱化,以便在机器人如何与游戏其余部分交互方面,它是本地的

起初,我打算按照《计算系统的元素》一书中的描述实现HACK虚拟机,但后来我开始好奇,在这种游戏的性能方面,是否有更好的解决方案

所以我的问题是:是否已经有一个虚拟机架构可以很好地满足我的目的


另外,所使用的语言和游戏引擎尚未确定,但可能是C#或smalltalk

嗯。。在我看来,为每个机器人使用单独的图像有点过分了。 我不知道你的项目的要求,但为什么不使用自己的进程在同一个映像中运行所有机器人呢? (您必须知道smalltalk支持绿色线程模型)

关于HydraVM:最初它是一个概念验证项目。令人惊讶的是,它运行良好且相当稳定。 但对于进一步的开发,您需要一个真正需要这种体系结构的项目。 坦率地说,smalltalk语言级基础架构当时还没有准备好(我不会说它今天已经准备好了;) 因为要利用这一点,您需要更好的工具,如远程调试、远程浏览、远程图像管理等

听说您能够并行运行11个图像,我真的很惊讶。太棒了。因为我从来没有试过跑2次以上:)
由于图像太多,您需要一个不同的内存管理系统。Hydra中使用的一个是从Squeak VM继承而来的,不适合这样的设计。

使用您的实现本身的Smalltalk VM,让节点通过IP进行通信?我正在研究Smalltalk HydraVM的这个想法。我遇到了一些问题,然后把整个事情都忘了。我会看看我是否能找出哪里出了问题。嗯,我设法在HydraVM中并排加载了11个smalltalk图像……不幸的是,在加载第12个图像时,图像崩溃了。使用了200兆的内存。是时候考虑缩小这些图像了。:)我在考虑独立的虚拟机,每个虚拟机都在各自的进程中运行(或者,您可以运行Hydra以获得更好的IO)。实际上,您使用了哪些资源来了解Hydra虚拟机?我从未享受过使用它的乐趣,所以我不知道在同一张图片中使用不同的进程运行机器人是否符合我的游戏理念。问题是,我希望用户能够对机器人进行编程,也就是说,每个机器人都有一个底层的“操作系统”。理想情况下,他们可以用smalltalk为机器人编程,但任何脚本语言都适合我。我认为进程不能在一个图像中工作的原因是,如果您为一个机器人编写脚本,该脚本不应该访问图像中的任何其他机器人,或者能够改变游戏状态,超出该机器人在本地可能的范围。