Roguelike News

The articles in the Roguelike
Development Topic list have been
generously donated by very kind
individuals. All rights remain
with the authors.

Main | News | Development | Archives | Articles
Links | FAQs | Contact : rogue@skoardy.demon.co.uk
Language in Roguelike Games - Esa Ilari Vuokko [eivuokko@mbnet.fi].
	    Comment and Bugs to eivuokko@mbnet.fi
     
   When I started playing Omega, I was just twelve years old, I
couldn't understand many things in it as I'm Finnish and school
English didn't quite match the language in Omega.  It was way too
slangish and used terms that weren't proper for school courses ;)
So I picked all stuff up and my English grade went up like a rocket.
Or could it have been that frantic watching of TV ?
     
   Now I feel at home in Omega as I know the language.  It even
seems a bit too easy ;)  But the most irritating thing in games
today is that same frases come up again and again.  You hit it!
You hit it! Kobold is dead! You critically hit orc butcher! Orc
butcher is dead! Something like that.  Most of these sentences are
really simple and stick to the same format. Subject does verb to
object.
        
   It doesn't need to be this way.  As lazy person as I am, I haven't
bothered to read too many sources for roguelike games.  But what
I've seen has showed things like print("You hit");print(mons_article);
print(mons_name_short); Not too hard, easy enough to not be bothered.
Still that's what gamer gets all the time.  It's of course nice that
experienced players get info just by examining structure of sentences
or something as easy, it just requires a bit of playing ;)
     
   With a proper interface game can be much more colorful.  Here is
a C++ show (of interface I think to be the best).
     
     
  if(this!=player) msgbar << subjadj << this->damage_report();
  msgbar << subj << this->simpleflags() | 0x20*map->isseen(this->x,this->y);
  msgbar << verbadj << "critically" << verb << "hits";
  msgbar << objadj << mons->damage_report();
  msgbar << obj << mons->simpleflags() | 0x20*map->isseen(mons->x,mons->y);
     
  ...
     
when damage gets to monster.
     
  if(msgbar.isstop) return;
  msgbar << cont << obj2subj;
  msgbar << passive << but;
  msgbar << verb << "protected";
  msgbar << obj << "armor";
  msgbar << stop;
     
And all player would see is
     
   You critically hit badly wounded orc but he was protected by his armor.
or You hit orc.
or You simply blast orc but he was protected by his armor.
or You strike it.  (blind)
     
And dozen of other choices
     
   This could be done by saving words to data structures with info about
it's meaning.  When that sentence is asked, it would be built by an
other function.  That function could also drop words depending on verbose
level, it could search for synonyms and even translate simple sentences
quite easily.
       
   Why would anyone do it in such a hard way ?  You could just make a
list of sentences and use them by index (if done cleverly this is a nice
way).  Or words too.  Because this more modular, which helps it to be
maintained and programmers don't need to think about the language.  It is
left to translators and those with better language skills.  And because
it is just so damn fun to write such a tricky interface.
     
   Of course this could be used to a dozen other games, especially sport
games, but in rogue and if games we have mostly need for this.  One
should naturally has a mode of :
     
  msgbar << sentence << "You hear a voice : Thank you for helping me. ";
  msgbar << "Killing The Big Bad Monster was beyond my abilities but";
  msgbar << "I can die in peace, come to me for reward." << stop;
     
Such sentences could be indexed and translated later.  But they are quite
easy to recognize and translate by a function, if needed.
     
   Other thing could be languages in game. Like dwarf or elf speech.
     
  msgbar << says_in_language << "Village elder says"
  msgbar << "You are welcome to our village" << stop;
     
could be showed as

75% lang skill   Village elder says :"You ar velkom to our villch"
50% lang skill   Village elder says :"yu ar vlekm vil"
25% lang skill   Village elder mumbles :"yu r vlkm vil"
     
and so on.  In most languages, IMO, it's easy to spot things that go
amiss.  Like those 'e' letters, they really can be hard to spot as are
word 'to' also.  That's in English, in Finnish it might be the thing
that it's easy to get opposites like "pankkiin" and "pankista" are in
and out (of bank). And that words tend to be long and they are many
times added to each other.  The late word can be quite hard to spot,
I'd guess.
     
     
   Then some more important matters ;) As 1st of March 2000 (today)
I make public my intentions to make a roguelike game (...silence..)
and I've written already some code (very little) but I really would
like to get in touch with some people that could help, either
coding (I don't have too much time) or just suggesting things.
I'll call my game Unjust World Of Adventures.  But the game isn't
all of it: I try to create engine and basic world code to be used
by anyone willing to make roguelike game.
     
   I develop using gcc(egcs) in GNU/Linux system.  All code is in
C++ but it should work in any modern compiler environment (except
curses and graphics).
     
   Interested should contact me, I'll send code (tar.bz2 or zip) in
email (about 50Kbytes at the moment ;) or upload it someplace.
     
   Copyright (C) 2000 Esa Ilari Vuokko. All rights reserved.    
As far as law permits author (Esa Ilari Vuokko) can't be held
responsible of any use of this text.  Anyone may publish unmodified
text in electronical media without specific permission.  Thought
I really appreciate notes.
© Copyright 2000 Darren Hebden.