welcome guest
login or register

Making-of: Tarupaja

I will launch a tiny project called Tarupaja. The basic idea is simple; a text-based, dialogue driven interactive fiction software. Tarupaja allows you to read, to write and to share stories. And that is where the name comes from - "taru" means a tale or a story and "paja" is a workshop. On this coming Saturday morning I'll start from scratch, aiming to have a playable release before midnight, and live-blogging as I code. I wish this tiny project would give you something to play while waiting for the next UnReal World version release - and if you enjoy the show, please consider placing a small donation for Sami to keep him fed while he is coding =)

This kind of coding sessions take place rather frequently, especially with Sami. So, what is special here is this live-blogging experiment. Typically, both Sami and me tend to be rather silent while coding - when the mind is focused on the code, it is a semi-autistic state of mind. I mean, while coding it isn't easy to communicate with the external world without too much disturbing the concentration. So, that's why Sami writes development news only after he has got the work done.

If this live-blogging experiment goes well, it is very likely that I would do similar sessions in the future, too. For the first time I'll go with very simple technical solutions: I'll be updating this blog entry, and since there is no javascript autoupdate, you have to manually re-load the page to see if there are fresh updates. Also, I try to live-tweet pictures at my twitter profile. The comment section is open for feedback and discussion - but it is likely that I can't write lengthy replies, as my main focus is to get the coding done.

Another aspect of this experiment is to see if it works as a fund-raising event. As usual, it is perfectly OK to just enjoy the show without donating. But if you feel that you can afford it, I encourage you to consider placing a donation of $3. Or, you can use the comment section to set your own challenge like "I'll donate X if Erkka manages to reach stage Y before Z o'clock". Or any other fun way you can invent - yes, that's the main point; let's keep coding and donating fun =)

Here's the overall roadmap:

ESTIMATED STARTING TIME: 12th of September 2015, around 10 AM local time (UTC +3)
ESTIMATED RUNNING TIME: As long as I can keep on going with only minor breaks in between.

STAGE 1 - The data structures: Code an engine which supports a world with places, items and characters.

STAGE 2 - The writing workshop: Code an user interface for writing dialogue and stories.

STAGE 3 - Write a simple example story, where the user can travel to places, talk to NPCs, pick up and deliver items.

STAGE 4 - The reader: Code an user interface for reading stories.

STAGE 5 - Linux and Windows release: These are the platforms I have myself. A mac release will follow later on, but I can't promise it during this coding session.

STAGE 6 - Browser-based playability: Port the reading UI to PHP and release it on a test site, so that people can read stories with a web browser.

STAGE 7 - Bug-hunting, polishing and more stories, based on possible user feedback. Yes it would be great to get a first user-written story during the live-blogging session, so that we get to test the sharing aspect of Tarupaja.


EDIT: At first I thought that when the session starts, I'll just be updating this blog entry. But thinking of it, maybe I'd better start a new blog entry on Saturday morning. That way we will have a fresh comment section when the live blogging starts, and I can write my updates always in the beginning of the blog entry. So that you don't have to scroll down to see if there are new updates.

EDIT2: Okay, it is midnight in Finland, time to go get some sleep. I'm still not quite sure which would be the best way to share images. Maybe posting links to twitter. See you tomorrow =)

342 users have voted.


Sounds cool. I really really like interactive fiction (especially as a web medium these days), but I find the mainstream interactive fiction community (centered around Inform and the ifcomps) to be extremely arrogant, offputting, bigoted, and elitist lol.

I had started some work on something similar in Java, planning to run it on GWT and Google AppEngine, but like most of my projects it lost steam and I never got very far with it. >_> Heh.

Emily Short did something sort of similar with Twine. Have you ever looked at it? It's very CYOA, and based on my limited messing around with it, it doesn't seem to track the world state very much, just follows plot trees around.

I really like the idea of an IF with a CYOA sort of presentation, but a complex world-model (ala Infocom) internally, but mouse-driven instead of the oldskool GET LAMP, EAT LAMP syntax, hehe.

