Giter Site home page Giter Site logo

mysql-rpg-schema's Introduction

###MySQL-RPG-Schema###

A database schema for role-playing games

###Description###

This repo contains a database template that could be used when designing an RPG.

There is a possibility that this schema may not fit your exact needs, but it could be used as a jump off point to get you going. Hopefully, there is enough here where you can use most of it and modify the bits and peices you need.

The schema here is intended for a MySQL database.

You may want to take into consideration using either MyISAM or Innodb. Each have their advantages and disadvantages. I've considered making these Innodb, but decided to leave that out. If you have a preference on using a particular database engine, then you may need to modify the schema.

###Synopsis###

The "create_tables.sql" file will have the database schema to the create tables.

The "create_history_tables.sql" file creates a history table for each table. Having history tables is intended to be optional hence being in a seperate file.

###Database Tables###

Below is an overview on individual database tables.

####conf####

Various configuration settings for your game could be held here.

Columns:

  • conf_id
  • name
  • value

####user_type####

Different user types that would be associated with a "user" (not to be confused with "characters").

Columns:

  • user_type_id
  • name

Rows:

  • name:'admin',
  • name:'moderator',
  • name:'player',
  • name:'spectator',

####user####

This table holds the real world player information. Entries inside here are known as "users", which differ from "characters"

Columns:

  • user_id
  • user_type_id
  • first_name
  • last_name
  • email
  • password

####character_type####

Different character types that are associated with a "character".

Columns:

  • character_type_id
  • name

Rows:

  • name:'player',
  • name:'non-playable',

####character####

Records inside here would be characters in your game. This table includes playable and non-playable characters.

Columns:

  • character_id
  • character_type_id
  • name
  • alive
  • level
  • xp
  • money

####user_character####

This table links "users" to "characters". It is recomended that the character a user will associate with should have a character_type (SEE character_type) classifing the character as "player".

Columns:

  • user_character_id
  • user_id
  • character_id

####attribute####

A basic list of attributes.

See this wiki article in regards to rpg attributes.

Columns:

  • attribute_id
  • name
  • desc

Initial rows inserted:

  • name:'strength', desc:'A measure of how physically strong a character is.',
  • name:'constitution', desc:'A measure of how resilient a character is.',
  • name:'dexterity', desc:'A measure of how agile a character is.',
  • name:'intelligence', desc:'A measure of a character''s problem-solving ability.',
  • name:'charisma', desc:'A measure of a character''s social skills, and sometimes their physical appearance.',
  • name:'wisdom', desc:'A measure of a character''s common sense and/or spirituality.',
  • name:'willpower', desc:'A measure of the character''s mental resistance.',
  • name:'perception', desc:'A measure of a character''s openness to their surroundings.',
  • name:'luck', desc:'A measure of a character having chance to favor him or her.',
  • name: 'damage', desc: 'A measure to inflict damage',

####character_attribute####

This table associates attributes to characters.

Columns:

  • character_attribute_id
  • character_id
  • attribute_id
  • value

####place####

Used by "location", This table holds a list of place names.

Columns:

  • place_id
  • name

####location####

A list of x and y coordinates. Each record will be associated with a "place" (SEE "place" TABLE). You can have multiple location records that are of the same place.

Columns:

  • location_id
  • x
  • y
  • place_id

####character_location####

A list reporting where characters are at.

Columns:

  • character_location_id
  • character_id
  • location_id

####item_type####

Different item types held here.

Columns:

  • item_type_id
  • name
  • desc

####item####

An object that characters can use in some way.

Columns:

  • item_id
  • item_type_id
  • name

####item_attribute####

This table associates items with attributes. These attributes are intended to be added to character attributes.

Columns:

  • item_attribute_id
  • item_id
  • attribute_id
  • value

####item_location####

A list of item locations. It is intended that if a character has an item on them, then the item will not be in this table.

Columns:

  • item_location_id
  • item_id
  • location_id

####character_item####

The "character inventory", what the character has on them or perhaps in a backpack of sorts. If an item is equiped, then it is not intended to be in here. However, it is possible to have equipped items in here also.

Columns:

  • character_item_id
  • character_id
  • item_id

####equipment_slot####

A list of possible slots where items can be equiped to.

Columns:

  • equipment_slot_id
  • name

Initial rows inserted:

  • name:'head',
  • name:'shoulder',
  • name:'chest',
  • name:'back',
  • name:'wrist',
  • name:'hands',
  • name:'waist',
  • name:'leg',
  • name:'feet',
  • name:'neck',
  • name:'ears',
  • name:'ring',
  • name:'main_hand',
  • name:'off_hand',

####character_equipment####

