Quixe 2.1.0

Quixe 2.1.0 is now on my web site, and also in /unprocessed on the Archive. GlkOte 2.1.0 is also available.

eblong.com/zarf/glulx/quixe/

These add support for graphics (not sound yet). I’ve been able to play Kerkerkruip with this version. It’s slow, the fancy graphical intro is not at all smooth, and I had trouble with keystroke input on the title screen. But it runs.

There’s a Quixe.zip template package that you can install in Library/Inform/Templates. However, an Inform playable website requires extra work to support graphics. (I7 does not generate a web site with the game images or the extra information needed to load them.)

I’ve updated my blorbtool.py script to do this extra work. It’s a bit of a mess, but the instructions are at github.com/erkyrath/glk-dev/wik … cs-Support .

2 Likes

Very very nice. Thanks zarf!

Great news! Thank you!!

If anybody is developing a graphical Glulx game and tries this release out, I’d appreciate hearing how it went.

Sensory Jam (my old Glulx UI demo) is up at eblong.com/zarf/glulx/quixe/grap … media.html . I’ve tested Kerkerkruip and Counterfeit Monkey (also slow, but not because of the graphics).

I’ve installed it on my website (just decompressed it in a folder, right?), and I’m having a few issues :slight_smile: I’m trying it with Lieux Communs (15Mb, pics and sound; Quixe link here) and Ekphrasis (65Mb, pics ; Quixe link here).

On Firefox 37.0.2 for Windows, Lieux Communs just loads forever, and Ekphrasis fails after a while with “The story could not be loaded. (hlabrande.fr/if/ekphrasis.blb): Error error: Internal Server Error”.
On IE 11.0.9600 for Windows, Lieux Communs loads the splash screen, then splits the screen, then hangs with “Quixe run: Error: Espace pile insuffisant Espace pile insuffisant Error -2146828260” (insufficient space on the stack?). As for Ekphrasis, same error as with Firefox.
On Linux Mint, both Firefox and Opera work perfectly for Lieux Communs (which is exciting :smiley: ), once you deactivate sound of course. (If you don’t, it says “Quixe run: glk_schannel_play_ext: invalid schannel” and freezes). Opera managed to load Ekphrasis, but apparently there’s sound right after the splash screen so it just freezes; Firefox tried forever to load it and doesn’t seem to manage to do it, except once, where it struggled with it for like 5 minutes, then gave a “a script seems busy, would you like to stop it?” prompt, and once I said “no” it gave me the splash screen.

Oh and Sensory Jam seems to work fine on all of those.

Hm. Do those games fail on other interpreters that lack sound? It seems like a case that all games should be checking for.

You really need the non-blorb setup for any game with a lot of graphics. When you try to run off a blorb file, Quixe has to load all of the image data into the Javascript heap, so I’m not surprised you get those errors.

Mmh yeah, maybe those games don’t check for sound before using the channel. I’ll check when I have the time - source code for both of them are available, so that should be easy.

In any case, I guess it doesn’t sound like problems caused by Quixe!

And congrats for your XYZZYs!

Hi!

How would Quixe be set up to run a Superglus game?

Superglus games are usually built into a .blb blorb file created with blc utility, though in a few cases (those without any multimedia at all), there is just a single .ulx file.

I’ve downloaded Quixe but there are no other instructions that those to use it with Inform 7, and I’m afraid I’m not familiar at all with I7 so all those “template” folders mean nothing to me.

I tried to use the examples you have at your website but I was unable to do load even a simple ulx file, wether it was made with Superglús or not.

Would it be posible that you write a brief text for building a game+interpreter package without using I7?

Thanks!

I’ve noticed various Spanish games have some issue or another with different interpreters. Superglus, Papuaglus, etc etc etc.

The following games might be worth testing with, as they are/were problematic with either WinGit, WinGluxle or iFrotz:

007 - Alto Secreto
Crisis Demografica en la Aldea de los Pitufos
222 Contra el Cangrejo
El Ultimo Jedi

I think that if Quixe can run these four, Quixe can run anything.

If Quixe can also run Estacion Acuario and actually have the save/load routine work it’ll be a step ahead.

I’m just saying this for future reference, in case zarf wants to really tackle WhateverGlus compatibility in Quixe. The iFrotz dev spent a lot of time (and heard a lot of whining from me) making sure those games could be played properly in his terp, so if in doubt he might be a good person to ask. He jumped through a lot of hoops.

