A downloadable tool for macOS and Linux

Welcome, writer! Tee-Wee is an editor (or authoring tool) for CYOA games, also known as choice-based or hypertext interactive fiction. These are text-based games made of passages with links between them, so that the story changes based on what players choose. As of 2020, many tools can make such games. Tee-Wee is different from them in a few ways:

  • It runs on your desktop; you don't need to be online for it.
  • It's very lightweight and fast.
  • It uses the same story formats and data as Twine 2.

Wait, what's Twine? It's the premier authoring tool for making games of this type, available at the twinery.org website. It's also free to use, and may be better for some people. As you can move your stories back and forth between Twine and Tee-Wee, there's no risk in trying them both and choosing later.

Tee-Wee can also publish completed games as stand-alone web pages, also through story formats made for Twine 2. It can only load a few of them for technical reasons; the recommended story format for Tee-Wee is Chapbook. See the official Chapbook documentation for how to use its various features.

The very first story made with Tee-Wee is Let's build a Chapbook.

Status

As of 28 March 2020, Tee-Wee Editor is in alpha. It can make and publish stories, but many features are still missing, and what's there may be rough or broken. Use at your own risk.

As of 31 March 2020, the beta version treats all files as UTF-8, and adds most of the missing features. Importing stories with tag color definitions should also work now.

As of 1 April 2020, the second beta adds a bogus size and position to passages that don't have one already, much like Tweego does (see below); importing new stories in Twine actually works now.

As of 3 April 2020, version 1.0 adds advanced passage navigation (with a new toolbar), and various user interface refinements.

Note: Running the editor in KDE with a dark theme can make parts of the UI unreadable, such as the file selection dialogs. This is outside of my control.

License and credits

Tee-Wee Editor is free and open source software under the Artistic License 2.0; a copy is included in the archive. It's made with knowledge gained from TkDocs.com and the official Twine specifications, with some details reverse-engineered from Tweego exports.

Many thanks to JigmeDatse for the bug reports and other feedback, and to all my friends for the encouragement.

Install instructions

Tee-Wee Editor requires a Python runtime, version 3.6 or newer. Python comes preinstalled on most Linux distributions; Windows and Mac users can get it from the python.org website. You'll also need the Tkinter module, which is bundled with most Windows and Mac runtimes. On Linux you might need to add it yourself: look in your package manager for something called "tkinter", "python-tk" or the like.

Tee-Wee Editor comes as a Python archive that can be opened directly with the interpreter, or you can unpack it and run __main__.py; it's just a zip file with a different extension.

Recommended screen resolution: 1024x768.

Download

Download
tee-wee-1_0.pyz 30 kB

Development log

Comments

Log in with itch.io to leave a comment.

I'm not sure if this works with other formats, but with working with Chapbook, I have discovered that we can enable debugging by adding the `options="debug"` when running a story.  I'm not sure if you'd want to have a "publish" and a "debug" button.  It doesn't work if you're using the 1.1.0 micro format (as expected, as that's the code that was removed to make it smaller), but if you don't use that smaller format, it works from what I can tell the same as the test button in the Twine editor.  

What I could do if it's not there already is give access to the story options field in metadata; it should have the same effect. But I'd rather not release a new version just for that. Thanks!

(+1)

I'll take a look.  I just had to log out and back in because my system borked when trying a new to me game...  

It looks like the options field isn't available in the metadata.  I'd rather have something like that anyway, rather than having something specific to a single feature.  

(1 edit)

Hi there! I started working with this today. I input text in the Start page, and added a few options, and then decided to test if it publishes properly so far. (Aka am I using the right syntax, etc.)

