Skip to content

Instantly share code, notes, and snippets.

@AleksLitynski
Last active August 29, 2015 13:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AleksLitynski/8725782 to your computer and use it in GitHub Desktop.
Save AleksLitynski/8725782 to your computer and use it in GitHub Desktop.
Notes on a game I'm calling Teller. They're still pretty disjointed.

Teller (A storytelling game)

(Exciting news: I have a $1000 grant for this project!!)

The Big Ideas

  • a single story can be grafted onto any group of characters. The dev writes a story once, but can apply it to multiple situations.

The player is exploring an open world. A fantasy world. They come across a "detective story". They are asked to find the missing puppy. Later, they're playing a space adventure, and the same detictive story appears, this time with different trappings. Space-dogs. Robo-damsels. Etc.

  • Multiple stories can be composed such that in the middle of the hunt for the magic sword, it may become nessessary to teach a child how to ride a jet-skateboard, or a character's brother may fall desperitaly ill just when they need to take the big test. Any one of these stories could be applied as a major story arc, or a side quest. Scalable at the press of a key.

  • All assets (audio, models, dialog) will be represented as nodes in a graph. This will allow us to reason about the game. There will be an inherit link between two characters arms (they are both arms, and the game KNOWS it). No other game engine (that I know of) does this. The wii can't look at mario and luigi and say, luigi has longer arms.

  • The graph will be designed so that it is collapsable. A player can query, "what's going on on the next continent over?" If the game doesn't know, it will consider what it knows about continents in general, and generate something. It will make up a few details, "The french are having a revolution" without deciding unnessessary thing (who is the king? What is rebel #17's eye color?).

  • This appies to micro-details as well. The game can go from 10 poly per model to 10000 by extrapolating details it knows about how people in general look. Zooming in enough would reveil folicles and even cells, which can all be collapsed again when it is no longer being examined.

  • The graph will be updateable at arbitrary time steps. If a player asks what the world is like 20 years from now, the game will use what it knows and make something up. If they ask about 15 years from now, it will connect the dots of 20 years in the future and the present to make up something that fits the pattern. This teqnique should work on a micro-scale. Every 1/30th of a second, the game engine will ask "what happens next?" and the graph will extrapolate to fill in the gap.

Implimentation

###Overview

  • the ontology

A Graph that contains the game world, and the tools to modify that graph. Communications over TCP.

  • Game Engine

The Program that regularly quaries the ontology to advance the flow of the game. This manages the AI and player interface.

  • Player Interface

Probably a text interface for now. The game will print a paragraph about the world, and the player will choose what they want to do from a menu.

###The Ontology

The ontology can be quaried about the state of the world (like a database). A query can get a simple answer ("Bob is 3 ft tall") or may trigger a complex event ("Bob doesn't exist. I supposed Linda and Luke had a kid and that was Bob and they're both short, so Bob is 3 ft tall").

By answering questions, the world can be built, examined, and changed.

####Query Format <- More than anything else, this is a work in progress. [ time ] [ permissions ] [ target-node ] [ item of interest ] [ fallback advise ]

  • Time: What time are we talking about?
  • Permissions: The graph can be modified to satisfy the query.
  1. can only extract information.
  2. can modify the graph only as the target node realistically could (walk to the store).
  3. can modify anything (teleport to store).
  • target-node: The node that modifications will happen with reguards to.
  • Desired Effect: This is what we want to know relative to the target. How tall is Bob?
  • fallback advise: "If the character doesn't have a hight, instead of using the average height for their cultural group, why not do 5'2"?""

####Ontology Nodes

  • nouns
    • These have knoledge of other nodes.
    • Queries target a noun.
    • One noun is the "story teller". This is used as a target for general world knoledge, but another random character can be swapped in to shift the world to their perspective.
    • Nouns percieve edges between nodes. Valid edges:
    • --> Noun "is a" Noun
    • --> Noun "has a" Adjuctive
    • --> Noun "knows of" NODE TYPE
    • --> Verb -> consideration
    • --> consideration -> Verb or Atomic Delta
    • --> Adjuctive "is type of" Adj Type
    • --> Adjuctive "has value of" Adj Value (not set, constrained to, or exactly)
  • verbs
    • considerations
    • atomic deltas
    • Verbs represent mutation to the graph. They are a decision tree:
    • I want to go to france.
    • I need to get there.
    • It is far away. I know planes go far.
    • I need $$$$$
    • etc.
    • Verbs are used to represent the story too. An entity with a lot of influience (can control weather, other nouns, etc) enforces it's will to make a story
    • Breaking down how to bend an arm is the same as breaking down how to enrage a mob
  • adjuctives
    • types: textual, aural, emotional, spatial, physical
    • value and catagory. IE: color and 255, or feet and 255

Interdependancies: -- Queries target a certain noun, and have a certain change they should make in the world. If the noun is given enough authority, it will make the specified change. Otherwise (not sure if internal or external) AI will look at what verbs the noun knows and put together a plan to acheive stated goal. It will break down into plans as detailed as needed (If off screen, you can do the move verb without the rotate leg verbs). -- Queries also give

####Ontology Structures

  • Data backend. A key value store that saves to disk and swaps to disk what isn't being viewed.
  • Solver algorithm (given a query, manipulate or generate the state, given curren constraints.)
  • Graph shriker. Entity that removes/collapses un-used parts of the graph. (may be redundant to the other two)
  • Query fielder. Something simple to recieve/reply to requests over tcp

Hanging Questions

  • Is AI behind or in front of the query wall? This will resolve the question of how queries are formatted.
  • How exactly is recursive perspective stored? Each noun can have a different idea of the world. Bob only knows about florida. Joe thinks Herman's name is Merman, etc.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment