erkyrath / quixe

A Glulx VM interpreter written in Javascript
http://eblong.com/zarf/glulx/
MIT License
169 stars 33 forks source link

Not able to play gblorb file #28

Closed Baltasarq closed 7 years ago

Baltasarq commented 7 years ago

The boot process stops with: "Quixe init: glk_put_jstring: invalid stream" The gblorb file is: http://caad.es/baltasarq/if/visitantes/visitantes.gblorb [spanish IF] I've tried converting it to JavaScript with and without --giload.

erkyrath commented 7 years ago

This is almost certainly a bug in the game.

Baltasarq commented 7 years ago

The game runs fine both in git and glulxe.

erkyrath commented 7 years ago

The game is writing to an invalid stream or window. Not all Glk libraries report this error, but it is an error.

Baltasarq commented 7 years ago

All right, so you have two choices: fix that so your interpreter is able to play a lot of games with an unnoticed (till now) error, or be the author of a righteous interpreter unable to play a lot of games.

-- Baltasar

El lun., 5 dic. 2016 19:03, Andrew Plotkin notifications@github.com escribió:

The game is writing to an invalid stream or window. Not all Glk libraries report this error, but it is an error.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/erkyrath/quixe/issues/28#issuecomment-264928254, or mute the thread https://github.com/notifications/unsubscribe-auth/AAMRNOMp243OrJtDK_r1Qq-EYu9id0ACks5rFFH3gaJpZM4LESn6 .

erkyrath commented 7 years ago

I regret the current situation, but it should be fixed in the development tools.

I can only recommend you support https://inform7.uservoice.com/forums/57320-general/suggestions/1933277-the-ide-interpreter-should-reject-invalid-glk-call .

erkyrath commented 7 years ago

I should note that it's not just Quixe. I support several Glk libraries, and other people support yet more. Merely saying "fix my interpreter" does not solve the problem.

The choice before me are to leave the spec and say the games are wrong, or change the spec and say the interpreters are wrong. Either of them involves telling people to do work. It's not just me being lazy.

curiousdannii commented 7 years ago

Just to clarify a little: with this kind of error it doesn't matter if you use Git or Glulxe, what matters is the Glk implementation. If you use a lax Glk implementation (like Windows Glk I think?) then both Git and Glulxe will say nothing, but if you use a strict one then both will show the error.

@erkyrath What are some other strict Glk implementations which @Baltasarq could use to test this? Is cheapglk?

erkyrath commented 7 years ago

CheapGlk is strict, but this game uses graphics and multiple windows so it's never going to run under CheapGlk. (Really it should check those capabilities too, but that's a different fight.)

RemGlk is also strict, but again, it doesn't support graphics. Ask again next month.

Baltasarq commented 7 years ago

Interesting. Are you saying that I cannot play this game in Linux? Because I can. It also works in Zag, a completely diferent (Java) implementation.

Alas, I have a ulx (text-only, working in all interpreters but producing the same error just in Quixe) and z5 versions, produced from the very same code base (BTW, the z5 works flawlessly in all interpreters, even Parchment). The game was developed with Inform6.

Nevermind. I'm just tired of taking the effort of reporting a bug just to find the (childish attitude, INMHO) of the author(s) defending themselves with the "it's not my fault". You have the info, do whatever you want.

erkyrath commented 7 years ago

The situation is frustrating for me too, but I cannot resolve it by changing one line of code or even one library.

I am hoping that with Lectrote out, authors will be able to test this case more easily.

(I am also hoping that the IDE interpreter is updated to be more strict, of course.)

cogwheel commented 2 years ago

I'm going to second @Baltasarq here. This seems like a case of ignoring the spirit of the spec in favor of strict adherence to its wording. The effect is that it surprises the end user, who should be the ultimate audience of a library like this.

As a player of interactive fiction, I want to be able to load a well-known game into any interpreter that claims to run these games. Quixe fails to provide this for certain games, such as "Everybody dies." This game works in every other interpreter I've tried.

Most other platform developers recognize this. Operating systems, popular programming languages, etc. all include quirks for backwards compatibility. It's annoying, but it's the right thing to do in order to adhere to the principle of least surprise. "Everybody else is doing it wrong" may be true, but that doesn't mean this is the right way to address the issue.

I shouldn't have to open developer tools or edit minified javascript in order to be able to play interactive fiction on the latest and greatest interpreters.

Always relevant XKCD: https://xkcd.com/1172/

salty-horse commented 2 years ago

I think this was finally fixed by https://github.com/erkyrath/quixe/commit/6e2fc27c438c537419c1ae24acaae8bfa7f4275b

erkyrath commented 2 years ago

Was it? I thought this was a different bug! Well, that's good.

salty-horse commented 2 years ago

Sorry, it is a different bug. Parchment was giving me unrelated troubles, so I couldn't verify the file at the top. But now that I check it, I see the same error.