Skip to content

Instantly share code, notes, and snippets.

@gogogarrett
Created June 7, 2012 13:09
Show Gist options
  • Save gogogarrett/2888717 to your computer and use it in GitHub Desktop.
Save gogogarrett/2888717 to your computer and use it in GitHub Desktop.
LOST LEGEND - RPG Adventure Game
Feature: First Login
In order to login the first time
As a player
I want to be able to select my vocation in order to play the game
Scenario: Start playing the game
Given I am on the root path
And I click on sign up
And I fill in the form and select my vocation
Then I should be directed to the application
And be prompted with the beginner's guide
Scenario: Walk through the beginner guide
Given I am in the starting zone
Then I should be prompted with the beginners guide
Then I should be directed to my profile and be able to edit my profile settings
Then I should be directed to my players stats
Scenario: Opt out of the beginner guide
Given I am in the starting zone
Then I should be prompted with the beginners guide
And I choose to opt out
Then I should be able to play how I like

LOST LEGENDS - A simple rpg game:

Create an RPG adventure game that is solely click based.

Users will sign up for an account and choose their main vocation. They should be prompted with a beginner guide to how to begin playing. To hunt and level, a user will click into a zone that has "hunting grounds". Once they are in a hunting zone, they must again click to instigate a battle with an enemy. This will result in some sort of battle sequence that will prompt the user to begin in the battle. In the battle sequence it will be turn based and allow for the use of spells, items, and physical attacks to opponents. After defeating an enemy they will receive experience and rewarded in some sort of currency that can be used for in game purchases and trading with NPC's to obtain items. They is also a chance that items will be dropped such as equipment, potions, and other various misc. items.

Beginner Guide

  • Explain the controls
  • Explain how to fight / navigate the map
  • Explain the goals of the game and how to "win" (if we decide you can win)
  • Give the user the basic set of equipment needed to proceed in the game, and explain how ot use them

Vocation Types:

Knight

These are strong melee fighters and can posses all weapon and armor types. They are good in up close combat, but lack when it comes to magical abilities.

Paladin

Paladins are very skilled with all distance weapons from rocks all the way to crossbows, and are able to inflict great damage at a range. They also have many support spells which allows them to craft arrows or food to use throughout the gameplay. However, they do have limited offensive magical spells.

Mage

Mages deal very high damage in shorts amount of time, and they also posses the most mana out of all other vocations. They do however lack in the ability to use many weapons, have limited healing magic and must wear very weak armor which makes them a clear target for close combat fighting.

Druid

Druids have the ability to heal every party member and have many protection buffs that can benefit themselves as well as their party. They however don't how as many offensive spells as a Mage. Druids are masters of nature and have the ability to tame animals to fight in their party to help them in combat

Vocation Information:

Knight:

Strong Melee

Weak Distance

No magic

Armor: All types

Paladin:

Weak Melee

Strong Distance

Light Healing Magic

Light Offensive Magic (mostly support spells)

Armor: Chain (medium level armor whatever the name)

Mage:

Weak Melee

Weak Distance

Light Healing Magic

Strong Offensive Magic

Armor: Cloth

Druid:

Weak Melee

Weak Distance

Strong Healing Magic

Light Offensive Magic

Armor: Cloth

Stats:

The stats are still to be determined, but should be comprised of a few basic set of attributes.

These should include, but not be limited to:

  • Strength
  • Intellect
  • Defense
  • Stamina

Zones

A zone is a specific area within the game that a user can click into and see the regions within the zone. Zone's can include combat zones, dungeons, stores, and even other zones. The ability to have nested zones could potentially be nested indefinitely, but realistically will only be nested 3 or 4 times.

An example of how this might work:

        **Wild Forest**
+++++++++++++++++++++++++++++             +++++++++++++++++++++++++
|                           |             |         legend        |
|  ++++++   ++++++  ++++++  |             +++++++++++++++++++++++++                
|  + A  +   + B  +  + C  +  |             |  A  + Store           |
|  ++++++   ++++++  ++++++  |             |  B  + Combat Zone     |
|                           |             |  C  + Combat Zone     |
|  ++++++   ++++++  ++++++  |             |  D  + Nothing         |
|  + D  +   + E  +  + F  +  |             |  E  + Nothing         |
|  ++++++   ++++++  ++++++  |             |  F  + Nested Zone     |
|                           |             |  G  + Nested Zone     |
|  ++++++   ++++++  ++++++  |             |  H  + Dungeon         |
|  + G  +   + H  +  + I  +  |             |  I  + Combat Zone     |
|  ++++++   ++++++  ++++++  |             +++++++++++++++++++++++++
|                           |
+++++++++++++++++++++++++++++

Enemy Types:

  • Pythons

-- Snake like monsters - perhaps with poison after affects that can be cured with spells by paladins, druids, maybe mages.

-- Low damage monster

-- EXP, No Items

  • Angry Clam (with pearl in graphic interpretation in it's mouth that's the real monster to go with programming reference)

-- Melee damage

-- EXP, Low chance of Items

Leader boards

There will be leader boards that promote competition through player's collections, skills, levels, days logged in, and other various things.

This would create some motivation to collection a great deal of items, in-game money, and create players to want to keep playing to be the "best".

In game purchases

This would be later into the actual development of the game, but would allow for players to use real money to purchases in game currency to be used as they please, and perhaps even advanced items that have advanced benefits / skills.

Database Tables Needs

Users

  • inventory
  • weapons
  • armor
  • abilities
  • items
  • class
  • stats