For format, I entered in the line from Chapbook ( https://klembot.github.io/chapbook/use/1.0.0/format.js ).

When I clicked Publish, it asked if I wanted it to open in my browser. For some reason it opened it in Edge, so I copied the local address and put it in Chrome. 

In either browser, it doesn't display cleanly. I get lines like this: 

</tw-passagedata><tw-passagedata pid="2" name="IF YES" tags="" position="225.0,100.0" size="100.0,100.0">Do important phone calls, errands, bureaucracy.

Have I done something wrong, or is this a bug? 

Thanks!

I don't understand what you did. For one thing, you have to download a format, and open it using the Format button. Don't just put it in the metadata by hand, it doesn't work that way. And it sounds like you never published the game either. The editor would have warned that you don't have a format loaded.

Chapbook's site says:
"Chapbook is a story format for Twine 2, which means that it plays stories created in Twine in a web browser. To use it, add this URL as a story format:

https://klembot.github.io/chapbook/use/1.0.0/format.js"


So in Tee-Wee I put that web address in for the format, on the line where you put the file name.

Then I clicked publish, and it did allow me to do that. It didn't warn me that I didn't have a format loaded.

But then when I clicked to open the file in my browser when it asked if I wanted to, it opened it in Edge or Internet Explorer (not sure which) for some reason.

It had a lot of lines like the one I pasted in my first comment, but otherwise was plaintext a bit of what I'd entered in.

Today I'm refollowing those steps so I can express it clearly, and instead of mostly readable with strange lines, in Edge it's got this a lot:

 * Copyright (c) 2014-2016, Jon Schlinkert.
 * Licensed under the MIT License.
 */var r=n(39),o=n(41),i=n(42);e.exports=function(e,t,n){return r(e)?o(i(e,t),n):o(e,t)}},function(e,t,n){"use strict";
/*!
 * isobject <https: github.com="" jonschlinkert="" isobject=""></https:>
 *
 * Copyright (c) 2014-2015, Jon Schlinkert.
 * Licensed under the MIT License.
 */var r=n(40);e.exports=function(e){return null!=e&&"object"==typeof e&&!1===r(e)}},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t,n){"use strict";
/*!

In Chrome, though, it looks more like this:

.small-caps{text-transform:uppercase;font-size:70%;letter-spacing:.075em}#backdrop{min-height:100vh;align-items:center}#backdrop,#page{display:flex;justify-content:center}#page{flex-direction:column;width:40em;min-height:calc(100vh - 2em);max-width:calc(100vw - 2em);line-height:150%;margin:1em;padding:4em 4em 2em;position:relative}#page article{flex-grow:1;display:flex}#page article>:first-child{margin-top:0;width:100%}#page footer,#page header{display:flex}#page footer>div,#page header>div{flex-grow:1}#page footer p,#page header p{margin:.5em 0 0}#page footer .center,#page header .center{text-align:center}#page footer .right p,#page header .right p{text-align:right}#page header{margin-top:0}#page header.has-content{border-bottom:1px solid #000}#page header.has-content+article>article>div>p:first-child,#page header.has-content+article>div>p:first-child{margin-top:1em}#page footer{margin-bottom:0}#page footer.has-content{border-top:1px solid #000}#page hr{border:none}#page hr:after{content:"* \A0   * \A0   *";display:block;text-align:center}#page .error,#page .warning{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu Cantarell,Helvetica Neue,sans-serif;font-size:80%;background:#fff5f5;color:#c92a2a;padding:.5em;border-left:4px solid #ffa8a8;position:relative;margin-bottom:1em;overflow:auto}#page .error :first-child,#page .warning :first-child{margin-top:0}#page .error :last-child,#page .warning :last-child{margin-bottom:0}#page .error a,#page .warning a{color:#c92a2a}#page .warning{background:#fff9db;color:#e67700}#page .warning a{color:#e67700}#page .fork p{display:flex;flex-direction:column;width:100%}#page .fork p a{display:block;flex-grow:1;text-align:center;padding:.5em}@media screen and (max-width:768px){#page{margin:0;width:100vw;max-width:100vw;min-height:100vh;padding:1em}}#spinner{position:absolute;bottom:0;right:0;opacity:0;transition:opacity .25s ease-in-out;pointer-events:none}#spinner.visible{display:block;opacity:1}
*{box-sizing:border-box}body{margin:0;padding:0}img{max-width:100%;height:auto}input[type=text],select{padding:.25em}pre{white-space:pre-wrap}tw-storydata{display:none}</style></head><body><form id="cb-validation" action="javascript:void(0)"><button id="cb-validation-tester" hidden></button> <button id="cb-block-enter-key" hidden></button><div id="backdrop"><div id="page" aria-live="polite"><header><div class="left"></div><div class="center"></div><div class="right"></div></header><article></article><ul class="warnings"></ul><footer><div class="left"></div><div class="center"></div><div class="right"></div></footer><div id="spinner"><img 
(1 edit)

Yes, the instructions on the Chapbook website are for adding it to Twine 2. Tee-Wee is a different application, that works differently. You need to first download the format, then load it using the Format button, then Publish. In fact the latter should stop after warning you there's no format loaded; if it doesn't, that's a bug. I'll look into it.

Edit: looks like I misread. Frankly, I've no idea what's going on there. Looks like Tee-Wee did load the format straight from the site (somehow), but when you published the game it actually just saved the raw data?! Just try downloading the story format and loading it from disc like it's supposed to work.

But it doesn't offer a download. There isn't one at that site at all. The only way to use it is to add the URL.

Unh... you can download the Javascript file, either with a right click on the link, or with Save As after it opens in the browser. It's still a file like any other. Either way, you can't expect to put an URL in a file opening dialog and have it work correctly.

This is working fairly well, though I'm not sure if it's resulting in problems with my local Twine with having the story in the Twine directory.  

I have tried to run Twine after having saved to that directory, so I'm not sure if that might be a problem.  I will test further.  

Yes, it appears that Twine isn't really liking having the version from Tee-Wee in the source directory, and so far it's having trouble importing it.  

Damn. Sorry to hear that. I thought it was working. Tweego definitely doesn't seem to have a problem.

Thanks for the pointers! It should work now.

Hey any documentation

Not yet, sorry. Alpha release, remember? What do you need to know?

what language does it use

That depends on the story format. For Chapbook, you can find complete documentation at the official website. See the link above.

How do I code

(+1)

There's some information about Twine that can be a starting point, but you're going to need to find a format (Chapbook works well for me, link is also there) to use, if you want to publish with this.

It took me a bit to figure out how to get it working, but I now have it working quite well, and have a story of ~2500 words, that will be expanded at least somewhat.