[Web-Based Game] Nick's Choose Your Own Adventure

When I was about 15 or so I had stumbled upon one of those web-based never-ending story/choose your own adventure games (you may remember the books where you started on the first page and it told you to go to page X if you wanted to do this or page Y if you wanted to do that). I loved it so much it ended up eating a lot of my time. So much, in fact, that I convinced the owner to put up the scripts for download. Since I knew basically nothing of Perl (or code in general) at the time nothing came of it for me but disappointment.

Here we are about 10 years later and I can not get enough PHP. Also work can not get enough of me so I have little free time. Wanting to start up a new personal project I needed something that would be simple to create. Thus I decided to re-create my old flame. For lack of a better name here is:
Nick's Choose Your Own Adventure

It is still in a "beta stage" as I add new features. There is still a lot of basic functionality I would like to add but right now it is stable and works fine. Once I get to a point I am happy with I will release the source.

Of course it goes without saying-- although I will say it any way-- that these things do not work unless people add to them. This is still in it's infancy but with a little care it will grow to be as much fun as I remember the old one being. ;D

It formats pretty well on mobile devices with small screens (like phones) too!


It's nice! It's similar to those Wiki engines, except more specialized. This may interest creative writers.

To people who enjoy just playing, the Lone Wolf series is available on Project Aeon, either as pure hypertext, or with a offline java thingy to provide a character sheet and a "dice roller".


... Audric, you rock.

Nick: a collaborative gamebook? Interesting idea. :)
Unfortunately, I think it's going to be hard to get a decent level of quality in it. The potential for abuse or AOL-speak is staggering. :-/


Original concept was not my idea. It is older then I am.

Shiftkeyophobia is indeed a fear of mine for this project. I already made the mistake of pressuring one of my friends to add a page (page 8 although not as bad as it could be it is not great... or even good). As you can probably guess all the letters on his keyboard are worn off while every other key looks fine... minus all the soda and chips in between the keys. On the other hand I can not do this without the internet at large so I guess I will have to take my chances.

If I start seeing numbers in the middle of words I may cry. I also would have a hard time removing pages as it would orphan any pages after it.

The 'net was a different place ~10 years ago. Back in a time when you could e-mail an author of something and not have to wonder if your message accidentally wound up in the spam box.

I can only pray this grows into something great.


I see some problems here.

1. I can edit the ?page variable to any available stage. Be sure to check if the user has made a choice before he can view the next page. Either by making a cookie or a session var just for a quick moment.

2. I can register with a username like 'content' etc. Sure, its filtered in the output, but its just ugly. Same goes for submissions. It would be a good idea to remove HTML tags.

Better yet, make an approval system. You have to approve every submission that is written. And if the project gets big enaough, you can grant permissions to other users making them able to approve a submission. ( Users you trust. )

Simon Parzer

Venneto has some good suggestions.

Unfortunatly your project isn't the only one of its kind. I've seen many of them, exactly the same idea, more or less the same implementation and they all failed. Some of them because of some trolls/idiots and missing quality control (typos, capitalization, ...), but most of them because they were inconsistent in writing style and severely lacking content.

It's really hard to pull of. As soon as two or three different people start writing everything tears apart. Person A prefers this style, Person B prefers that style. Person C introduces a new character, Person A another. Just a few examples.
Eventually everyone gets to see the terrible results and people loose interest.

Even a "choose your own adventure" type of book needs a continuous storyline and a consistent idea behind it. It's the same with any creative thing. That's the reason why Wiki-like tools are only used for non-creative tasks like writing documentation.


Although the script does in fact track the last page viewed via sessions (for the purpose of validation when creating a new page) I intentionally left it so anyone can jump anywhere. This way people can send links to each other if they wish or perhaps bookmark where they last were (or perhaps their favorite/their own pages).

I also intentionally left a lot of the system very simple (IE no admin approval, only required checks to make sure no one is trying to steal user info or hijack the system, ect...) but I always wondered if that was the right call. Hell, there is not even an administrator panel. What you see is all there is. Perhaps it is time to make sure usernames are alphanumeric and passwords are a certain length. I could also filter all HTML but that would require me to create a list of tags somewhere and my script would be less time-proof as new HTML tags are introduced in the next standard. I am not sure I like the idea of just filtering everything between the <>'s as they do have their place in writing. They are on the keyboard for a reason :P. I will figure out something as I do not like it either. I just have not found the right solution yet.

