Define unto me the abstract concepts oriented in a skyward fashion (or in layman’s terms: what’s up)?
So. Ascii and Glulx.
Through dumb luck (and science) and by bothering a fellow forum goer a whole lot I have discovered that my pretty effects don’t show and in fact become horrible monstrosities in other interpreters (though their choice of platform being devoid of soul and God may have something to do with it). Which sucks because I spent a lot of time on this stuff already.
So. Ascii in Glulx. What do you think?
Works fine in Glulxe, doesn’t really look too badly in GIT… looks godawful in Gargoyle.
It’s done sometimes, but nothing too extravagant because - as you found out - it’s somewhat dependant on interpreters, window sizes, fonts… too many variables to guarantee quality.
It’s a bit more popular in the ZMachine, I guess, because in Glulxe you don’t need ASCII art per se; it’s easy to actually just include a picture and be done with it.
In fact, though this will seem odd, it may be easier to add your ASCII art as a fixed image rather than in-game text characters…
…but stay tuned, maybe someone else will actually have a solution to your problem, instead of an ugly workaround.
You can include gargoyle, git and glulxe configuration files with your game. Have these configuration files force some settings - I’m thinking specifically of font and font size, naturally. When the player loads your game, if those files are in the same folder as the game, your configurations file will override the defaults. This may help you in getting a more uniform look across those specific terps.
Zork III’s Royal Puzzle breaks if you don’t have the interpreter set to a fixed-width font–but that’s because, back in the day, fixed-width fonts were the only fonts there were, and so those passages aren’t enclosed in a “fixed-width” tag or anything.
This is too bad. I had one idea to use ASCII art for a game map (a bit like roguelikes like ADOM’s overmaps). When using a Glk TextGrid it’s in principle supposed to render fixed width but we’ll have to see how that goes in practice in various interpreters.
Can you give examples of what you’re trying to print?
My experience is that ASCII art which uses actual ASCII comes out reliably in fixed-width fonts. If you try to use Unicode block-art characters, it’s a mixed bag.
Zork 3 (and a few other Infocom games) got an updated version for the Mac release, adding the fixed-width opcode. This was because Infocom’s Mac interpreter did support variable-width fonts.
Thanks for this test, I found it helpful! I gave it a try in dumb-frotz. Like gargoyle, the unicode rendered incorrectly but ascii looked great. Here is the output:
Dumb-frotz will depend entirely on your terminal software. When I run the game file under CheapGlulxe (which is terminal-based with no curses library), it works fine on MacOS:
It has nothing to do with the interpreter, it’s how the Mac Terminal.app renders text.
(Although your screenshot looks like the interpreter is either not handling Unicode at all or not translating it properly to your terminal’s character set.)
@zarf I just compiled the source for cheapglk and pointed the glulxe makefile at it to build glulxe. When you say “CheapGlulxe” is that the same thing as what I just built? I ran the test again using my build and the results were the same as the dumb-frotz image I posted above, making me think it is down to a terminal behavior issue like you said (i am on Fedora 29).
You can also load ASCII images from external files. This can be a nice option because then you can store the ASCII in native layout – you don’t have to lard a single unreadable run-on text strings with [line break] as you do when it is embedded.
"ASCII Art File View" by Jeremy Douglass
[based on "ASCII Art Test Case" by Andrew Plotkin.]
The file of Moon Image (owned by another project) is called "moon".
The Kitchen is a room. "Examine a thing here for ASCII art."
The moonfile is in the Kitchen.
Instead of examining the moonfile:
say fixed letter spacing;
say "[text of the file of Moon Image]";
say variable letter spacing;
say "(Image from the Phoon utility, originally by Jef Poskanzer.)";
The corresponding file will need a required header line, and will probably be named with the .glkdata extension. If you import it as “(owned by another project)” then the owner identifier can be whatever you want (e.g. “phoon”).