Adventure stories: Difference between revisions

From OLPC
Jump to navigation Jump to search
 
m (categorization, cosmetics & section headers (pls review))
Line 1: Line 1:
{{TOCright}}
XOASS
XOASS
XO Adventure Story System
XO Adventure Story System
Line 5: Line 6:
SUMMER OF CODE PROJECT!
SUMMER OF CODE PROJECT!


Abstract
== Abstract ==


This is an overview document for an interactive fiction authoring system for the XO laptop. We envision this to be a robust but simple system that will allow users to create their own adventure stories on the laptop. The system will be written in Python w/PyGame elements if needed.
This is an overview document for an interactive fiction authoring system for the XO laptop. We envision this to be a robust but simple system that will allow users to create their own adventure stories on the laptop. The system will be written in Python w/PyGame elements if needed.


Design
== Design ==


We don't want our adventure game to be a parser game because parsers are too tough to write relevant to the play style and languages we want to support.
We don't want our adventure game to be a parser game because parsers are too tough to write relevant to the play style and languages we want to support.
Line 23: Line 24:
Everything in the game has a basic object structure that underlies each specific object type
Everything in the game has a basic object structure that underlies each specific object type


General object structure
* General object structure
** Name of object
Name of object
**Basic description of object
**Type of Object
* Every object can have multiple pictures, video, sounds, music attached to it
** Objects may be tagged for display upon some specific triggers or they appear in a list that the user can choose from to trigger it
=== Types of objects ===
Basic description of object
Type of Object


; Geography : Specific places in the gameworld
Every object can have multiple pictures, video, sounds, music attached to it
; Things : Specific objects in the gameworld
; Creatures : Specific living things in the gameworld
Objects may be tagged for display upon some specific triggers or they appear in a list that the user can choose from to trigger it
; Abilities : Abilities the player can be bestowed with the ability to perform
; Occurance : An occurance is something that "happens" irregardless of place, thing, or creature.
Types of objects:

Geography : Specific places in the gameworld
Things : Specific objects in the gameworld
Creatures : Specific living things in the gameworld
Abilities : Abilities the player can be bestowed with the ability to perform
Occurance : An occurance is something that "happens" irregardless of place, thing, or creature.
Players edit these object types with simple dialogs and can choose from pre-populated objects from a clip list
Players edit these object types with simple dialogs and can choose from pre-populated objects from a clip list
Line 53: Line 45:
Simple heirarchical lists make it easy to identify rooms that hold things or creatures and to resort the lists of things for quick editing
Simple heirarchical lists make it easy to identify rooms that hold things or creatures and to resort the lists of things for quick editing


Actions
=== Actions ===

Actions are basically choices the player may take in the system they break down as follows
Actions are basically choices the player may take in the system they break down as follows


Universal Actions (unconditional) are always available
* Universal Actions (unconditional) are always available
* Universal Actions (conditional) are always available regardless of object if certain overall conditions are tested and met

Universal Actions (conditional) are always available regardless of object if certain overall conditions are tested and met
* Local Actions (unconditional) are always invoked when an object is invoked or in an invoked state
* Local Actions (conditional) are only available when an objects in invoked or in an invoked state AND other overall conditions are tested and met

Local Actions (unconditional) are always invoked when an object is invoked or in an invoked state

Local Actions (conditional) are only available when an objects in invoked or in an invoked state AND other overall conditions are tested and met
The system's playback job is to run a thread that checks the players location, object, and game state and simply draw out the options the player may take based on testing all appropriate conditions.
The system's playback job is to run a thread that checks the players location, object, and game state and simply draw out the options the player may take based on testing all appropriate conditions.


Action Scripts
=== Action Scripts ===

Action scripts are SIMPLE "assembly language" like scripts that are run when a player takes an action AFTER the action is set or are run BEFORE entering a room.
Action scripts are SIMPLE "assembly language" like scripts that are run when a player takes an action AFTER the action is set or are run BEFORE entering a room.


These scripts must be kept simple enough to allow simple dialogue wizards to allow the programming of.
These scripts must be kept simple enough to allow simple dialogue wizards to allow the programming of.


Conditional Scripts
==== Conditional Scripts ====

Conditional scripts if attached to an action in the database are the scripts that contain the logic that denote if the action is available. If all conditions set in the accompany script are true then the action is displayed as a choice. If one of the actions is not true then the action is not displayed. If no conditions are set the game assumes that the action is universal to its parent object be it the Game itself (Universal), a room, object, creature, or ability.
Conditional scripts if attached to an action in the database are the scripts that contain the logic that denote if the action is available. If all conditions set in the accompany script are true then the action is displayed as a choice. If one of the actions is not true then the action is not displayed. If no conditions are set the game assumes that the action is universal to its parent object be it the Game itself (Universal), a room, object, creature, or ability.


Like action scripts these conditional scripts need to be easy enough to be set through simple easy to understand dialogues
Like action scripts these conditional scripts need to be easy enough to be set through simple easy to understand dialogues


Variables
=== Variables ===

The system will have several variables that the game can keep state over. These game and player variables can be tested for by an overall game-script (a simple overall conditional script) and when met invoke a game over occurance, room, etc.
The system will have several variables that the game can keep state over. These game and player variables can be tested for by an overall game-script (a simple overall conditional script) and when met invoke a game over occurance, room, etc.


Line 85: Line 78:
These can then be referred to in the scripts as well.
These can then be referred to in the scripts as well.


Conversations
=== Conversations ===


The player can create conversations with characters. We will need a specific conversation design - I have one but need to refine it before posting it.
The player can create conversations with characters. We will need a specific conversation design - I have one but need to refine it before posting it.


