Mailbag: Parts of an MMO
Hello Mr. Koster! I have a school project that requires the input of an expert like yourself. I know you usually don’t reply to students, but hopefully you’ll reply to me. I am currently working on the concept for a open-world MMO and wondering if you can help me out. I know your major works are Star Wars Galaxies and the Ultima series, but my game is still a MMO. It’s just more like DC Universe Online. Basically, I’d just like to know what major things should be included in MMos and Open-World games. Do you have any knowledge that might help?
I spent about an hour doing a quickie list off the top of my head. It’s not exhaustive, just stuff that occurred to me as I ran down a mental checklist. I know it’s not exhaustive because in past years when I’ve done similar outlines (which I can’t lay hands on now) they were twice as long.
But maybe this will be helpful, and convey some sense of the scale of what you need to worry about. Important note: I didn’t even get to the stuff that only lives on the client. This is only the stuff that lives on the game server side.
You might want to look at Insubstantial Pageants, a book I started and never finished on MMO design, and of course Dr Richard Bartle’s Designing Virtual Worlds[affiliate link] has an exhaustive amount of material on the subject.
Persistence database for storing state
Player persistence
World state (if needed)
Analysis tools
Reversion/correction tools
DB cleanup tools/game design
Template database for storing source data
Objects
Creatures
Other forms of content
Version control
Statistical analysis tools
Networking
Network traffic culling system
Vis/invis
Distance
Per user
Notability/importance
Connection manager
Link loss, reconnection
Encryption
Verification and security, including flood control etc
User multiplexing (“user server”)
Server cluster management
Commerce system/shop
Credit card and prepay card support
Refunds
Fraud handling
Shop backend
Metrics
Community support
Forums
Community tools
Event tools
Metrics system
Dashboards
Pre-made
User-definable
Logs
Account activity
Network activity
Commerce activity
User activity
Gameplay events/balance
Alert/pager system
Server simulation
Event handler, manager, dispatcher
Recursion limits/loop trapping/performance monitoring
Spatial simulation
Terrain system
Tile/heightfield/mesh
Pathing map
Region system
Room system
Exits
Mirroring
Instancing
Coordinate system
Cross-server handoffs
Player load balancing
Physics
Collision
Forces
AI support
Range-based triggers
Event-based triggers
Instantiation/destruction triggers
Alternate simulation layers
Time-based
Weather
Day/night
Influence maps for AI
Cellular automata
Resource maps for harvesting/crafting
Players
Identity profile
Account
Name/pw/etc
Source/geolocation
Join date
Commerce info (credit card, etc)
RMT currency
Content access/service tiers (e.g. expansions active, etc)
CS history
Characters
Basics
Name(s)
Race/species
Class
Group affiliations
Guild, towns, etc
PvP status/flags
Statistics
Game stats
UI preferences
Keymappings
Screen layout
Macros/bindings/custom UI
Temporary affects
Blind, dizzy, stunned, etc
Position
Lost link/connected
Skills/powers
Skills
Levels
Currencies
XP
Game money
Character cosmetic customization
Hair
Skin
Morph targets/faces/etc
Inventories
Physical
System (grid, capacity, weight)
Limits
Nesting/abuse caps
Binding
Paperdoll
Friends lists
Achievements/badges
Skills/powers
Macros
In-world ownerships
Houses
Vehicles
Shops
Pets
Metrics
Play frequency
Session length
Logs
Intangibles/non-game affecting
Description
Matchmaking
etc
Social structures
Chat
Abuse prevention
Word filter
Circular buffer and reporting
DDOS/spamming
Muting
Blocking
Chat window
Logging
Filtering/tabs
Color coding
In-world
Chat bubbles
Visible signals
Translation service
Channel system
Join
Leave
Kick
Create
Destroy
Q&A system
Mod queue
Submit
Approve/deny
Mod status
Guilds
Identity
Name
Abbreviation
Heraldry/visuals
Membership
Join
Leave
Kick
Powers structure
Delegation
Tiers
Change of leader
Shared inventories
Banks
Enemy guilds/PvP flagging
Shared ownership of structures
Friends
Location notification
Alerts
Grouping
HUD management
Join/leave/kick
Disconnection and distance handling
Group chat
Matchmaking systems
XP/loot management
Emotes and socials
Textual pre-written
No target
Self target
Other target
Animated
Solo
Tandem
Consent system
Chat parsing for play
Eye/head tracking for recent chats
Moods
Text communication
Say
Alternates
Tell
Whisper
Emote
Voice communication
Customer service support
Live paging
CRM database
Ticket system
Power tiers
Escalation and management process
QC subsampling
Logging
Metrics
Objects
Object types
Flags (stream/not, pick up, etc)
Inheritance structure
Affect system
Structures
Ownership
Access
Instancing
Vehicles
Physics
Controls
Ownership
Storage/retrieval
Multi-user
Interactables
Event triggers
Dynamic light attachment
Dynamic sound attachment
Animation
Serverside UI definition
Stackables/fungibles
Usables
Weapons
Projectile
Melee
Wearables
Clothing
Armor
Consumables
Food/drink
Potions/wands/etc
Creatures
Statistics
Affects
Stats
Hatreds/friendships
Ranges
Balancing tools/metrics
Spawning
Point
Region
Timer-based
Population-based
AI
Grouping
Factions, hatreds, etc
Powers
Conversation system
Wandering, patrolling, etc
Movement speeds
Pathing parameters
Simulation map usage (influence, resource, etc)
Shopkeepers
Buying price estimator routines
Stock maintenance/spawning
Interface
Metrics
Scripting
Quest system
Templated data
Conversations/flagging
Maps/NPC tagging
Arbitrary
Queuing, deque, priority, fallthrough
Event handlers
Collision and range
Timer
Player interaction
Physics
Spawn/destroy
Messages
API
Statistics
UI
Sound
Effects
Messaging
Combat
Spawning
Etc (basically, every system)
Game systems
Combat system
PvP handling
Event ownership
Object ownership
Guilds
Duels
Region-based
Flagging systems
UI
Core system
States
Affects
Ranges
Line of sight
Balance logging
Advancement system
Skills
Data
Prerequisite tables
Levels
Data
Points accrual system(s)
Reputation systems
Crafting system
Locating resources
Harvesting
Real time
Asynchronous farming
Refining
Combining
Templates
Recipe book and interface
Unlock mechanism
Experimenting and customization
Mass production
Maker’s marks
Repair and damage system
Housing system
Access permissions
Kick/ban/etc controls
Lockdown and decoration
Transfer
Rent or expiration or other sprawl control
Travel system
Teleport or transit points
Bookmarking
Other possible systems
Pets/hirelings
Magic
Politics
Territory
Exploration
Player shops
Events
Async behaviors (mining, manufacturing, farming, etc)
Feeds in and out of game
Tutorial