Do note that the second half of this article is more tuned to programmers, and likely not suitable for a general audience.
[Side note: new build tomorrow fixing a few typos in the glossary and a few other places.]
If you were to ask me, one of the most annoying things about… life in general really… would be realizing two specific problems at the exact same moment.
The first would be that of “not knowing” something. Which shouldn’t be so bad on its own, since it’s basically impossible to know everything about everything (if that makes any sense). It might grind your gears that you don’t have the information, but hopefully you could get it at some point.
The second would be realizing that obtaining said information wouldn’t be a trial-and-error (or similarly easy) process. This is perhaps the most frustrating in larger games where the lore may only be given to the player once, or recipes make absolutely no sense, and thus have to be found on the Internet. A particularly offensive example would be the Ascended back items in Guild Wars 2. Consider the following:
You need a Vial of Condensed Mists, which drops from monsters in the Fractals of the Mists, which itself is a somewhat randomized high-level dungeon. You need 40 Crystals, which you purchase from vendors using skill points. You need 50 Globs of Ectoplasm, which are items obtained from salvaging rare items. You then need 250 Vials of Powerful Blood, which drop from a wide variety of high-level monsters. Nowhere in-game are you told that these specific items need to be combined to get a book of all things. And even once you have these items, you can’t make the book yourself. You have to go to some djinn who lives in some hourglass-looking thing who makes the book for you. (Did I mention that this is the basic version of the book?)
Now quite clearly, the simple solutions are always those that avoid the problem altogether: having exceedingly simple lore and gameplay to the point of, for all intents and purposes, not having any! A step up would be to manage your own wiki (although now would be a good place to reiterate that our wiki is for development and not gameplay). While we’re talking about other games, RuneScape also has a wiki, but it may as well not exist. What’s better, of course, is embedding a glossary into the game – you shouldn’t have to tab-out of a game to fully enjoy it.
Here’s a sub-problem though: not all writers are programmers. This is what the first three paragraphs of this article look like if put into the game engine:
The glossary looked like this for a very long time, and maintaining it was becoming a headache. It would make sense to allow the glossary to be edited directly via text files… the question was how? As it turns out (thank you for being well documented Ren’Py), there were functions built-in for this.
renpy.file(fn) grants the game read-only access to file fn.
renpy.file(fn).read() then, places the contents of file fn into a String.
renpy.file(fn).read().decode(enc) then, gets the contents of file fn, decodes it in accordance to encoding enc, and then places them into a String. Which explains why the following is in the code:
Automatic and simple, if not weird-lookin’.
Hope that all made sense. And if not, I did warn you. Rin will be the subject of the next blog post. I think.