A list of items that are equiped to characters.

Columns:

  • character_equipment_id
  • equipment_slot_id
  • character_id
  • item_id

####class####

A list of classes that characters can be.

See this wiki article in regards to what rpg classes are and the different types.

Columns:

  • class_id
  • name

####character_class####

This table associates characters to a class (SEE "class" TABLE)

Columns:

  • character_class_id
  • character_id
  • class_id

####ability_type####

Different ability types held here (SEE "ability" TABLE).

Columns:

  • ability_type_id
  • name
  • desc

####ability####

An ability is like a special action, spell, or possible talent that characters can perform in combat.

Columns:

  • ability_id
  • name
  • ability_type_id

####class_ability####

This table associates what class can do an ability.

Columns:

  • class_ability_id
  • class_id
  • ability_id

####effect_type####

Different effect types held here.

Columns:

  • effect_type_id
  • name
  • desc

Rows:

  • name:'buff', desc:'A temporary benefit to a character’s attributes',
  • name:'debuff', desc:'A temporary hindrance to a character’s attributes',

####status_effect####

A "status effect" is usually some temporary advantage or hindrance given to a character by some mean, perhaps from an ability, an item, or being at some place.

See this wiki article in regards to what rpg status effects are and examples.

Columns:

  • status_effect_id
  • name
  • effect_type_id
  • duration
  • desc

####character_status_effect####

This table associates current status effects are on character.

Columns:

  • character_status_effect_id
  • character_id
  • status_effect_id
  • date

####loot####

This table lists the possible loot that can be gained.

Columns:

  • loot_id
  • xp
  • money

####character_loot####

This table associates loot awarded when defeating a specific character.

Columns:

  • character_loot_id
  • loot_id
  • character_id

####item_loot####

This table associates items awarded when receiving a particular loot.

The "drop_chance" column sets the chance of receiving this item. This column is intended to be a decimal number between 0 to 1 as a way to represent a percentage.

Columns:

  • item_loot_id
  • loot_id
  • item_id
  • drop_chance

####entity_type####

A list of basic types associated with entities.

Columns:

  • entity_type_id
  • name

####entity####

An "entity" is an alternative to the "non-playable" character type. This table is intended to have various non playable characters in your game. These could be friendly or hostile to players. They can be ugly monsters or beautiful human. It is really up to you if you want to use this table or how you want to use it.

Columns:

  • entity_id
  • entity_type_id
  • name
  • level

####entity_attribute####

Associates an attribute to an entity.

Columns:

  • entity_attribute_id
  • entity_id
  • attribute_id
  • value

####entity_location####

Gives an entity a location.

Columns:

  • entity_location_id
  • entity_id
  • location_id

####entity_class####

Assign an entity to a class.

Columns:

  • entity_class_id
  • entity_id
  • class_id

####entity_status_effect####

Associates a current status effect with an entity (SEE "status_effect" TABLE)

Columns:

  • entity_status_effect_id
  • entity_id
  • status_effect_id
  • date

####entity_loot####

Associates loot awarded when defeating a specific entity.

Columns:

  • entity_loot_id
  • loot_id
  • entity_id

####faction####

A global and permenant group of characters ("playable" or "non-playable") and entities that share some idea. That idea could be political, religious, cultural, spiritual, or something different entirely.

Columns:

  • faction_id
  • name

####character_faction####

Associates a character to a faction.

Columns:

  • character_faction_id
  • character_id
  • faction_id

####entity_faction####

Associates an entity to a faction.

Columns:

  • entity_faction_id
  • entity_id
  • faction_id

####rank####

A list of generic rank names.

Columns:

  • guild_id
  • name

####guild####

A global and permenant group of playable characters working together.

Columns:

  • guild_id
  • name

####guild_rank####

A list of ranks associated to a particular guild.

Columns:

  • guild_rank_id
  • guild_id
  • rank_id

####character_guild####

Associates a character to a guild.

Columns:

  • character_guild_id
  • character_id
  • guild_id
  • guild_leader

####character_guild_rank####

Associates a character to a guild_rank.

Columns:

  • character_guild_rank_id
  • character_id
  • guild_rank_id

####party####

A small and likely temporary group of players trying to accomplish an objective.

Columns:

  • party_id

####character_party####

Associates a character to a party.

Columns:

  • character_party_id
  • character_id
  • party_id
  • party_leader

####title####

A list of titles.

Columns

  • title_id
  • name

####character_title####

Associates a character to a title.

Columns

  • character_title_id
  • character_id
  • title_id

mysql-rpg-schema's People

Contributors

jgoodman avatar frchico avatar

Watchers

Pedro Alves avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.