ADRIFT Forum


The place to discuss the ADRIFT Interactive Fiction toolkit

Proof Of Concept: Missions/Tasks System

This forum is the place to learn about and discuss ADRIFT 5. Feel free to mention any bugs you find here, but please also add these to the Bugs & Enhancements list.

Please also refer to the ADRIFT 5 Wiki for more information.

Proof Of Concept: Missions/Tasks System

Postby Xenos » Mon Nov 24, 2014 11:25 am

Here's a little experiment I've been working on:
missions_by_xenos_POC-1.taf
Missions System Proof of Concept
(19.32 KiB) Downloaded 102 times


Keep in mind that this doesn't really do much and you need to do a lot of work to actually use this system in your own games. I'm not even sure if it will be worth releasing as a module/library, at this point. The feedback from you folks will help to determine that, I guess.

The Concept:
One of the things that always happens in IF games is a sequence of events. It usually takes quite a bit of planning to make sure that the player gets some sort clue to answer their question, "Ok, what the hell am I supposed to do next?" One of my biggest gripes with IF games (including, and maybe even especially, the old Scott Adams games that introduced me to this some 30+ years ago). I wanted to make it a little easier for the player to know what's on their "List of Things To Do" so I started thinking about this system.

I'm not 100% sure this is the best way to go about it, but here is what I've got so far.

Basically, you have "Mission" and "Task" objects that have a flag "isMission?" and "isCompleted". The "Missions" are static objects that are also containers. When a Mission is "Active" I move it to be "Part of The Player". The Tasks are "dynamic objects" will start out as either "Hidden" or, if they are the first task in a mission, I put them inside the mission they belong to right at the start.

Each Mission has a description that gives you an overview of what it all entails. The tasks inside each mission are specific things that you need to accomplish in order to complete the mission. When you complete a task, the task is removed from the mission and flagged as "complete". If there is a next task in the mission, that is then put inside the mission. If that is the last task, then the Mission is marked complete and moved to Hidden.

This way, you can type "Help Mission" or "Help Task" to get clues as to what to do. In this example, I've been pretty clear as to what you need to do when you read the mission/task description. The idea of the game isn't to challenge you - it's to let you look at how the system works.

