Dedalus - a new system for developing CYOAs

Hi to all,
in the last weeks I worked on a pet project that has in some way been inspired by Twine, Undum and similar web-based CYOA engines and I’d like to point it to you attention. It is called Dedalus and can be found here:

Sample story here:

It is really simple to use. The skills required to create a story are really minimal, but if you’re already familiar with HTML, CSS and Javascript, you can achieve a great deal of customization, go behind what is provided by default and really push the boundaries of the system. You write narrative as HTML (more or less, some custom tags are used), but, after some initial feedback from Twine community, I also created Dedlee, a language that compiles to Dedalus source.

Any feedback is greatly appreciated. It comes with a comprehensive tutorial, so getting started and writing stories with it wouldn’t take much.

Thanks for you attention,

Gustavo Di Pietro

How is it better than or different from those other systems? Why should someone use Dedalus instead of Undum or Twine?

Hi dfabulich, thanks for asking.

I don’t think Dedalus is better than any other similar system, because it comes down to the kind of story you want to write, your skills and personal preferences. I think, though, that it is different enough, otherwise I wouldn’t have taken my time to write it.

Twine’s major appeal is, I think, the ability to write games without even touching any code. They’re even working on a new web-based tool to replace the desktop one and it permits authoring texts in the browser. It looks amazing so far, but as a programmer, I feel much more at home with a text editor and I don’t like clicking here and there and, while writing, I just feel all the boxes distracting. Sure, Twine has Twee, but it’s not its killer feature.

Undum, on the other hand, requires an amount of Javascript configuration that, while not intimidating at all, isn’t appealing to me when I put down the “programmer” hat and put on the “writer” one.

Dedalus, in my intentions, comes with a nice mix of features. You have full control on HTML and Javascript and CSS, I don’t try to hide it from the user but invite to embrace them (again, I’ve written the system for me at first and web programming is my daily bread and butter) but, if you want, it is entirely possible to write stories of a decent complexity without touching anything of the underlying technologies. This is because it has an alternative syntax (Dedlee) that is really writing-focused. It is very clear and provides a good separation of concerns with the ability to put all the more complex game logic in a place and concentrate on writing in another.

One feature that is quite unique and that I haven’t seen implemented in similar tools, is “actions”. While Twine output is really CYOA (now do this or that) and Undum adds a level of complexity to it (do this, or that and i’ll set this quality), Dedalus has “actions” that can be performed on objects and characters. They are similar to Undum’s actions, indeed, but more “first level citizens”: they don’t need to be declared with Javascript, they are part of the story syntax, if you put an object in the inventory you still have all the actions attached to it (I’m looking more at IFs that at CYOAs here) and, in the effort to provide a distraction-free writing environment, you can even have basic logic for them in just one line (this action is only available if…).

I invite you to read the tutorial if you want to get a grasp of it. After the more technical “setup” section that you can skip, it is quite fun to follow, I think.

Thanks for you interest

Don’t be offended or discouraged, but I have to tell you my first reaction to this post.

“Oh gawd, not ANOTHER web-based CYOA interpreter!”

Understand that many people will have the same reaction; you’ll have to do some convincing to show them whether your system is worth using.

Hi Peter, thanks for you honest opinion.

There is nothing to feel discouraged about. I like having pet projects in my spare time and make them grow, so as long as I’m having fun working on it I already have all I’m looking for from Dedalus.

I don’t really feel the need “to do some[thing] convincing” since there is no competition going on. I could have kept my project locked in my computer, but I decided to make it freely available and open source for those potentially interested in it. I can’t really see anything wrong with this.

It’s not my role to promote or review Dedalus, I couldn’t be more biased about it, but I think it’s a piece of quality code, thoroughly commented and tested, easy to extend (I just added “presentation plugins”), it’s had a mulitier architecture thought from the beginning to be extended to other media (mobile apps and so on), it provides two different systems to write stories so that’s easy for the beginner and appealing for the more technically prone and I’m on my way on completing a “theme pack” with many examples on how stories can be presented in different layouts.

