5 ms·
What could be usecase for using this VM? Any idea why to use it in non-game app?
by dejv 8y ago
What could be usecase for using this VM? Any idea why to use it in non-game app?
- Epskampie 8y agoI don't understand either. If you have to write in C, and you have to compile, what's the advantage?
- johannes1234321 8y agoSpeculation: Assuming the VM has no bugs it is sandboxed. The code run can't access the file system or freely allocate memory. Thus code from less trusted sources can be executed. (Another comment indicates that the VM has a history of bugs, so it might not be advisable, but I have no experience with it)
- deleted 8y ago[deleted]
- farnulfo 8y agoSource code of third party mods ?
- monocasa 8y agoYou don't really get source code. You only get bytecode that's harder to reverse than a fully compiled binary if only for the lack of tooling.
- ndepoel 8y agoThe main advantage for Quake 3 was that the server, client and UI code could be compiled into platform-independent bytecode modules. This was mostly a boon to mod creators, who had to build only one version of their mod that would work on all Windows, Mac and Linux systems alike.
- hinkley 8y agoI thought I heard this was also a boon for the scenario creators and level builders working alongside the graphics engineeers. They get something a little less hairy and volatile to work with, and execution speed isn’t that critical because you’re only making hundreds or thousands of decisions per second.
- Jyaif 8y agoYou compile it once and it runs on all architectures (including ones that did not exist at the time).
- jamesu 8y agoThese days, there isn't much advantage. You'd be much better off using a well supported third party vm implementation like coreclr for instance.
- golergka 8y agoAlso, how was it used in Quake3?
- monocasa 8y agoA lot of stuff. http://fabiensanglard.net/quake3/qvm.php http://fabiensanglard.net/quake3/qvm.php
- juliangoldsmith 8y agoAll of the code for the UI, server-side game logic, and client-side game logic in Quake 3 was run in the VM. It allowed code to be stored with game data, and client-side mods to be safely downloaded directly from the game server. The link in the sibling post has most everything you'd ever want to know about it.
- hinkley 8y agoIt might be worth mentioning that there’s a long tradition of this pattern in game design. In quite a few cases, much of the game logic is separated from the graphics engine, in a simpler language with an interpreter. In the case of world of Warcraft, the Lua interpreter allowed for a rich ecosystem of UI (and light behavioral) addons. In some cases very popular addons features were added into the core UI in later updates. I find that arrangement pretty compelling. In the few cases where I’ve worked on or with a team with addon support I bring this up: use the community sourced features as a popular vote for what to incorporate (just be sure to reward the author somehow).
- janosch9001 8y agoHi, author here. It is indeed a niche thing. But there are some use cases: * Sandbox for code you don't fully trust (e.g. download the bytecode from a web server) * Mods for small hobby game engines * There are many virtual machines, but not many are so small, with strong typing and no garbage collector * Learn about virtual machines in general, but directly have a C compiler available for the virtual machine * Sandbox for embedded applications, e.g. plug-ins for IoT applications on microcontrollers (bounded CPU time, bounded memory area, restrict access to peripheral devices) * There is also a historical value: learn about the Quake III engine
- mietek 8y ago> … strong typing … C … This is incorrect. Wikipedia specifies C’s typing discipline as “static, weak, manifest, nominal”, which isn’t great, but is at least in the right ballpark. “Strong” and “weak” are unhelpfully overloaded words. http://blogs.perl.org/users/ovid/2010/08/what-to-know-before-debating-type-systems.html http://blogs.perl.org/users/ovid/2010/08/what-to-know-before...