I am very curious to see what you come up with! :D Let me know if you need anyone to help with testing.

Yesterday night I was googling around to see that the genre is alive, and that there is free software out there. But I haven't tested nor played any of the modern stuff (yeah, I hope to do so when the long dark winter nights are here).

I tend to have a similar problem with design / coding: If I plan a too complex system, a project becomes too huge and I easily lose my momentum to keep up with regular coding. Already as a teenager I found out that for me the best design philosophy is first to focus on a bare minimum functionality, to get a first playable core. And when the minimum core is up and running, I can play around with it and keep on adding new features. Just like a big tree grows out of a tiny seed =)

So, this is my approach with Tarupaja. I start with a simple but playable version, trying to design it so that it is easy to add new features later on. For example; the first version will allow only picking up and delivering items to NPCs, but future version might allow more ways to use items, more ways to interact with the game world.

And yes, it will be point-and-click =) I aim to get a playable version out on Saturday, so all the playtesting is welcome!

I'll join up as well (hopefully). Cause I would like to have some extra experience with game development...

What programming language you're going to use? C++, C# or something else?

I'm going to use Object Pascal with Lazarus IDE. Lazarus is a free cross-platform rapid application development tool: http://www.lazarus-ide.org/

And for a browser-based application I'll just be writing my own PHP.

Well, I have already decided that Tarinapaja is going to be free to use, but I'm not yet sure if it is going to be open source. So, in the live blogging session I won't be sharing pieces of source code, but it will be more like a "in-the-making-of": pictures and short updates of a day in a programmer's life =)

Oh wow, I haven't used Pascal for years. I remember back on the Apple 2, Apple Pascal was so much faster than BASIC, and so much easier than Assembly Language, hehe. But it required 3 disks: Editor, Compiler, and Data. So trying to compile with one disk drive, there was like 15 minutes of disk swapping until you had binary files. Or compiler errors, lol.

Hehe, those days of floppy disk drives =)

It was my University years, around 1999, when a friend introduced me to Delphi, a RAD tool by Borland. Delphi uses Pascal and I developed some small applications with it. Then, about ten years later, when I was working as a miller and the milling company needed a custom database application, I thought that Delphi would be a good tool to develop that kind of stuff. So I googled around and found that Delphi is still alive as a commercial product - and that there is Lazarus, which is a lot like Delphi, just that it is free and open source.

I have learned to like Lazarus when working with databases. With Tarupaja, I guess for me the actual challenge is writing the PHP for a browser-based UI. I suspect there are things I yet don't know how to do with PHP, so it is not only about routine coding - it is likely that I have to spend some time reading the online documentation to learn how to do things I need to do. Well, that's tomorrow, so we shall see how it goes =)

Hmmmmmmmm, if it were me I think I'd be wondering if the trick to making it easy is in choosing the right data format to load the initial game state from... I am pretty sure there are easy ways to convert XML and JSON straight into a hierarchy of loosely-typed PHP objects... Hmmmmm.... Or maybe I am overthinking things, hehe. I am always making things too complicated. >_> Lol.

I hope to keep up with your project as you work on it, but tomorrow is the first day of our small game hunting season for this year... so I know I will be in the woods at least part of the day. :3

Hehe, at the moment I'm too tired to figure out the effects of time zone difference between Finland and Appalachia =) Anyhow, I understand your point of view; the first day of hunting season is something not to miss, so spending most of the day in the woods sounds like the perfect option. And I find it kind of a fits the UrW community =)

(And what comes to coding, I'll be using SQLite for handling the data. So reading the data with PHP won't be a problem. I only need to port the user interface from Pascal to PHP, but since the UI is going to be pretty lightweight, it should be doable.)

Sweet dream about the ill Matti and his Quest to deliver him a Tehu-potion ;)


In my example story the rule for this is:

oops, but that rule doesn't say anything about sweet dreams, it only does different things to different items, and sets the quest state to 4. Well, but I'd guess the dreams come on their own without any rules =)


Add new comment

Please reply with a single word.
Fill in the blank.