Today I’m going to talk a little bit about what’s going on under the hood, so to speak. To start with, all of the content of the game exists as a normal, run-of-the mill Twine game, edited using the standard Twine editor. I then export the Twee code (essentially just a single long plaintext file containing all of the prose and structural information for the game), which I will read into my custom interpreter and parse into separate pages. When a page is loaded onto the screen, its twine tags are evaluated, and it is chopped up into lines so that it can be properly displayed. Let’s see how that looks:
You’ll notice the font looks a little bit weird. The display library I’m using, OpenFL, has a “TextField” object that displays text and allows you to insert hyperlinks into the text that send off events to the event system when clicked. Sounds like the perfect solution, doesn’t it? Unfortunately, this functionality only works in the Adobe Flash environment, and not in any others. For a game that needs to be cross-platform, this is a serious problem.
What’s my fix to this? Make my own TextField class, of course! Right now it has an ugly bitmap font that I threw together in Paint, but by the time the game comes out either I or one of my artists will have put together something nicer looking and more legible for you.
Currently, you can scroll the text up and down with the mousewheel, and click on links (the pink boxes) to go from page to page. Variables set by the Twine script are pushed to a stack/map datastructure so that anything that happens to the game state can be gracefully rewound.
At the moment, everything is pretty ugly; one of my next steps is going to be to add some UI placeholders drawn up for me by André. I’m also going to add some support for images and sound that go beyond Twine’s usual capabilities. Hopefully by this time next week I’ll have something more attractive to show off!
-Reed Lockwood
Designing the village
Nirvora is born in a village in the mountains, so it’s an important setting in the game. Reed provided me with some written criteria for how the landscape should look and also drew an aerial view of the village and surrounding area. The first step for me was to translate that image into something more three-dimensional:
To clarify some of the details and to get a better feel for how the land would slope and curve, I worked in Photoshop:
This view still felt like it was from too high of an angle. I wanted something more on the same level with the village. Since we planned to use this image for our social media headers, I checked on the upload dimensions that I would have to use before I did any more drawing. They were all very similar in proportion, despite being different sizes, but this created a new challenge. Reed asked me to emphasize the size of the mountains, but our layout is very horizontal. In the end we landed on something that compromised a bit between the height of the mountains and being able to discern houses in the village.
Did a rough color thumbnail.
Transferred the sketch to illustration board and inked the linework. I made it larger then necessary so that I could try cropping the height different ways.
Started painting! I laid in washes for the sky first, then blocked in other major color areas. I added layers of transparent colors to build up color and depth, and for the mountains used granulating colors to really set them off. Granulating watercolors contain larger particles, which will settle out in different ways and create amazing effects as the water evaporates. I love working with them as the results are always unpredictable and exciting.
I let the painting rest overnight and came back to it with fresh eyes the next morning, adding additional detail where I felt it was needed and outlining in pen some of the foliage shapes on the mountain. Done! Scanned it, then did some minor corrections to take care of a few bad edges and splotches before cropping it to fit for our Tumblr, Twitter, and Facebook headers.
Design Overview
Hey everyone! I’m Reed, the game designer and developer on Tales of the Mountain Witch, here to give a rundown of my goals going into this project, followed by my development strategy for the game. At its heart, Tales of the Mountain Witch is a gamebook or hypertext fiction; you may be familiar with Choose Your Own Adventure books or with the more recent resurgence of the form’s popularity in the shape of Choice of Games or Twine. If all of this is new to you: It’s a book where every once in a while you stop reading and make a choice which affects how the rest of the story plays out.
My goals for this game are as follows:
Write a robust, open-ended, non-linear narrative - It’s currently all planned out. It’s going to be a lot of work, but it’s not unfeasible.
Replay value - One of the difficulties in presenting a non-linear narrative is convincing the player to explore every branch. I’m going to do this both by providing a bookmarking system that allows the player to jump ahead to sections they’ve already discovered and by adding “cross-narratives” to the text which lie across multiple branches of the story tree.
Music and illustration - Text games can be a bit unapproachable to newcomers, so I’ve hired on some artists and a composer to help draw the player into the world.
I’m currently writing the game in Twine and building a custom Twee interpreter to play it. Here’s a screenshot of my progress on the written portion of it so far:
You can see that it’s already quite large; it’s split up into thirty “episodes” - all of which have been outlined, but only two of which have currently been written. All told, the final game should (conservatively) have at least 500 “pages” of text.
The game is being written in Haxe and OpenFL, and by the end of the project I should have a nice cross-platform twine interpreter. Said interpreter is currently very brittle and tailored to the task at hand, but if I reach the stretch goal on my kickstarter I’ll take the time to spruce it up and release it to the Twine community.
I hope this answers some of your questions; I’ll post again next week when I should have some screenshots of the interpreter in action. See you then!
-Reed Lockwood