Difference between revisions of "FyreVM"

From IFWiki
Jump to: navigation, search
Line 1: Line 1:
'''FyreVM''' is [[Textfyre]]'s interpreter library for the [[Glulx]] virtual machine. The library was written by [[Jesse McGrew]] in C#, which can be compiled for .NET/Mono/Silverlight/Windows Phone/Windows 8 Store apps, so FyreVM can run on Windows, Linux, and Mac OS X. Customized applications based on FyreVM are shipped with Textfyre's commercial games, and since May 2010 the library is also available under the [[MIT license]]. The source code is now hosted at [[Github]].
+
'''FyreVM''' is an IF interpreter library for the [[Glulx]] virtual machine. The library was written by [[Jesse McGrew]] in C# in 2007 as [https://github.com/ChicagoDave/fyrevm-dotnet fyrevm-dotnet]. It was then ported to TypeScript by [[Thilo Planz]] in 2015 as as [https://github.com/thiloplanz/glulx-typescript glulx-typesript].
  
The interpreter implements the [[Channel IO]] system instead of [[Glk]], so it is only compatible with games that were compiled with FyreVM in mind. [[Inform 7]] games can be made FyreVM-aware simply by including a [[library extension]], allowing them to run in both FyreVM and Glulx interpreters using Glk. The channel system separates the game play functionality from the input and output constructs so that a custom interpreter can be created for each game. Output is delivered from a FyreVM game in the form of a NVP (name-value pair) list. Default channels include MAIN (for the main text), SCORE (for the current score), TURN (current turn), LOCATION (for the current room name), and more. Custom channels can be created with a few lines of additional code. Directing output to a channel is done using a simple Inform 7 phrase:
+
==History with Textfyre==
 +
FyreVM was originally intended as the gaming platform for a commerical IF venture called [[Textfyre]], founded by [[David Cornelson]] in 2007 and closed in 2012.
  
Every turn:
+
==Differences from Standard Glulx==
    select the chapter channel;
+
The fyrevm interpreter implements the [[Channel IO]] system instead of [[Glk]]. The standard IF interpreter controls both the story output as well as its layout. Using fyrevm and Channel IO, only the story is managed and text emitted to key/value pairs (channels). Layout is delegated to the "client" or "container" hosting the fyrevm library. In the C# version this could be a console application, a windows application, a bot, or some client/server implementation (partially attempted - see [[zifmia]]). In the TypeScript version everything is hosted in a browser.
    say "[chapter name]";
+
    select the main channel.
+
  
==Road Map==
+
===Example===
FyreVM is now open sourced under an MIT license and can be used in any type of project without any additional license or permission.
+
In fyrevm, the pieces of layout are emitted by context. So the score is in the score channel. The time is in the time channel. The main text is in the main channel. This allows the the HTML template designer to place the various channel emissions anywhere on the web page.
  
[[David Cornelson]] partnered with [[Jeff Panici]] to fork [[Quixe]] and implement [[Channel IO]] to be the implementation of JavaScript FyreVM. The code is completed, though thorough testing is in progress as of March/2015.
+
==Status==
 +
[[FyreVM-dotnet]] is now open sourced under an MIT license and can be used in any type of project without any additional license or permission. [[FyreVM-web]] is public domain. [[Glulx-Typescript]] is public domain, but the repository is managed by Thilo Planz.
  
 
==Links==
 
==Links==
* [https://github.com/ChicagoDave/FyreVM FyreVM Github project]
+
* [https://github.com/ChicagoDave/fyrevm-dotnet FyreVM C#]
* [https://github.com/jeffpanici75/quixe Quixe-Channels project]
+
* [https://github.com/thiloplanz/glulx-typescript glulx-typesript]
 +
* [https://github.com/ChicagoDave/fyrevm-web FyreVM client template]
  
 
[[Category:Interpreter]]
 
[[Category:Interpreter]]

Revision as of 17:57, 10 December 2016

FyreVM is an IF interpreter library for the Glulx virtual machine. The library was written by Jesse McGrew in C# in 2007 as fyrevm-dotnet. It was then ported to TypeScript by Thilo Planz in 2015 as as glulx-typesript.

History with Textfyre

FyreVM was originally intended as the gaming platform for a commerical IF venture called Textfyre, founded by David Cornelson in 2007 and closed in 2012.

Differences from Standard Glulx

The fyrevm interpreter implements the Channel IO system instead of Glk. The standard IF interpreter controls both the story output as well as its layout. Using fyrevm and Channel IO, only the story is managed and text emitted to key/value pairs (channels). Layout is delegated to the "client" or "container" hosting the fyrevm library. In the C# version this could be a console application, a windows application, a bot, or some client/server implementation (partially attempted - see zifmia). In the TypeScript version everything is hosted in a browser.

Example

In fyrevm, the pieces of layout are emitted by context. So the score is in the score channel. The time is in the time channel. The main text is in the main channel. This allows the the HTML template designer to place the various channel emissions anywhere on the web page.

Status

FyreVM-dotnet is now open sourced under an MIT license and can be used in any type of project without any additional license or permission. FyreVM-web is public domain. Glulx-Typescript is public domain, but the repository is managed by Thilo Planz.

Links