2 ms·
You probably don't need what you're thinking of a "VM instance" to run a VM, and for games you may well be better off building your own VM, although that depend
by xnorswap 2y ago
You probably don't need what you're thinking of a "VM instance" to run a VM, and for games you may well be better off building your own VM, although that depends how far down "arbitrary code" you go.
There are a few Zach-like games which achieve this kind of thing.
The scope of the VMs they build are different, the VMs in Shenzen I/O are quite different to that of TIS-100. Likewise non-zach zach-like games like "Turing Complete" also let you build through VMs.
These aren't the kind of VMs you might expect, they're not full x86/x64 emulators, they're very simple virtual machines that have can handle a small abstracted instruction set.
If you restrict the VM to executing a limited number of instructions/cycles, then you don't need it to be super performant in terms of clock cycles.
More important is to define the memory limits of your VM. This is a key constraint that will keep processing feasible but also keeps understanding to be manageable for the player.
If I recall correctly, TIS-100 has 1 general register and 1 accumulator register in each general cell. I don't remember now if there are also special memory cells, but if there are, I suspect the total amount of memory is of the order 64 bytes or so.
Other similar VM games have more memory support, but typically top out at 16KB.
What's the actual gameplay loop you'd like to achieve? Defining that will help define and shape the constraints you put on players.
- rollcat 2y ago> You probably don't need what you're thinking of a "VM instance" to run a VM, and for games you may well be better off building your own VM [...]. Indeed. I want something less awkward than redstone; I'm also considering something like fCPU[1] or eBPF (no jumping back = no loops = super easy to keep an upper bound on execution budget). [1]: https://mods.factorio.com/mod/fcpu https://mods.factorio.com/mod/fcpu But one of my side goals is to attract players who might be interested in contributing to the core game, so I also like whytevuhuni's suggestion[2] to embed a Lua interpreter. That's a faraway stretch goal (I still have very little in terms of prototyping), but I'd like to keep my options in mind. [2]: https://news.ycombinator.com/item?id=42493118 https://news.ycombinator.com/item?id=42493118 > What's the actual gameplay loop you'd like to achieve? Defining that will help define and shape the constraints you put on players. The general direction is something like Minecraft (with some Factorio / Oxygen Not Included thrown in), with focus on exploration, self-expression, collaboration, and a kind of lore/storytelling (that's deeply personal, like GRIS but still in a generative sandbox). For example, people have made pixel art in Minecraft by meticulously placing blocks, one by one, on a huge area, and then creating an in-game map of it all[3]. I'd like my game to feature a pixel art editor instead. Same goes for in-game coding/automation: I want to reduce the friction from an idea to seeing it in-game. [3]: https://minecraft.wiki/w/Map https://minecraft.wiki/w/Map Thank you for all the suggestions!