UC MUD Code Planning
From UtterChaos
Contents
Interface and code
- Web based?
- AJAX?
- Rails?
- Ruby?
- Python?
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. This may also be modeled by classes and sub-classes on object oriented programming, where "columns" would become variables and actions, methods. I'm setting them up like this because it's how I conceptualize things.
Object tables
Objects and derivative tables
Table | Description | Columns | Notes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Objects | All items start as objects. Objects can use actions. Objects have a capacity that defaults to 0 if unset | creator_id (FK to creators), creation date, mass/weight, capacity | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rooms | Rooms are objects that can contain creatures. Rooms should have an exit as an action. | max_size_id (FK to size) | max_size_id limits what size creatures can enter said room. Default to largest available size, or no limitation if null | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Creatures | Creatures are objects that can have stats | size_id, race_id (FK to races), name (can be blank), stats, hp/mp/sp (if we're using that) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Characters | Characters are creatures controlled by a player | creature_id, name (unique), player_id, level, player_text | name should be equal to creature.name for creature.creature_id = character.creature_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Creators | Creators are characters that code the MUD | character_id (FK to characters), creator_class_id (FK to Creator Class), creator_start_date | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Players | Players are the link between characters by the same person. The player is probably not a creature | user_id, password (encrypted?), character_sort_order_id | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Items | Items are non-creature objects | description, obviousness | Unobvious items will not show up in room until searched for. They will show up in player inventories and bags. Depends on capacity of container. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Weapons | Weapons are items that have item_class "wieldable" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Clothing | Items that have item_class "wearable" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Armor | Clothing that has the item_class "protection" | How do we make clothing and armor wearable? Maybe any amount of clothing, but only one piece of "armor" on a given limb? | ]
Action tablesActions and derivative tables
Metadata tablesTables of table information
Dimension tablesWhere X and Y are items in different fact tables.
Working tablesTemp tables to be used while player is logged in, dropped after/at reboot
Table brainstorming
Interaction
|