Archive for May, 2009

The Gamebook Engine 0.2.0 Beta 3 Released

Tuesday, May 26th, 2009

Brief summary of changes:

  • Added Status/Inventory for Javascript gamebook files. Gamebook writers write an html file that tells TGE how to display the status/inventory window.
  • Saving the game now works for Javascript gamebooks.
  • Makefile will now halt if necessary development libraries are not installed. Audio can be disabled at compile time, and you will no longer require ffmppeg, openal, and alut.
  • Added gamebook2html conversion utility, and supporting html/css/js files. You can now convert gamebooks into html/js, and put them on the web. The TGE engine is no longer required to play gamebooks.

TGE now requires Qt 4.4. I had to up the version again because 4.4 is the first Qt version that includes QtWebKit. TGE uses QtWebKit to display the status/inventory html file.

This Beta version has a few incomplete features. For example, TGE has some added but unused menu items, and the html version does not allow you to use items. Ring of Thieves JS Edition will allow you to use Healing potions, but not elixirs. There are some inconsistencies between what is possible with Lua gamebooks and JS gamebooks; modules can only be used in JS, for example. I will be hammering these out before 0.2.0 Final.

Ring of Thieves is on the web. Please note that it requires javascript, frames, and if you want to save your game and come back later, cookies. I have tested it in Firefox 2, Firefox 3, and Internet Explorer 6. If you have problems with other browsers, let me know.

The Gamebook Engine 0.2.0 Beta 2 Released

Monday, May 4th, 2009

I have just released TGE 0.2.0 Beta 2. The main improvement in this version is that gamebooks can use Javascript, instead of Lua. I have included a javascript version of Ring of Thieves, which is playable, and finishable, but does not include everything the Lua version does. For example, you can not use items.

I have removed hyWaitForClicks() from the Javascript API, because it breaks stateless protocols. For example, if there was a interpreter, such as one built using CGI, which created a page, and then asked the user for input, then while the player is thinking, the interpreter would have to keep track not only of the page the user is on, but the entire scripting engine, because after the user gives their input, the interpreter will have to continue execution after the hyWaitForClicks() line. Without this function, the user is only asked for input at the end of a page. The Lua engine will continue to support hyWaitForClicks() for backward compatibility, at least for now.

Anybody who chooses to write a gamebook with Javascript will have to use extra pages, and hyGotoPage(), instead. For example, there is a part in Ring of Thieves where the player can choose to take from 0-3 daggers off their newly fallen foes. This page is split into 4 pages, the original page with text, and 3 tiny pages to add the appropriate number of daggers if the player so chooses. Combat, etc, is still possible with this new interactive system. I have also added a tag, #tge_module. I will document it before I release 0.2.0 Final, but to summarize, it is like a programming function with book pages.

As a bonus from removing hyWaitForClicks(), hySaveGame(), hyLoadGame(), etc, are no longer needed. Interpreters, and the players, will have more control of where they can save games (any page), and writers will not have to worry about it so much. RegisterIO() will still be necessary to keep track of essential variables across sessions.

I have not included Flight From the Dark in this latest version. Because of the audio files, it is about 40MB, and I only have 100MB of space on the Project Aon servers. I will be adding this shortly as a separate download, but until then, you can still find the full FFTD gamebook including audio files in the first 0.2.0 Beta release. I will be removing the first 0.2.0 Beta release when I create the separate FFTD archive.

Previous versions of TGE could use any version of Qt from 4.2, and possibly earlier. This version uses the Qt Javascript engine, which is only available in version 4.3 and later.

The official Linux binary is linked against Qt 4.3. There is no Qt Script 4.3 Debian or Ubuntu package available, because the Debian packager didn’t add the libqt4-script package until 4.4, so I found 3 RPMs with rpmfind.net. One for the gui library, one for every other library, and one for the development header files. The development rpm I found included a newer version of moc which was incompatible with the rest of the package. So I got the correct moc version from Ubuntu. Linking against Qt 4.3 was a huge hassle, and if I had known in advance, I would have just skipped it and linked against 4.4.

This Beta version includes src, Linux, and Windows binaries.

These are the remaining goals for 0.2.0:
* a conversion utility to convert gamebooks into HTML.
* status/inventory window