Editing
=== Editing ===

Editing should be based on putting things on a map with iconography and a click and edit framework with various dialogue boxes. A hierarchal chart along the side makes it easy to manage objects in the system as well.
Editing should be based on putting things on a map with iconography and a click and edit framework with various dialogue boxes. A hierarchal chart along the side makes it easy to manage objects in the system as well.


Line 98: Line 92:
Sounds could also chosen from a menu or recorded using the mic. Same with video. We should beware though of memory limits - perhaps limiting the overall size of such things to ensure small-enough game files.
Sounds could also chosen from a menu or recorded using the mic. Same with video. We should beware though of memory limits - perhaps limiting the overall size of such things to ensure small-enough game files.


Other Elements
== Other Elements ==


We need to figure out how all text edited into the system could ideally be easily edited including simple search and replace, bold, italics, etc. Perhaps simple <HTML> markup for simple stuff (then kids learn HTML?) or a wiki style markup? Would also be good for there to be an easy means to integrate a spell checker too.
We need to figure out how all text edited into the system could ideally be easily edited including simple search and replace, bold, italics, etc. Perhaps simple <HTML> markup for simple stuff (then kids learn HTML?) or a wiki style markup? Would also be good for there to be an easy means to integrate a spell checker too.

[[Category:SoC Project]]

Revision as of 13:18, 17 April 2007

XOASS XO Adventure Story System Design .1

SUMMER OF CODE PROJECT!

Abstract

This is an overview document for an interactive fiction authoring system for the XO laptop. We envision this to be a robust but simple system that will allow users to create their own adventure stories on the laptop. The system will be written in Python w/PyGame elements if needed.

Design

We don't want our adventure game to be a parser game because parsers are too tough to write relevant to the play style and languages we want to support.

Our adventure game is a multiple choice system with some hooks for some alternative interface styles

It is not a SCUMM game. We can port a SCUMM engine for those style of games.

Our game will be entirely editable by populating various files using a simple editor

The game will support graphical pictures, video, sounds, music

Everything in the game has a basic object structure that underlies each specific object type

  • General object structure
    • Name of object
    • Basic description of object
    • Type of Object
  • Every object can have multiple pictures, video, sounds, music attached to it
    • Objects may be tagged for display upon some specific triggers or they appear in a list that the user can choose from to trigger it

Types of objects

Geography
Specific places in the gameworld
Things
Specific objects in the gameworld
Creatures
Specific living things in the gameworld
Abilities
Abilities the player can be bestowed with the ability to perform
Occurance
An occurance is something that "happens" irregardless of place, thing, or creature.

Players edit these object types with simple dialogs and can choose from pre-populated objects from a clip list

Each object has a unique icon

Simple heirarchical lists make it easy to identify rooms that hold things or creatures and to resort the lists of things for quick editing

Actions

Actions are basically choices the player may take in the system they break down as follows

  • Universal Actions (unconditional) are always available
  • Universal Actions (conditional) are always available regardless of object if certain overall conditions are tested and met
  • Local Actions (unconditional) are always invoked when an object is invoked or in an invoked state
  • Local Actions (conditional) are only available when an objects in invoked or in an invoked state AND other overall conditions are tested and met

The system's playback job is to run a thread that checks the players location, object, and game state and simply draw out the options the player may take based on testing all appropriate conditions.

Action Scripts

Action scripts are SIMPLE "assembly language" like scripts that are run when a player takes an action AFTER the action is set or are run BEFORE entering a room.

These scripts must be kept simple enough to allow simple dialogue wizards to allow the programming of.

Conditional Scripts

Conditional scripts if attached to an action in the database are the scripts that contain the logic that denote if the action is available. If all conditions set in the accompany script are true then the action is displayed as a choice. If one of the actions is not true then the action is not displayed. If no conditions are set the game assumes that the action is universal to its parent object be it the Game itself (Universal), a room, object, creature, or ability.

Like action scripts these conditional scripts need to be easy enough to be set through simple easy to understand dialogues

Variables

The system will have several variables that the game can keep state over. These game and player variables can be tested for by an overall game-script (a simple overall conditional script) and when met invoke a game over occurance, room, etc.

The variables I've thought of so far include: score, time, currency, life, ability points, offense, defense, user 1, user 2.

These variables as simple as they are let us offer some rudimentary RPGness to the system that could have kids accumulating wealth, casting spells, fighting creatures, etc. I've tried to choose variables that are basic - we should allow the designer to create two unnamed variables.

These can then be referred to in the scripts as well.

Conversations

The player can create conversations with characters. We will need a specific conversation design - I have one but need to refine it before posting it.

Editing

Editing should be based on putting things on a map with iconography and a click and edit framework with various dialogue boxes. A hierarchal chart along the side makes it easy to manage objects in the system as well.

The camera being active is a good tool for recording pictures and video. Black & White mode should also get some attention.

Being able to integrate artwork easily into the game is important. We will have to think about what we can do to allow people to create various collages in the engine as well as provide some artwork library for people to use but we can't recreate an entire in-game drawing program.

Sounds could also chosen from a menu or recorded using the mic. Same with video. We should beware though of memory limits - perhaps limiting the overall size of such things to ensure small-enough game files.

Other Elements

We need to figure out how all text edited into the system could ideally be easily edited including simple search and replace, bold, italics, etc. Perhaps simple <HTML> markup for simple stuff (then kids learn HTML?) or a wiki style markup? Would also be good for there to be an easy means to integrate a spell checker too.