Simon Parzer:
Yeah, I know it is not all that original. It was mostly a labor of love. Something I just wanted to see my name attached to. If it fails-- which I think it is most likely to do because I am not advertising for one thing-- I will not be crushed because I expected it. I am not worried about honest mistakes of spelling and so forth but only about the people who want to harm it. On the other hand I do not want to hinder people who intend to legitimately add pages so I really have no choice but to leave some things up to faith on this particular project. Although I really do love the concept I do not want to be the police. Once I am happy the project is done (features added, bugs fixed, security of system and database) I want to move on and whatever will be will be. If this thing were to-- by some freak occurrence-- get a community I do not want to create some over-seeing government to curb it. Let it govern itself.

As far as the different writing styles clashing with each other that is kind of the point. Sure it might end up serious page -> comedy page -> drama page -> serious page-- as I am sure it will-- but this is what makes it great if it ever really gets off the ground.

People will always lose interest and I would have to bring in new people (or rely on word-of-mouth) to fill the void but that goes with anything. That especially goes with the internet show-me-what-I-want-in-fives-seconds-or-I-will-find-it-somewhere-else crowd. My generation was brought up on TV and the internet and I do not expect much from them in this department.


Is there any hard-coded limitation that prevents the existence of several "books?" (ie: several starting pages)

Or the idea is simply to choose a free page number (say: 200) and start building a story from there ?


After a first run I'd say it's quite fun and hilarious! ;D Nice job!


"No" and "yes". I say "no" because I did not design it with that in mind. As a matter of fact it did cross my mind but I decided not to go with it. I also say "yes" because you can very easily make your first page "Please select from the following book:" and have choices with book names.

You will notice that the number of the page you are creating is not presented to you anywhere (be it on the page itself, in the page source or passed as a variable through the URI). This is because the script itself does not even know the new page number until the moment it is entered into the database. If you were to just enter any old page number it would either show that existing page or (if a page by that number does not exist) an error.

I very much like the idea of multiple starting pages. Perhaps one could be fantasy (Dungeons and Dragons) and another could be sci-fi (Firefly) and another could be just normal but not normal (Unknown Armies). As mentioned previously I also purposely allowed links to pages without having to have been on the previous page. You could start a new "book" anywhere you wanted to, do some manual manipulation to the database and then link directly to that page. So what if it starts at 1,504? The script would not have a problem with it.

Thank you! I hope you would like to contribute and/or help spread the word. ;D If you keep choosing the last choice I wrote that arc and I had a good time doing it. I also conscripted some friends that are English majors and are obsessed with comic books-- you will notice the She-Hulk reference in there. Of course the harsh light of the internet will show some grammar errors or whatnot and they will be ridiculed since I mentioned they were English majors. :P


Cool cool. I remember that I used to make a lot of games like this when I was around 10 or 11 years old (7 or 8 years ago) on my first website.. those were good times! My old site from back then is still up, even. :)

Simon Parzer

Cool cool. I remember that I used to make a lot of games like this when I was around 10 or 11 years old (7 or 8 years ago) on my first website.. those were good times! My old site from back then is still up, even. :)

I once made a cross-platform engine for that type of game. Actually it would be quite easy to make it web-based and do the same thing Nick did. My engine has some additional features, though: Boolean variables and simple if-constructs. And there is an option to include an input field (for my "type the correct word or die" parts of the story ;D).

Jakub Wasilewski

I once made a cross-platform engine for that type of game.

Hey, I actually made one too, I think when I was 11 :). Though it was a far cry from portability, being written in AMOS on the Amiga. God it was an ugly beast... as far as I can remember (and I was recently going through my old Amiga stuff), it went like this:

2TEXT "You found a lamp."
3LET @001=1
4CHOISE "Go north."
5CHOISE "Go south."
6SELECT 002 005
9IF @001=1 003
10IF @001=0 004
13TEXT "Well done, it's dark to the north but you have a lamp and win."
17TEXT "It's dark, you don't have a lamp so you get eaten by a grue."

Everything had to start at the beginning of the line, variables had only numbers and had to be written with 3 characters always, same with, uh, "chapters". Oh, and it really used "CHOISE" and "LOOSE". I'm afraid my English wasn't any good :).

And if you think that language is hilarious, just imagine the fun I had after reading some of my prose (remember, age 11) embedded in those adventures :).


I like it. I just hope people will expand more on the story.


Me, too. Since it formats so well on mobile phones I keep checking it. My web logs must be at least 50% me.

A feature I would like to add is the ability to link to other, existing pages. Another feature would be the ability to edit your own pages on the condition none of the choices from that page on have been written (do not want someone changing the story after it has been added to).

How could I advertise this? There are a few forums I could post on that I have been a member of since back in the day (PAK CHOOIE UNF) but I fear the less desirables. I obviously do not want people 'ucking it up for the rest of us.

Thread #592701. Printed from Allegro.cc