Well, supporting all Superglús games is just a matter of:

  1. Supporting the 1 and 2-byte wide variables, used by many Superglus games until I changed the compiler so they are not used anymore

  2. Support writing to ROM address 0, as there was a bug that went by undetected for a long time as no interpreters were checking ROM writing. That bug was fixed at some point, but older games write to ROM address 0 (for a temporary variable value, and to the Glulx header-address 0- so not really an issue, except the concept itself of writing to read-only address).

In the game list presented by Peter in the previous post there are two really ancient games (“007…” and “Crisis… Pitufos”) that are for sure using 1 and 2-byte wide variables and write to address 0. Supporting those would mean Quixe has to support the now-deprecated 1,2-byte vars. and allow writing to ROM. I’ve checked the quixe.min.js file and I think it supports 1-2 and byte wide memory access, but it’s not easy to read a .min.js file :slight_smile:

Probably Zarf can clarify it anyway.

By the way, the other two games in Peter’s list are not Superglús games, but I6 ones (if I recall properly). They are good to test though as they use multimedia a lot, though maybe is better to use I6 game Saboteur (caad.es/sites/default/files/ … _sidra.zip).

You can just look at the original source code on the github repository, rather than the minified file.

Download the package (eblong.com/zarf/glulx/quixe/quixe-210.tar.gz). Untar it into a directory.

Go into that directory. Run the included Python script game2js.py on your game file:

python tools/game2js.py --giload YOURGAME.ULX > stories/glulxercise.ulx.js

Open play.html in a web browser.

You can supply YOURGAME.GBLORB and that will work too. For a game with no included graphics, the blorb parsing isn’t slow enough to be a problem.

Yes, “Sidra” is another one I remember being problematic at first. Probably a better example too.

It’s surprising to learn that they are I6, because they sure didn’t work properly in iFrotz until some tweaking was done. Ah well. Live and learn and live again.

I’ve finally made the time to modify the two games I was talking about so that they don’t forget to check whether the interpreter provides sound. “Lieux Communs” works perfectly, which is awesome :smiley: However I tried setting up Ekphrasis in the non-blorb setup, and it loads forever (like, my computer couldn’t load it overnight) and the game can’t be started. I guess the resulting .js is something like 80MB, so I feel like I’m asking a lot from Quixe :slight_smile: but is there a way to determine where the problem is? Is it just the size? (Is it the biggest game Quixe has been tried on so far?)

In any case, I must say I’m impressed at how quick and easy the process of setting up Quixe on a server is :smiley:

I will take a look at it later.

Is it the .ulx.js or the gblorb.js that’s 80mb? The point of the non-blorb setup is to keep the latter from being loaded at all.

Thanks zarf <3

The game is 60MB, and what I get after running your python script is a .js that is 80MB. I used the

command so that play.html would start it automatically; that’s what I put on my website. But I know realize that the command above was not “non-blorb setup”; so it might just be a case of “I don’t know what I’m doing”, in which case I apologize again!

Look at the instructions at github.com/erkyrath/glk-dev/wik … cs-Support .

Alternately, you can use blorbtool to pull the Glulx part out of your gblorb file and run that through game2js.py.

Ah, thanks for those instructions! It took me a while to understand them, but I ended up getting it right.

For those who are interested in the precise steps (this might be very obvious, but I’ll just say it out loud anyway):

  • get the blorbtool.py script, as well as the blorbed game. Let’s assume you put blorbtool.py in the root and yourgame.blb in ‘stories’
  • create an empty directory, for instance stories/yourgame
  • run “python blorbtool.py stories/yourgame.blb giload stories/yourgame stories/yourgame/” : this will unpack all the pictures + fill the “resourcemap.js” that tells the interpreter where to find the images + generate the .ulx.js file you need
  • go to “play.html” and replace

[code]

[/code]

by

<script src="stories/yourgame/resourcemap.js" type="text/javascript"></script>

<script type="text/javascript">
game_options = {
  image_info_map: 'StaticImageInfo',  // image data is here, not in blorb
  use_query_story: false,
  set_page_title: true
};
</script>

<script src="stories/yourgame/game.ulx.js" type="text/javascript"></script>
  • run play.html !

Zarf, thanks again for your help and patience!

Thanks for translating my notes out into detailed instructions. I know my writeups of these matters can be terse.