That said, this probably means nothing to you and maybe to anyone, but till it means something for me, I don’t feel like I’m wasting my time and I’m not so mean that I don’t want to share my work with others, just in the unlikely case someone appreciates it.

I like it. The code is clean and readable and where IF is concerned, that’s a pretty big deal. I think the UX stuff will take a few iterations to make it clean and more usable. Add some variations on styling. But overall I think this is a nice CYOA tool.

David C.

Your attitude is commendable, and your positivism even more so. I wish you best of luck with your project, and would only suggest that Dedalus games are also available offline, by means of zipped .html pages along with any extra material they might require.

EDIT - Saving your “Cloak of Darkness” demo as a web page seems to work fine! In my book that already puts you way ahead of twine and Undum (it’s easy to play an Undum game offline, but only if the author makes it available). Not to mention presentation is top notch. Very elegant.

Having played through Cloak of Darkness, I feel like one of the selling points you can make here is the pop-up action menus. That is something that decidedly does not come off-the-rack in Twine, nor in Undum I think.

Another point is that there are a lot of built-in hooks for things that go beyond click-and-move. You have all the before and after actions, and the flag for removing highlighting from a link. Twine makes it pretty easy (easier than Dedalus, I think) to set flags, but I don’t think it lets you do this stuff off the rack.

Another feature you have is the distinction between “show” and “page” – allowing you to display some text without navigating to a new page. This is something that Undum has but isn’t standard in Twine I don’t think.

So if I were laying out the differences it’d be something like this:

Dedalus has separate pages rather than a flowing transcript (like Twine but unlike Undum or Inklewriter).
It seems to require some knowledge of Javascript, or the ability to pick it up, unlike Twine or Inklewriter; but it doesn’t look as intimidating as Undum on that front.
It has some relatively sophisticated interactions over and above navigating from one page to another or tracking state that I think may be unique to any of these systems.
It makes it easy to give pop-up menus on your hyperlinks. This can be done in Undum, but I think not in Inklewriter and not easily in Twine. (I think you can pretty much do any HTML or Javascript you want in Twine if you know how, but Dedalus probably makes it easier…)
It automatically tracks an inventory (which I think Undum makes it easy to do, but Inklewriter and Twine don’t).
I think that you make your file in a text editor, like Undum but unlike Twine and Inklewriter. But I wasn’t clear on that.

Overall it seems like something that’s best suited to things that are kind of like text adventures with a CYOA interface, since it makes object manipulation and examining things in static locations easy. And it could work for people who want something a little more powerful than vanilla Twine (I mean, without throwing in a bunch of scripts) or Inklewriter but don’t want to get as heavily into programming as in Undum.

One suggestion if you want people to pick it up is put some simple explanation in the tutorial of what’s going on in the Javascript, or point to some Javascript for Dummies thing that could help novices. And maybe be a bit more specific about how to set things up; I almost didn’t get past that table about jQuery, and I still don’t really know what it’s saying. (“You don’t want the player to read the story source, so you want it to be hidden (for example adding display: none)”? Where do I add it? How do I set jQuery elements for the DedalusWeb constructor anyway?)

[A bug in your Cloak of Darkness implementation: After you put the cloak on, “Put on” is available as an action and “Take off” isn’t. It seems like this shouldn’t be hard to fix, and it’s definitely something you want to show off.]


Hi and thanks :slight_smile: Since you mention this, I think you might like my latest addition to the project, it’s a “Theme showcase”, just what you were talking about maybe! It can be checked out here: … story.html

Switch theme with the top-right selector or reload for a random one. Let me paste a quote from the tutorial about theming, though:

@ Peter
Hi again, Peter, thanks for taking your time and trying it out. I’ve added a section on the tutorial that is a sort of “quick start”. Just download a zip file, write your story in one of the files and it’s ready to be uploaded to your server or distributed as a .zip file.

Thanks, your lengthy review is much appreciated. As said to Peter, I made a couple of zip files that are ready to be downloaded and should get you started without even reading the “Setup” section that is now optional. This should make things easier and clearer.

The bug in CoD should now be fixed, thanks for pointing it out.

As for the differences, I just want to underline that the default behavior is to the have separate pages, but you can set up a “flowing transcript” with one of the presentation plugins (the other provides a “fade in” effect like Twine).

