Dialogue/choice branch system

Forum
Last Post
Threads / Messages

Dinocanid

Member
Member
Joined
Aug 30, 2016
Messages
520
Points
18
Age
23
Location
Maryland, USA
Mysidian Dollar
43,334
Have you ever wanted to add a CYOA (choose your own adventure) game to your site? Maybe you wanted to make a quiz or some sort of branching dialogue? Well, this will help you do that. Here's how it looks in action:
  Spoiler: gif image 
RvRVTkB.gif

The dialogue doesn't match up, it's a test after all x3
The second button doesn't lead to anything, so clicking on it does nothing.


-Pros-

  • No refresh abuse! If a user refreshes the page, it resets from the beginning. If a user presses the back button, it goes back to the previous page rather than the previous choice. No more cheating for multiple prizes!
  • No Javascript (does this count as a pro?)
  • Contained in a single function/page!

-Cons-
  • Keeping track of which choices lead to what can get confusing after a while. Be sure to leave plenty of comments for yourself so you don't get lost!

-The Process-
How this basically works is using multiple forms and buttons to link to each other and show different content depending on what choice you pick. For example...
PHP:
//choice handling
		        if($mysidia->input->post("left")){
				    $document->add(new Comment("You went left!"));		
			        return;
		        }
		        elseif($mysidia->input->post("right")){
		            $document->add(new Comment("You went right!")); 		            
		            return;
		            
		        }
//handling end

//adventure start
		        $document->add(new Comment("This is the start of your adventure! What will you do?</br>"));
		        $startForm = new FormBuilder("startform", "pagename", "post");
		            $startForm->buildButton("Go left!", "left", "submit");
		            $startForm->buildButton("Go right!", "right", "submit");
				    $document->add($startForm);
Doesn't that look nice and simple? Let's break it down piece-by-piece.
"choice handling" is where all of the following choices and such go. It always goes above "adventure start"! If you want to have a choice lead to yet another branch, then simply add a form within one of the statements. So...
PHP:
if($mysidia->input->post("left")){ 
                    $document->add(new Comment("You went left! Now what?"));
       $leftForm = new FormBuilder("leftform", "pagename", "post"); 
                    $leftForm->buildButton("Go to the lake", "lake", "submit"); 
                    $leftForm->buildButton("Go back home", "home", "submit"); 
                    $document->add($leftForm);
                    return; 
                } 
if($mysidia->input->post("lake")){ 
                    $document->add(new Comment("You went to the lake."));
                    return; 
                }
if($mysidia->input->post("home")){ 
                    $document->add(new Comment("You decided to return home.<p><a href='pagename'>The End!</a></p>"));
                    return; 
                }
Even though the choice handling always goes above the start, the order of the choices doesn't matter as far as I know. Just go with whatever order works best for you!
Since this purely uses PHP, you are free to use conditions, use database info, use variables, etc. For example, what if the user could only do this once a day? You could make a column in the database that holds whether or not the user has been on this adventure already. In whatever choice counts as a "dead end", update the database. That way, the user will be unable to do it again if they refresh or leave and return.
 
This looks like a neat idea for whoever wishes to make an exploration/quest system on his/her adoptables site, good job with the tutorial.
 

Similar threads

Users who are viewing this thread

  • Forum Contains New Posts
  • Forum Contains No New Posts

Forum statistics

Threads
4,274
Messages
33,114
Members
1,602
Latest member
BerrieMilk
BETA

Latest Threads

Latest Posts

Top