The Example:
This example is just a quick little game where you need are moving into your new place. You need to find your box of clothes, put them away, and then clean up. (NOTE: In this version, when you get rid of the pile of boxes, I forgot to clean up the empty box of clothes along with the rest of them. That is supposed to go away too, but I'm too lazy to add that at this point.)

There is a bunch of "White Text" as you play through the game that basically informs you what is going on and tells you various things you can do in order to check your missions. The normal colored text gives you ideas on how to proceed through it all.

In theory, this whole thing should probably be a single mission, but I made it so that there are two missions active at once - so you can see the differences. (If you have two active missions and more than one active task, you need to be specific when you ask for "help" on them. If there is only one active mission and one active task, it works just like any other "examine" task - if there's only one - it gives you that info).

Your Feedback:
Let me know your thoughts on this. I'm not at all worried about grammar issues or whether or not I accounted for every scenario. It's not about the playability of the game - it's about the Missions/Task system.

I'm also interested in other ways of approaching this if you have already played around with this concept before. I thought about using "conversations" so you can "think" to yourself about what to do. I like this idea better though - because the location of the missions and tasks (i.e. Is it part of me, or inside the mission that is part of me) helps me know what actions in game need to be available (or unavailable). If it's "Hidden" and/or "isCompleted? <selected>" then it let's me know it's not yet active, or is already done.

Final Thoughts: Again, I'm not really sure if this will be released as a library or not. At this point it's really only 4 things. Two new object properties, and two tasks. (And the "complete" task is really just a time saver and isn't really needed). No matter what happens, this is really never going to be anything more than a basic framework for making your own missions. You would still need to move the objects around to make them active/inactive and you would still need to deal with checking all the conditions in order to make the game flow properly. I think the big positive here is the fact that you don't need a bunch of variables and properties to keep track of complicated plot threads. The location and state of your mission and task objects give you the information you need to turn things on and off at the proper moment.

Another thing I plan on using this for myself is combining it with the "Time" system. For example, I might have a "Daily To Do List Mission" that sets itself up each morning when I wake up. I work at 9am on Monday through Friday so my To Do Mission would have a "Get To Work By 9:00" task inside it on those days, but on Saturday and Sunday, it's not there. When I arrive at work, I remove that task. Then, at 9am I can check to see if the player is "At Work" and if the Task is inside their To Do Mission. If it's after 9 and they aren't at work yet - I can dock their pay or issue a warning. Or whatever.

I could also make it so that if I don't take a shower every day, then it will affect my ability to find a date at the bar that night. I'll know if I took a shower based upon whether the "Take a Shower" task is on me, or not. I could also take a shower in the morning (which would remove that task), but then if I go to the gym after work, that task could be re-added because I got all sweaty.

So basically, it's not just a way for the player to have an idea of what to do, but it's also a checklist for me to check and affect various stats and success probabilities based upon whether a task has been completed or not without needing to make a new property or variable to track it. The object serves BOTH purposes at once.

Give it a look and let me know what you think. Feel free to use and or adapt this concept for your own games.

X
Xenos
 
Posts: 49
Joined: Sun Oct 26, 2014 12:04 pm

Re: Proof Of Concept: Missions/Tasks System

Postby Lumin » Mon Nov 24, 2014 2:46 pm

I can definitely think of some uses for this, but mostly I'm just amazed at how fast you're able to crank these out. Are you making this much progress on the actual game as well or are you still in the stage of putting together the 'framework' for it all?
User avatar
Lumin
 
Posts: 2071
Joined: Fri Aug 06, 2004 5:48 pm
Points: 34

Re: Proof Of Concept: Missions/Tasks System

Postby Xenos » Mon Nov 24, 2014 3:38 pm

Haven't even started the game. lol This is actually something I started playing with BEFORE the time system. It was the first thing I worked out when I started playing with this because my biggest gripe with IF/Text Adventure games is being stuck with no clue as to what it wants me to do.

Before I get going on the game I still need a stats/attributes system (so, for example, you can "work out" and increase your attStrength value that you'll need to be able to push the boulder down the hill or whatever). With that, it needs to dynamically update the description of the character, too - so when you "look at Jim" it will say, "Jim is strong" or "Jim is puny" or whatever.

I also need to work out energy (used up by doing things and gained by sleeping and eating).

And I also need a "sleep" system where you can "sleep x hours" or "sleep until fully restored" - and then also process other events at least once an hour during the night - so a random burglar or nightmare can wake you up at some point before it's completed.

And I still need to work out exactly how I'm going to do my "character relationships" bit (from my dynamic arrays post) but I think setting up the blank arrays and then propagating the important ones at "Game Start" is probably the best way to go.

And THEN, if I don't think of anything else, I can start the game. lol
Xenos
 
Posts: 49
Joined: Sun Oct 26, 2014 12:04 pm

Re: Proof Of Concept: Missions/Tasks System

Postby Lazzah » Mon Nov 24, 2014 4:17 pm

To be honest, from what I have read in your posts and seen in your demo, all this is very RPG-orientated. While I can agree with you that there is nothing worse than being completely stuck without a clue as to what you are supposed to do next (been there, done it, got the T-Shirt!), if the author of the game is any good he will give clues as to what the player's next course of action is. I rely on my playtesters to tell me if they are well and truly stuck in any of my games and I will then put clues into the game which I hope will get them moving on.

To do what you suggest in this demo is, IMO, making it far too easy for the player. I am sure that if my playtester played a game where I put messages in that say, for example, "OK, you have now finished the "Wash your hands" task, now you must work out how to complete the "Dry your hands" task." she would get very rapidly bored.
The Axe of Kolt, The Spectre of Castle Coris, The Fortress of Fear, Die Feuerfaust, The Lost Children, Run, Bronwynn, Run, The Call of the Shaman, The Lost Labyrinth of Lazaitch, Magnetic Moon, Starship Quest, Revenge of the Space Pirates
User avatar
Lazzah
Moderator
 
Posts: 2329
Joined: Thu Mar 31, 2011 4:54 am
Location: Dagenham, Essex
Points: 65

Re: Proof Of Concept: Missions/Tasks System

Postby Xenos » Mon Nov 24, 2014 4:41 pm

Yep. Definitely a lot of RPG elements.

The tasks wouldn't be as simple as they are in the example here, though. They would be just like any other task related game. "Find a way into the Evil Lair" (and maybe some clues in the description as to where to start looking). One advantage here is that in a lot of cases, you see a clue while playing, but don't recognize it as a clue until later - and then since you've already done the task, you can't "look again" to see exactly what that clue said.

It's obvious from your posts on here that you hate the idea of these types of elements in an text adventure game, and that's fine. I don't like a lot of the elements other creators put into their games either. Personal taste is funny that way.
Xenos
 
Posts: 49
Joined: Sun Oct 26, 2014 12:04 pm

Re: Proof Of Concept: Missions/Tasks System

Postby ralphmerridew » Mon Nov 24, 2014 5:44 pm

A task system was memorably used in Andrew Plotkin's _Shade_, but that's probably a special case...
Bloodhounds can make you laugh and cuss in the same breath. They are endearing, faithful, and can sling drool ten feet in any direction. -- Virginia Lanier
User avatar
ralphmerridew
 
Posts: 2585
Joined: Fri Dec 13, 2002 11:56 pm
Location: Missouri
Points: 10

Re: Proof Of Concept: Missions/Tasks System

Postby Lumin » Mon Nov 24, 2014 6:04 pm

Of course, there's something to be said for a good old fashioned hint system or a journal object too. But as long as you don't add in a giant glowing arrow and a step-by-step walkthrough you should be fine. ;)

Xenos wrote:Haven't even started the game. lol This is actually something I started playing with BEFORE the time system. It was the first thing I worked out when I started playing with this because my biggest gripe with IF/Text Adventure games is being stuck with no clue as to what it wants me to do.

[..lots of plans...]

And THEN, if I don't think of anything else, I can start the game. lol


Hah, this is pretty much the opposite of how I do things. When I'm working on IF it's like, 'meh, [complex thing] is too complex! Let me just set it aside and ignore it for awhile, hopefully forever, while I write up more descriptions or chat up this NPC...'

I figure the more work I put into the writing side of things the less willing I'll be to just throw my hands up and walk away when it comes time to figure out the scary parts.
User avatar
Lumin
 
Posts: 2071
Joined: Fri Aug 06, 2004 5:48 pm
Points: 34

Re: Proof Of Concept: Missions/Tasks System

Postby Xenos » Tue Nov 25, 2014 10:48 am

Rename "Mission" to "Journal" and "Task" to "Entry" and it's pretty much a journal system.

You could even update the entries as you discover clues.
Say you have an "Entry" called - "break into vault entry" and in order to break in you need a 4 digit combination to type in. Each digit is known by a different person, so you run around talking to people. You have four text variables - firstDigit, secondDigit, thirdDigit, fourthDigit that all start out as a value of "?" Your description in the "break into vault entry" is: "Apparently there is a four digit combination, but no one knows the whole thing. NOTE TO SELF: The combination is %firstDigit% %secondDigit% %thirdDigit% %fourthDigit""

At first this would output "... the combination is ? ? ? ?"

So now, your player runs around talking to people and he meets someone who tells him, "The third digit is 6!" and you set the thirdDigit variable to 6.

Now your description of the task ends with "the combination is ? ? 6 ?"

The player then doesn't have to write down all the numbers as he learns them - that "Entry" keeps track of them. (In my game, too - I would have the actual combination be generated randomly each time you start a new game so there is no way to remember the combo from the last run through - you still need to do the leg work each time you play).

I'm probably also going to end up using this for other things, too. For example, there is nothing saying that the missions/tasks need to be on the person. They could put into a room that doesn't appear on the map or inside another object called "Active Stuff" or whatever. By having them be objects, I can track complex properties and values across things a lot easier. Because an object can have many different properties and descriptions - I can use those to affect the game by checking the location (is it hidden or is it in the Active Stuff box). This would normally need a variable to say if it is active or not. But then now because it's an object, I have at my disposal description text, various other properties and all sorts of stuff that I don't need to track in separate variables - I can store them (and modify them) in properties of that object.

I'm also thinking my "relationships" issue might be solved in this way too - each character gets a corresponding "object" that is their relationship levels with people. Not sure on all the details yet, but...

----
As for the planning bits... I do both web development/programming and graphic design. The trick there is that both functions require completely different mindsets and it takes a lot of time two switch from "logic mode" to "creative mode". I'm not sure if that's true for everyone, but it is true for me. The more systems I have in place now, the longer I can spend in "creative mode" when actually making the game. If I'm constantly having to switch back and forth, then it would take me decades to complete. lol
Xenos
 
Posts: 49
Joined: Sun Oct 26, 2014 12:04 pm

Re: Proof Of Concept: Missions/Tasks System

Postby Lazzah » Tue Nov 25, 2014 9:50 pm

Xenos wrote:Say you have an "Entry" called - "break into vault entry" and in order to break in you need a 4 digit combination to type in. Each digit is known by a different person, so you run around talking to people. You have four text variables - firstDigit, secondDigit, thirdDigit, fourthDigit that all start out as a value of "?" Your description in the "break into vault entry" is: "Apparently there is a four digit combination, but no one knows the whole thing. NOTE TO SELF: The combination is %firstDigit% %secondDigit% %thirdDigit% %fourthDigit""

Just to make it interesting, why don't you randomize the numbers so that the combination will never be the same whoever plays the game? 8)
The Axe of Kolt, The Spectre of Castle Coris, The Fortress of Fear, Die Feuerfaust, The Lost Children, Run, Bronwynn, Run, The Call of the Shaman, The Lost Labyrinth of Lazaitch, Magnetic Moon, Starship Quest, Revenge of the Space Pirates
User avatar
Lazzah
Moderator
 
Posts: 2329
Joined: Thu Mar 31, 2011 4:54 am
Location: Dagenham, Essex
Points: 65

Re: Proof Of Concept: Missions/Tasks System

Postby Xenos » Wed Nov 26, 2014 8:43 am

Yep. Definitely.

Ultimately, I would like the game to end up being very replayable. There will be at least 2 ways to accomplish most tasks in the game. Each character will have basic attributes (strength, dexterity, intelligence, etc) and also various "skills" (like maybe observation, or computer hacking, or cooking, or whatever). So when you have the "get into the vault" task - you can opt to learn the combination as I described it above (using your "charm" skill maybe?) or maybe you have a computer hacker friend that can either teach you the hacking skill or you might even be able to convince them to come along and hack it for you. OR, maybe you or a friend have a high chemistry skill and you can concoct some explosives and go in loud. ;)

Obviously, with the news that ADRIFT isn't currently saving array values properly, that will make it difficult to play this for a while, but I suppose I've got a fair amount of work to do before it's playable anyway. lol
Xenos
 
Posts: 49
Joined: Sun Oct 26, 2014 12:04 pm

Re: Proof Of Concept: Missions/Tasks System

Postby ralphmerridew » Wed Nov 26, 2014 1:12 pm

There's also brute force method of trying all 1000 combinations.
Bloodhounds can make you laugh and cuss in the same breath. They are endearing, faithful, and can sling drool ten feet in any direction. -- Virginia Lanier
User avatar
ralphmerridew
 
Posts: 2585
Joined: Fri Dec 13, 2002 11:56 pm
Location: Missouri
Points: 10


Return to ADRIFT 5.0

Who is online

Users browsing this forum: No registered users and 0 guests

cron