MMO Project Design Doc

I wanted to create this design document to better define the style and what features will be in the testing game.

The testing game is going to be a extremely simplified 3D mmo.

An environment where players can move around the environment and chat with each other.

  • Sign up website
    • http server
      • tcp
        • port 80
      • cgi?
      • index.html
        • information about game
        • webform signup page for game
    • run on embedded hardware (if possible)
      • raspberry pi pico
      • esp32
  • Client
    • 3D environment
      • player model with be a cube
      • flat plane will be the world the players will exist on
    • UI interface
      • World interface
        • wasd / arrow keys
  • Server
    • database
      • when user logs out update their data in db
      • schemas
        • user
          • username
            • string
          • password
            • string (encrypted if possible)
          • position
            • x
              • float
            • y
              • float
          • appearance
            • color
          • last login
            • unix timestamp
          • created
            • unix timestamp
    • socket i/o
      • sync user position with other users
    • command line arguments
  • Bonus features if we have time
    • camera control
      • mouselook
    • more world objects
      • triangular prisms for trees
      • boxes for buildings
    • server config file (json? toml?)
      • port
      • server name
      • motd
      • user limit
      • enable allowed list
      • allowed users list
      • enable banned list
      • banned users list
      • ram limit
    • Login page
      • motd
      • username
      • password
      • confirm button
    • Simple message chat
      • chat box
        • message entry
        • send button / enter key
        • log out button
    • Add moderation
      • Add banning
        • Temporary ban
        • IP based ban
    • Add email for account recovery
      • Add email system, like cron job
    • Add API
      • Create User
        • POST /api/v0/newuser
          • user data
      • Read User
        • GET /api/v0/user/username
      • Update User
        • PUT /api/v0/user/username
          • modified user data
      • Delete User
        • DELETE /api/v0/user/username
      • Admin Login
        • POST /api/v0/login
          • Login data
          • return token
      • Admin Logout
        • POST /api/v0/logout
    • Admin web interface
      • login screen
      • number of users
      • number of users logged in
      • view live chat
        • should be able to make announcements as admin
    • Better player avatars
      • Human models instead of simple solids
      • More appearance options
      • Animations
      • Username float above players heads instead of a texture on the player model
    • Better environment
      • More interesting landscape
      • Rivers
      • Trees
      • Buildings
      • Animations
    • Music
    • Stats
    • Skills
    • Minigames
    • Pvp
    • Npcs
    • Be able to move in Z direction
      • Add collision

Currently doing the pre-study for the Fortran implementation, thats all for now!