Zones

  • dungeons
  • stores
  • combat

Task

  • As a user I want to be able to sign up for the game

    • Create a home controller that welcomes the users and tells them a little about the game and has a link for signing up / signing in
    • Integrate Devise to allow for users to sign in to the application
    • extend user model to allow for usernames email, username, password, character_id, age
  • As a user I want to be able to create a character and play the game

    • Create a character model name, experience, hp, maxHp, mana, maxMana, energy(need better word), maxEnergry, vocation_id, rubies, age
    • Tie the character to the user's account
    • Age
      • Update this on player creation (set to players real age if provided, else default to something else=15-20)
      • I'm envisioning the game's time frame to run about 1day [game] = 1hour [real world]
      • This will eventually tie into quest, unlocking zones at certain ages, another stat to track on leader boards, and perhaps "evolve" to super sayin mode at level 50 or something crazy to add a spin (open for discussion and ideas)
  • As a user I want to be able to select the vocation of my character

    • Create a Vocation model that supports 4 classes (may be nested models)
    • Allow them to choose their Vocation
    • Create an after_create on character creating and vocation selection to set starting stats such as HP/MP etc to give baseline information
  • As a user I want to be able to see my character's stats

    • Create a Stats model to hook up to character to allow for Str, Int, Def, Stamina etc.
    • on character creating, create 5 stat points to be spent on their character's stats
    • create a page where users can see their character stats
    • create a page where users can spend their 5 points
  • As a user I want to see my Inventory

    • Create model for Inventory (polymorphic association to hold items/weapons/armors/ etc)
    • hook up to players on creation
    • create a page where users can view their inventory
  • As a user I want to have an item in my Inventory

    • Create the model for items
      • Item Types:
        • Potions
          • Healing
          • Offensive
          • Buffs
        • Tools
          • Rope
          • Shovel
          • Pickaxe
        • Collectables
          • Floppy Disk
          • USB Stick
          • Missing Numbers (pokemon reference)
    • Hook into inventories
    • Create a button on the starting page that creates a new item and places it in the users inventory (just to prove functionality)
  • As a user I want to have weapons to use in the game

    • Create a model for weapons
    • Find / Create a list of fancy RPG adjectives as modifier words for items
    • Add function to create random weapon names when created/dropped
    • Examples:
      • Feisty Broad Sword
      • Hammer of Thor's brother
      • Hook into inventories
    • Create a button on the starting page that creates a new weapon and places it in the users inventory (just to prove functionality)
    • Write function for generating random stats that will be modified later to fit into algorithms of monsters drop and character's level
    • Weapon Stats
      • Damage (min-max)
      • Item Level (depends if you're able to wield or not)
      • Strength
      • Intellect
      • Defense
      • Stamina
      • These should be configured to add into the players stat's to come up with the final algorithm to determine max damage (still to be determined how this will be calculated)
  • As a user I want to have armor to use in the game

    • Create a model for armor
    • Hook into inventories
    • Create a button on the starting page that creates a new armor and places it in the users inventory (just to prove functionality)
    • Write function for generating random stats that will be modified later to fit into algorithms of monsters drop and character's level
    • Armor Stats
      • Protection (min-max)
      • Item Level (depends if you're able to wield or not)
      • Type:
        • Iron
        • Mail
        • Leather
        • Cloth
      • Strength
      • Intellect
      • Defense
      • Stamina
      • These should be configured to add into the players stat's to come up with the final algorithm to determine max protection (still to be determined how this will be calculated)
  • As a user I want to have rubies to use a currency in the game

    • Extend character model to support rubies
    • Create a function that emulates collecting or picking up gold and adding it to the characters balance
  • As a user I want to apply temporary affects to my character

    • Create a Model for Abilities
    • Create some default abilities for each vocation (flee, fish, make fire, spells, etc)
      • Knight
        • Default ones everyone has, but nothing more
        • Flee
        • Fish
        • Make fire
      • Paladin
        • Conjure Food
        • Make Arrow
      • Mage
        • Fire ball ..
        • Frost ball ..
        • Thunder ball (levels into bolt..then storm etc)
      • Druid
        • Light Heal (grand heal, ultra heal etc..)
        • Cure posion
        • Suppot spells
      • Configure duration in which abilities can be used - conjure should be 5-10 minutes, offense / defensive should be whenever, fish and make fire could be on a 30 cool down perhaps.
    • Hook into character's vocations to allow them to have standard abilities that will grow with level and skills
    • Add functionality to apply a spell to yourself or perform other non personal spells such as fish (just return a stub function with "fishing" or something to prove it works with a cool down)
    • Apply spell specifications to the character
  • As a user I want to use items in my inventory

    • Add functionality to use an item
    • Make sure the use of the item (food / potion / etc) is applied to the character
  • As a user I want to equip items within my inventory

    • Create model for equipped item
    • User has many equipped_items through inventory
    • Validate that character may only have 1 equipped item on per slot at a time. exp: Helmet, Chest, Legs, Boots, Weapon, Shield

BackLog:

  • As a user I want to be prompted on how to play on first login
    • Create a HowTo Guide model
    • Create a Beginner Guide record and initiation process that is triggered on first login
    • Prompt the user on first login how to play the game
    • Walk users through how stats work / where their profile settings are
Feature: Starting Zone
In order to move around the zone
As a player
I want to be able to click in other subzones and visit their respected pages
Background:
Given I am in the starting zone
Scenario:
And I click on home
Then I should be taken to a new area with my personal achievements and information
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment