This is a continuation of my previous where I detailed what tools I would using. This post will continue where I left off and detail some initial requirements for this project.
Requirements
There will be two major components for this project. The first that I will focus on will be the front end that is responsible for displaying the current state of the canvas. The second is the backend that will be responsible for maintaining the history of changes to the canvas, validating input, synchronizing users, etc.I will focus on higher level requirements and detail more specific requirements when I move onto more specific implementation.
Front-End Requirements
- Display a grid of colored squares, representing an arbitrary x by x pixel canvas.
- Support user system
- Register
- Login
- Guest
- Allow user to select cell and change the color.
- May be restricted by timer and color choice to have reasonable bandwith usage.
- Display cell info.
- Last modified: [Timestamp]
- Modified by: [User]
- Activity level [color] (use mean and deviation to determine color?)
- Zoom in and out.
- Panning when zoomed in.
- Support Desktop browsers & be at least viewable on mobile.
- Update in real time or regularly with authoritative server state.
Back-End Requirements
- Maintain database for the following
- Users
- Login & Authentication
- Input history
- Tiles
- Tiles will make up canvas
- History of edits
- Server side validation
- Ensure changes are propagated to all clients
- Enforce timers on tile changes
- Only accept valid changes
On my next post I'll go over setting up a development environment and to start working with Phaser.