I'm just beginning work on my first real attempt at a full IF game.
After a long period of writer's block, I finally got an idea that I
think will work. Yay me!
The thing is, this game is going to involve alot of linguistic-type
puzzles, with the player having to decipher inscriptions (and
eventually speak phrases in this language) over the course of play.
Now, the thing is, I'm a bit unsure how to present these inscriptions
to the player. I've got a couple ideas, and I want to know what you
guys think is best:
1) My original idea was to design an alphabetic or syllabic script to
go along with the language, then present this to the player in image
files. I think this presents the most realistic approach, rather than
having everything presented in the Roman alphabet.
2) Since I realize not everyone shares my fascination with scripts and
writing systems, and for most it would be more of a chore deciphering
the script than an enjoyable experience, I could also present the
inscriptions tranliterated into the Roman alphabet. However, while this
makes play easier, I feel it sacrifices immersion and realism... and
it's just plain not as cool!
So I come to 3) do both! Write the game both ways, and give the player
the option of which he or she prefers. While I think this is probably
the best compromise, it's also quite alot of extra work. And I suppose
what I'm wondering is, if I go to all that extra work, will anyone
actually play it with the foreign script enabled, or will everyone go
for the transliteration?
Actually, as I've been writing, a kind of similar idea has occured to
me, which I suppose I'll call 3a) -- have the game written in script,
but with an optional "transliterate" command which will give the Roman
alphabet equivalent of a given word/phrase. But again, I'm concerned
that many people will see this as more of an irritant than an immersive
feature.
If I go with any of the script options, I'll probably include a guide
to the script as a feelie. So it wouldn't be too much of a puzzle for
the player to figure out how to decipher the script, more of an extra
element of background and gameplay (cf. the D'ni language in the Myst
series). So what do you think? Is it worth the effort?
As sort of an aside, I don't want to reinvent the wheel too much here,
so if anyone knows of any IF games featuring linguistic-related
puzzles, could you please let me know? "The Edifice" springs to mind,
of course, but I haven't seen too many others (at least that I can
recall off the top of my head). If you could let me know of any I'm
missing, I'd be greatly appreciative!
Thanks for any help you can give me!
-- Jason Ramboz
In other way, but "Bad Machine" forced you to "learn" the way that the
output of the game works.
I don't see why option 3 should really be that much more work. If
the display of script is abstracted, it should be as simple as
writing a conversion table. I think option 3 is the way to go,
particularly for accessibility.
> Actually, as I've been writing, a kind of similar idea has
> occured to me, which I suppose I'll call 3a) -- have the game
> written in script, but with an optional "transliterate" command
> which will give the Roman alphabet equivalent of a given
> word/phrase. But again, I'm concerned that many people will see
> this as more of an irritant than an immersive feature.
This would be quite annoying for those without a graphics
terminal, so I don't like the idea on its own. It is a good
addition for players who choose to go with a graphical script,
but might sometimes want to see the text version.
> As sort of an aside, I don't want to reinvent the wheel too
> much here, so if anyone knows of any IF games featuring
> linguistic-related puzzles, could you please let me know? "The
> Edifice" springs to mind, of course, but I haven't seen too
> many others (at least that I can recall off the top of my
> head). If you could let me know of any I'm missing, I'd be
> greatly appreciative!
Infocom's Infidel used a simple "heiroglyphics" system, in which
common text symbols represented pictures. If you deciphered them
you got some simple hints. Graham Nelson's example game _Ruins_
(found in the Inform Designer's Guide) pulls a similar trick.
--
Neil Cerutti
First of all, if you want to write a game with lots of linguistic
puzzles, simply go for it. Don't worry about people who don't like
linguistic puzzles; your game just doesn't cater to their tastes, and as
long as everyone knows that in advance, there is no problem at all. They
won't play your game; you don't have to worry about their tastes.
But, back to the real topic of your message: how to present a script?
I'm not sure how 1 is supposed to work. Will the images be displayed in
the game, or will the game display something like: [Look at image 1]? If
you could describe the idea in a bot more detail, I think I could give
better feedback.
In any case, I do not think option 3 is a lot of extra work. All you
need are two extra commands (roman on, roman off), on extra global
variable (ROMAN) and everywhere in the code where script is printed an
if-then-else structure that prints either the roman or the non-roman
text. Compared to the amount of work that writing a piece of IF is, this
extra feature is not worth being worried about.
Greetings and good luck,
Victor
Anyway, there was one aspect of the game that got my goat. One of the
puzzles was to decipher various messages (presented in plain text
caps). I was pretty good at deciphering, I thought, and spent HOURS
with pencil and paper hacking away and finding solutions that made no
sense whatever. Finally I despaired of solving the cryptic messages and
went back to playing the game, hoping that somehow I would not need the
solutions to the messages to progress in the game.
As it turned out the messages were not cyphers at all, but simple
jumbles of letters. One simply had to be holding a golden box while
reading the messages, which were then plain and readable. Ohh! If only
I had been given a clue that they were not real cyphers! Even so I
enjoyed the game, wish I could find it somewhere today to play it all
over again! I even still have my Atari!
-- Mike Arnaud
ma...@nospam.cox.net
That brings up an interesting question, I suppose: how many people do
play IF on non-graphic terminals? I'd be a bit curious to see the
statistics on this. I suppose in terms of game design it doesn't make a
huge difference, but I think it'd be interesting to know.
But I'm still left with the question of if anyone's going to actually
use this system. Ah well, might as well just go for it. :)
-- Jason Ramboz
Have you considered displaying all in-game text with a different font; maybe
a font that supports all kinds of exotic glyphs?
Surely this approach would be authoring-system dependent, but in this
Unicode-centric world you might stumble upon a nice solution.
I, for one, know very little about how these various authoring-systems work,
and offer this not just as a suggestion, but as an opportunity for someone
in-the-know to step in and tell us what our options are with respect to
fonts, etc.
Cheers,
Nathan
Here's my solution to a similar problem. Of course, I'm writing in
Z-code, so there's a limit to the number of strings I can do this with,
but OTOH using Glulx removes those limits.
Zcharacter table
'@{410}' '@{411}' '@{412}' '@{413}' '@{414}' '@{415}' '@{416}' '@{417}'
'@{418}' '@{419}' '@{41A}' '@{41B}' '@{41C}' '@{41D}' '@{41E}' '@{41F}'
'@{420}' '@{421}' '@{422}' '@{423}' '@{424}' '@{425}' '@{426}' '@{427}'
'@{428}' '@{429}'
'@{430}' '@{431}' '@{432}' '@{433}' '@{434}' '@{435}' '@{436}' '@{437}'
'@{438}' '@{439}' '@{43A}' '@{43B}' '@{43C}' '@{43D}' '@{43E}' '@{43F}'
'@{440}' '@{441}' '@{442}' '@{443}' '@{444}' '@{445}' '@{446}' '@{447}'
'@{448}' '@{449}'
'@{42A}' '@{42B}' '@{42C}' '@{42D}' '@{42E}' '@{42F}'
'@{44A}' '@{44B}' '@{44C}' '@{44D}' '@{44E}' '@{44F}';
Verb meta 'cyrillic'
* 'off' -> CyrillicOff
* 'on' -> CyrillicOn
* 'english' -> CyrillicToEnglish
* 'show' -> CyrillicShow
;
Global cyrillic_ok;
Object CyrillicExtension "(Cyrillic)" LibraryExtensions
with
ext_initialise [ ;
if (standard_interpreter) {
@check_unicode $0410 -> cyrillic_ok;
} else
cyrillic_ok = 0;
if (cyrillic_ok)
CyrillicOnSub(1);
else
CyrillicOffSub(1);
],
ext_splash [ ;
! First, make sure 'cyrillic_ok' has been set.
self.ext_initialise();
! Finally, tell the user about ourself.
print "^This game features some Russian text. ";
if (cyrillic_ok) {
print "Since your interpreter seems to support the display
of Cyrillic characters, they will be used. If this is
unsatisfactory, the command ~Cyrillic Off~ can be used
to display everything phoenetically.";
} else {
print "Your interpreter doesn't seems to support the display
of Cyrillic characters, so everything will be displayed
phoenetically.";
}
" If you find yourself stuck and needing a translation, the command
~Cyrillic English~ can be used to display translations of all
subsequent Russian text, while the command ~Cyrillic On~ will
revert everything to Russian.";
];
[ CyrillicMessage state ;
print "[All Russian speech will be displayed ";
switch (state) {
0: print "phonetically";
1: print "in Cyrillic. The command ~Cyrillic On/Off~ will toggle this";
2: print "as translated into English";
}
".]";
];
lowstring A_S_Pushkin "A. S. Pushkin";
[ CyrillicToEnglishSub ;
string 18 "Yes!"; ! Yes!
string 19 "No!"; ! No!
string 24 A_S_Pushkin; ! A. S. Pushkin
CyrillicMessage(2);
];
[ CyrillicOffSub quiet;
string 18 "Da!"; ! Yes!
string 19 "Nyet!"; ! No!
string 24 A_S_Pushkin; ! A. S. Pushkin
if (quiet == 0) CyrillicMessage(0);
];
[ CyrillicOnSub quiet ;
if (~~CyrillicExtension.cyrillic_ok) return CyrillicOffSub(quiet);
string 18 "@{414}@{431}!"; ! Da!
string 19 "@{41D}@{44D}@{442}!"; ! Nyet!
string 24 ! A. S. Pushkin
"@{410}. @{421}. @{41F}@{443}@{448}@{43A}@{438}@{43D}@{430}";
if (quiet == 0) CyrillicMessage(1);
];
[ CyrillicShowSub ;
font off;
print "^ 0123 4567 89AB CDEF^",
"410: ",
"@{410}@{411}@{412}@{413} @{414}@{415}@{416}@{417} ",
"@{418}@{419}@{41A}@{41B} @{41C}@{41D}@{41E}@{41F}^",
"420: ",
"@{420}@{421}@{422}@{423} @{424}@{425}@{426}@{427} ",
"@{428}@{429}@{42A}@{42B} @{42C}@{42D}@{42E}@{42F}^",
"430: ",
"@{430}@{431}@{432}@{433} @{434}@{435}@{436}@{437} ",
"@{438}@{439}@{43A}@{43B} @{43C}@{43D}@{43E}@{43F}^",
"440: ",
"@{440}@{441}@{442}@{443} @{444}@{445}@{446}@{447} ",
"@{448}@{449}@{44A}@{44B} @{44C}@{44D}@{44E}@{44F}^";
print "^~@18~ ~@19~ ~@24~^";
font on;
];
> As sort of an aside, I don't want to reinvent the wheel too much here,
> so if anyone knows of any IF games featuring linguistic-related
> puzzles, could you please let me know? "The Edifice" springs to mind
If you haven't read it already, you might like this article from XYZZY News
about the process Lucian Smith went through in designing that puzzle:
"Tales from the Code Front: Parlez-Vous Nalian?"
http://www.xyzzynews.com/xyzzy.16d.html
David Fisher