Difference between revisions of "UC MUD Code Planning"
From UtterChaos
(→Database) |
|||
Line 32: | Line 32: | ||
! Table !! Columns !! Notes | ! Table !! Columns !! Notes | ||
|- | |- | ||
− | | Objects || wizard_id (FK to wizards), creation date, mass, size_id || wizard_id is id of | + | | Objects || wizard_id (FK to wizards), creation date, mass, size_id || wizard_id is id of creator of object |
+ | |- | ||
+ | | Actions || | ||
|- | |- | ||
| Sizes || size_name, size_order | | Sizes || size_name, size_order | ||
|- | |- | ||
− | | Room | + | | Rooms || actions, general_room_id (FK link to general room) |
+ | |- | ||
+ | | Room transitions || Starting_room_id (FK link to rooms), ending_room_id (FK link to rooms), | ||
|- | |- | ||
− | | General | + | | General Rooms || description columns |
|- | |- | ||
| Items || object_id (FK to objects) | | Items || object_id (FK to objects) | ||
Line 48: | Line 52: | ||
| Characters || | | Characters || | ||
|- | |- | ||
− | | Races || | + | | Player Races || race_id (FK to races), player race boolean, elite player race boolean |
|- | |- | ||
− | | | + | | Races || size limitations, stat modifiers, racial_adjustment_id (FK to racial adjustments), racial_group_id (FK to racial groups) |
|- | |- | ||
− | | | + | | Racial group || description, size limitations |
+ | |- | ||
+ | | Random monster generation parameters || | ||
|- | |- | ||
| Guilds || | | Guilds || | ||
Line 58: | Line 64: | ||
| Skills || | | Skills || | ||
|- | |- | ||
− | | Areas || | + | | Areas || area_name, description || areas are used for wandering monster limitations. areas can overlap |
|- | |- | ||
| Item class || | | Item class || | ||
Line 99: | Line 105: | ||
|- | |- | ||
| Actions || Meta-table item | | Actions || Meta-table item | ||
+ | |- | ||
+ | | Area || Room instance | ||
|- | |- | ||
| Items || Item class | | Items || Item class | ||
|- | |- | ||
− | | General room || Room | + | | General room || Room || |
|- | |- | ||
| Characters || Spells | | Characters || Spells |
Revision as of 11:27, 25 October 2011
Contents
Interface and code
- Web based?
- AJAX?
- Rails?
- Ruby?
Brainstorming
- Have defined sections of the page for basic ways to interact with game
- Room/environment view box
- Inventory
- Item view
- Other characters/NPCs
- separate from room? or basically like the room is a container and a subwindow that shows what's in the room--items, players, npcs. Things #an go in and out without changing the view of the environment.
- Combat
- Conversations
- Include emotes here? basically, an action window?
- Split between chat lines/tells/room actions? If we have chat lines/tells
- Obvious and non-obvious methods of interaction
- Obvious methods (go north, wield sword, don armor, press button) as clickable links
- Non-obvious methods not displayed, but given an empty text box to input commands
- Way to script things?
- Mobile site?
- Telnet option
- Web interface a wrapper around all information given, but with traditional telnet interface of many lines coming at you?
- Or telnet interface with a text-based browser style? Keep the different windows?
Database
Fact tables
Every fact table has a non-null primary key (not listed b/c I don't want to have to type "PK" over and over). If a column is a FK link to another table, it will be noted.
Table | Columns | Notes |
---|---|---|
Objects | wizard_id (FK to wizards), creation date, mass, size_id | wizard_id is id of creator of object |
Actions | ||
Sizes | size_name, size_order | |
Rooms | actions, general_room_id (FK link to general room) | |
Room transitions | Starting_room_id (FK link to rooms), ending_room_id (FK link to rooms), | |
General Rooms | description columns | |
Items | object_id (FK to objects) | |
Item personalization | item_id (FK to items), character_id (FK to characters), new field name, description | |
Living creatures | size, race_id (FK to races), | |
Characters | ||
Player Races | race_id (FK to races), player race boolean, elite player race boolean | |
Races | size limitations, stat modifiers, racial_adjustment_id (FK to racial adjustments), racial_group_id (FK to racial groups) | |
Racial group | description, size limitations | |
Random monster generation parameters | ||
Guilds | ||
Skills | ||
Areas | area_name, description | areas are used for wandering monster limitations. areas can overlap |
Item class | ||
Actions | ||
Spells | ||
Status adjustments | ||
Racial adjustments | ||
Metadata | table name, column name, PK_flag, FK_flag, FK_link (FK to metadata_id, self-referential) | Can we have this auto-generate? Based on system tables? |
Players | user_id, object_id (FK to objects), password (encrypted?), | |
Character sort orders | sort column, asc/desc | |
Wizards | character_id (FK to characters), wizard_class_id (FK to Wizard Class), wizarding_start_date | |
Wizard Class | class_name, permissions |
Dimension tables
Where X and Y are items in different fact tables.
- If X will have at most one of Y, then X should have a foreign key to Y's primary key (noted above)
- If X will always have one Y, then that foreign key should be constrained to not null
- If X can have many Y, and Y can have many X, then X and Y need a dimension table. Said table should consist of only two items: the primary keys of X and Y
X | Y | This represents ... |
---|---|---|
Characters | Skills | |
Characters | Guilds | |
Characters | Status adjustments | |
Characters | Racial adjustments | |
Actions | Meta-table item | |
Area | Room instance | |
Items | Item class | |
General room | Room | |
Characters | Spells | |
Items | Spells | |
Player |
Working tables
Temp tables to be used while player is logged in, dropped after/at reboot
- Inventory? How to persist, write to more permanent table?
- Status that wears off
Table brainstorming
- Everything as an object
- Rooms are containers
- Characters and Monsters/NPCs modeled the same, also containers
- Object table includes very basic information common to all objects. PK/FK link to other tables
- All actions have common ties
- Actions include spells and attacks, but also skills, emotes, buying, etc.
- Any interaction with an object, including yourself. Leveling up is an action.
- Not all actions can be called directly. Some can only be called by computer/other action. This flag can be one of the common ties
- Actions PK/FK link to other tables to further define them
- Are actions also items? Or can items have actions? Or can items have access to a class of actions?
- Classes of items/actions
- Clearly defined definitions of items and actions. Adding a new item/action must go into one of these groups. Adding a new class rearranges the DB a bit.
- Subclasses/Superclasses can be defined to combine/narrow things down. Probably superclasses are more likely, to make things have only one class?
Interaction
- Modeling NPCs as computer-controlled PCs
- Objects with built in calls for actions?
- Characters as special kinds of items?
- Rooms as special kinds of items?