FyreVM Updated on Github

FyreVM is now housed on Github at github.com/ChicagoDave/FyreVM.

This is the latest working version with the FyreVM Support.i7x extension, a sample WinFyre implementation (very minimal), and a sample story.ni file to show how to use Channel IO.

I had originally created the FyreXaml repository, but that was a little too confusing. I plan to move some of that code to the FyreVM repo and then delete the FyreXaml repo entirely. For now, the FyreVM repo is the latest working version.

If you’re new to FyreVM, I’ll offer a short summary:
I wanted a custom Glulx VM so I could create an interpreter in Windows using the tools I know (C#, .NET Framework). I also wanted to separate the functions of the VM from the I/O entirely. So this meant removing all of the hardened standard look and feel of an Inform game. So no more character based graphics, no status line, no windowing at all. Instead, the VM runs a single turn, stops, writes all of its information to a list of name-value pairs. The VM only continues when a new command is sent to it, as it is a stand-alone library. The wrapper class also automatically executes Save after every turn (creates the in-memory Quetzal object) and exposes a byte-array property called SaveData. I have also successfully serialized the Engine class (the VM without the wrapper) to binary data and deserialized it. That was useful for the client/server version called Zifmia which I really have not found a use for as of yet.

These “channels” are like your cable TV. Each channel has its own purpose or context. The standard channels are created automatically from the standard Inform output. These are: MAIN, PROMPT, LOCATION, SCORE, TIME, TURN, DEATH, and ENDGAME. The current Inform 7 FyreVM extension also includes: CONFIG, TITLE, CREDITS, PROLOGUE, HINT, HELP, MAP, SOUND, CHAPTER, ACHIEVEMENT, TIPS, VERSION, VERB, TUTORIAL, REMINDER, ERROR, and WORDS. Some of these are relative to work I’ve done on porting Shadow in the Cathedral to a Windows 8 Store application, but they provide a demonstration of what you can do with channeling your output based on context.

I’ve successfully built client/server applications using this library, although most of that work is mothballed. I will eventually push Win8Store and Web (client/server) reference applications to the repository for your amusement.

I have to add that FyreVM was built by vaporware/Jesse McGrew with significant changes on my part to the I/O logic and the EngineWrapper is entirely of my own concoction, as crazy as it is.

The license for FyreVM is the MIT License, which means you are free to use it for any purpose.

David C.