Version 0.1 Roadmap

From Seoushi Games

Jump to: navigation, search

Contents

Definitions and Functionality

A Client - is a player on the game world.

A Patch - server is a basic http server that diffs the game files and makes sure the client is up to date.

A Gateway - is the single point of connection between the player and the game world. The gateway handles all communications for players, login in to the game, database queries such as items and character creation.

A Database - is an instance of mysql, postgresql or another premade database server. Right now I'm leaning towards postgresql although this isn't really important. It holds account information, items, player characters and everything data related to the game besides art assets.

A World Simulator - handles all the areas in the world, npcs and chat.


Planned Features

login verification

account creation

character creation

player enters "the world"

for now the world is defined as a chat room with a minimap

the player can move on the minimap

the world simulator should tell clients about their surrounding area

The client should start up with a patch server and the client will update itself


Use Case: Account Login

1) client establishes connection with the gateway server

2) client sends username and password

3) the gateway server verifies that the information is correct from the database

FAILURE: gateway sends an error message to the client (goto 2)

SUCCESS: the gateway, stores the valid login in local memory then tells the client


Use Case: Account Creation

1) client establishes connection with the gateway server

2) the clients send account information to the gateway server

3) the gateway makes sure of name conflicts with existing accounts

FAILURE: tells the client the account exists

SUCCESS: gateway tells the client the account was made


Use Case: Character Login

1) the client is logged in (see "Use Case: Account Login")

2) the client asks the gateway for it's characters

3) the gateway verifies that the client is logged in

FAILURE: gateway sends an error message to the client (goto 1)

SUCCESS: the gateway queries the database and returns a list of characters

4) the client asks to login with a character

5) the gateway verifies that the client is logged in

FAILURE: gateway sends an error message to the client (goto 1)

SUCCESS: gateway tells the world server to add in the player and send all relevant information about it's surroundings. The world server loads the last state of the player into local memory from the database and sends info to the client.


Use Case: Character Creation

1) the client is logged in (see "Use Case: Account Login")

2) client asks gateway if it can make a character

3) gateway checks the user is logged in and then the max characters limit for that account

FAILURE: gateway sends an error message to the client (goto 1)

SUCCESS: the gateway tells the client it can make a character

4) client sends info about a character

5) gateway checks the user is logged in and then checks the max characters limit for that account. If those pass then the character name is checked for proper names (undecided on the filter), then checks against the database to make sure the name is unique.

FAILURE: gateway sends an error message to the client (goto 1)

SUCCESS: the gateway tells the client that the character is made


Use Case: Chat

1) the client is logged in and in game with a character (see "Use Case: Account Login" and "Use Case: Character Login")

2) the client sends a chat message to the gateway

3) the gateway checks if the client is logged in

FAILURE: gateway drops/ignores the message (goto 1)

SUCCESS: gateway passes message to the world server

4) world server checks if the user has a character logged in

FAILURE: world server drops/ignores the message (goto 1)

SUCCESS: world server sends the validated message back to the gateway

5) gateway server sends the chat message to all connected clients


Use Case: Client Movement

1) the client is logged in and in game with a character (see "Use Case: Account Login" and "Use Case: Character Login")

2) client moves the character then sends it's position and velocity to the gateway

3) gateway checks that the user is logged in

FAILURE: gateway drops/ignores the message (goto 1)

SUCCESS: gateway forwards the message to the world server

4) world server checks if the user has a character logged in then records it's movement and checks to see if the average of the last X movements is appropriate for the amount of time.

4a. 1) FAILURE: world server scales the movement back to something appropriate and sends a message to the gateway to tell the client of it's new position.

4a. 2) gateway server forwards movement to the client

4a. 3) client moves player slower till movement is caught up to the appropriate speed.

SUCCESS: nothing happens.


Use Case: World Server Update

1) on a fixed timer the world server goes through all connected characters and checks who they can see. Of the players they can see the world server forwards current positions and velocities to the gateway.

2) the gateway forwards the messages to the client