Cryptic Language - Crypt
Worn runes on ancient ruins, scrawled annotations on old maps, scribbles in the margins of arcane tomes – cryptic text is a central part of the adventuring experience. Basic encryption schemes are an excellent way to embellish your campaign with a consistent textual theme while allowing for the inclusion of messages hidden in plain sight. This post describes a simple connected cipher, named Crypt, perfect for arcane languages and alien text.
The Language
Crypt is a cipher text inspired by necron glyphs from Warhamer 40k. It is a simple substitution cipher, meaning it is easy to use and can be easily adapted to any alphabetic language (ie, doesn't have to be English).
- English characters map to Crypt symbols
- Words are linked together along a common connecting path
- Spaces are preserved between words
- Common letters have simple symbols; rare letters have complicated symbols
Transcription is easy - just take each letter from your text and convert it to the appropriate character. Link letters together into words along (mostly) the central axis.
Some special cases:
- Separation Character: Naive linking of some characters would lead to ambiguity (ex: D, F, G, S, T). If linking could cause ambiguity a special separation character is used:
- Punctuation: periods connect to the previous character, commas hang off to the side from the previous character (I think, therefore I am.)
- Need Moar: Not all characters have a Crypt symbol. I welcome suggestions! We could use a sweet number scheme and some more punctuation (?!).
A longer example:
Using Cipher Text in your Game
I have used cryptic texts in my games to provide flavor and hide information for the players to discover. One great aspect of this is that it can be nuanced - players may not realize until halfway through a campaign that all of the maps contain annotations in the same language that they can decipher - and they can do the solving offline. Solving the cipher is often fun and rewarding.
(Once the players solve it I often just provide translations for future text to avoid forcing them to mundanely convert it back.)
Use Cases:
- Primary text on riddles (if you want to be heavy-handed) or encrypted messages
- Annotations on maps (great for hiding bonus information)
- On ancient dungeon walls, tombs, and tomes
- Hidden in all sorts of places - it is great when players realize the decoration text in all those places had real meaning all along
Code
A very simple Java program to generate similar images is available here. Feel free to develop improvements.
Hello!
First of all, a huge thank you for such great work! It helped me so much when I ran my first DnD adventure, adding a great element of mystery to many puzzles.
Second of all, I'd like to submit an idea, if I may. The letters B and N seem to have identical symbols. My suggestion is to add a vertical dash in the middle of either B or N to better differenciate them
Not Registered Yet? No problem.
Do you want Strolenati super powers? Registering. That's how you get super powers! These are just a couple powers you receive with more to come as you participate.
- Upvote and give XP to encourage useful comments.
- Work on submissions in private or flag them for assistance.
- Earn XP and gain levels that give you more site abilities (super powers).
- You should register. All your friends are doing it!
? Responses (11)
This is amazing. It could easily be made into a font file, so that people could type with it in OpenOffice or the like. I loved the attention to detail for the combination letters, and find the entire script to be beautiful.
My only quibble is the name! I was under the assumption that this was a pre-existing font that you were just re-appropriating for RPGs. This font needs a more descriptive name, something that evokes the feel of it. Also, you should definitely share this on a font or art site, so that others can find it.
Ideas for numbers: Currently, you don't have anywhere where lines intersect with circles. Perhaps could draw bisecting lines within an enclosing circle for numbers up to 5, or use nesting polyhedral shapes (within a circle?) to convey the same idea. Triangle in Square in Circle = 7. I find that alternate number systems are a lot of fun, especially if they aren't in base 10. Riven used something that was base 25: http://calyxa.com/pearl/numbers.html
Also, I've noticed that you use very nice graphics for your submissions. What are you using to generate them?
Thanks!
I agree - the name is atrocious. I couldn't come up with anything at the time.
The Riven numbers and non-base 10 ideas are excellent. Nesting polyhedral shapes would look very geometrically neat and would clearly indicate numbers. I will try it out!
The current graphics were made with code I wrote in Java (see link at base of sub). I haven't worked with Java in ages, but started writing it up in Julia, along with the Knuth-Plass line-breaking algorithm, which should make it really neatly spaced.
I've never worked with font files, but the idea is intriguing. If one can add in the extra logic, like the connecting lines between letters and the special separating character, then it should all be possible.
Here's a couple of resources, if you were going to pursue making this into a font file:
http://mediamilitia.com/taking-type-to-the-next-level-with-alternate-characters/ -- alternate characters would be useful for DF, ST, GD, and this article does a good job explaining what they are and how they work.
There are several free font editors out there -- both downloadable and entirely online -- that will allow you to create and edit font files, though I'm not sure which ones will support the extra features you'd need.
Here's a site dedicated entirely to creating and sharing fonts, with a pretty good list of tools: http://www.dafont.com/soft.php
I'm just glad this sub exists, because I have no patience personally to attempt something like this, yet tremendously appreciate having it handy, for my use (and abuse).
Thanks!
This is amazing, and I will need to check out that code too!
Coolness!
absolutely love your work! I've been looking for something like this for ages and this is a miracle, one question though and I'm sorry if I'm just being thick, but how do you use the java program you included?
Love it! But would love it more if I could use it, I'm getting cannot find symbol error on Main.java.
I’m kind of wondering…for that last set of cyphers, which way is it supposed to be translated? Left-to-right, or right-to-left?
It took me a while but I figured how it works. That was wild, installing java development kit was an unusual experience (i'm as far from IT as it gets, best I can is update my own graphic drivers). Next adventure was learning how to compile java programs and run them. Took an hour but I finally got a decent result. Oh and the download link doesn't work but my friend found it through wayback machine, thank you friend.
I wish there was more explanation/documentation how to change the end result - as I said I'm a total noob at this but I figured how to change the generated glyph colors to white from green. What I can't figure out is how to make the glyphs stack neatly into columns - if I type too long of a sentence I get a loooong long distorted image (works fine with 2-3 works though). Seeing how this thread is at least 9 years old it's a long shot but could anyone tell me what to change in the main file to get longer undistorted examples like on OP's post? Or was it all generated with short words and then made into a collage in photoshop?
Oh I feel compelled to add something for the sake of the next mad lad who tries to do this. Naturally I didn't figure everything out myself and someone more knowledgeable told me this - open the main.java file with a notepad. Scroll down and find the line which says ImageIO.write(myImage, "gif", new File("C:\\Users\\Tim\\Desktop\\" + fileName));
And replace it withImageIO.write(myImage, "gif", new File(fileName));
What this line does is creates the generated image file in achosen directory. The problem is it originally tries to do so on the desktop of a windows user named Tim.Personally my windows user name isn't Tim so the program wouldn't run, it'd say "can't create an ImageOutputStream". The alternative line fixes that and your file gets created in the same file directory as the program.