Let me waste another bit of your time with the philosophy behind Dedalus.

Vanilla HTML, from day zero twenty years ago, has always been a perfectly fine tool to make CYOAs. A page is a location or event, a link is a passage. Bookmark the page and you have a save function. The back button of your browser is the “undo” command. CYOAs are much simpler than IFs, and I wanted to create something in between to two narrative forms.

IF authors are different from CYOAs authors because IF appeals the writer and the programmer. Part of the beauty of Interactive Fiction is how surprising it can be. One can be surprised by the story and by technical accomplishments that push the medium forwards.

CYOAs, on the other had, may be written by the non programmer, in fact they appeared first as written books and in their digital form Dreamweaver (or any other HTML editor) is fine to write them. The success of Twine, I guess, relies on the ability to put in the hand of the writer a tool that does not require programming but that outputs a web page you can create in a graphical way.

I’m not going in this direction. Multiple times in the tutorial I stress the fact that “everything is just HTML, CSS and Javascript”, it is extensible and is meant to be extended in any of its aspects.

Sure, I put together Dedlee and the start pack to make it possibile to create a perfectly fine advetnure (even with a higher complexity than Twine stories, I think) without having to write a single line of Javascript or HTML, but I’d like to inspire others to produce innovative works that can surprise not only for the originality of their stories but for the way they bend and extend Dedalus.

Undum, for example, has a sort of “character sheet”, while Dedalus hasn’t. But in the end, it’s really easy (for the average programmer) to add a

, make it float somewhere and manage its content with Javascript: voilà, your character sheet.

In this respect Dedalus is both a fairly easy tool to create simple adventures and a framework for programmers (like IF authors wanting to try something new) to create new things.

This is why, for example, I now provide some themes but underline how ideally they should not be used. I’d like to see people using Dedalus, but I’d love to see it used as just the foundation to build things I can’t even imagine right now.

I don’t want it to sound like a criticism (I think Twine has a really amazing and dedicated community), but most of the adventures produced (with a lot of notable exceptions, of course), feel a bit one like the other. Sure, the stories are really different, but they “look” similar and rarely surprise you with something unique going on apart cliking here and there. The web is such a rich medium that I can’t even start listing things that I’d like to see popping up in CYOAs to break the “click the right link” monothony. You are in a room and there is a piano, you have to “play” the correct sequence of notes to open a secret door and you must do this on a clickable piano image. The train is about to derail and you have 40 real time seconds to understand what to do. The story takes place during 24 hours and the background of the page changes accordingly to the hour. You enter a dark room and the text and the links are really black on black. You fight a cyber bear in a cage and have to “punch”, “kick”, and “dash” it with key combinations. You are exploring a huge maze and there is a live updated map on screen.

All these things require some skill and some programming, but this is the kind of things I want to promote. I tried to address the Setup issues making it a no-brainer, but if someone can’t even add a stylesheet to an HTML page, he or she surely can’t make a game where you’re turning into a zombie and the text becomes more and more scrambled and confused as your brain rottens, and this is just the kind of things I want to promote and I’d like Dedalus to be used for.

Nice work, I’ll definitely have a closer look at this.

Did you consider using coffeescript at all? We’re using coffeescript, stylus and handlebars.js in a project at work and it’s a really neat combo.

Hi peterorme! I’ve used coffescript extensively at work, as well. I like it very much, but I find it annoying to write in a language and have to debug in another, with a code that you didn’t write. In the very same category I prefer livescript.js. The syntax is very similar, I think they are even compatible, but it works tightly with prototype.js, a library that extends Javascript’s functional programming capabilities and I think it’s lovely. In the end, after having looked at different alternatives, I still like vanilla Javascript best, even if it’s more verbose and not always elegant.

Handlebars is ok, I could have used it, but I opted for doT.js simply because it’s even more minimal and, according to benchmarks, the fastest template engine around.

I’ve never used Stylus, I generally go for Less, but Dedalus is not really about providing any CSS but about encouraging a creative use of it, so I didn’t want to use anything opinionated myself :slight_smile: